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

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

plugin pour avoir textile a la place de propre

File size: 5.1 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  global $ajax;
70 
71  /*
72  global $hash, $id_auteur;
73  include_ecrire("inc_session");
74  if (!verifier_action_auteur("mots_partout $nom_chose", $hash, $id_auteur)) {
75        include_ecrire('inc_minipres');
76        minipres(_T('info_acces_interdit'));
77  }
78  */   
79 
80  include(_DIR_PLUGIN_MOTS_PARTOUT."/mots_partout_choses.php");
81 
82  /***********************************************************************/
83  /* récuperation de la chose sur laquelle on travaille*/
84  /***********************************************************************/
85
86  $nom_chose = addslashes($nom_chose);
87  if(!isset($choses_possibles[$nom_chose])) {
88        list($nom_chose,) = each($choses_possibles);
89        reset($choses_possibles);
90  }
91  $id_chose = $choses_possibles[$nom_chose]['id_chose'];
92
93  /***********************************************************************/
94  /* action */
95  /***********************************************************************/
96  list($mots_voir, $mots_cacher, $mots_ajouter, $mots_enlever) = splitArrayIds($mots);
97  $choses = secureIntArray($choses);
98  $switch = addslashes($switch);
99  if($switch == '') $switch = 'voir';
100  $strict = intval($strict);
101
102  if(count($mots_ajouter) && count($choses)) {
103        if(count($mots_ajouter)) {
104          foreach($mots_ajouter as $m) {       
105                $from = array('spip_mots');
106                $select = array('id_groupe');
107                $where = array("id_mot = $m");
108                $res = spip_abstract_select($select,$from,$where);
109                $unseul = false;
110                $id_groupe = 0;
111                $titre_groupe = '';
112                if($row = spip_abstract_fetch($res)) {
113                  spip_abstract_free($res);
114                  $from = array('spip_groupes_mots');
115                  $select = array('unseul','titre');
116                  $id_groupe = $row['id_groupe'];
117                  $where = array("id_groupe = $id_groupe");
118                  $res = spip_abstract_select($select,$from,$where);
119                  if($row = spip_abstract_fetch($res)) {
120                        $unseul = ($row['unseul'] == 'oui');
121                        $titre_groupe = $row['titre'];
122                  }
123                }
124                spip_abstract_free($res);
125                foreach($choses as $d) {
126                  if($unseul) {
127                        $from = array("spip_mots_$nom_chose",'spip_mots');
128                        $select = array("count('id_mot') as cnt");
129                        $where = array("id_groupe = $id_groupe","spip_mots_$nom_chose.id_mot = spip_mots.id_mot","$id_chose = $d");
130                        $group = $id_chose;
131                        $res = spip_abstract_select($select,$from,$where,$group);
132                        if($row = spip_abstract_fetch($res)) { 
133                          if($row['cnt'] > 0) {
134                                $warnings[] = array(_T('motspartout:dejamotgroupe',array('groupe' => $titre_groupe, 'chose' => $d)));
135                                continue; 
136                          }
137                        }
138                        spip_abstract_free($res);
139                  }
140                  spip_abstract_insert("spip_mots_$nom_chose","(id_mot,$id_chose)","($m,$d)");
141                }
142          }
143        }
144  }
145  if (count($mots_enlever) && count($choses)) {
146        foreach($mots_enlever as $m) {
147          foreach($choses as $d) {
148                spip_query("DELETE FROM $table_pref_mots_$nom_chose WHERE id_mot=$m AND $id_chose=$d");
149          }
150        }
151  }
152 
153  $par_choses = '';
154
155  if(count($choses)) {
156        foreach($choses as $c) 
157          $par_choses .= "&choses[]=$c";
158  }
159
160  $par_mots = '';
161
162  if(count($mots)) {
163        foreach($mots as $id => $m) 
164          $par_mots .= "&mots[$id]=$m";
165  }
166
167  $redirect = generer_url_action('mots_partout_cherche',"nom_chose=$nom_chose&stict=$strict&switch=$switch&ajax=$ajax&redirect=$redirect$par_chose$par_mots");
168
169  redirige_par_entete($redirect);
170
171}
172
173?>
Note: See TracBrowser for help on using the repository browser.