source: spip-zone/_plugins_/rechremp/branches/v0/formulaires/rechercher_remplacer.php @ 111266

Last change on this file since 111266 was 111266, checked in by jluc@…, 7 months ago

la canicule n'arrête pas le progrés

File size: 3.1 KB
Line 
1<?php
2
3include_spip('inc/utils');
4
5// texte figurant par défaut dans la zone de saisie
6define("TXT_A_RECHERCHER", "votre recherche");
7
8// taille du contexte max affiché avant et après chaque extrait trouvé
9define("CONTEXTE_NB_CHARS", 10);
10
11function remplace_txt($entite, $id, $champs, $txt_search, $remplace, $remplace_par="") {
12        $n=intval(CONTEXTE_NB_CHARS);
13        $m=max($n-1,0);
14
15        $nom_table = "spip_".$entite;
16        if($entite=="article" || $entite=="rubrique" || $entite=="auteur")
17                $nom_table .= "s";
18
19        $retour = "";
20        $select = "$id, titre";
21
22        foreach ($champs as $i => $nom_champ) {
23                $select .= ', '.$nom_champ;
24        }
25
26        $pattern = "/(^.{0,$m}|.{".$n.'})'.preg_quote($txt_search, '/')."(.{0,$m}$|.{".$n.'})/m';
27
28        if($resultats = sql_select($select, $nom_table)) {
29                while($res = sql_fetch($resultats)) {
30                        $nouvelles_valeurs = array();
31                        $found = false;
32                        $details = '';
33                        // on parcourt tous les champs
34                        foreach ($champs as $i => $nom_champ) {
35                                $nb = 0;
36                               
37                                if ($m and preg_match_all($pattern, $res[$nom_champ], $matches))
38                                        $details .= '..'.implode ('...', $matches[0]).'.. ';
39                                $nouvelles_valeurs[$nom_champ] = str_replace($txt_search, $remplace_par, $res[$nom_champ], $nb);
40                                if($nb>0) 
41                                        $found = true;
42                        }
43
44                        if($found) {
45                                $url = generer_url_entite($res[$id], $entite);
46                                if ($entite =='forum')
47                                        $url = str_replace ('debut_id_forum', 'id_forum', $url);
48                                $retour .= "Texte trouv&eacute; dans <a href='$url'>$entite ".$res[$id]."</a> ({$res['titre']})<br>";
49                                // Mise à jour d'un champ de la table
50                                if($remplace) 
51                                        sql_updateq($nom_table, $nouvelles_valeurs, $id."=".intval($res[$id]));
52                                elseif ($m) 
53                                        $retour .= "<small style='margin-left: 2em'><small>".htmlspecialchars($details)."</small></small><br>";
54                        }
55                }
56        }
57        return $retour;
58}
59
60function formulaires_rechercher_remplacer_charger_dist(){
61        $valeurs = array('txt_search'=> TXT_A_RECHERCHER,
62                'remplace'=>'',
63                'remplacer_par'=>'');
64
65        return $valeurs;
66}
67
68function formulaires_rechercher_remplacer_verifier_dist(){
69        $erreurs = array();
70
71        if(!_request('txt_search'))
72                $erreurs['txt_search'] = 'Saisie obligatoire';
73
74        if(count($erreurs))
75                $erreurs['message_erreur'] = 'Votre saisie contient des erreurs !';
76
77        return $erreurs;
78}
79
80function formulaires_rechercher_remplacer_traiter_dist(){       
81        $msg = "";
82
83        $msg .= remplace_txt('article', 'id_article', array("surtitre","titre","soustitre","descriptif","texte","chapo","ps"), _request('txt_search'), _request('remplace'), _request('remplacer_par'));
84        $msg .= remplace_txt('rubrique', 'id_rubrique', array("titre","descriptif","texte"), _request('txt_search'), _request('remplace'), _request('remplacer_par'));
85        $msg .= remplace_txt('auteur', 'id_auteur', array("bio"), _request('txt_search'), _request('remplace'), _request('remplacer_par'));
86        $msg .= remplace_txt('forum', 'id_forum', array("texte"), _request('txt_search'), _request('remplace'), _request('remplacer_par'));
87        $msg .= remplace_txt('syndic', 'id_syndic', array("descriptif"), _request('txt_search'), _request('remplace'), _request('remplacer_par'));
88        $msg .= "Fin du traitement";
89        return array('message_ok'=>$msg);
90}
91
92?>
Note: See TracBrowser for help on using the repository browser.