Changeset 82713 in spip-zone


Ignore:
Timestamp:
May 23, 2014, 3:43:08 PM (5 years ago)
Author:
rastapopoulos@…
Message:

Déplacer la réindexation d'une source précise dans une tâche programmée.

Au passage on ajoute une méthode getSource() à la classe Sources pour pouvoir récupérer telle source précise avec son alias donné lors de l'enregistrement.

Location:
_plugins_/indexer/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/indexer/trunk/inc/indexer.php

    r82681 r82713  
    7676        return $sources;
    7777}
     78
     79/**
     80 * Indexer une partie des documents d'une source.
     81 *
     82 * Cette fonction est utilisable facilement pour programmer un job.
     83 *
     84 * @param string $alias_de_sources Alias donné à la source enregistrée dans les Sources du site
     85 * @param mixed $start Début des documents à indexer
     86 * @param mixed $end Fin des documents à indexer
     87 * @return void
     88 */
     89function indexer_job_indexer_source($alias_de_sources, $start, $end){
     90        // On va chercher l'indexeur du SPIP
     91        $indexer = indexer_indexer();
     92        // On va chercher les sources du SPIP
     93        $sources = indexer_sources();
     94        // On récupère celle demandée en paramètre
     95        $source = $sources->getSource($alias_de_sources);
     96        // On va chercher les documents à indexer
     97        $documents = $source->getDocuments($start, $end);
     98        // Et on le remplace (ou ajoute) dans l'indexation
     99        $indexer->replaceDocuments($documents);
     100}
  • _plugins_/indexer/trunk/indexer_pipelines.php

    r82681 r82713  
    4646                        // Si l'objet de la source est le même que dans l'édition, on met à jour l'indexation de l'objet
    4747                        if ($objet_source == $objet){
    48                                 // On va chercher l'indexeur du SPIP
    49                                 $indexer = indexer_indexer();
    50                                 // On va chercher l'unique document à indexer
    51                                 $document = $source->getDocuments($id_objet, $id_objet+1); // +1 car le test est normalement : id < $end
    52                                 // Et on le remplace (ou ajoute) dans l'indexation
    53                                 $indexer->replaceDocuments($document);
     48                                job_queue_add(
     49                                        'indexer_job_indexer_source',
     50                                        "Réindexer l'objet ($objet - $id_objet)",
     51                                        array($alias, $id_objet, $id_objet+1), // +1 car le test est normalement : id < $end
     52                                        'inc/indexer',
     53                                        true // pas de duplication
     54                                );
    5455                        }
    5556                }
  • _plugins_/indexer/trunk/lib/Indexer/Sources/Sources.php

    r82429 r82713  
    55
    66class Sources implements \IteratorAggregate {
    7 
    8     /** @var Indexer\Sources\SourceInterface[] */
    9     private $sources = [];
    10 
    11     public function __construct() {
    12 
    13     }
    14 
    15     public function register($cle, SourceInterface $source) {
    16         $this->sources[$cle] = $source;
    17     }
    18 
    19     public function unregister($cle) {
    20         unset($this->sources[$cle]);
    21     }
    22 
    23     public function getIterator()
    24     {
    25         return new \ArrayIterator($this->sources);
    26     }
     7        /** @var Indexer\Sources\SourceInterface[] */
     8        private $sources = [];
     9       
     10        public function __construct() {
     11               
     12        }
     13       
     14        public function register($cle, SourceInterface $source) {
     15                $this->sources[$cle] = $source;
     16        }
     17       
     18        public function unregister($cle) {
     19                unset($this->sources[$cle]);
     20        }
     21       
     22        public function getSource($cle) {
     23                if (isset($this->sources[$cle])){
     24                        return $this->sources[$cle];
     25                }
     26       
     27                return null;
     28        }
     29       
     30        public function getIterator() {
     31                return new \ArrayIterator($this->sources);
     32        }
    2733}
Note: See TracChangeset for help on using the changeset viewer.