setName('elementengine:refresh-embeds')
->setDescription('Actualise les embeds')
// Dans l'avenir on pourra préciser:
// - le type
// - l'élément
->addOption('sites', null, InputOption::VALUE_REQUIRED, 'Liste exhaustive des site a traiter')
// ->addArgument('sites', InputArgument::OPTIONAL, 'Liste exhaustive des site a traiter')
// ->addOption('yell', null, InputOption::VALUE_NONE, 'If set, the task will yell in uppercase letters')
;
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$doctrine = $this->getContainer()->get('doctrine');
$em = $doctrine->getEntityManager();
$output->writeln('#');
$output->writeln('## Script de mise a jour des code embeds ##');
$output->writeln('#');
$filter_sites = array();
if (($sites = $input->getOption('sites')))
{
foreach (explode(',', $sites) as $site)
{
$filter_sites[] = trim($site);
}
}
// On récupère les éléments
if (count($filter_sites))
{
$elements = $em->createQuery(
"SELECT e FROM MuzichCoreBundle:Element e "
. " WHERE e.type IN (:types)"
)->setParameter('types', $filter_sites)
->getResult()
;
$output->writeln('Utilisation de filtre par site ('.$input->getOption('sites').')');
}
else
{
$elements = $em->getRepository('MuzichCoreBundle:Element')->findAll();
}
$output->writeln('Nombre d\'éléments a traiter: '.count($elements).'');
$output->writeln('Début du traitement ...');
foreach ($elements as $element)
{
$output->writeln('Prise en charge de "'.$element->getUrl().'" ...');
$factory = new ElementManager($element, $em, $this->getContainer());
$factory->proceedExtraFields();
$em->persist($element);
}
$output->writeln('Traitement terminé, enregistrement en base ...');
$em->flush();
$output->writeln('Enregistrement terminé !');
}
}