|
|
|
@ -29,6 +29,7 @@ function formulaires_rechercher_remplacer_charger_dist() {
|
|
|
|
|
'replace_yes' => '',
|
|
|
|
|
'replace' => '',
|
|
|
|
|
'sensible' => '',
|
|
|
|
|
'regexp' => '',
|
|
|
|
|
'tables_exclues' => [
|
|
|
|
|
'spip_messages',
|
|
|
|
|
'spip_depots',
|
|
|
|
@ -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');
|
|
|
|
@ -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')) {
|
|
|
|
@ -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');
|
|
|
|
@ -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 ($sensible) {
|
|
|
|
|
$v = str_replace($search, $replace, $row[$c], $nb);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
$v = str_ireplace($search, $replace, $row[$c], $nb);
|
|
|
|
|
if ($is_regexp) {
|
|
|
|
|
if ($sensible) {
|
|
|
|
|
$v = preg_replace('/' . $search . '/s', $replace, $row[$c], -1, $nb);
|
|
|
|
|
} else {
|
|
|
|
|
$v = preg_replace('/' . $search . '/si', $replace, $row[$c], -1, $nb);
|
|
|
|
|
}
|
|
|
|
|
} 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)
|
|
|
|
|
|
|
|
|
|