source: spip-zone/_plugins_/noiZetier/formulaires/configurer_bloc.php @ 57325

Last change on this file since 57325 was 57325, checked in by kent1@…, 8 years ago

Préparation au portage en SPIP 3.0 pour éviter de grosses grosses manoeuvres futures

on déplace inc/noizetier dans noizetier_fonctions.php

On remplace l'utilisation de |chemin par |find_in_path (chemin n'étant pas dispo en 3.0 et étant une simple réécriture de find_in_path)

File size: 11.6 KB
Line 
1<?php
2
3// Sécurité
4if (!defined("_ECRIRE_INC_VERSION")) return;
5
6include_spip('noizetier_fonctions');
7
8function formulaires_configurer_bloc_charger($bloc,$page,$infos_bloc){
9        $contexte = array();
10       
11        $contexte['bloc'] = $bloc;
12        $contexte['page'] = $page;
13        $type_compo = explode ('-',$page,2);
14        $contexte['type'] = $type_compo[0];
15        $contexte['composition'] = $type_compo[1];
16        $contexte['bloc_page'] = $bloc.'-'.$page;
17        $contexte['_infos_bloc'] = $infos_bloc;
18       
19        // On sait toujours où va la noisette
20        $contexte['_hidden'] .= '<input type="hidden" name="type" value="'.$contexte['type'].'" />';
21        $contexte['_hidden'] .= '<input type="hidden" name="composition" value="'.$contexte['composition'].'" />';
22        $contexte['_hidden'] .= '<input type="hidden" name="bloc" value="'.$contexte['bloc'].'" />';
23       
24        // Si on demande une nouvelle noisette pour un bloc --------------------------
25        if ($bloc_page = _request('demander_nouvelle_noisette')){
26                // S'il n'y a pas encore de noisette de choisie
27                if (!($noisette = _request('noisette'))){
28                        $contexte['bloc_page_nouvelle_noisette'] = $bloc_page;
29                        // On charge les différentes noisettes du type, celles de la composition et celles pour toutes les pages
30                        $contexte['_noisettes_type'] = noizetier_lister_noisettes($contexte['type']);
31                        if ($contexte['composition']!='')
32                                $contexte['_noisettes_composition'] = noizetier_lister_noisettes($contexte['type'].'-'.$contexte['composition']);
33                        $contexte['_noisettes_toutes_pages'] = noizetier_lister_noisettes('');
34                }
35                // Si on a choisi une noisette
36                else{
37                        $contexte['bloc_page_nouvelle_noisette'] = $bloc_page;
38                        $contexte['noisette'] = $noisette;
39                        // On charge les infos de la noisette choisie
40                        $noisettes = noizetier_lister_noisettes();
41                        $contexte['_infos_'.$noisette] = $noisettes[$noisette];
42                        $contexte['_infos_'.$noisette]['parametres'][] = array(
43                                'saisie' => 'input',
44                                'options' => array(
45                                        'nom' => 'noizetier_css',
46                                        'label' => _T('noizetier:label_noizetier_css'),
47                                        'explication' => _T('noizetier:explication_noizetier_css')
48                                )
49                        );
50                }
51        }
52       
53        // Si on veut modifier une noisette ------------------------------------------
54        if ($id_noisette = intval(_request('modifier_noisette'))){
55                // On va chercher l'existant de cette noisette
56                $entree = sql_fetsel(
57                        'noisette, parametres, css',
58                        'spip_noisettes',
59                        'id_noisette = '.$id_noisette
60                );
61                $noisette = $entree['noisette'];
62                $parametres = unserialize($entree['parametres']);
63                $css = $entree['css'];
64               
65                if (is_array($parametres))
66                        $contexte = array_merge($contexte, $parametres);
67                $contexte['id_noisette'] = $id_noisette;
68                $contexte['noisette'] = $noisette;
69                // On charge les infos de la noisette choisie
70                $noisettes = noizetier_lister_noisettes();
71                $contexte['_infos_'.$noisette] = $noisettes[$noisette];
72                $contexte['_infos_'.$noisette]['parametres'][] = array(
73                                'saisie' => 'input',
74                                'options' => array(
75                                        'nom' => 'noizetier_css',
76                                        'label' => _T('noizetier:label_noizetier_css'),
77                                        'explication' => _T('noizetier:explication_noizetier_css'),
78                                        'defaut' => $css
79                                )
80                        );
81        }
82       
83        // Si on a validé une noisette et qu'il y a une erreur -------------------------------
84        if (($bloc_page = _request('bloc_page_nouvelle_noisette') or $id_noisette = intval(_request('id_noisette_modifiee'))) and _request('enregistrer')!=''){
85                $erreurs = formulaires_configurer_bloc_verifier($bloc,$page);
86                // S'il y a des erreurs
87                if(count($erreurs)>0){
88                        $noisette = _request('noisette');
89                        $infos_param = noizetier_charger_parametres_noisette($noisette);
90                        // On récupère les paramètres transmis
91                        foreach ($infos_param as $nom=>$parametre)
92                                $contexte[$nom] = _request($nom);
93                        // On transmets les autres éléments du contexte
94                        $noisettes = noizetier_lister_noisettes();
95                        $contexte['_infos_'.$noisette] = $noisettes[$noisette];
96                        $contexte['noisette'] = $noisette;
97                        if ($id_noisette>0)
98                                $contexte['id_noisette'] = $id_noisette;
99                        if ($bloc_page)
100                                $contexte['bloc_page_nouvelle_noisette'] = $bloc_page;
101                }
102        }
103
104        return $contexte;
105}
106
107function formulaires_configurer_bloc_verifier($bloc,$page){
108        $erreurs = array();
109       
110        // Si on demande une nouvelle noisette pour un bloc --------------------------
111       
112        if ($bloc_page = _request('demander_nouvelle_noisette')){
113                // S'il n'y a pas encore de noisette de choisie alors qu'on a demandé la suite
114                if (!($noisette = _request('noisette')))
115                        if (_request('suivant'))
116                                $erreurs['erreur_noisette'] = _T('noizetier:erreur_doit_choisir_noisette');
117        }
118       
119        // Si on valide une noisette pour un bloc ------------------------------------
120       
121        if (($bloc_page = _request('bloc_page_nouvelle_noisette') or $id_noisette = intval(_request('id_noisette_modifiee',$_POST))) and _request('enregistrer')){
122                $noisette = _request('noisette');
123                $infos_param = noizetier_charger_parametres_noisette($noisette);
124                // Si le plugin verifier est actif
125                if (defined('_DIR_PLUGIN_VERIFIER')){
126                        $verifier = charger_fonction('verifier','inc',true);
127                        foreach ($infos_param as $nom=>$parametre){
128                                if (isset($parametre['verifier'])){
129                                        if (!isset($parametre['verifier']['options']))
130                                                $parametre['verifier']['options']=array();
131                                        if (($erreur = $verifier(_request($nom),$parametre['verifier']['type'],$parametre['verifier']['options'])) != '')
132                                                $erreurs[$nom] = $erreur;
133                                }
134                        }
135                }
136                // On teste que chaque paramètre obligatoire est bien renseigné
137                foreach ($infos_param as $nom=>$parametre){
138                        if ($parametre['obligatoire']=='oui'){
139                                if (_request($nom)=='')
140                                        $erreurs[$nom] = _T('info_obligatoire');
141                        }
142                }
143        }
144        return $erreurs;
145}
146
147function formulaires_configurer_bloc_traiter($bloc,$page){
148        $retours = array();
149       
150        // Si on valide une noisette pour un bloc ------------------------------------
151       
152        if (($bloc_page = _request('bloc_page_nouvelle_noisette') or $id_noisette_modifiee = intval(_request('id_noisette_modifiee',$_POST))) and _request('enregistrer')!=''){
153                $rang = intval(_request('rang'));
154                $noisette = _request('noisette');
155                $css = _request('noizetier_css');
156                $infos_param = noizetier_charger_parametres_noisette($noisette);
157                $parametres_envoyes = array();
158                foreach ($infos_param as $nom=>$parametre)
159                        $parametres_envoyes[$nom] = _request($nom);
160                spip_desinfecte($parametres_envoyes);
161               
162                // Enregistrement de la noisette
163                if ($bloc_page) {
164                        $t_bloc_page = explode ('-',$bloc_page,3);
165                        $bloc = $t_bloc_page[0];
166                        $type = $t_bloc_page[1];
167                        $composition = $t_bloc_page[2];
168                        $id_noisette = sql_insertq(
169                                'spip_noisettes',
170                                array(
171                                        'bloc' => $bloc,
172                                        'type' => $type,
173                                        'composition' => $composition,
174                                        'rang' => $rang,
175                                        'noisette' => $noisette,
176                                        'parametres' => serialize($parametres_envoyes),
177                                        'css' => $css
178                                )
179                        );
180                        // On invalide le cache
181                        include_spip('inc/invalideur');
182                        $cle_invalidation = $bloc.'/'.$type;
183                        if ($composition != '')
184                                $cle_invalidation .= '-'.composition;
185                        suivre_invalideur($cle_invalidation);
186                }
187                // Mise à jour de la noisette
188                if ($id_noisette_modifiee) {
189                        $id_noisette = sql_updateq(
190                                'spip_noisettes',
191                                array(
192                                        'parametres' => serialize($parametres_envoyes),
193                                        'css' => $css
194                                ),
195                                'id_noisette='.$id_noisette_modifiee
196                        );
197                        // On invalide le cache
198                        include_spip('inc/invalideur');
199                        $cle_invalidation = _request('bloc').'/'._request('type');
200                        if (_request('composition') != '')
201                                $cle_invalidation .= '-'._request('composition');
202                        suivre_invalideur($cle_invalidation);
203                }
204               
205                if (!$id_noisette)
206                        $retours['message_erreur'] = _T('noizetier:erreur_mise_a_jour');
207        }
208       
209        // Si on demande la supression d'une noisette --------------------------------
210       
211        if ($id_noisette = intval(_request('supprimer_noisette'))){
212                $ok = sql_delete(
213                        'spip_noisettes',
214                        'id_noisette = '.$id_noisette
215                );
216                // On invalide le cache
217                include_spip('inc/invalideur');
218                $cle_invalidation = _request('bloc').'/'._request('type');
219                if (_request('composition') != '')
220                        $cle_invalidation .= '-'._request('composition');
221                suivre_invalideur($cle_invalidation);
222               
223                if (!$ok) $retours['message_erreur'] = _T('noizetier:erreur_mise_a_jour');
224        }
225       
226        // Si on demande à déplacer une noisette avec dragndrop -------------------------------------
227
228        if ($params = _request('dragndrop_noisette')){
229                $rang_noisettes = _request('rang_noisettes');
230               
231                foreach ($rang_noisettes as $rang=>$id_noisette){
232                        $rang = $rang + 1;
233                        $ok = sql_updateq('spip_noisettes',array('rang' => intval($rang)),"id_noisette = $id_noisette");
234                }
235               
236                // On invalide le cache
237                include_spip('inc/invalideur');
238                // necessaire tout ça ?
239                $cle_invalidation = _request('bloc').'/'._request('type');
240                if (_request('composition') != '')
241                        $cle_invalidation .= '-'._request('composition');
242                // doit suffire '1'
243                suivre_invalideur($cle_invalidation);
244               
245                if (!$ok) $retours['message_erreur'] = _T('noizetier:erreur_mise_a_jour');
246        }
247
248        // Si on demande à déplacer une noisette sans dragndrop -------------------------------------
249       
250        if ($params = _request('deplacer_noisette')){
251                preg_match('/^([\d]+)-(bas|haut)$/', $params, $params);
252                array_shift($params);
253                list($id_noisette, $sens) = $params;
254                $id_noisette = intval($id_noisette);
255               
256                // On récupère des infos sur le placement actuel
257                $noisette = sql_fetsel(
258                        'bloc, type, composition, rang',
259                        'spip_noisettes',
260                        'id_noisette = '.$id_noisette
261                );
262                $bloc = $noisette['bloc'];
263                $type = $noisette['type'];
264                $composition = $noisette['composition'];
265                $rang_actuel = intval($noisette['rang']);
266               
267                // On teste si ya une noisette suivante
268                $dernier_rang = intval(sql_getfetsel(
269                        'rang',
270                        'spip_noisettes',
271                        'bloc = '.sql_quote($bloc).' and type='.sql_quote($type).'and composition='.sql_quote($composition),
272                        '',
273                        'rang desc',
274                        '0,1'
275                ));
276               
277                // Tant qu'on ne veut pas faire de tour complet
278                if (!($sens == 'bas' and $rang_actuel == $dernier_rang) and !($sens == 'haut' and $rang_actuel == 1)){
279                        // Alors on ne fait qu'échanger deux noisettes
280                        $rang_echange = ($sens == 'bas') ? ($rang_actuel + 1) : ($rang_actuel - 1);
281                        $ok = sql_updateq(
282                                'spip_noisettes',
283                                array(
284                                        'rang' => $rang_actuel
285                                ),
286                                'bloc = '.sql_quote($bloc).' and type='.sql_quote($type).'and composition='.sql_quote($composition).' and rang = '.$rang_echange
287                        );
288                        if ($ok)
289                                $ok = sql_updateq(
290                                        'spip_noisettes',
291                                        array(
292                                                'rang' => $rang_echange
293                                        ),
294                                        'id_noisette = '.$id_noisette
295                                );
296                }
297                // Sinon on fait un tour complet en déplaçant tout
298                else{
299                        if ($sens == 'bas'){
300                                // Tout le monde descend d'un rang
301                                $ok = sql_update(
302                                        'spip_noisettes',
303                                        array(
304                                                'rang' => 'rang + 1'
305                                        ),
306                                        'bloc = '.sql_quote($bloc).' and type='.sql_quote($type).'and composition='.sql_quote($composition)
307                                );
308                                // La noisette passe tout en haut
309                                if ($ok)
310                                        $ok = sql_updateq(
311                                                'spip_noisettes',
312                                                array(
313                                                        'rang' => 1
314                                                ),
315                                                'id_noisette = '.$id_noisette
316                                        );
317                        }
318                        else{
319                                // Tout le monde monte d'un rang
320                                $ok = sql_update(
321                                        'spip_noisettes',
322                                        array(
323                                                'rang' => 'rang - 1'
324                                        ),
325                                        'bloc = '.sql_quote($bloc).' and type='.sql_quote($type).'and composition='.sql_quote($composition)
326                                );
327                                // La noisette passe tout en bas
328                                if ($ok)
329                                        $ok = sql_updateq(
330                                                'spip_noisettes',
331                                                array(
332                                                        'rang' => $dernier_rang
333                                                ),
334                                                'id_noisette = '.$id_noisette
335                                        );
336                        }
337                }
338                // On invalide le cache
339                include_spip('inc/invalideur');
340                $cle_invalidation = _request('bloc').'/'._request('type');
341                if (_request('composition') != '')
342                        $cle_invalidation .= '-'._request('composition');
343                suivre_invalideur($cle_invalidation);
344               
345                if (!$ok) $retours['message_erreur'] = _T('noizetier:erreur_mise_a_jour');
346        }
347       
348        $retours['editable'] = true;
349       
350        return $retours;
351}
352
353?>
Note: See TracBrowser for help on using the repository browser.