/**
  * @see sfTask
  */
 protected function execute($arguments = array(), $options = array())
 {
     $task = new sfDoctrineBuildTask($this->dispatcher, $this->formatter);
     $task->setCommandApplication($this->commandApplication);
     $task->setConfiguration($this->configuration);
     $ret = $task->run(array(), array('no-confirmation' => $options['no-confirmation'], 'db' => true, 'model' => true, 'forms' => !$options['skip-forms'], 'filters' => !$options['skip-forms'], 'sql' => true, 'and-migrate' => $options['migrate'], 'and-load' => $options['append'] ? false : (count($options['dir']) ? $options['dir'] : true), 'and-append' => $options['append'] ? count($options['dir']) ? $options['dir'] : true : false));
     return $ret;
 }
 /**
  * @see sfTask
  */
 protected function execute($arguments = array(), $options = array())
 {
     $task = new sfDoctrineBuildTask($this->dispatcher, $this->formatter);
     $task->setCommandApplication($this->commandApplication);
     $task->setConfiguration($this->configuration);
     $ret = $task->run(array(), array('no-confirmation' => $options['no-confirmation'], 'db' => true, 'and-migrate' => $options['migrate']));
     return $ret;
 }
 protected function buildDb($options)
 {
     $tmpdir = sfConfig::get('sf_data_dir') . '/fixtures_tmp';
     $this->getFilesystem()->mkdirs($tmpdir);
     $this->getFilesystem()->remove(sfFinder::type('file')->in(array($tmpdir)));
     $pluginDirs = sfFinder::type('dir')->name('data')->in(sfFinder::type('dir')->name('op*Plugin')->maxdepth(1)->in(sfConfig::get('sf_plugins_dir')));
     $fixturesDirs = sfFinder::type('dir')->name('fixtures')->prune('migrations', 'upgrade')->in(array_merge(array(sfConfig::get('sf_data_dir')), $this->configuration->getPluginSubPaths('/data'), $pluginDirs));
     $i = 0;
     foreach ($fixturesDirs as $fixturesDir) {
         $files = sfFinder::type('file')->name('*.yml')->sort_by_name()->in(array($fixturesDir));
         foreach ($files as $file) {
             $this->getFilesystem()->copy($file, $tmpdir . '/' . sprintf('%03d_%s_%s.yml', $i, basename($file, '.yml'), md5(uniqid(rand(), true))));
         }
         $i++;
     }
     $task = new sfDoctrineBuildTask($this->dispatcher, $this->formatter);
     $task->setCommandApplication($this->commandApplication);
     $task->setConfiguration($this->configuration);
     $task->run(array(), array('no-confirmation' => true, 'db' => true, 'model' => true, 'forms' => true, 'filters' => true, 'sql' => true, 'and-load' => $tmpdir, 'application' => $options['application'], 'env' => $options['env']));
     $this->getFilesystem()->remove(sfFinder::type('file')->in(array($tmpdir)));
     $this->getFilesystem()->remove($tmpdir);
 }
 protected function buildDb($options)
 {
     $tmpdir = sfConfig::get('sf_data_dir') . '/fixtures_tmp';
     $this->getFilesystem()->mkdirs($tmpdir);
     $this->getFilesystem()->remove(sfFinder::type('file')->in(array($tmpdir)));
     $pluginDirs = sfFinder::type('dir')->name('data')->in(sfFinder::type('dir')->name('op*Plugin')->maxdepth(1)->in(sfConfig::get('sf_plugins_dir')));
     $fixturesDirs = sfFinder::type('dir')->name('fixtures')->prune('migrations', 'upgrade')->in(array_merge(array(sfConfig::get('sf_data_dir')), $this->configuration->getPluginSubPaths('/data'), $pluginDirs));
     $i = 0;
     foreach ($fixturesDirs as $fixturesDir) {
         $files = sfFinder::type('file')->name('*.yml')->sort_by_name()->in(array($fixturesDir));
         foreach ($files as $file) {
             $this->getFilesystem()->copy($file, $tmpdir . '/' . sprintf('%03d_%s_%s.yml', $i, basename($file, '.yml'), md5(uniqid(rand(), true))));
         }
         $i++;
     }
     $task = new sfDoctrineBuildTask($this->dispatcher, $this->formatter);
     $task->setCommandApplication($this->commandApplication);
     $task->setConfiguration($this->configuration);
     $task->run(array(), array('no-confirmation' => true, 'db' => !$options['non-recreate-db'], 'model' => true, 'forms' => true, 'filters' => true, 'sql' => !$options['non-recreate-db'], 'and-load' => $options['non-recreate-db'] ? null : $tmpdir, 'application' => $options['application'], 'env' => $options['env']));
     if ($options['non-recreate-db']) {
         $connection = Doctrine_Manager::connection();
         $config = $this->getCliConfig();
         Doctrine_Core::loadModels($config['models_path'], Doctrine_Core::MODEL_LOADING_CONSERVATIVE);
         $tables = array();
         $relatedTables = array();
         $droppedTables = array();
         $models = Doctrine_Core::getLoadedModels();
         foreach ($models as $model) {
             $table = Doctrine::getTable($model)->getTableName();
             $tables[] = $table;
             $relations = $connection->import->listTableRelations($table);
             foreach ($relations as $relation) {
                 if (empty($relatedTables[$relation['table']])) {
                     $relatedTables[$relation['table']] = array();
                 }
                 $relatedTables[$relation['table']][] = $table;
             }
         }
         // first, non-related tables can be removed
         $nonRelatedTables = array_diff($tables, array_keys($relatedTables));
         foreach ($nonRelatedTables as $targetTable) {
             $droppedTables[] = $targetTable;
             if ($connection->import->tableExists($targetTable)) {
                 $connection->export->dropTable($targetTable);
             }
         }
         // second, related tables
         uasort($relatedTables, create_function('$a, $b', '$_a = count($a); $_b = count($b); if ($_a == $_b) return 0; return ($_a < $_b) ? -1 : 1;'));
         foreach ($relatedTables as $relatedTable => &$relation) {
             $this->dropRelations($relatedTable, $relatedTables, $droppedTables);
         }
         $this->initDb($tmpdir);
     }
     $this->getFilesystem()->remove(sfFinder::type('file')->in(array($tmpdir)));
     $this->getFilesystem()->remove($tmpdir);
 }
 protected function buildModel($options)
 {
     $task = new sfDoctrineBuildTask($this->dispatcher, $this->formatter);
     $task->setCommandApplication($this->commandApplication);
     $task->setConfiguration($this->configuration);
     $task->run(array(), array('no-confirmation' => true, 'model' => true, 'forms' => true, 'filters' => true, 'application' => $options['application'], 'env' => $options['env']));
     $task = new sfCacheClearTask($this->dispatcher, $this->formatter);
     @$task->run();
     $task = new openpnePermissionTask($this->dispatcher, $this->formatter);
     @$task->run();
 }