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;
 }
Esempio n. 2
0
 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');
         }
     }
 }
Esempio n. 3
0
 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;
     }
 }
Esempio n. 5
0
 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;
 }