Changeset 110683 in spip-zone


Ignore:
Timestamp:
Jun 15, 2018, 3:42:58 PM (3 years ago)
Author:
jluc@…
Message:

Afficher une partie variable du contexte de chaque trouvaille (par défaut 10 caractères, réglable par define). On verra pour porter dans le trunk ?

Location:
_plugins_/rechremp/branches/v0
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/rechremp/branches/v0/formulaires/rechercher_remplacer.php

    r49251 r110683  
    33include_spip('inc/utils');
    44
     5// texte figurant par défaut dans la zone de saisie
    56define("TXT_A_RECHERCHER", "votre recherche");
    67
     8// taille du contexte max affiché avant et après chaque extrait trouvé
     9define("CONTEXTE_NB_CHARS", 10);
     10
    711function remplace_txt($entite, $id, $champs, $txt_search, $remplace, $remplace_par="") {
     12        $n=intval(CONTEXTE_NB_CHARS);
     13        $m=max($n-1,0);
     14
    815        $nom_table = "spip_".$entite;
    916        if($entite=="article" || $entite=="rubrique" || $entite=="auteur")
     
    1724        }
    1825
     26        $pattern = "/(^.{0,$m}|.{".$n.'})'.preg_quote($txt_search, '/')."(.{0,$m}$|.{".$n.'})/m';
     27
    1928        if($resultats = sql_select($select, $nom_table)) {
    2029                while($res = sql_fetch($resultats)) {
    2130                        $nouvelles_valeurs = array();
    22                         $update = false;
    23 
     31                        $found = false;
     32                        $details = '';
    2433                        // on parcourt tous les champs
    2534                        foreach ($champs as $i => $nom_champ) {
    2635                                $nb = 0;
     36                               
     37                                if ($m and preg_match_all($pattern, $res[$nom_champ], $matches))
     38                                        $details .= '..'.implode ('...', $matches[0]).'.. ';
    2739                                $nouvelles_valeurs[$nom_champ] = str_replace($txt_search, $remplace_par, $res[$nom_champ], $nb);
    28                                 if($nb>0) $update = true;
     40                                if($nb>0)
     41                                        $found = true;
    2942                        }
    3043
    31                         // Mise à jour d'un champ de la table
    32                         if($update) {
     44                        if($found) {
    3345                                $retour .= "Texte trouv&eacute; dans <a href=\"".generer_url_entite($res[$id], $entite)."\">$entite ".$res[$id]."</a><br>";
     46                                // Mise à jour d'un champ de la table
    3447                                if($remplace)
    3548                                        sql_updateq($nom_table, $nouvelles_valeurs, $id."=".intval($res[$id]));
     49                                elseif ($m)
     50                                        $retour .= "<small style='margin-left: 2em'><small>".htmlspecialchars($details)."</small></small><br>";
    3651                        }
    3752                }
  • _plugins_/rechremp/branches/v0/plugin.xml

    r103720 r110683  
    88        </description>
    99        <etat>stable</etat>
    10         <version>0.1.2</version>
     10        <version>0.2.0</version>
    1111        <prefix>rechremp</prefix>
    1212        <icon>images/rechremp-32.png</icon>
Note: See TracChangeset for help on using the changeset viewer.