source: spip-zone/_plugins_/mots_partout/action/mots_partout.php @ 2157

Last change on this file since 2157 was 2157, checked in by pierre.andrews@…, 14 years ago

des exec_ et action_ partout

File size: 5.2 KB
Line 
1<?php
2
3//        action/mots_partout.php
4//    Fichier créé pour SPIP avec un bout de code emprunté à celui ci.
5//    Distribué sans garantie sous licence GPL./
6//    Copyright (C) 2006  Pierre ANDREWS
7//
8//    This program is free software; you can redistribute it and/or modify
9//    it under the terms of the GNU General Public License as published by
10//    the Free Software Foundation; either version 2 of the License, or any later version.
11//
12//    This program is distributed in the hope that it will be useful,
13//    but WITHOUT ANY WARRANTY; without even the implied warranty of
14//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15//    GNU General Public License for more details.
16//
17//    You should have received a copy of the GNU General Public License
18//    along with this program; if not, write to the Free Software
19//    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
20
21define('_DIR_PLUGIN_MOTS_PARTOUT',(_DIR_PLUGINS . 'mots_partout'));
22
23//force a un tableau de int
24function secureIntArray($array) {
25  $to_return = Array();
26  if(is_array($array)) {
27        foreach($array as $id) {
28          $to_return[] = intval($id);
29        }
30  } 
31  return $to_return;
32}
33
34// transfert la variable POST d'un tableau (19 => 'avec', 20=>'voir') en 4 tableaux avec=(19) voir=(20)
35function splitArrayIds($array) {
36  $voir = Array();
37  $cacher = Array();
38  $ajouter = Array();
39  $enlever = Array();
40  if(is_array($array)) {
41    foreach($array as $id_mot => $action) {
42      $id_mot = intval($id_mot);
43      if($id_mot > 0) {
44        switch(addslashes($action)) {
45                  case 'avec': 
46                        $ajouter[] = $id_mot;
47                  case 'voir':
48                        $voir[] = $id_mot;
49                        break;
50                  case 'sans':
51                        $enlever[] = $id_mot;
52                        break;
53                  case 'cacher':
54                        $cacher[] = $id_mot;
55            break; 
56
57        }
58      }
59    }
60  }
61  return array($voir, $cacher, $ajouter, $enlever);
62}
63
64
65function action_mots_partout() {
66  global $nom_chose, $redirect;
67  global $choses, $mots;
68  global $strict, $switch;
69 
70  /*
71  global $hash, $id_auteur;
72  include_ecrire("inc_session");
73  if (!verifier_action_auteur("mots_partout $nom_chose", $hash, $id_auteur)) {
74        include_ecrire('inc_minipres');
75        minipres(_T('info_acces_interdit'));
76  }
77  */   
78 
79  include(_DIR_PLUGIN_MOTS_PARTOUT."/mots_partout_choses.php");
80  /***********************************************************************/
81  /* PREFIXE*/
82  /***********************************************************************/
83  $table_pref = 'spip';
84  if ($GLOBALS['table_prefix']) $table_pref = $GLOBALS['table_prefix'];
85 
86  /***********************************************************************/
87  /* récuperation de la chose sur laquelle on travaille*/
88  /***********************************************************************/
89
90  $nom_chose = addslashes($nom_chose);
91  if(!isset($choses_possibles[$nom_chose])) {
92        list($nom_chose,) = each($choses_possibles);
93        reset($choses_possibles);
94  }
95  $id_chose = $choses_possibles[$nom_chose]['id_chose'];
96
97  /***********************************************************************/
98  /* action */
99  /***********************************************************************/
100  list($mots_voir, $mots_cacher, $mots_ajouter, $mots_enlever) = splitArrayIds($mots);
101  $choses = secureIntArray($choses);
102  $switch = addslashes($switch);
103  if($switch == '') $switch = 'voir';
104  $strict = intval($strict);
105
106  if(count($mots_ajouter) && count($choses)) {
107        if(count($mots_ajouter)) {
108          foreach($mots_ajouter as $m) {       
109                $from = array('spip_mots');
110                $select = array('id_groupe');
111                $where = array("id_mot = $m");
112                $res = spip_abstract_select($select,$from,$where);
113                $unseul = false;
114                $id_groupe = 0;
115                $titre_groupe = '';
116                if($row = spip_abstract_fetch($res)) {
117                  spip_abstract_free($res);
118                  $from = array('spip_groupes_mots');
119                  $select = array('unseul','titre');
120                  $id_groupe = $row['id_groupe'];
121                  $where = array("id_groupe = $id_groupe");
122                  $res = spip_abstract_select($select,$from,$where);
123                  if($row = spip_abstract_fetch($res)) {
124                        $unseul = ($row['unseul'] == 'oui');
125                        $titre_groupe = $row['titre'];
126                  }
127                }
128                spip_abstract_free($res);
129                foreach($choses as $d) {
130                  if($unseul) {
131                        $from = array("spip_mots_$nom_chose",'spip_mots');
132                        $select = array("count('id_mot') as cnt");
133                        $where = array("id_groupe = $id_groupe","spip_mots_$nom_chose.id_mot = spip_mots.id_mot","$id_chose = $d");
134                        $group = $id_chose;
135                        $res = spip_abstract_select($select,$from,$where,$group);
136                        if($row = spip_abstract_fetch($res)) { 
137                          if($row['cnt'] > 0) {
138                                $warnings[] = array(_T('motspartout:dejamotgroupe',array('groupe' => $titre_groupe, 'chose' => $d)));
139                                continue; 
140                          }
141                        }
142                        spip_abstract_free($res);
143                  }
144                  spip_abstract_insert("spip_mots_$nom_chose","(id_mot,$id_chose)","($m,$d)");
145                }
146          }
147        }
148  }
149  if (count($mots_enlever) && count($choses)) {
150        foreach($mots_enlever as $m) {
151          foreach($choses as $d) {
152                spip_query("DELETE FROM $table_pref_mots_$nom_chose WHERE id_mot=$m AND $id_chose=$d");
153          }
154        }
155  }
156 
157  if(count($choses)) {
158        foreach($choses as $c) 
159          $redirect .= "&choses[]=$c";
160  }
161
162  if(count($mots)) {
163        foreach($mots as $id => $m) 
164          $redirect.= "&mots[$id]=$m";
165  }
166
167  if(!$_REQUEST['ajax'])        redirige_par_entete(urldecode($redirect));
168
169}
170
171?>
Note: See TracBrowser for help on using the repository browser.