Example #1
0
 /**
  * Generate a migration class
  *
  * @param string  $className   Class name to generate
  * @param array   $options     Options for the migration class
  * @param string  $up          The code for the up function
  * @param string  $down        The code for the down function
  * @param boolean $return      Whether or not to return the code.
  *                             If true return and false it writes the class to disk.
  * @return mixed
  */
 public function generateMigrationClass($className, $options = array(), $up = null, $down = null, $return = false)
 {
     $className = Doctrine_Inflector::urlize($className);
     $className = str_replace('-', '_', $className);
     $className = Doctrine_Inflector::classify($className);
     if ($return || !$this->getMigrationsPath()) {
         return $this->buildMigrationClass($className, null, $options, $up, $down);
     } else {
         if (!$this->getMigrationsPath()) {
             throw new Doctrine_Migration_Exception('You must specify the path to your migrations.');
         }
         $next = time() + $this->migration->getNextMigrationClassVersion();
         $fileName = $next . '_' . Doctrine_Inflector::tableize($className) . $this->suffix;
         $class = $this->buildMigrationClass($className, $fileName, $options, $up, $down);
         $path = $this->getMigrationsPath() . DIRECTORY_SEPARATOR . $fileName;
         if (class_exists($className) || file_exists($path)) {
             $this->migration->loadMigrationClass($className);
             return false;
         }
         file_put_contents($path, $class);
         require_once $path;
         $this->migration->loadMigrationClass($className);
         return true;
     }
 }