Changeset 113573 in spip-zone


Ignore:
Timestamp:
Jan 23, 2019, 2:56:35 PM (4 weeks ago)
Author:
cedric@…
Message:

indexer_redindex_objet peut etre appele un synchrone et un spip indexer:objet pour indexer manuellement un objet en particulier

Location:
_plugins_/indexer/trunk
Files:
2 edited
1 copied

Legend:

Unmodified
Added
Removed
  • _plugins_/indexer/trunk/Sources/SpipSourcesIndexer.php

    r108591 r113573  
    2424     *
    2525     * @param \Indexer\Indexer $indexer
    26      * @param \Indexer\Sources\Sourcesr $sources
     26     * @param \Indexer\Sources\Sources $sources
    2727    **/
    2828    public function __construct(Indexer $indexer, Sources $sources) {
  • _plugins_/indexer/trunk/indexer_pipelines.php

    r110775 r113573  
    6666 * @param string $objet Le type d'objet (article, rubrique etc)
    6767 * @param string $id_objet
     68 * @param bool $async pour lancer l'indexation via job_queue et pas immediatement
    6869*/
    69 function indexer_redindex_objet($objet,$id_objet){     
     70function indexer_redindex_objet($objet,$id_objet, $async = true){
    7071        include_spip('inc/indexer');
    7172        // On récupère toutes les sources compatibles avec l'indexation
     
    8586                // Si l'objet de la source est le même que dans l'édition, on met à jour l'indexation de l'objet
    8687                if ($objet_source == $objet){
    87                         job_queue_add(
    88                                 'indexer_job_indexer_source',
    89                                 "Réindexer l'objet ($objet - $id_objet)",
    90                                 array($alias, $id_objet, $id_objet+1), // +1 car le test est normalement : id < $end
    91                                 'inc/indexer',
    92                                 true // pas de duplication
    93                         );
     88                        if ($async) {
     89                                job_queue_add(
     90                                        'indexer_job_indexer_source',
     91                                        "Réindexer l'objet ($objet - $id_objet)",
     92                                        array($alias, $id_objet, $id_objet+1), // +1 car le test est normalement : id < $end
     93                                        'inc/indexer',
     94                                        true // pas de duplication
     95                                );
     96                        }
     97                        else {
     98                                // +1 car le test est normalement : id < $end
     99                                indexer_job_indexer_source($alias, $id_objet, $id_objet + 1);
     100                        }
    94101                }
    95102        }
  • _plugins_/indexer/trunk/spip-cli/IndexerObjet.php

    r110758 r113573  
    88use Symfony\Component\Console\Helper\ProgressHelper;
    99
    10 class IndexerIndexer extends Command {
     10class IndexerObjet extends Command {
    1111        protected function configure() {
    1212                $this
    13                         ->setName('indexer:indexer')
    14                         ->setDescription('Lancer l’indexation des contenus SPIP configurés.')
     13                        ->setName('indexer:objet')
     14                        ->setDescription('Indexer un objet en particulier')
     15                        ->addOption(
     16                                'objet',
     17                                null,
     18                                InputOption::VALUE_REQUIRED,
     19                                'objet',
     20                                null
     21                        )
     22                        ->addOption(
     23                                'id_objet',
     24                                null,
     25                                InputOption::VALUE_REQUIRED,
     26                                'id_objet ou liste d\'id_objet séparés par des virgules',
     27                                ''
     28                        )
    1529                ;
    1630        }
     
    2034                global $spip_racine;
    2135                global $spip_loaded;
    22                
    23                 // Appeler la fonction qui donne l'indexeur configuré pour ce SPIP
    24                 $indexer = indexer_indexer();
    25                 // Appeler la fonction qui liste les sources et qui comporte un pipeline pour étendre
    26                 $sources = indexer_sources();
    27                
    28                 $SpipSourcesIndexer = new Spip\Indexer\Sources\SpipSourcesIndexer($indexer, $sources);
    29                 $SpipSourcesIndexer->resetIndexesStats();
    30                
    31                 $res = $SpipSourcesIndexer->indexAll();
    32                
    33                 //~ $progress = $this->getHelperSet()->get('progress');
    34                 //~ $progress->setFormat(ProgressHelper::FORMAT_VERBOSE);
    35                 //~ $progress->setBarWidth(100);
    36                 //~ $progress->setRedrawFrequency(100);
    37                 //~ $progress->start($output, count($produits));
    38                 //~
    39                 //~ $progress->advance();
    40                 //~ $output->writeln("\n<info>{$message}</info>");
     36
     37                $objet = $input->getOption('objet');
     38                if (!$objet) {
     39                        $output->writeln("<error>Indiquez un objet a indexer</error>");
     40                        exit(1);
     41                }
     42
     43
     44                if ($id_objets = $input->getOption('id_objet')) {
     45                        $id_objets = explode(',', $id_objets);
     46                        $id_objets = array_map('intval', $id_objets);
     47                        $id_objets = array_filter($id_objets);
     48                }
     49                if (!$id_objets) {
     50                        $output->writeln("<error>Indiquez un ou des id_objet a indexer (séparés par des virgules)</error>");
     51                        exit(1);
     52                }
     53
     54
     55                foreach ($id_objets as $id_objet) {
     56                        $this->io->care("Indexer $objet #$id_objet");
     57                        indexer_redindex_objet($objet,$id_objet, false);
     58                }
     59
    4160        }
    4261}
Note: See TracChangeset for help on using the changeset viewer.