Browse Source

Evolution #464: Commande refresh elements

Sevajol Bastien 12 years ago
parent
commit
3a10e454a7

src/Muzich/CoreBundle/Command/RefreshEmbedsCommand.php → src/Muzich/CoreBundle/Command/ElementRefreshCommand.php View File

10
 
10
 
11
 use Muzich\CoreBundle\Managers\ElementManager;
11
 use Muzich\CoreBundle\Managers\ElementManager;
12
 
12
 
13
-class RefreshEmbedsCommand extends ContainerAwareCommand
13
+class ElementRefreshCommand extends ContainerAwareCommand
14
 {
14
 {
15
   protected function configure()
15
   protected function configure()
16
   {
16
   {
17
     $this
17
     $this
18
-      ->setName('elementengine:refresh-embeds')
19
-      ->setDescription('Actualise les embeds')
18
+      ->setName('elementengine:refresh')
19
+      ->setDescription('Actualise les éléments avec les API externes')
20
       // Dans l'avenir on pourra préciser:
20
       // Dans l'avenir on pourra préciser:
21
       // - le type
21
       // - le type
22
       // - l'élément
22
       // - l'élément
23
       ->addOption('sites', null, InputOption::VALUE_REQUIRED, 'Liste exhaustive des site a traiter')
23
       ->addOption('sites', null, InputOption::VALUE_REQUIRED, 'Liste exhaustive des site a traiter')
24
+//      ->addOption('section', null, InputOption::VALUE_REQUIRED, 'Sections a mettre a jours (all, embed, data, )', 'all')
24
 //      ->addArgument('sites', InputArgument::OPTIONAL, 'Liste exhaustive des site a traiter')
25
 //      ->addArgument('sites', InputArgument::OPTIONAL, 'Liste exhaustive des site a traiter')
25
 //      ->addOption('yell', null, InputOption::VALUE_NONE, 'If set, the task will yell in uppercase letters')
26
 //      ->addOption('yell', null, InputOption::VALUE_NONE, 'If set, the task will yell in uppercase letters')
26
     ;
27
     ;
32
     $em = $doctrine->getEntityManager();
33
     $em = $doctrine->getEntityManager();
33
 
34
 
34
     $output->writeln('#');
35
     $output->writeln('#');
35
-    $output->writeln('## Script de mise a jour des code embeds ##');
36
+    $output->writeln('## Script de mise a jour des éléments ##');
36
     $output->writeln('#');
37
     $output->writeln('#');
37
 
38
 
38
     $filter_sites = array();
39
     $filter_sites = array();
40
+    $sql_like = "";
41
+    $sql_like_parameters = array();
39
     if (($sites = $input->getOption('sites')))
42
     if (($sites = $input->getOption('sites')))
40
     {
43
     {
41
       foreach (explode(',', $sites) as $site)
44
       foreach (explode(',', $sites) as $site)
42
       {
45
       {
43
         $filter_sites[] = trim($site);
46
         $filter_sites[] = trim($site);
47
+        $sql_like .= " OR e.url LIKE :site".trim(str_replace('.', '', $site));
48
+        $sql_like_parameters['site'.trim(str_replace('.', '', $site))] = '%'.$site.'%';
44
       }
49
       }
45
     }
50
     }
46
     
51
     
50
     {
55
     {
51
       $elements = $em->createQuery(
56
       $elements = $em->createQuery(
52
         "SELECT e FROM MuzichCoreBundle:Element e "
57
         "SELECT e FROM MuzichCoreBundle:Element e "
53
-        . " WHERE e.type IN (:types)"
54
-      )->setParameter('types', $filter_sites)
58
+        . " WHERE e.type IN (:types) $sql_like"
59
+      )->setParameters(array_merge(array('types' => $filter_sites), $sql_like_parameters))
55
        ->getResult()      
60
        ->getResult()      
56
       ;
61
       ;
57
       $output->writeln('<comment>Utilisation de filtre par site ('.$input->getOption('sites').')</comment>');
62
       $output->writeln('<comment>Utilisation de filtre par site ('.$input->getOption('sites').')</comment>');
68
     {
73
     {
69
       $output->writeln('<info>Prise en charge de "'.$element->getUrl().'" ...</info>');
74
       $output->writeln('<info>Prise en charge de "'.$element->getUrl().'" ...</info>');
70
       $factory = new ElementManager($element, $em, $this->getContainer());
75
       $factory = new ElementManager($element, $em, $this->getContainer());
76
+      $factory->determineType();
71
       $factory->proceedExtraFields();
77
       $factory->proceedExtraFields();
72
       $em->persist($element);
78
       $em->persist($element);
73
     }
79
     }

+ 1 - 1
src/Muzich/CoreBundle/Managers/ElementManager.php View File

96
   /**
96
   /**
97
    * Determine le type d'objet auquel on a affaire.
97
    * Determine le type d'objet auquel on a affaire.
98
    */
98
    */
99
-  protected function determineType()
99
+  public function determineType()
100
   {
100
   {
101
     // On ne prend pas de risque avec le www, on l'enlève
101
     // On ne prend pas de risque avec le www, on l'enlève
102
     $url = str_replace('www.', '', $this->element->getUrl());
102
     $url = str_replace('www.', '', $this->element->getUrl());