source: pmb4.2/trunk/fuentes/pmb/autorites/semantique/dico_synonymes.inc.php @ 815

Last change on this file since 815 was 815, checked in by jrpelegrina, 4 years ago

Initial release of pmb 4.2

  • Property svn:executable set to *
File size: 13.3 KB
Line 
1<?php
2// +-------------------------------------------------+
3// ï¿? 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: dico_synonymes.inc.php,v 1.6 2015-04-03 11:16:28 jpermanne Exp $action $mot
6
7if (stristr($_SERVER['REQUEST_URI'], ".inc.php")) die("no access");
8
9require_once("$include_path/templates/dico_synonymes.tpl.php");
10require_once("$class_path/semantique.class.php");
11
12$baseurl="./autorites.php?categ=semantique&sub=synonyms";
13if (!$page) $page=1;
14
15//si on recherche une clé spécifique, on remplace !!cle!! par la clé sinon par rien
16if ($word_search) $aff_liste_mots=str_replace("!!cle!!","'".stripslashes($word_search)."'",$aff_liste_mots);
17                else $aff_liste_mots=str_replace("!!cle!!","",$aff_liste_mots);
18
19switch ($action) {
20        case 'view':
21                $aff_mots=str_replace("!!mots_js!!",$mot_js,$aff_modif_mot);
22                if ($mot) {
23                       
24                        $mot=stripslashes($mot);
25                       
26                        $t=semantique::list_synonyms(rawurldecode($mot));
27                        $compt=count($t);
28                        if ($compt) {
29                                //parcours des mots liés trouvés
30                                for ($j=0;$j<$compt;$j++) {
31                                        $mots_lies.=$aff_mot_lie;
32                                        $mots_lies=str_replace("!!iword!!",$j,$mots_lies);
33                                        $mots_lies=str_replace("!!word!!",stripslashes($t[$j]["mot"]),$mots_lies);
34                                        $mots_lies=str_replace("!!id_word!!",$t[$j]["code"],$mots_lies);
35                                        if ($j==0) $mots_lies=str_replace("!!bouton_ajouter!!","<input type='button' class='bouton' value='+' onClick=\"add_word();\"/>",$mots_lies);
36                                                else $mots_lies=str_replace("!!bouton_ajouter!!","",$mots_lies);
37                                }
38                                $aff_mots=str_replace("!!supprimer!!","<div class='right'><input type='button' class='bouton' value='".$msg["63"]."' onClick=\"var response; response=confirm('".$msg["word_del_confirm"]."'); if (response) document.location='./autorites.php?categ=semantique&sub=synonyms&action=del&id_mot=!!id_mot!!&mot=!!mot!!'; return false;\"></div>\n",$aff_mots);
39                                $aff_mots=str_replace("!!mots_lie!!",$mots_lies,$aff_mots);                     
40                                $aff_mots=str_replace("!!max_word!!",$compt,$aff_mots);
41                        } else {
42                                //pas de résultat on affiche une seule case de saisie
43                                $aff_mot_lie=str_replace("!!iword!!","0",$aff_mot_lie);
44                                $aff_mot_lie=str_replace("!!word!!","",$aff_mot_lie);
45                                $aff_mot_lie=str_replace("!!id_word!!","",$aff_mot_lie);
46                                $aff_mots=str_replace("!!mots_lie!!",$aff_mot_lie,$aff_mots);
47                                $aff_mots=str_replace("!!supprimer!!","<div class='right'><input type='button' class='bouton' value='".$msg["63"]."' onClick=\"var response; response=confirm('".$msg["word_del_confirm"]."'); if (response) document.location='./autorites.php?categ=semantique&sub=synonyms&action=del&id_mot=!!id_mot!!&mot=!!mot!!'; return false;\"></div>\n",$aff_mots);
48                                $aff_mots=str_replace("!!max_word!!","1",$aff_mots);
49                                $aff_mots=str_replace("!!bouton_ajouter!!","<input type='button' class='bouton' value='+' onClick=\"add_word();\"/>",$aff_mots);
50                        }
51                //      $baseurl.="&word_selected=".$mot;
52                        $aff_mots=str_replace("!!mot!!",rawurlencode($mot),$aff_mots);
53                        $aff_mots=str_replace("!!id_mot!!",$id_mot,$aff_mots);
54                        $aff_mots=str_replace("!!mot_original!!",$mot,$aff_mots);
55                       
56                } else {
57                        //si le mot est vide, on affiche le formulaire vierge
58                        $aff_mot_lie=str_replace("!!iword!!","0",$aff_mot_lie);
59                        $aff_mot_lie=str_replace("!!word!!","",$aff_mot_lie);
60                        $aff_mot_lie=str_replace("!!id_word!!","",$aff_mot_lie);
61                        $aff_mots=str_replace("!!mots_lie!!",$aff_mot_lie,$aff_mots);
62                        $aff_mots=str_replace("!!mot!!","",$aff_mots);
63                        $aff_mots=str_replace("!!mot_original!!","",$aff_mots);
64                        //on ne peut supprimer un mot inexistant
65                        $aff_mots=str_replace("!!supprimer!!","",$aff_mots);
66                        $aff_mots=str_replace("!!max_word!!","1",$aff_mots);
67                        $aff_mots=str_replace("!!id_mot!!","",$aff_mots);
68                        $aff_mots=str_replace("!!bouton_ajouter!!","<input type='button' class='bouton' value='+' onClick=\"add_word();\"/>",$aff_mots);
69                }
70                if ($word_search) $baseurl.="&action=search&word_search=".rawurlencode($word_search);
71                $aff_mots=str_replace("!!action!!",$baseurl,$aff_mots); 
72                print $aff_mots;
73                break;
74        case 'modif':
75                $bool_erreur=false;
76                if ($word_selected) {
77                        //insertion d'un nouveau mot                                           
78                        if ($word_code_selected)$rqt_ins = "update mots set mot='".$word_selected."' where id_mot='$word_code_selected' ";
79                        else $rqt_ins ="insert into mots set mot='".$word_selected."' ";
80                       
81                        @pmb_mysql_query($rqt_ins);
82                        if (!$word_code_selected)$word_code_selected= pmb_mysql_insert_id();           
83                } else {
84                                $bool_erreur=true;
85                                print "<script> alert('".$msg["word_error"]."'); </script>";
86                }               
87                if ($bool_erreur==false) {
88                        $f_words=array();
89                        //récupération des synonymes affectés au mot
90                        for ($i=$max_word-1;$i>=0 ; $i--) {
91                                $var_word = "f_word$i" ;
92                                global $$var_word;
93                                if ($$var_word && ($$var_word!=$word_selected)) {
94                                        $var_word_code="f_word_code$i";
95                                        global $$var_word_code;
96                                        if ($$var_word_code) $f_words[]=$$var_word_code;
97                                        else {
98                                                //vérification de l'existence du mot
99                                                $rqt_exist="select id_mot, mot from mots left join linked_mots on (num_mot=id_mot) where mot='".$$var_word."' and id_mot not in (select num_mot from linked_mots where linked_mots.num_linked_mot=0) group by id_mot";
100                                                $query_exist=pmb_mysql_query($rqt_exist);
101                                                if (!pmb_mysql_num_rows($query_exist)) {
102                                                        //insertion d'un nouveau mot
103                                                        $rqt_ins="insert into mots (mot) values ('".$$var_word."')";
104                                                       
105                                                        @pmb_mysql_query($rqt_ins);
106                                                        //recherche de l'id du mot inséré
107                                                        $f_words[]=pmb_mysql_insert_id();
108                                                }                                               
109                                        }
110                                }
111                        }                                       
112                        //dédoublonne le tableau
113                        $f_words=array_unique($f_words);
114               
115                        //suppression des enregistrements existants
116                        $rqt_del = "delete from linked_mots where num_mot='".$word_code_selected."' ";
117                        $res_del = pmb_mysql_query($rqt_del, $dbh);
118                        //insertion du mot et de ses synonymes
119                        $rqt_ins = "insert into linked_mots (num_mot, num_linked_mot, type_lien, ponderation) VALUES ";
120                                               
121                        //récupération des synonymes affectés au mot
122                        for ($i=0;$i<count($f_words) ; $i++) {
123                                $valeurs="('".$word_code_selected."','".$f_words[$i]."','1','0.5')";
124                                $res_ins=pmb_mysql_query($rqt_ins.$valeurs,$dbh);
125                        }
126                        $letter=convert_diacrit(pmb_strtolower(pmb_substr($word_selected,0,1)));
127                }
128                break;
129        case 'search':
130                if ($word_search) {
131                        $baseurl.="&action=search&word_search=".rawurlencode($word_search);
132                        $word_search=str_replace("*","%",rawurldecode($word_search));
133                        $clause=" and mot like '".$word_search."'";
134                }
135                if (!$nb_per_page) $nb_per_page=$nb_per_page_gestion;
136                $limit=" limit ".(($page-1)*$nb_per_page).",".$nb_per_page;
137                break;
138        case 'last_words':
139                $tri="order by id_mot desc";
140                if (!$nb_per_page) $nb_per_page=$nb_per_page_search;
141                $limit=" limit ".(($page-1)*$nb_per_page).",".$nb_per_page;
142                break;
143        case 'del':
144                if ($id_mot) {
145                        //recherche si le mot est synonyme d'un autre mot
146                        $rqt="select num_mot from linked_mots where num_linked_mot=".$id_mot;
147                        $execute_query=pmb_mysql_query($rqt);
148                        if (!pmb_mysql_num_rows($execute_query)) {
149                                $rqt_del = "delete from mots where id_mot='".$id_mot."' ";
150                                @pmb_mysql_query($rqt_del, $dbh);
151                                $rqt_del = "delete from linked_mots where num_mot='".$id_mot."' ";
152                                @pmb_mysql_query($rqt_del, $dbh);       
153                                //$letter=convert_diacrit(pmb_strtolower(pmb_substr($mot,0,1)));
154                        } else print "<script> alert('".addslashes($msg["other_word_syn_error"])."'); document.location='./autorites.php?categ=semantique&sub=synonyms&id_mot=$id_mot&mot=$mot&action=view';</script>";
155                } else print "<script> alert('".$msg["word_error"]."'); </script>";
156                break;
157        default:
158               
159                break;         
160}
161if ($action!='view') {
162        if (!$nb_per_page) $nb_per_page=$nb_per_page_gestion;
163        if ($action!='last_words') $tri="order by mot";
164        //comptage des mots
165        $rqt1="select id_mot, mot from mots left join linked_mots on (num_mot=id_mot) where id_mot not in (select num_mot from linked_mots where linked_mots.num_linked_mot=0)$clause group by id_mot";
166        $execute_query1=pmb_mysql_query($rqt1);
167        $nb_result=pmb_mysql_num_rows($execute_query1);
168        pmb_mysql_free_result($execute_query1);
169        //recherche des mots
170        $rqt="select id_mot, mot from mots left join linked_mots on (num_mot=id_mot) where id_mot not in (select num_mot from linked_mots where linked_mots.num_linked_mot=0)$clause group by id_mot $tri $limit";
171        $execute_query=pmb_mysql_query($rqt);
172        if ($execute_query&&$nb_result) {
173                $affichage_mots="<div class='row'>";
174                if ($action=='last_words'||$word_search) {
175                        $parity=1;
176                        $affichage_mots.="<table>";
177                        $affichage_mots.="<th>".$msg["word_selected"]."</th>";
178                } else {
179                        $words_for_syn=array();
180                        $words_for_syn1=array();
181                }
182                while ($r=pmb_mysql_fetch_object($execute_query)) {
183                        if (!$word_search&&$action!='last_words') {
184                                $words_for_syn[$r->id_mot]=stripslashes($r->mot);
185                                $words_for_syn1[$r->id_mot]=convert_diacrit(pmb_strtolower(stripslashes($r->mot)));
186                        } else {
187                                        if ($parity % 2) {
188                                        $pair_impair = "even";
189                                        } else {
190                                                $pair_impair = "odd";
191                                                }
192                                        $parity += 1;
193                                        $affichage_mots.="<tr class='$pair_impair'><td><a href='".$baseurl."&id_mot=".$r->id_mot."&mot=".rawurlencode(stripslashes($r->mot))."&action=view'>".stripslashes($r->mot)."</a></td></tr>";
194                                }
195                }
196               
197                if ($action=='last_words'||$word_search) {
198                        $aff_liste_mots=str_replace("!!lettres!!","",$aff_liste_mots);
199                        $affichage_mots.="</table>";
200                        $compt=$nb_result;
201                } else {
202                        if (count($words_for_syn)) {
203                                //toutes les lettres de l'alphabet dans un tableau
204                                $alphabet=array();
205                                $alphabet[]='';
206                                for ($i=97;$i<=122;$i++) {
207                                        $alphabet[]=chr($i);
208                                }
209
210                                $bool=false;
211                                foreach($words_for_syn as $val) {
212                                        if ($val!="") {
213                                                $carac=convert_diacrit(pmb_strtolower(pmb_substr($val,0,1)));
214                                                if ($bool==false) {
215                                                        if ($word_selected) $premier_carac=convert_diacrit(pmb_strtolower(pmb_substr($word_selected,0,1))); 
216                                                                else $premier_carac=$carac;
217                                                        $bool=true;
218                                                }
219                                                if (array_search($carac,$alphabet)===FALSE) $alphabet_num[]=$carac;
220                                        }
221                                }
222                               
223                                //dédoublonnage du tableau des autres caractères
224                                if (count($alphabet_num)) $alphabet_num = array_unique($alphabet_num);
225                                if (!$letter) {
226                                        if (count($alphabet_num)) $letter="My";
227                                        elseif ($premier_carac) $letter=$premier_carac;
228                                        else $letter="a";
229                                } elseif (!array_search($letter,$alphabet)) $letter="My";
230                                       
231                                // affichage d'un sommaire par lettres
232                                $affichage_lettres="<div class='row'>";
233                               
234                                if (count($alphabet_num)) {
235                                        if ($letter=='My') $affichage_lettres.="<font size='+1'><strong><u>#</u></strong></font> ";
236                                                else $affichage_lettres.="<a href='$baseurl&letter=My'>#</a> ";
237                                }
238                                foreach($alphabet as $char) {
239                                        $present = pmb_preg_grep("/^$char/i", $words_for_syn1);
240                                        if(sizeof($present) && strcasecmp($letter, $char))
241                                                $affichage_lettres.="<a href='$baseurl&letter=$char'>$char</a> ";
242                                        else if(!strcasecmp($letter, $char))
243                                                $affichage_lettres.="<font size='+1'><strong><u>$char</u></strong></font> ";
244                                        else $affichage_lettres.="<span class='gris'>".$char."</span> ";
245                                }
246                                $affichage_lettres.="</div>";
247               
248                                //affichage des mots
249                               
250                                $compt=0;
251                                $bool=false;
252                                if (!$page) $page=1;
253                               
254                                //parcours du tableau de mots, découpage en colonne et détermination des valeurs par rapport à la pagination et la lettre
255                                foreach ($words_for_syn as $key=>$valeur_syn) {
256                                        if ($valeur_syn!="") {
257                                                if ($compt>=(($page-1)*$nb_per_page)&&($compt<($page*$nb_per_page))) {
258                                                        if ($bool==false&&(($compt % 30)==0)) {
259                                                                $affichage_mots.="<div class='row'>";
260                                                        }
261                                                }
262                                                if ($letter!='My') {
263                                                        if (preg_match("/^$letter/i", convert_diacrit(pmb_strtolower($valeur_syn)))) {
264                                                                if (($compt>=(($page-1)*$nb_per_page))&&($compt<($page*$nb_per_page))) {
265                                                                        $affichage_mots.="<a href='$baseurl&id_mot=".$key."&mot=".rawurlencode($valeur_syn)."&action=view'>".htmlentities($valeur_syn,ENT_QUOTES,$charset)."</a><br />\n";
266                                                                } 
267                                                                $compt++;
268                                                        }
269                                                } else {
270                                                        if (pmb_substr($valeur_syn,0,1)=='0'||!array_search(convert_diacrit(pmb_strtolower(pmb_substr($valeur_syn,0,1))),$alphabet)) {
271                                                                if (($compt>=(($page-1)*$nb_per_page))&&($compt<($page*$nb_per_page))) {
272                                                                        $affichage_mots.="<a href='$baseurl&id_mot=".$key."&mot=".rawurlencode($valeur_syn)."&action=view'>".htmlentities($valeur_syn,ENT_QUOTES,$charset)."</a><br />\n";
273                                                                } 
274                                                                $compt++;       
275                                                        }       
276                                                }
277                                                if ($compt>=(($page-1)*$nb_per_page)&&($compt<($page*$nb_per_page))) {
278                                                        if ($compt!=0&&(($compt % 30)==0)) {
279                                                                $affichage_mots.="</div>";
280                                                        }
281                                                }
282                                                if ($compt==0) $bool=true;
283                                        }
284                                }
285                                $aff_liste_mots=str_replace("!!lettres!!",$affichage_lettres,$aff_liste_mots);
286                        }
287                }
288                $affichage_mots.="</div>";
289                $affichage_mots.="<div class='row'>&nbsp;</div>\n";
290                //affichage de la pagination
291                $affichage_mots.=aff_pagination ($baseurl, $compt, $nb_per_page, $page) ;
292                $affichage_mots.="<div class='row'>&nbsp;</div>\n";
293                $aff_liste_mots=str_replace("!!see_last_words!!","<div class='right'><a href='./autorites.php?categ=semantique&sub=synonyms&action=last_words'>".$msg["see_last_words_created"]."</a></div>",$aff_liste_mots);
294        } else $aff_liste_mots=str_replace("!!see_last_words!!","",$aff_liste_mots);
295        $aff_liste_mots=str_replace("!!lettres!!",$affichage_lettres,$aff_liste_mots);
296        $aff_liste_mots=str_replace("!!liste_mots!!",$affichage_mots,$aff_liste_mots);
297        $aff_liste_mots=str_replace("!!action!!",$baseurl,$aff_liste_mots);
298        print $aff_liste_mots;
299}
300?>
Note: See TracBrowser for help on using the repository browser.