Changeset 82793 in spip-zone


Ignore:
Timestamp:
May 29, 2014, 12:54:30 PM (5 years ago)
Author:
fil@…
Message:

retablir http://zone.spip.org/trac/spip-zone/changeset/82769 que j'ai écrasé en http://zone.spip.org/trac/spip-zone/changeset/82786 (sorry rastapopoulos)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/indexer/trunk/iterateur/sphinx.php

    r82786 r82793  
    107107
    108108                $this->command = $command + array(
    109                         'index'     => array(),
    110                         'selection' => array(),
    111                         'recherche' => array(),
    112                         'orderby'   => array(),
    113                         'group'     => array(),
    114                         'snippet'   => array(),
    115                         'facet'     => array(),
    116                         'filter'    => array(),
     109                        'index'             => array(),
     110                        'selection'         => array(),
     111                        'recherche'         => array(),
     112                        'orderby'           => array(),
     113                        'group'             => array(),
     114                        'snippet'           => array(),
     115                        'facet'             => array(),
     116                        'filter'            => array(),
     117                        'filters_mono'       => array(),
     118                        'filters_multijson'  => array(),
    117119                );
    118120
     
    133135
    134136                $this->setFilter($this->command['filter']);
     137                $this->setFiltersMono($this->command['filters_mono']);
     138                $this->setFiltersMultiJson($this->command['filters_multijson']);
    135139
    136140                $this->setSnippet($this->command);
     
    599603                }
    600604        }
    601 
    602 
     605       
     606        function setFiltersMono($filters){
     607                $filters = array_filter($filters);
     608                if (!$filters) {
     609                        return false;
     610                }
     611               
     612                $ok = true;
     613                foreach ($filters as $filter){
     614                        $ok &= $this->queryApi->setApiFilterMono($filter);
     615                }
     616               
     617                return $ok;
     618        }
     619       
     620        function setFiltersMultiJson($filters){
     621                $filters = array_filter($filters);
     622                if (!$filters) {
     623                        return false;
     624                }
     625               
     626                $ok = true;
     627                foreach ($filters as $filter){
     628                        $ok &= $this->queryApi->setApiFilterMultiJson($filter);
     629                }
     630               
     631                return $ok;
     632        }
     633       
    603634        /**
    604635         * Revenir au depart
     
    788819}
    789820
     821/**
     822 * Indiquer les filtres mono-valués de la requête
     823 *
     824 * @param string $idb
     825 * @param object $boucles
     826 * @param object $crit
     827 */
     828function critere_SPHINX_filtermono_dist($idb, &$boucles, $crit) {
     829        $boucle = &$boucles[$idb];
     830       
     831        if (isset($crit->param[0])) {
     832                $test = calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent);
     833        }
     834        if (isset($crit->param[1])) {
     835                $field = calculer_liste($crit->param[1], array(), $boucles, $boucles[$idb]->id_parent);
     836        }
     837        if (isset($crit->param[2])) {
     838                $values = calculer_liste($crit->param[2], array(), $boucles, $boucles[$idb]->id_parent);
     839        }
     840        if (isset($crit->param[3])) {
     841                $comparison = calculer_liste($crit->param[3], array(), $boucles, $boucles[$idb]->id_parent);
     842        }
     843       
     844        // Test
     845        $boucle->hash .= "\n\tif ($test) {\n";
     846       
     847        // Critere multiple
     848        $boucle->hash .= "\t\tif (!isset(\$filters_mono_init)) { \$command['filters_mono'] = array(); \$filters_mono_init = true; }\n";
     849
     850        $boucle->hash .= "\t\t\$command['filters_mono'][] = array(\n"
     851                . (isset($crit->param[1]) ? "\t\t\t'field'       => $field,\n" : '')
     852                . (isset($crit->param[2]) ? "\t\t\t'values'      => $values,\n" : '')
     853                . (isset($crit->param[3]) ? "\t\t\t'comparison'  => $comparison,\n" : '')
     854                . "\t\t);\n";
     855       
     856        // Fin de test
     857        $boucle->hash .= "\t}\n";
     858}
     859
     860/**
     861 * Indiquer les filtres multi-valués JSON de la requête
     862 *
     863 * @param string $idb
     864 * @param object $boucles
     865 * @param object $crit
     866 */
     867function critere_SPHINX_filtermultijson_dist($idb, &$boucles, $crit) {
     868        $boucle = &$boucles[$idb];
     869       
     870        if (isset($crit->param[0])) {
     871                $test = calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent);
     872        }
     873        if (isset($crit->param[1])) {
     874                $field = calculer_liste($crit->param[1], array(), $boucles, $boucles[$idb]->id_parent);
     875        }
     876        if (isset($crit->param[2])) {
     877                $values = calculer_liste($crit->param[2], array(), $boucles, $boucles[$idb]->id_parent);
     878        }
     879       
     880        // Test
     881        $boucle->hash .= "\n\tif ($test) {\n";
     882       
     883        // Critere multiple
     884        $boucle->hash .= "\t\tif (!isset(\$filters_multijson_init)) { \$command['filters_multijson'] = array(); \$filters_multijson_init = true; }\n";
     885
     886        $boucle->hash .= "\t\t\$command['filters_multijson'][] = array(\n"
     887                . (isset($crit->param[1]) ? "\t\t\t'field'       => $field,\n" : '')
     888                . (isset($crit->param[2]) ? "\t\t\t'values'      => $values,\n" : '')
     889                . "\t\t);\n";
     890       
     891        // Fin de test
     892        $boucle->hash .= "\t}\n";
     893}
    790894
    791895/**
Note: See TracChangeset for help on using the changeset viewer.