1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- <?php
-
- namespace Muzich\CoreBundle\Command;
-
- use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
- use Symfony\Component\Console\Input\InputArgument;
- use Symfony\Component\Console\Input\InputInterface;
- use Symfony\Component\Console\Input\InputOption;
- use Symfony\Component\Console\Output\OutputInterface;
- //use Muzich\CoreBundle\Managers\CommentsManager;
- use Muzich\CoreBundle\Util\StrictCanonicalizer;
-
- class MigrationUpgradeCommand extends ContainerAwareCommand
- {
- protected function configure()
- {
- $this
- ->setName('migration:upgrade')
- ->setDescription('Mise a jour de données nécéssaire pour migrations')
- ->addArgument('from', InputArgument::REQUIRED, 'version de départ')
- ->addArgument('to', InputArgument::REQUIRED, 'version visé')
- ;
- }
-
- protected function execute(InputInterface $input, OutputInterface $output)
- {
- $doctrine = $this->getContainer()->get('doctrine');
- $em = $doctrine->getEntityManager();
-
- $output->writeln('#');
- $output->writeln('## Outil de migration ##');
- $output->writeln('#');
-
- $proceeded = false;
- if ($input->getArgument('from') == '0.6' && $input->getArgument('to') == '0.7')
- {
- $proceeded = true;
- $output->writeln('<info>Mise a jour des données "commentaires" pour migration 0.6 => 0.7</info>');
- /**
- * Pour cette migration on a besoin de rajouter une valeur aux données
- * de commentaire d'éléments.
- */
-
- $elements = $em->getRepository('MuzichCoreBundle:Element')->findAll();
- foreach ($elements as $element)
- {
- if (count(($comments = $element->getComments())))
- {
- // Oui un for serai plus performant ...
- foreach ($comments as $i => $comment)
- {
- // Si il n'y as pas d'enregistrement 'a' dans le commentaire
- if (!array_key_exists('a', $comment))
- {
- // Il faut le rajouter
- $comments[$i]['a'] = array();
- }
- }
- $element->setComments($comments);
- $em->persist($element);
- }
- }
- $em->flush();
- $output->writeln('<info>Terminé !</info>');
- }
-
- if ($input->getArgument('from') == '0.9.8.1' && $input->getArgument('to') == '0.9.8.2')
- {
- $proceeded = true;
- $canonicalizer = new StrictCanonicalizer();
- $elements = $em->getRepository('MuzichCoreBundle:Element')->findAll();
- foreach ($elements as $element)
- {
- $element->setSlug($canonicalizer->canonicalize_stricter($element->getName()));
- $output->write('.');
- $em->persist($element);
- }
-
- $output->writeln('<info>Save in Database ...</info>');
- $em->flush();
- $output->writeln('<info>Terminé !</info>');
- }
-
- if (!$proceeded)
- {
- $output->writeln('<error>Versions saisies non prises en charges</error>');
- }
- }
- }
|