Ignore:
Timestamp:
Mar 26, 2018, 10:47:38 PM (13 months ago)
Author:
nicolas.dorigny@…
Message:

PSR

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _squelettes_/gribouille_2/trunk/gribouille_options.php

    r109697 r109699  
    11<?php
    2 if (!defined("_ECRIRE_INC_VERSION")) return;
     2/**
     3 * Plugin / Squelettes Gribouille
     4 * © Fil
     5 * Distribue sous licence GNU/GPL
     6 */
     7
     8if (!defined("_ECRIRE_INC_VERSION")) {
     9        return;
     10}
     11
    312// {recherche} ou {recherche susan}
    413// https://www.spip.net/@recherche
     
    615function critere_recherche($idb, &$boucles, $crit) {
    716
    8         $boucle = &$boucles[$idb];
     17        $boucle = &$boucles[ $idb ];
    918
    10         if (isset($crit->param[0]))
    11                 $quoi = calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent);
    12         else
     19        if (isset($crit->param[0])) {
     20                $quoi = calculer_liste($crit->param[0], array(), $boucles, $boucles[ $idb ]->id_parent);
     21        }
     22        else {
    1323                $quoi = '@$Pile[0]["recherche"]';
    14         $tout = $boucle->modificateur["tout"] ? 1 : 0;
     24        }
     25        $tout         = $boucle->modificateur["tout"] ? 1 : 0;
    1526        $boucle->hash .= '
    1627        // RECHERCHE
    1728        $prepare_recherche = charger_fonction(\'prepare_recherche\', \'inc\');
    18         list($rech_select, $rech_where) = $prepare_recherche('.$quoi.', "'.$boucle->id_table.'", "'.$crit->cond.'","' . $boucle->sql_serveur . '",'.$tout.');
     29        list($rech_select, $rech_where) = $prepare_recherche(' . $quoi . ', "' . $boucle->id_table . '", "' . $crit->cond . '","' . $boucle->sql_serveur . '",' . $tout . ');
    1930        ';
    2031
    2132        $t = $boucle->id_table . '.' . $boucle->primary;
    22         if (!in_array($t, $boucles[$idb]->select))
    23           $boucle->select[]= $t; # pour postgres, neuneu ici
    24         $boucle->join['resultats']=array("'".$boucle->id_table."'","'id'","'".$boucle->primary."'");
    25         $boucle->from['resultats']='spip_resultats';
    26         $boucle->select[]= '$rech_select';
     33        if (!in_array($t, $boucles[ $idb ]->select)) {
     34                $boucle->select[] = $t;
     35        } # pour postgres, neuneu ici
     36        $boucle->join['resultats'] = array(
     37                "'" . $boucle->id_table . "'",
     38                "'id'",
     39                "'" . $boucle->primary . "'",
     40        );
     41        $boucle->from['resultats'] = 'spip_resultats';
     42        $boucle->select[]          = '$rech_select';
    2743        //$boucle->where[]= "\$rech_where?'resultats.id=".$boucle->id_table.".".$boucle->primary."':''";
    2844
    2945        // et la recherche trouve
    30         $boucle->where[]= '$rech_where?$rech_where:\'\'';
     46        $boucle->where[] = '$rech_where?$rech_where:\'\'';
    3147}
    3248
    33         @define('_DELAI_CACHE_resultats',600);
    34        
     49@define('_DELAI_CACHE_resultats', 600);
     50
    3551// Preparer les listes id_article IN (...) pour les parties WHERE
    3652// et points =  des requetes du moteur de recherche
    3753// https://code.spip.net/@inc_prepare_recherche_dist
    38 function inc_prepare_recherche($recherche, $table='articles', $cond=false, $serveur='',$tout=false) {
     54function inc_prepare_recherche($recherche, $table = 'articles', $cond = false, $serveur = '', $tout = false) {
    3955        include_spip('inc/rechercher');
    4056        static $cache = array();
    41         $delai_fraicheur = min(_DELAI_CACHE_resultats,time()-$GLOBALS['meta']['derniere_modif']);
     57        $delai_fraicheur = min(_DELAI_CACHE_resultats, time() - $GLOBALS['meta']['derniere_modif']);
    4258
    4359        // si recherche n'est pas dans le contexte, on va prendre en globals
    4460        // ca permet de faire des inclure simple.
    45         if (!isset($recherche) AND isset($GLOBALS['recherche']))
     61        if (!isset($recherche) AND isset($GLOBALS['recherche'])) {
    4662                $recherche = $GLOBALS['recherche'];
     63        }
    4764
    4865        // traiter le cas {recherche?}
    49         if ($cond AND !strlen($recherche))
    50                 return array("0 as points" /* as points */, /* where */ '');
    51                
    52        
     66        if ($cond AND !strlen($recherche)) {
     67                return array(
     68                        "0 as points"
     69                        /* as points */,
     70                        /* where */
     71                        '',
     72                );
     73        }
     74
    5375        $rechercher = false;
    5476
    55         if (!isset($cache[$recherche][$table])){
    56                 $hash = substr(md5($recherche . $table),0,16);
    57                 $row = sql_fetsel('UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(maj) AS fraicheur','spip_resultats',"recherche='$hash'",'','fraicheur DESC','0,1','',$serveur);
    58                 if (!$row OR ($row['fraicheur']>$delai_fraicheur)){
    59                         $rechercher = true;
     77        if (!isset($cache[ $recherche ][ $table ])) {
     78                $hash = substr(md5($recherche . $table), 0, 16);
     79                $row  = sql_fetsel('UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(maj) AS fraicheur', 'spip_resultats', "recherche='$hash'", '', 'fraicheur DESC', '0,1', '', $serveur);
     80                if (!$row OR ($row['fraicheur'] > $delai_fraicheur)) {
     81                        $rechercher = true;
    6082                }
    61                 $cache[$recherche][$table] = array("resultats.points AS points","recherche='$hash'");
     83                $cache[ $recherche ][ $table ] = array(
     84                        "resultats.points AS points",
     85                        "recherche='$hash'",
     86                );
    6287        }
    6388
     
    6691                //$tables = liste_des_champs();
    6792                $x = preg_replace(',s$,', '', $table); // eurk
    68                 if ($x == 'syndic') $x = 'site';
     93                if ($x == 'syndic') {
     94                        $x = 'site';
     95                }
    6996                $points = recherche_en_base($recherche,
    70                         $x,
    71                         array(
    72                                 'score' => true,
    73                                 'toutvoir' => true,
    74                                 'jointures' => true
    75                                 ),
    76                                             $serveur);
    77                 $points = $points[$x];
     97                                                                        $x,
     98                                                                        array(
     99                                                                                'score'    => true,
     100                                                                                'toutvoir' => true,
     101                                                                                'jointures' => true,
     102                                                                        ),
     103                                                                        $serveur);
     104                $points = $points[ $x ];
    78105
    79106                // permettre aux plugins de modifier le resultat
    80                 $points = pipeline('prepare_recherche',array(
    81                         'args'=>array('type'=>$x,'recherche'=>$recherche,'serveur'=>$serveur,'tout'=>$tout),
    82                         'data'=>$points
     107                $points = pipeline('prepare_recherche', array(
     108                        'args' => array(
     109                                'type'      => $x,
     110                                'recherche' => $recherche,
     111                                'serveur'   => $serveur,
     112                                'tout'      => $tout,
     113                        ),
     114                        'data' => $points,
    83115                ));
    84116
    85117                // supprimer les anciens resultats de cette recherche
    86118                // et les resultats trop vieux avec une marge
    87                 sql_delete('spip_resultats','(maj<DATE_SUB(NOW(), INTERVAL '.($delai_fraicheur+100)." SECOND)) OR (recherche='$hash')",$serveur);
     119                sql_delete('spip_resultats', '(maj<DATE_SUB(NOW(), INTERVAL ' . ($delai_fraicheur + 100) . " SECOND)) OR (recherche='$hash')", $serveur);
    88120
    89121                // inserer les resultats dans la table de cache des resultats
    90                 if (count($points)){
     122                if (count($points)) {
    91123                        $tab_couples = array();
    92                         foreach ($points as $id => $p){
     124                        foreach ($points as $id => $p) {
    93125                                $tab_couples[] = array(
    94126                                        'recherche' => $hash,
    95                                         'id' => $id,
    96                                         'points' => $p['score']
     127                                        'id'        => $id,
     128                                        'points'    => $p['score'],
    97129                                );
    98130                        }
    99                         sql_insertq_multi('spip_resultats',$tab_couples,array(),$serveur);
     131                        sql_insertq_multi('spip_resultats', $tab_couples, array(), $serveur);
    100132                }
    101133        }
    102134
    103         return $cache[$recherche][$table];
     135        return $cache[ $recherche ][ $table ];
    104136}
    105137
     
    107139        return true;
    108140}
    109 ?>
     141
Note: See TracChangeset for help on using the changeset viewer.