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 migration($migration)
 {
     $filename = date('YmdHis') . ".{$migration}.migration.class.php";
     moojon_files::attempt_mkdir(moojon_paths::get_project_models_directory());
     moojon_files::attempt_mkdir(moojon_paths::get_project_migrations_directory());
     self::run(moojon_paths::get_moojon_templates_directory() . 'migration.template', moojon_paths::get_project_migrations_directory() . "{$filename}", array('migration' => $migration), false, true);
 }