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,17 +10,18 @@ use Symfony\Component\Console\Output\OutputInterface;
10 10
 
11 11
 use Muzich\CoreBundle\Managers\ElementManager;
12 12
 
13
-class RefreshEmbedsCommand extends ContainerAwareCommand
13
+class ElementRefreshCommand extends ContainerAwareCommand
14 14
 {
15 15
   protected function configure()
16 16
   {
17 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 20
       // Dans l'avenir on pourra préciser:
21 21
       // - le type
22 22
       // - l'élément
23 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 25
 //      ->addArgument('sites', InputArgument::OPTIONAL, 'Liste exhaustive des site a traiter')
25 26
 //      ->addOption('yell', null, InputOption::VALUE_NONE, 'If set, the task will yell in uppercase letters')
26 27
     ;
@@ -32,15 +33,19 @@ class RefreshEmbedsCommand extends ContainerAwareCommand
32 33
     $em = $doctrine->getEntityManager();
33 34
 
34 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 37
     $output->writeln('#');
37 38
 
38 39
     $filter_sites = array();
40
+    $sql_like = "";
41
+    $sql_like_parameters = array();
39 42
     if (($sites = $input->getOption('sites')))
40 43
     {
41 44
       foreach (explode(',', $sites) as $site)
42 45
       {
43 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,8 +55,8 @@ class RefreshEmbedsCommand extends ContainerAwareCommand
50 55
     {
51 56
       $elements = $em->createQuery(
52 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 60
        ->getResult()      
56 61
       ;
57 62
       $output->writeln('<comment>Utilisation de filtre par site ('.$input->getOption('sites').')</comment>');
@@ -68,6 +73,7 @@ class RefreshEmbedsCommand extends ContainerAwareCommand
68 73
     {
69 74
       $output->writeln('<info>Prise en charge de "'.$element->getUrl().'" ...</info>');
70 75
       $factory = new ElementManager($element, $em, $this->getContainer());
76
+      $factory->determineType();
71 77
       $factory->proceedExtraFields();
72 78
       $em->persist($element);
73 79
     }

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

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