Changeset 123217 in spip-zone


Ignore:
Timestamp:
Apr 2, 2020, 10:42:40 AM (8 weeks ago)
Author:
jluc@…
Message:

Nouvelle option : recherche sensible ou non à la casse

Location:
_plugins_/rechremp/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/rechremp/trunk/formulaires/rechercher_remplacer.html

    r117979 r123217  
    2121                                ]<input type="text" name="#GET{name}" class="text" value="#ENV*{#GET{name},#GET{defaut}}" id="#GET{name}" [(#HTML5|et{#GET{obli}})required='required']/>
    2222                        </li>
     23                        #SET{name,sensible}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
     24                        <li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
     25                                #SET{val,yes}
     26                                <input type="checkbox" name="#GET{name}" class="checkbox" id="#GET{name}" value="#GET{val}" [(#GET{val}|=={#ENV{#GET{name},''}}|oui)checked="checked"]/>
     27                                <label for="#GET{name}">[(#GET{fl}|concat{':label_',#GET{name}}|_T)]</label>
     28                        </li>
    2329                        #SET{name,replace}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
    2430                        <li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
    2531                                #SET{val,yes}
    2632                                <div class="choix">
    27                                         <input type="checkbox" name="#GET{name}_#GET{val}" class="checkbox" id="#GET{name}_#GET{val}" value="#GET{val}"[(#GET{val}|=={#ENV{#GET{name}_#GET{val},''}}|oui)checked="checked"] onchange="update_do_replace()"/>
     33                                        <input type="checkbox" name="#GET{name}_#GET{val}" class="checkbox" id="#GET{name}_#GET{val}" value="#GET{val}" [(#GET{val}|=={#ENV{#GET{name}_#GET{val},''}}|oui)checked="checked"] onchange="update_do_replace()"/>
    2834                                        <label for="#GET{name}_#GET{val}">[(#GET{fl}|concat{':label_',#GET{name},'_',#GET{val}}|_T)]</label>
    2935                                </div>
  • _plugins_/rechremp/trunk/formulaires/rechercher_remplacer.php

    r117980 r123217  
    1515defined('RECHREMP_CONTEXTE_NB_CHARS') or define('RECHREMP_CONTEXTE_NB_CHARS', 20);
    1616
     17/**
     18 * @return array
     19 */
    1720function formulaires_rechercher_remplacer_charger_dist() {
    1821        $valeurs = array(
     
    2023                'replace_yes' => '',
    2124                'replace' => '',
     25                'sensible' => _request('sensible')
    2226        );
    2327
     
    2529}
    2630
     31/**
     32 * @return array
     33 */
    2734function formulaires_rechercher_remplacer_verifier_dist() {
    2835        $erreurs = array();
     36        $options = array ('sensible'=> _request('sensible'));
    2937
    3038        if (!_request('search')) {
     
    3644                        $erreurs['search_results'] =
    3745                                "<input type='hidden' name='replace_check_table[dummy]' value='yes' />"
    38                                 .rechremp_search_and_replace(_request('search'), '', false, _request('replace_yes') ? 'replace_check_table' : null);
     46                                .rechremp_search_and_replace(_request('search'), '', false, _request('replace_yes') ? 'replace_check_table' : null, $options);
    3947                }
    4048        }
     
    4351}
    4452
     53
     54/**
     55 * @return array
     56 *
     57 *      N'est appelée QUE pour les remplacements
     58 */
    4559function formulaires_rechercher_remplacer_traiter_dist() {
    4660        $res = array();
     61        $options = array ('sensible'=> _request('sensible'));
    4762
    4863        // remplacer si demande
     
    5166                $res['message_ok'] =
    5267                        '<h3>'._T('rechremp:resultat_remplacement').'<small>&#171;&nbsp;'.entites_html(_request('search')).'&nbsp;&#187;</small></h3>'
    53                 .rechremp_search_and_replace(_request('search'), _request('replace'), true, $check_replace);
     68                .rechremp_search_and_replace(_request('search'), _request('replace'), true, $check_replace, $options);
    5469        } else {
    55                 // sinon simple recherche, mais normalement on arrive pas la
     70                // sinon simple recherche, mais normalement on arrive pas là.
    5671                $res['message_ok'] = rechremp_search_and_replace(_request('search'));
    5772        }
     
    6984 *                      tableau de booléens dont l'index est une table à vérifier ou non
    7085 *                      exemple : Array ([dummy] => yes, [spip_forum] => on)
     86 * @param array $options    tableau d'options. Index possible : 'sensible'
    7187 * @return array|string
    7288 *                  La liste des résultats de recherche, groupés par table
    7389 *                  avec des checkbox pour chaque table afin de confirmer le remplacement ou non
    7490 */
    75 function rechremp_search_and_replace($search, $replace = null, $do_replace = false, $check_replace = null) {
     91function rechremp_search_and_replace($search, $replace = null, $do_replace = false, $check_replace = null, $options=array()) {
    7692        include_spip('base/objets');
    7793        $tables_exclues = array('spip_messages','spip_depots','spip_paquets','spip_plugins');
     
    109125                                }
    110126
    111                                 $t = rechremp_search_and_replace_table($table, $champs, $search, $replace, $replace_here);
     127                                $t = rechremp_search_and_replace_table($table, $champs, $search, $replace, $replace_here, $options);
    112128                                if ($t and is_string($check_replace)) {
    113129                                        $i = "<input type='checkbox' name='{$check_replace}[$table]' />";
     
    134150
    135151/**
    136  * @param $table            table dans laquelle la recherche se fait
    137  * @param $champs           les champs textes déclarés pour cette table
    138  * @param $search           la recherche
    139  * @param null $replace     la chaine qui remplace
     152 * @param string $table            table dans laquelle la recherche se fait
     153 * @param array $champs           les champs textes déclarés pour cette table
     154 * @param string $search           la recherche
     155 * @param string|null $replace     la chaine qui remplace
    140156 * @param bool $do_replace  faut il remplacer ?
     157 * @param array $options    tableau d'options. Index possible : 'sensible'
    141158 * @return string           liste présentant les résultats de la recherche
    142159 */
    143 function rechremp_search_and_replace_table($table, $champs, $search, $replace = null, $do_replace = false) {
     160function rechremp_search_and_replace_table($table, $champs, $search, $replace = null, $do_replace = false, $options=array()) {
    144161        if (!count($champs) or !$search) {
    145162                return '';
    146163        }
    147164
     165        $sensible = isset($options['sensible']) and $options['sensible'];
     166        $preg_sensible = ($sensible ? 'i' : '');
     167
    148168        $len = intval(RECHREMP_CONTEXTE_NB_CHARS);
    149169        $len_moins_un = max($len-1, 0);
    150         $pattern = "/(^.{0,$len_moins_un}|.{".$len.'})'.preg_quote($search, '/')."(.{0,$len_moins_un}$|.{".$len.'})/s';
     170        $pattern = "/(^.{0,$len_moins_un}|.{".$len.'})'.preg_quote($search, '/')."(.{0,$len_moins_un}$|.{".$len.'})/s'.$preg_sensible;
    151171        // Par exemple : "/(^.{0,9}|.{10})ma recherche(.{0,9}$|.{10})/s"
    152172
     
    168188                        $nb = 0;
    169189
    170                         $v = str_replace($search, $replace, $row[$c], $nb);
     190                        if ($sensible) {
     191                                $v = str_replace($search, $replace, $row[$c], $nb);
     192                        }
     193                        else {
     194                                $v = str_ireplace($search, $replace, $row[$c], $nb);
     195                        }
    171196                        // si on a confirmé un remplacement, $v est le résultat du remplacement
    172197                        // sinon c'est $nb seulement qui nous intéresse ($v est inutilisable car $replace est vide)
  • _plugins_/rechremp/trunk/lang/rechremp_fr.php

    r94417 r123217  
    2727        'label_replace_yes' => 'Remplacer',
    2828        'label_search' => 'Rechercher :',
     29        'label_sensible' => 'Sensible à la casse',
    2930
    3031        // N
  • _plugins_/rechremp/trunk/paquet.xml

    r117979 r123217  
    22        prefix="rechremp"
    33        categorie="outil"
    4         version="1.3.0"
     4        version="1.4.0"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.2.*]"
     
    1212        <!-- Rechercher des chaines dans la BDD SPIP et eventuellement les remplacer par une autre chaine -->
    1313
    14         <auteur lien="http://www.ouhpla.net">JLuc</auteur>
     14        <auteur>JLuc</auteur>
    1515        <auteur>Cerdic</auteur>
    1616
Note: See TracChangeset for help on using the changeset viewer.