source: spip-zone/_plugins_/indexer/trunk/spip-cli/IndexerIndexer.php @ 113577

Last change on this file since 113577 was 113577, checked in by cedric@…, 4 months ago

on peut indexer une table en particulier

File size: 2.3 KB
Line 
1<?php
2
3use Symfony\Component\Console\Command\Command;
4use Symfony\Component\Console\Input\InputArgument;
5use Symfony\Component\Console\Input\InputInterface;
6use Symfony\Component\Console\Input\InputOption;
7use Symfony\Component\Console\Output\OutputInterface;
8use Symfony\Component\Console\Helper\ProgressHelper;
9
10class IndexerIndexer extends Command {
11        protected function configure() {
12                $this
13                        ->setName('indexer:indexer')
14                        ->setDescription('Lancer l’indexation des contenus SPIP configurés.')
15                        ->addOption(
16                                'table',
17                                null,
18                                InputOption::VALUE_OPTIONAL,
19                                'Indexer les contenus d\'une table en particulier',
20                                null
21                        )
22                ;
23        }
24
25        protected function execute(InputInterface $input, OutputInterface $output) {
26                include_spip('inc/indexer');
27                global $spip_racine;
28                global $spip_loaded;
29               
30                // Appeler la fonction qui donne l'indexeur configuré pour ce SPIP
31                $indexer = indexer_indexer();
32                // Appeler la fonction qui liste les sources et qui comporte un pipeline pour étendre
33                $sources_possibles =
34
35                if ($tables = $input->getOption('table')) {
36
37                        $tables = explode(',', $tables);
38                        $tables = array_map('trim', $tables);
39                        $tables = array_filter($tables);
40                        if (!$tables) {
41                                $output->writeln("<error>Indiquez une table</error>");
42                                exit(1);
43                        }
44
45                        include_spip('base/objets');
46                        include_spip('inc/config');
47
48                        // On crée la liste des sources
49                        $sources = new Indexer\Sources\Sources();
50
51                        // On ajoute chaque objet configuré aux sources à indexer
52                        // Par défaut on enregistre les articles s'il n'y a rien
53                        foreach ($tables as $table) {
54                                if ($table) {
55                                        $sources->register(
56                                                table_objet($table),
57                                                new Spip\Indexer\Sources\SpipDocuments(objet_type($table))
58                                        );
59                                }
60                        }
61
62                }
63                else {
64                        $sources = indexer_sources();
65                }
66               
67                $SpipSourcesIndexer = new Spip\Indexer\Sources\SpipSourcesIndexer($indexer, $sources);
68                $SpipSourcesIndexer->resetIndexesStats();
69               
70                $res = $SpipSourcesIndexer->indexAll();
71               
72                //~ $progress = $this->getHelperSet()->get('progress');
73                //~ $progress->setFormat(ProgressHelper::FORMAT_VERBOSE);
74                //~ $progress->setBarWidth(100);
75                //~ $progress->setRedrawFrequency(100);
76                //~ $progress->start($output, count($produits));
77                //~
78                //~ $progress->advance();
79                //~ $output->writeln("\n<info>{$message}</info>");
80        }
81}
Note: See TracBrowser for help on using the repository browser.