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é !'); } }