source: spip-zone/_plugins_/_dev_/mots_partout/mots_partout/exec/mots_edit.php @ 5634

Last change on this file since 5634 was 5634, checked in by gilles.vincent@…, 13 years ago
  • Un accent pas passé en trad
  • j'ai ajouté l'entrée info_auteurs_lies_mot', mais ce n'est pas pris en compte
  • erreur? de typo pour un forumS : du coup j'avais une erreur mysql qui bloquait la mise à jour des la portée d'un groupe de mots. Effet secondaire : on ne peut plus affecter de mot-clé aux forums. Argh!

Remarque : le fond noir est très laid pour les mots-clé associés aux auteurs, mais bon, je crois que c'est utilisé ailleurs, donc je n'y touche pas.

File size: 12.5 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2006                                                *
7 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
8 *                                                                         *
9 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
10 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11\***************************************************************************/
12
13if (!defined("_ECRIRE_INC_VERSION")) return;
14
15include_spip('inc/presentation');
16include_spip('base/abstract_sql');
17
18// http://doc.spip.org/@exec_mots_edit_dist
19function exec_mots_edit()
20{
21global
22  $ajouter_id_article, // attention, ce n'est pas forcement un id d'article
23  $champs_extra,
24  $connect_statut,
25  $connect_toutes_rubriques,
26  $descriptif,
27  $id_groupe,
28  $id_mot,
29  $table_id,
30  $new,
31  $onfocus,
32  $options,
33  $redirect,
34  $redirect_ok,
35  $spip_display,
36  $table,
37  $texte,
38  $titre,
39  $titre_groupe,
40  $titre_mot,
41  $les_notes,
42  $type;
43
44 $id_groupe = intval($id_groupe);
45 $id_mot = intval($id_mot);
46//
47// modifications mot
48//
49 if (acces_mots()) {
50        if (strval($titre_mot)!='') {
51                if ($new == 'oui' && $id_groupe) {
52                        $id_mot = spip_abstract_insert("spip_mots", '(id_groupe)', "($id_groupe)");
53
54                        if($ajouter_id_article = intval($ajouter_id_article))
55                        // heureusement que c'est pour les admin complet,
56                        // sinon bonjour le XSS
57                                ajouter_nouveau_mot($id_groupe, $table, $table_id, $id_mot, $ajouter_id_article);
58
59                }
60
61                $result = spip_query("SELECT titre FROM spip_groupes_mots WHERE id_groupe=$id_groupe");
62                if ($row = spip_fetch_array($result))
63                        $type = (corriger_caracteres($row['titre']));
64                else $type = (corriger_caracteres($type));
65                // recoller les champs du extra
66                if ($champs_extra) {
67                        include_spip('inc/extra');
68                        $add_extra = extra_recup_saisie("mots");
69                } else
70                        $add_extra = '';
71
72                spip_query("UPDATE spip_mots SET titre=" . spip_abstract_quote($titre_mot) . ", texte=" . spip_abstract_quote($texte) . ", descriptif=" . spip_abstract_quote($descriptif) . ", type=" . spip_abstract_quote($type) . ", id_groupe=$id_groupe" . (!$add_extra ? '' : (", extra = " . spip_abstract_quote($add_extra))) . " WHERE id_mot=$id_mot");
73
74                if ($GLOBALS['meta']['activer_moteur'] == 'oui') {
75                        include_spip("inc/indexation");
76                        marquer_indexer('spip_mots', $id_mot);
77                }
78        }
79        else if ($new == 'oui') {
80                if (!$titre_mot = $titre) {
81                        $titre_mot = filtrer_entites(_T('texte_nouveau_mot'));
82                        $onfocus = " onfocus=\"if(!antifocus){this.value='';antifocus=true;}\"";
83                }
84        }
85 }
86
87//
88// redirection ou affichage
89//
90if ($redirect_ok == 'oui' && $redirect) {
91        redirige_par_entete(rawurldecode($redirect));
92}
93
94//
95// Recupere les donnees
96//
97 if ($id_mot) {
98        $row = spip_fetch_array(spip_query("SELECT * FROM spip_mots WHERE id_mot=$id_mot"));
99         if ($row) {
100                $id_mot = $row['id_mot'];
101                $titre_mot = $row['titre'];
102                $descriptif = $row['descriptif'];
103                $texte = $row['texte'];
104                $type = $row['type'];
105                $extra = $row['extra'];
106                $id_groupe = $row['id_groupe'];
107         } else $id_mot = 0;
108 }
109pipeline('exec_init',array('args'=>array('exec'=>'mots_edit','id_mot'=>$id_mot),'data'=>''));
110
111debut_page("&laquo; $titre_mot &raquo;", "naviguer", "mots");
112debut_gauche();
113
114
115//////////////////////////////////////////////////////
116// Boite "voir en ligne"
117//
118
119if ($id_mot) {
120        debut_boite_info();
121        echo "<CENTER>";
122        echo "<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=1><B>"._T('titre_gauche_mots_edit')."</B></FONT>";
123        echo "<BR><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=6><B>$id_mot</B></FONT>";
124        echo "</CENTER>";
125
126        voir_en_ligne ('mot', $id_mot);
127
128        fin_boite_info();
129 } else if (!$new) {echo _T('info_mot_sans_groupe'); exit;}
130
131//////////////////////////////////////////////////////
132// Logos du mot-clef
133//
134
135if ($id_mot > 0 AND acces_mots() AND ($spip_display != 4)) {
136        include_spip('inc/chercher_logo');
137        echo afficher_boite_logo('id_mot', $id_mot, _T('logo_mot_cle').aide("breveslogo"), _T('logo_survol'), 'mots_edit');
138 }
139
140//
141// Afficher les boutons de creation d'article et de breve
142//
143debut_raccourcis();
144
145if (acces_mots() AND $id_groupe) {
146        icone_horizontale(_T('icone_modif_groupe_mots'), generer_url_ecrire("mots_type","id_groupe=$id_groupe"), "groupe-mot-24.gif", "edit.gif");
147        icone_horizontale(_T('icone_creation_mots_cles'), generer_url_ecrire("mots_edit", "new=oui&id_groupe=$id_groupe&redirect=" . generer_url_retour('mots_tous')),  "mot-cle-24.gif",  "creer.gif");
148 }
149 icone_horizontale(_T('icone_voir_tous_mots_cles'), generer_url_ecrire("mots_tous",""), "mot-cle-24.gif", "rien.gif");
150
151fin_raccourcis();
152
153
154echo pipeline('affiche_gauche',array('args'=>array('exec'=>'mots_edit','id_mot'=>$id_mot),'data'=>''));
155creer_colonne_droite();
156echo pipeline('affiche_droite',array('args'=>array('exec'=>'mots_edit','id_mot'=>$id_mot),'data'=>''));
157debut_droite();
158
159debut_cadre_relief("mot-cle-24.gif");
160
161
162echo "\n<table cellpadding='0' cellspacing='0' border='0' width='100%'>";
163echo "<tr width='100%'>";
164echo "<td width='100%' valign='top'>";
165gros_titre($titre_mot);
166
167
168if ($descriptif) {
169        echo "<p><div style='border: 1px dashed #aaaaaa;'>";
170        echo "<font size='2' face='Verdana,Arial,Sans,sans-serif'>";
171        echo "<b>",_T('info_descriptif'),"</b> ";
172        echo propre($descriptif);
173        echo "&nbsp; ";
174        echo "</font>";
175        echo "</div>";
176}
177echo "</td>";
178echo "</tr></table>\n";
179
180
181if (strlen($texte)>0){
182        echo "<FONT FACE='Verdana,Arial,Sans,sans-serif'>";
183        echo "<P>".propre($texte);
184        echo "</FONT>";
185}
186
187 if ($les_notes) {
188                        echo debut_cadre_relief();
189                        echo "<div $dir_lang class='arial11'>";
190                        echo justifier("<b>"._T('info_notes')."&nbsp;:</b> ".$les_notes);
191                        echo "</div>";
192                        echo fin_cadre_relief();
193 }
194
195
196if ($id_mot) {
197//////////////////////////
198//MODIFICATION
199//////////////////////////
200        $tables_installees = unserialize(lire_meta('MotsPartout:tables_installees'));
201        foreach($tables_installees as $chose => $m) { $choses[]= $chose; }
202       
203        global $choses_possibles;
204        include(_DIR_PLUGIN_MOTS_PARTOUT."/mots_partout_choses.php");
205        include_spip('inc/sites_voir');
206        include_spip('inc/choses');
207        $occurences = array();
208        foreach ($choses as $chose){
209                $chaine1=$chose;
210                $chaine2='_lies_mot';
211                if (($chose=='rubriques')||($chose=='breves'))
212                        $chaine2='_liees_mot';
213                elseif ($chose=='syndic')
214                        $chaine1='sites';
215                elseif ($chose=='forum')
216//Attention conflit avec afficher_forum !
217                        $chaine1='forums';
218                $f='afficher_'.$chaine1;
219
220                $from='spip_'.$chose.' AS '.$chose.', spip_mots_'.$chose.' AS lien';
221                $where="lien.id_mot='$id_mot' AND lien.".$choses_possibles[$chose]['id_chose']."=".$chose.".".$choses_possibles[$chose]['id_chose'];
222
223                 if ($choses_possibles[$chose]['statut_'.$GLOBALS['connect_statut']])
224                        $where.=" AND chose.statut IN (".$choses_possibles[$chose]['statut_'.$GLOBALS['connect_statut']].")";
225                 elseif ($choses_possibles[$chose]['statut_'.$GLOBALS['connect_statut']])
226                        $where.=" AND chose.statut IN (".$choses_possibles[$chose]['statut_tous'].")";
227
228                if ($chose == 'auteurs') $orderby = $chose.".nom";
229                elseif ($chose == 'site') $orderby = $chose.".nom_site";
230                else $orderby = $chose.".titre";
231               
232                if (function_exists($f)) $f(_T('info_'.$chaine1.$chaine2), array("FROM" => $from,'WHERE' => $where, 'ORDER BY' => $orderby));
233        }
234/*
235        echo "<P>";
236
237        if ($connect_statut == "0minirezo")
238                $aff_articles = "'prepa','prop','publie','refuse'";
239        else
240                $aff_articles = "'prop','publie'";
241
242        afficher_rubriques(_T('info_rubriques_liees_mot'), array("FROM" => 'spip_rubriques AS rubrique, spip_mots_rubriques AS lien', 'WHERE' => "lien.id_mot='$id_mot' AND lien.id_rubrique=rubrique.id_rubrique", 'ORDER BY' => "rubrique.titre"));
243
244        afficher_articles(_T('info_articles_lies_mot'), array('FROM' => "spip_articles AS articles, spip_mots_articles AS lien", 'WHERE' => "lien.id_mot='$id_mot' AND lien.id_article=articles.id_article AND articles.statut IN ($aff_articles)", 'ORDER BY' => "articles.date DESC"), true);
245
246        afficher_breves(_T('info_breves_liees_mot'), array("FROM" => 'spip_breves AS breves, spip_mots_breves AS lien', 'WHERE' => "lien.id_mot='$id_mot' AND lien.id_breve=breves.id_breve", 'ORDER BY' => "breves.date_heure DESC"));
247
248        include_spip('inc/sites_voir');
249        afficher_sites(_T('info_sites_lies_mot'), array("FROM" => 'spip_syndic AS syndic, spip_mots_syndic AS lien', 'WHERE' => "lien.id_mot='$id_mot' AND lien.id_syndic=syndic.id_syndic", 'ORDER BY' => "syndic.nom_site DESC"));
250*/
251}
252
253fin_cadre_relief();
254
255
256
257if (acces_mots()){
258        echo "<P>";
259        debut_cadre_formulaire();
260
261        echo "<div class='serif'>";
262        echo generer_url_post_ecrire("mots_edit", ($id_mot ? "id_mot=$id_mot" : ""));
263
264        if ($new=='oui')
265                echo "<input type='hidden' name='new' VALUE='oui' />\n";
266        echo "<input type='hidden' name='redirect' VALUE=\"$redirect\" />\n";
267        echo "<input type='hidden' name='redirect_ok' VALUE='oui' />\n";
268        echo "<input type='hidden' name='table' VALUE='$table' />\n";
269        echo "<input type='hidden' name='table_id' VALUE='$table_id' />\n";
270        echo "<input type='hidden' name='ajouter_id_article' VALUE=\"$ajouter_id_article\" />\n";
271
272        $titre_mot = entites_html($titre_mot);
273        $descriptif = entites_html($descriptif);
274        $texte = entites_html($texte);
275
276        echo "<B>"._T('info_titre_mot_cle')."</B> "._T('info_obligatoire_02');
277        echo aide ("mots");
278
279        echo "<BR><input type='text' NAME='titre_mot' CLASS='formo' VALUE=\"$titre_mot\" SIZE='40' $onfocus />";
280
281        determine_groupe_mots($table, $id_groupe);
282
283        if ($options == 'avancees' OR $descriptif) {
284                echo "<B>"._T('texte_descriptif_rapide')."</B><BR>";
285                echo "<TEXTAREA NAME='descriptif' CLASS='forml' ROWS='4' COLS='40' wrap=soft>";
286                echo $descriptif;
287                echo "</TEXTAREA><P>\n";
288        }
289        else
290                echo "<input type='hidden' NAME='descriptif' VALUE=\"$descriptif\">";
291
292        if ($options == 'avancees' OR $texte) {
293                echo "<B>"._T('info_texte_explicatif')."</B><BR>";
294                echo "<TEXTAREA NAME='texte' ROWS='8' CLASS='forml' COLS='40' wrap=soft>";
295                echo $texte;
296                echo "</TEXTAREA><P>\n";
297        }
298        else
299                echo "<input type='hidden' NAME='texte' VALUE=\"$texte\">";
300
301        if ($champs_extra) {
302                include_spip('inc/extra');
303                extra_saisie($extra, 'mots', $id_groupe);
304        }
305
306        echo "<DIV align='right'><input type='submit' NAME='Valider' VALUE='"._T('bouton_enregistrer')."' CLASS='fondo'></div>";
307       
308        echo "</div>";
309        echo "</FORM>";
310
311        fin_cadre_formulaire();
312 }
313
314fin_page();
315}
316
317
318// http://doc.spip.org/@determine_groupe_mots
319function determine_groupe_mots($table, $id_groupe) {
320
321        $result = spip_query("SELECT id_groupe, titre FROM spip_groupes_mots ". ($table ? "WHERE $table='oui'" : '') . " ORDER BY titre");
322
323        echo  _T('info_dans_groupe'), aide("motsgroupes");
324        debut_cadre_relief("groupe-mot-24.gif");
325        if (spip_num_rows($result)>1) {
326
327                echo  " &nbsp; <SELECT NAME='id_groupe' class='fondl'>\n";
328                while ($row_groupes = spip_fetch_array($result)){
329                        $groupe = $row_groupes['id_groupe'];
330                        $titre_groupe = texte_backend(supprimer_tags(typo($row_groupes['titre'])));
331                        echo  "<OPTION".mySel($groupe, $id_groupe).">$titre_groupe</OPTION>\n";
332                }                       
333                echo  "</SELECT>";
334        } else {
335                $row_groupes = spip_fetch_array($result);
336                if (!$row_groupes) {
337                        // il faut creer un groupe de mots (cas d'un mot cree depuis le script articles)
338
339                        $titre = _T('info_mot_sans_groupe');
340                        $row_groupes['id_groupe'] = spip_abstract_insert("spip_groupes_mots", "(titre, unseul, obligatoire, articles, breves, rubriques, syndic, minirezo, comite, forum)", "(" . spip_abstract_quote($titre) . ", 'non',  'non', '" . (($table=='articles') ? 'oui' : 'non') ."', '" . (($table=='breves') ? 'oui' : 'non') ."','" . (($table=='rubriques') ? 'oui' : 'non') ."','" . (($table=='syndic') ? 'oui' : 'non') ."', 'oui', 'non', 'non'" . ")");
341                } else $titre = $row_groupes['titre'];
342                echo $titre, '<br />';
343                echo "<input type='hidden' name='id_groupe' value='".$row_groupes['id_groupe']."' />";
344        }
345        fin_cadre_relief();
346}
347
348// http://doc.spip.org/@un_seul_mot_dans_groupe
349function un_seul_mot_dans_groupe($id_groupe)
350{
351        $u = spip_fetch_array(spip_query("SELECT unseul FROM spip_groupes_mots WHERE id_groupe = $id_groupe"));
352        return ($u['unseul'] == 'oui');
353}
354
355// http://doc.spip.org/@ajouter_nouveau_mot
356function ajouter_nouveau_mot($id_groupe, $table, $table_id, $id_mot, $id)
357{
358        if (un_seul_mot_dans_groupe($id_groupe)) {
359                $mots = spip_query("SELECT id_mot FROM spip_mots WHERE id_groupe = $id_groupe");
360                while ($r = spip_fetch_array($mots))
361                        spip_query("DELETE FROM spip_mots_$table WHERE id_mot=" . $r['id_mot'] ." AND $table_id=$id");
362        }
363        spip_abstract_insert("spip_mots_$table", "(id_mot, $table_id)", "($id_mot, $id)");
364}
365
366?>
Note: See TracBrowser for help on using the repository browser.