|
@@ -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
|
}
|