Chargement en cours formulaires/rechercher_remplacer.html +9 −0 Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff Chargement en cours @@ -28,6 +28,15 @@ <label for="#GET{name}">[(#GET{fl}|concat{':label_',#GET{name}}|_T)]</label> </div> </div> #SET{name,regexp}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} <div class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]"> #SET{val,yes} <div> <input type="checkbox" name="#GET{name}" class="checkbox" id="#GET{name}" value="#GET{val}" [(#GET{val}|=={#ENV{#GET{name},''}}|oui)checked="checked"]/> <label for="#GET{name}">[(#GET{fl}|concat{':label_',#GET{name}}|_T)]</label> <div class="explication">[(#GET{fl}|concat{':label_',#GET{name},'_explication'}|_T)]</div> </div> </div> #SET{name,search_tables}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} <div class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]"> <label>[(#GET{fl}|concat{':label_',#GET{name}}|_T|label_ponctuer)]</label> Chargement en cours formulaires/rechercher_remplacer.php +35 −18 Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff Chargement en cours @@ -29,6 +29,7 @@ function formulaires_rechercher_remplacer_charger_dist() { 'replace_yes' => '', 'replace' => '', 'sensible' => '', 'regexp' => '', 'tables_exclues' => [ 'spip_messages', 'spip_depots', Chargement en cours @@ -40,16 +41,21 @@ function formulaires_rechercher_remplacer_charger_dist() { return $valeurs; } /** @return array */ function formulaires_rechercher_remplacer_options() { return [ 'sensible'=> (bool) _request('sensible'), 'regexp'=> (bool) _request('regexp'), 'tables' => array_filter((array) (_request('search_tables') ?? [])), ]; } /** * @return array */ function formulaires_rechercher_remplacer_verifier_dist() { $erreurs = []; $options = [ 'sensible'=> (bool) _request('sensible'), 'tables' => array_filter((array) (_request('search_tables') ?? [])), ]; $options = formulaires_rechercher_remplacer_options(); if (!_request('search')) { $erreurs['search'] = _T('info_obligatoire'); Chargement en cours Chargement en cours @@ -81,10 +87,7 @@ function formulaires_rechercher_remplacer_verifier_dist() { function formulaires_rechercher_remplacer_traiter_dist() { $res = []; $options = [ 'sensible'=> (bool) _request('sensible'), 'tables' => array_filter((array) (_request('search_tables') ?? [])), ]; $options = formulaires_rechercher_remplacer_options(); // remplacer si demande if (_request('remplacer') and _request('replace_yes')) { Chargement en cours Chargement en cours @@ -191,17 +194,23 @@ function rechremp_search_and_replace($search, $replace = null, $do_replace = fal * @param array $options tableau d'options. Index possible : 'sensible' * @return string liste présentant les résultats de la recherche */ function rechremp_search_and_replace_table($table, $champs, $search, $replace = null, $do_replace = false, $options=array()) { function rechremp_search_and_replace_table($table, $champs, $search, $replace = null, $do_replace = false, $options = []) { if (!count($champs) or !$search) { return ''; } $sensible = isset($options['sensible']) and $options['sensible']; $sensible = $options['sensible']; $is_regexp = $options['regexp']; $preg_sensible = ($sensible ? '' : 'i'); $len = intval(RECHREMP_CONTEXTE_NB_CHARS); $len_moins_un = max($len-1, 0); $pattern = "/(^.{0,$len_moins_un}|.{".$len.'})('.preg_quote($search, '/').")(.{0,$len_moins_un}$|.{".$len.'})/s'.$preg_sensible; $query = ($is_regexp ? $search : preg_quote($search, '/')); $pattern = "/(^.{0,$len_moins_un}|.{".$len.'})(' . $query . ")(.{0,$len_moins_un}$|.{".$len.'})/s'.$preg_sensible; // Par exemple : "/(^.{0,9}|.{10})ma recherche(.{0,9}$|.{10})/s" include_spip('action/editer_objet'); Chargement en cours @@ -217,16 +226,24 @@ function rechremp_search_and_replace_table($table, $champs, $search, $replace = $res = sql_select($select, $table); while ($row = sql_fetch($res)) { $set = array(); $set = []; foreach ($champs as $c) { $nb = 0; if ($is_regexp) { if ($sensible) { $v = str_replace($search, $replace, $row[$c], $nb); $v = preg_replace('/' . $search . '/s', $replace, $row[$c], -1, $nb); } else { $v = preg_replace('/' . $search . '/si', $replace, $row[$c], -1, $nb); } else { } else { if ($sensible) { $v = str_replace($search, $replace, $row[$c], $nb); } else { $v = str_ireplace($search, $replace, $row[$c], $nb); } } // si on a confirmé un remplacement, $v est le résultat du remplacement // sinon c'est $nb seulement qui nous intéresse ($v est inutilisable car $replace est vide) Chargement en cours lang/rechremp_fr.php +2 −0 Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff Chargement en cours @@ -25,6 +25,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( // L 'label_replace' => 'Remplacer par', 'label_replace_yes' => 'Remplacer', 'label_regexp' => 'La recherche est une expression régulière ?', 'label_regexp_explication' => 'Il sera possible d’utiliser les captures dans le champ de remplacement ($0, $1, ...)', 'label_search' => 'Rechercher', 'label_search_tables' => 'Tables', 'label_search_tables_explication' => 'Cocher pour limiter à certaines tables (sinon toutes)', Chargement en cours Chargement en cours
formulaires/rechercher_remplacer.html +9 −0 Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff Chargement en cours @@ -28,6 +28,15 @@ <label for="#GET{name}">[(#GET{fl}|concat{':label_',#GET{name}}|_T)]</label> </div> </div> #SET{name,regexp}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} <div class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]"> #SET{val,yes} <div> <input type="checkbox" name="#GET{name}" class="checkbox" id="#GET{name}" value="#GET{val}" [(#GET{val}|=={#ENV{#GET{name},''}}|oui)checked="checked"]/> <label for="#GET{name}">[(#GET{fl}|concat{':label_',#GET{name}}|_T)]</label> <div class="explication">[(#GET{fl}|concat{':label_',#GET{name},'_explication'}|_T)]</div> </div> </div> #SET{name,search_tables}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} <div class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]"> <label>[(#GET{fl}|concat{':label_',#GET{name}}|_T|label_ponctuer)]</label> Chargement en cours
formulaires/rechercher_remplacer.php +35 −18 Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff Chargement en cours @@ -29,6 +29,7 @@ function formulaires_rechercher_remplacer_charger_dist() { 'replace_yes' => '', 'replace' => '', 'sensible' => '', 'regexp' => '', 'tables_exclues' => [ 'spip_messages', 'spip_depots', Chargement en cours @@ -40,16 +41,21 @@ function formulaires_rechercher_remplacer_charger_dist() { return $valeurs; } /** @return array */ function formulaires_rechercher_remplacer_options() { return [ 'sensible'=> (bool) _request('sensible'), 'regexp'=> (bool) _request('regexp'), 'tables' => array_filter((array) (_request('search_tables') ?? [])), ]; } /** * @return array */ function formulaires_rechercher_remplacer_verifier_dist() { $erreurs = []; $options = [ 'sensible'=> (bool) _request('sensible'), 'tables' => array_filter((array) (_request('search_tables') ?? [])), ]; $options = formulaires_rechercher_remplacer_options(); if (!_request('search')) { $erreurs['search'] = _T('info_obligatoire'); Chargement en cours Chargement en cours @@ -81,10 +87,7 @@ function formulaires_rechercher_remplacer_verifier_dist() { function formulaires_rechercher_remplacer_traiter_dist() { $res = []; $options = [ 'sensible'=> (bool) _request('sensible'), 'tables' => array_filter((array) (_request('search_tables') ?? [])), ]; $options = formulaires_rechercher_remplacer_options(); // remplacer si demande if (_request('remplacer') and _request('replace_yes')) { Chargement en cours Chargement en cours @@ -191,17 +194,23 @@ function rechremp_search_and_replace($search, $replace = null, $do_replace = fal * @param array $options tableau d'options. Index possible : 'sensible' * @return string liste présentant les résultats de la recherche */ function rechremp_search_and_replace_table($table, $champs, $search, $replace = null, $do_replace = false, $options=array()) { function rechremp_search_and_replace_table($table, $champs, $search, $replace = null, $do_replace = false, $options = []) { if (!count($champs) or !$search) { return ''; } $sensible = isset($options['sensible']) and $options['sensible']; $sensible = $options['sensible']; $is_regexp = $options['regexp']; $preg_sensible = ($sensible ? '' : 'i'); $len = intval(RECHREMP_CONTEXTE_NB_CHARS); $len_moins_un = max($len-1, 0); $pattern = "/(^.{0,$len_moins_un}|.{".$len.'})('.preg_quote($search, '/').")(.{0,$len_moins_un}$|.{".$len.'})/s'.$preg_sensible; $query = ($is_regexp ? $search : preg_quote($search, '/')); $pattern = "/(^.{0,$len_moins_un}|.{".$len.'})(' . $query . ")(.{0,$len_moins_un}$|.{".$len.'})/s'.$preg_sensible; // Par exemple : "/(^.{0,9}|.{10})ma recherche(.{0,9}$|.{10})/s" include_spip('action/editer_objet'); Chargement en cours @@ -217,16 +226,24 @@ function rechremp_search_and_replace_table($table, $champs, $search, $replace = $res = sql_select($select, $table); while ($row = sql_fetch($res)) { $set = array(); $set = []; foreach ($champs as $c) { $nb = 0; if ($is_regexp) { if ($sensible) { $v = str_replace($search, $replace, $row[$c], $nb); $v = preg_replace('/' . $search . '/s', $replace, $row[$c], -1, $nb); } else { $v = preg_replace('/' . $search . '/si', $replace, $row[$c], -1, $nb); } else { } else { if ($sensible) { $v = str_replace($search, $replace, $row[$c], $nb); } else { $v = str_ireplace($search, $replace, $row[$c], $nb); } } // si on a confirmé un remplacement, $v est le résultat du remplacement // sinon c'est $nb seulement qui nous intéresse ($v est inutilisable car $replace est vide) Chargement en cours
lang/rechremp_fr.php +2 −0 Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff Chargement en cours @@ -25,6 +25,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( // L 'label_replace' => 'Remplacer par', 'label_replace_yes' => 'Remplacer', 'label_regexp' => 'La recherche est une expression régulière ?', 'label_regexp_explication' => 'Il sera possible d’utiliser les captures dans le champ de remplacement ($0, $1, ...)', 'label_search' => 'Rechercher', 'label_search_tables' => 'Tables', 'label_search_tables_explication' => 'Cocher pour limiter à certaines tables (sinon toutes)', Chargement en cours