Changeset 92775 in spip-zone


Ignore:
Timestamp:
Nov 9, 2015, 2:14:24 PM (4 years ago)
Author:
fil@…
Message:

s'il y a des statuts ignores, il faut effacer les enregistrements correspondants dans la table sphinx

Location:
_plugins_/indexer/trunk
Files:
2 edited

Legend:

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

    r92724 r92775  
    6161                        if ($end)   $where[] = "$column < $end";
    6262                       
    63                         // S'il y a des statuts ignorés… ben on les ignore
    64                         if (
    65                                 $statuts_ignores = ('indexer/'.$this->objet.'/statuts_ignores')
    66                                 and is_array($statuts_ignores)
    67                         ) {
    68                                 $where[] = sql_in('statut', $statuts_ignores, 'not');
    69                         }
    70                        
    7163                        $all = sql_allfetsel(
    7264                                '*',
     
    10092               
    10193                $doc = array('properties' => array());         
    102                
    103                 // S'il y a des statuts ignorés et que c'est le cas, on indexe pas
    104                 // Normalement déjà ignoré dans le SQL, mais si jamais la fonction est appelée autre part…
    105                 if (
    106                         $statuts_ignores = lire_config('indexer/'.$this->objet.'/statuts_ignores')
    107                         and is_array($statuts_ignores)
    108                         and isset($contenu['statut'])
    109                         and in_array($contenu['statut'], $statuts_ignores)
    110                 ) {
    111                         return null;
    112                 }
    11394               
    11495                // On cherche les éléments dont on va avoir besoin
  • _plugins_/indexer/trunk/lib/Indexer/Storage/Sphinx.php

    r92211 r92775  
    1818
    1919        public function replaceDocuments($documents){
     20                include_spip('inc/config');
     21
    2022                $query = "
    2123                        REPLACE INTO $this->indexName
     
    2931                        // On vérifie qu'il y a bien un Document
    3032                        if ($document and $document instanceof \Indexer\Sources\Document) {
    31                                 $data = $this->reformatDocument($document);
    32                                 $data = array_map(array($this->sphinxql, 'escape_string'), $data);
    33                                 $q = $query . "('" . implode("', '", $data) . "')";
     33
     34                                // effacer les documents ayant un statut ignore
     35                                if ($statuts_ignores = lire_config('indexer/'. ($document->properties['objet']) .'/statuts_ignores')
     36                                AND isset($document->properties['statut'])
     37                                AND in_array($document->properties['statut'], $statuts_ignores)) {
     38                                        $q = "DELETE FROM $this->indexName WHERE id=".$document->id;
     39                                }
     40                                else {
     41                                        $data = $this->reformatDocument($document);
     42                                        $data = array_map(array($this->sphinxql, 'escape_string'), $data);
     43                                        $q = $query . "('" . implode("', '", $data) . "')";
     44                                }
     45
     46spip_log($q, 'indexer');
     47
    3448                                if (!$this->sphinxql->query($q)) {
    3549                                        spip_log($this->sphinxql->errors(), 'indexer');
Note: See TracChangeset for help on using the changeset viewer.