private function get_migrations() { $migrations = array(); foreach (moojon_files::directory_files(moojon_paths::get_project_migrations_directory()) as $migration) { $migration_file = moojon_migrator::get_migration_class_name($migration); $migrations[] = substr($migration_file, 0, strlen($migration_file) - 10); } return $migrations; }
public static function run() { self::find_or_create_schema_migrations_table(); $migrations = array(); foreach (schema_migration::read(null, 'version') as $migration) { $migrations[] = $migration->version; } $migration_files = moojon_files::directory_files(moojon_paths::get_project_migrations_directory()); sort($migration_files); foreach ($migration_files as $migration_file) { if (!in_array(basename($migration_file), $migrations)) { self::run_migration($migration_file, 'up'); } } }
public static function read($directory) { $data = array(); $instance = self::fetch(); if (is_dir($directory)) { foreach (moojon_files::directory_files($directory, true) as $file) { if (moojon_files::has_suffix($file, 'config')) { if (!array_key_exists($file, $instance->data_archive)) { $instance->data_archive[$file] = (require_once $file); } $array = $instance->data_archive[$file]; if (is_array($array)) { foreach ($array as $key => $value) { $data[$key] = $value; } } } } } return $data; }
public function run($arguments) { $command = $this->prompt_until_in(array_shift($arguments), $this->get_commands(), 'What would you like to generate?'); switch ($command) { case 'model': $tables = moojon_db::show_tables(); if (!count($tables)) { throw new moojon_exception('No tables to generate models from'); } $arguments = self::check_arguments('moojon_generate_cli::model()', 1, $arguments); $table = $this->prompt_until_in($arguments[0], $tables, 'What table would you like to generate a model for?'); moojon_generator::model($table); break; case 'models': $arguments = self::check_arguments('moojon_generate_cli::models()', 0, $arguments); moojon_generator::models(); break; case 'migration': $arguments = self::check_arguments('moojon_generate_cli::migration()', 1, $arguments); $migration = $this->prompt_until($arguments[0], 'Please enter a migration name'); moojon_generator::migration($migration); break; case 'app': $arguments = self::check_arguments('moojon_generate_cli::app()', 3, $arguments); $app = $this->prompt_until($arguments[0], 'Please enter an app name'); $controller = $this->prompt_until($arguments[1], 'Please enter an app name', moojon_config::get('default_controller')); $action = $this->prompt_until($arguments[2], 'Please enter an action name', moojon_config::get('default_action')); moojon_generator::app($app, $controller, $action); break; case 'controller': $arguments = self::check_arguments('moojon_generate_cli::controller()', 3, $arguments); $app = $this->prompt_for_app($arguments[0]); $controller = $this->prompt_until($arguments[1], 'Please enter a controller name'); $action = $this->prompt_until($arguments[2], 'Please enter an action name', 'index'); moojon_generator::controller($app, $controller, $action); break; case 'helper': $arguments = self::check_arguments('moojon_generate_cli::helper()', 1, $arguments); $helper = $this->prompt_until($arguments[0], 'Please enter a name for this helper'); moojon_generator::helper($helper); break; case 'layout': $arguments = self::check_arguments('moojon_generate_cli::layout()', 1, $arguments); $layout = $this->prompt_until($arguments[0], 'Please enter a layout name'); moojon_generator::layout($layout); break; case 'view': $arguments = self::check_arguments('moojon_generate_cli::view()', 3, $arguments); $app = $this->prompt_for_app($arguments[0]); $controller = $this->prompt_for_controller($app, $arguments[1]); $view = $this->prompt_until($arguments[2], 'Please enter a view name'); moojon_generator::view($app, $controller, $view); break; case 'partial': $arguments = self::check_arguments('moojon_generate_cli::partial()', 3, $arguments); $app = $this->prompt_for_app($arguments[0]); $controller = $this->prompt_for_controller($app, $arguments[1]); $partial = $this->prompt_until($arguments[2], 'Please enter a name for this partial'); moojon_generator::partial($app, $controller, $partial); break; case 'scaffold': $arguments = self::check_arguments('moojon_generate_cli::scaffold()', 3, $arguments); $app = $this->prompt_for_app($arguments[0]); $models = array(); foreach (moojon_files::directory_files(moojon_paths::get_project_models_directory()) as $path) { $models[] = basename($path); } if (!count($models)) { if ($this->prompt_until_in(null, array('y', 'n'), 'No models found. Would you like to generate models?') == 'y') { moojon_generator::models(); } else { throw new moojon_exception('Unable to generate scaffold (no models)'); } } $model = $this->prompt_until_in($arguments[1], moojon_db::show_tables(), 'What model would you like to generate a scaffold for?'); $controller = $this->prompt_until($arguments[2], 'Please enter a controller name', $model); moojon_generator::scaffold($app, $model, $controller); break; } }
private static function colate_views($paths) { $views = array(); foreach ($paths as $path) { if (is_dir($path)) { foreach (moojon_files::directory_files($path, false, false) as $file) { if (moojon_files::has_suffix($file, 'view', 'php')) { $views[] = $file; } } } } return $views; }