Changeset 113737 in spip-zone


Ignore:
Timestamp:
Feb 4, 2019, 4:55:03 PM (2 months ago)
Author:
root
Message:

fix fatal quand indexer_job_indexer_source est appele avec un nom d'objet au lieu du nom de table, ce qui se produit dans indexer_redindex_objet() quand on veut reindexer les articles lies a un mot ou un auteur
on couvre ici tous les cas d'appel de maniere plus robuste

Location:
_plugins_/indexer/trunk
Files:
2 edited

Legend:

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

    r111505 r113737  
    119119        $sources = indexer_sources();
    120120        // On récupère celle demandée en paramètre
    121         $source = $sources->getSource($alias_de_sources);
    122         // On va chercher les documents à indexer
    123         $documents = $source->getDocuments($start, $end);
    124         // Et on le remplace (ou ajoute) dans l'indexation
    125         $res = $indexer->replaceDocuments($documents);
    126 
    127         // en cas d'erreur, on se reprogramme pour une autre fois
    128         if (!$res) {
    129                 job_queue_add(
    130                         'indexer_job_indexer_source',
    131                         "Replan indexation $alias_de_sources $start $end",
    132                         array($alias_de_sources, $start, $end, uniqid()),
    133                         'inc/indexer',
    134                         false, // duplication possible car ce job-ci n'est pas encore nettoyé
    135                         time() + 15*60, // attendre 15 minutes
    136                         -10 // priorite basse
    137                 );
     121        // les alias de source correpondent en principe a la table (ex 'articles'), donc si $alias_de_sources est un objet ('article') on ne va pas trouver la source
     122        if (!function_exists('table_objet')) {
     123                include_spip('base/objets');
     124        }
     125        if ($source = $sources->getSource($alias_de_sources)
     126          or $source = $sources->getSource(table_objet($alias_de_sources))) {
     127                // On va chercher les documents à indexer
     128                $documents = $source->getDocuments($start, $end);
     129                // Et on le remplace (ou ajoute) dans l'indexation
     130                $res = $indexer->replaceDocuments($documents);
     131
     132                // en cas d'erreur, on se reprogramme pour une autre fois
     133                if (!$res) {
     134                        job_queue_add(
     135                                'indexer_job_indexer_source',
     136                                "Replan indexation $alias_de_sources $start $end",
     137                                array($alias_de_sources, $start, $end, uniqid()),
     138                                'inc/indexer',
     139                                false, // duplication possible car ce job-ci n'est pas encore nettoyé
     140                                time() + 15*60, // attendre 15 minutes
     141                                -10 // priorite basse
     142                        );
     143                }
     144        }
     145        else {
     146                spip_log("indexer_job_indexer_source: Source $alias_de_sources inconnue", 'indexer'._LOG_ERREUR);
    138147        }
    139148}
  • _plugins_/indexer/trunk/paquet.xml

    r113582 r113737  
    22        prefix="indexer"
    33        categorie="navigation"
    4         version="2.16.3"
     4        version="2.16.4"
    55        etat="test"
    66        compatibilite="[3.0.0;3.2.*]"
Note: See TracChangeset for help on using the changeset viewer.