Example #1
0
 protected function upOrDown($subject, $action)
 {
     Config::load('migrations', true, false);
     $result = array('tables' => array(), 'queries' => array());
     list($database, $table) = explode('/', $subject);
     $database = ucwords($database, '_');
     $table = ucwords($table, '_');
     $database = $database == 'All' ? '' : $database . '_Migration';
     $table = $table == 'All' ? '' : $table . '_Seed.php';
     $migrations_path = Globals::get('base_path') . "/app/migrations";
     $seeds = File::explore("{$migrations_path}/{$database}/{$table}");
     foreach ($seeds as $seed) {
         if (is_file($seed)) {
             //getting the class with namespace from path
             $class = str_replace($migrations_path, '', $seed);
             $class = dirname($class) . '\\' . basename($class, '.php');
             $class = '\\App\\Migrations' . str_replace('/', '\\', $class);
             $seed = new $class();
             if ($action == 'up') {
                 $seed->setup();
                 $seed->up();
                 $result['queries'] = $seed->executed_queries;
             } else {
                 $drop_db = $table == '' ? true : false;
                 $seed->down($drop_db);
                 $result['queries'] = $seed->executed_queries;
             }
             $result['tables'][] = $class;
         }
     }
     return $result;
 }
Example #2
0
 /**
  * Retorna un arreglo qué contiene las cadenas json
  * de los errores registrados
  *
  * @return array
  */
 public static function getArrayLog()
 {
     $log_file = Globals::get('base_path') . '/olimpus/log/errors.log';
     $logs = File::read($log_file);
     if (!$logs) {
         return array();
     }
     return explode("\n", $logs);
 }
Example #3
0
 /**
  *   Añade un registro de error al archivo de errores
  *   en formato JSON, retorna id del error si el registro
  *   fue satisfactorioo false si este falló
  *
  *   @param int $code indica el codigo de error
  *   @param string $message mensaje de error
  *   @param string $file archivo donde se produjo el error
  *   @param int $line linea donde se produjo el error
  *   @param array $trace trasa de pila
  *   @return mixed false si no se pudo guardar el error, un string
  *                  con el identificador del error si este se guardo
  */
 protected static function record($level, $message, $context)
 {
     # id es un hash md5 formado por la fecha y un numero aleatorio
     $date = date(DATE_ISO8601);
     $identifier = md5($date . rand(0, 9999));
     $log = ['level' => $level, 'date' => $date, 'message' => $message, 'id' => $identifier, 'context' => $context];
     $log = json_encode($log) . PHP_EOL;
     $log_file = Globals::get('base_path') . '/olimpus/log/errors.log';
     if (false === File::append($log_file, $log)) {
         return false;
     }
     return $identifier;
 }
Example #4
0
 /**
  *   Guarda algun contenido en el cache identificandolo en base a 
  *   un arreglo de datos especifico
  *
  *   @param array $data arreglo qué servira como identificador
  *   @param string $content contenido para guardar en cache
  *   @return void
  */
 public static function save($data, $content)
 {
     if (!self::cacheEnabled()) {
         return false;
     }
     $file = self::generateName($data);
     File::write($file, $content);
 }
Example #5
0
 /**
  * Crea un arrglo con las rutas de archivos a remover
  * escanea por defecto /app, /public e index.php
  * manda llamar la funcion identifySkipeds para descartar
  * los archivos omitidos desde la configuracion y tambien
  * agrega al escaneo los directorios y/o archivos
  * indicados en la configuracion
  *
  * @return array
  */
 public static function scan()
 {
     $files = array();
     $base = Globals::get('base_path');
     Config::load('app');
     $dirs = [$base . '/app', $base . '/public', $base . '/index.php'];
     $configured_dirs = Config::param('trash.scan');
     if ($configured_dirs !== null && is_array($configured_dirs)) {
         $dirs = array_merge($dirs, $configured_dirs);
     }
     foreach ($dirs as $dir) {
         $files = array_merge($files, File::explore($dir));
     }
     $files = self::indentifySkipeds($files);
     foreach ($files as $file) {
         # File::explore() devuelve en la lista tambien los
         # directorios escaneados, solo se requieren los archivos
         if (is_dir($file)) {
             $index = array_search($file, $files);
             unset($files[$index]);
             continue;
         }
     }
     return $files;
 }