[SPIP] ~2.1.12 -->2.1.25
[velocampus/web/www.git] / www / ecrire / action / editer_mots.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2014 *
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
13 if (!defined('_ECRIRE_INC_VERSION')) return;
14
15 // http://doc.spip.org/@action_editer_mots_dist
16 function action_editer_mots_dist() {
17
18 $securiser_action = charger_fonction('securiser_action', 'inc');
19 $arg = $securiser_action();
20 // arg = l'eventuel mot a supprimer pour d'eventuelles Row SQL
21 if (!preg_match(',^(\d*)\D(-?\d*)\W(\w*)\W(\w*)\W(\w*)\W?(\d*)$,', $arg, $r))
22 spip_log("action editer_mots: $arg pas compris");
23 else action_editer_mots_post($r);
24 }
25
26 // http://doc.spip.org/@action_editer_mots_post
27 function action_editer_mots_post($r)
28 {
29 $redirect = _request('redirect');
30 $cherche_mot = _request('cherche_mot');
31 $select_groupe = _request('select_groupe');
32
33 list($x, $id_objet, $id_mot, $table, $table_id, $objet, $nouv_mot) = $r;
34 if ($id_mot) {
35 if ($objet)
36 // desassocier un/des mot d'un objet precis
37 sql_delete("spip_mots_$table", "$table_id=$id_objet" . (($id_mot <= 0) ? "" : " AND id_mot=$id_mot"));
38 else {
39 // disparition complete d'un mot
40 sql_delete("spip_mots", "id_mot=$id_mot");
41 sql_delete("spip_mots_articles", "id_mot=$id_mot");
42 sql_delete("spip_mots_rubriques", "id_mot=$id_mot");
43 sql_delete("spip_mots_syndic", "id_mot=$id_mot");
44 sql_delete("spip_mots_forum", "id_mot=$id_mot");
45 pipeline('trig_supprimer_objets_lies',
46 array(
47 array('type'=>'mot','id'=>$id_mot)
48 )
49 );
50 }
51 }
52 if ($nouv_mot ? $nouv_mot : ($nouv_mot = _request('nouv_mot'))) {
53 // recopie de:
54 // inserer_mot("spip_mots_$table", $table_id, $id_objet, $nouv_mot);
55 $result = sql_countsel("spip_mots_$table", "id_mot=".intval($nouv_mot)." AND $table_id=$id_objet");
56 if (!$result)
57 sql_insertq("spip_mots_$table", array('id_mot' => $nouv_mot, $table_id =>$id_objet));
58 }
59
60 // Notifications, gestion des revisions, reindexation...
61 if ($table)
62 pipeline('post_edition',
63 array(
64 'args' => array(
65 'operation' => 'editer_mots',
66 'table' => 'spip_'.$table,
67 'id_objet' => $id_objet
68 ),
69 'data' => null
70 )
71 );
72
73 $redirect = rawurldecode($redirect);
74
75 // hack du retour croise editer/grouper
76
77 if (preg_match('/^(.*exec=)editer_mots(&.*)script=(grouper_mots)(.*)$/', $redirect, $r))
78 $redirect = $r[1] . $r[3] . $r[2] . $r[4];
79 if (preg_match(',exec=grouper_mots,',$redirect)){
80 // mettre a jour le total de mots dans la liste pour eviter les pb de cache navigateur avec ajax
81 $id_groupe = parametre_url($redirect,'id_groupe'); // recuperer l'id_groupe dans l'url
82 $groupe = sql_countsel("spip_mots", "id_groupe=".sql_quote($id_groupe));
83 $redirect = parametre_url($redirect,'total',$groupe,'&');
84 }
85
86 if ($cherche_mot) {
87 if ($p = strpos($redirect, '#')) {
88 $a = substr($redirect,$p);
89 $redirect = substr($redirect,0,$p);
90 } else $a='';
91 $redirect .= "&cherche_mot=".urlencode($cherche_mot)
92 ."&select_groupe=$select_groupe$a";
93 }
94 redirige_par_entete($redirect);
95 }
96 ?>