*/ class DataDumpCommand extends PhingCommand { protected static $destPath = '/propel/dump'; /** * @see Command */ protected function configure() { $this ->setDescription('Dump data from database into xml file') ->addOption('connection', null, InputOption::VALUE_OPTIONAL, 'Set this parameter to define a connection to use') ->setHelp(<<propel:data-dump dumps data from database into xml file. php app/console propel:data-dump The --connection parameter allows you to change the connection to use. The default connection is the active connection (propel.dbal.default_connection). EOT ) ->setName('propel:data-dump') ; } /** * @see Command * * @throws \InvalidArgumentException When the target directory does not exist */ protected function execute(InputInterface $input, OutputInterface $output) { $this->writeSection($output, '[Propel] You are running the command: propel:data-dump'); list($name, $defaultConfig) = $this->getConnection($input, $output); $ret = $this->callPhing('datadump', array( 'propel.database.url' => $defaultConfig['connection']['dsn'], 'propel.database.database' => $defaultConfig['adapter'], 'propel.database.user' => $defaultConfig['connection']['user'], 'propel.database.password' => isset($defaultConfig['connection']['password']) ? $defaultConfig['connection']['password'] : '', )); if (true === $ret) { $finder = new Finder(); $filesystem = new Filesystem(); $datas = $finder->name('*_data.xml')->in($this->getCacheDir()); $output->writeln(''); $nbFiles = 0; foreach($datas as $data) { $dest = $this->getApplication()->getKernel()->getRootDir() . self::$destPath . '/xml/' . $data->getFilename(); if (file_exists((string) $data)) { $filesystem->copy((string) $data, $dest); $filesystem->remove($data); $output->writeln(sprintf('>> File+ %s', $dest)); $nbFiles++; } } $this->writeSection( $output, sprintf('%d file%s ha%s been generated.', $nbFiles, $nbFiles > 1 ? 's' : '', $nbFiles > 1 ? 've' : 's' ), 'bg=black' ); } else { $this->writeTaskError($output, 'datadump', false); } } }