Example #1
0
 /**
  * Syncs all available migration files with the database
  *
  * @chainable
  * @return Minion_Migration_Manager Chainable instance
  */
 public function sync_migration_files()
 {
     // Get array of installed migrations with the id as key
     $installed = $this->_model->installed_migrations();
     $available = $this->_model->available_migrations();
     $all_migrations = array_merge(array_keys($installed), array_keys($available));
     foreach ($all_migrations as $migration) {
         // If this migration has since been deleted
         if (isset($installed[$migration]) and !isset($available[$migration])) {
             // We should only delete a record of this migration if it does
             // not exist in the "real world"
             if ($installed[$migration]['applied'] === '0') {
                 $this->_model->delete_migration($installed[$migration]);
             }
         } elseif (!isset($installed[$migration]) and isset($available[$migration])) {
             $this->_model->add_migration($available[$migration]);
         } elseif ($installed[$migration]['description'] !== $available[$migration]['description']) {
             $this->_model->update_migration($installed[$migration], $available[$migration]);
         }
     }
     return $this;
 }