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('Mise a jour des données "commentaires" pour migration 0.6 => 0.7');
/**
* 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('Terminé !');
}
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('Save in Database ...');
$em->flush();
$output->writeln('Terminé !');
}
if (!$proceeded)
{
$output->writeln('Versions saisies non prises en charges');
}
}
}