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; }
/** * 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); }
/** * 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; }
/** * 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); }
/** * 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; }