39e8c6a3eecd014a3beb62fe81633b02284adfb9
[lhc/web/www.git] / www / plugins / formidable / formulaires / editer_formulaire_champs.php
1 <?php
2
3 // Sécurité
4 if (!defined('_ECRIRE_INC_VERSION')) {
5 return;
6 }
7
8 function formulaires_editer_formulaire_champs_charger($id_formulaire) {
9 $contexte = array();
10 $id_formulaire = intval($id_formulaire);
11
12 // On teste si le formulaire existe
13 if ($id_formulaire
14 and $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id_formulaire)
15 and autoriser('editer', 'formulaire', $id_formulaire)
16 ) {
17 $saisies = unserialize($formulaire['saisies']);
18 if (!is_array($saisies)) {
19 $saisies = array();
20 }
21 $contexte['_saisies'] = $saisies;
22 $contexte['id'] = $id_formulaire;
23 $contexte['saisie_id'] = "formidable_$id_formulaire";
24 }
25
26 return $contexte;
27 }
28
29 function formulaires_editer_formulaire_champs_verifier($id_formulaire) {
30 include_spip('inc/saisies');
31 $erreurs = array();
32
33 // Si c'est pas une confirmation ni une annulation
34 if (!_request('enregistrer_confirmation')
35 and !($annulation = _request('annulation'))) {
36 // On récupère le formulaire dans la session
37 $saisies_nouvelles = session_get("constructeur_formulaire_formidable_$id_formulaire");
38
39 // On récupère les anciennes saisies
40 $saisies_anciennes = unserialize(sql_getfetsel(
41 'saisies',
42 'spip_formulaires',
43 'id_formulaire = '.$id_formulaire
44 ));
45
46 // On compare
47 $comparaison = saisies_comparer($saisies_anciennes, $saisies_nouvelles);
48
49 // S'il y a des suppressions, on demande confirmation avec attention
50 if ($comparaison['supprimees']) {
51 $erreurs['message_erreur'] = _T('saisies:construire_attention_supprime');
52 }
53 } elseif (isset($annulation) and $annulation) {
54 // Si on annule on génère une erreur bidon juste pour réafficher le formulaire
55 $erreurs['pouetpouet'] = true;
56 }
57
58 return $erreurs;
59 }
60
61 function formulaires_editer_formulaire_champs_traiter($id_formulaire) {
62 include_spip('inc/saisies');
63 $retours = array();
64 $id_formulaire = intval($id_formulaire);
65
66 if (_request('revert')) {
67 session_set("constructeur_formulaire_formidable_$id_formulaire");
68 $retours = array('editable'=>true);
69 }
70
71 if (_request('enregistrer') or _request('enregistrer_confirmation')) {
72 // On récupère le formulaire dans la session
73 $saisies_nouvelles = session_get("constructeur_formulaire_formidable_$id_formulaire");
74
75 // On récupère les anciennes saisies
76 $saisies_anciennes = unserialize(sql_getfetsel(
77 'saisies',
78 'spip_formulaires',
79 'id_formulaire = '.$id_formulaire
80 ));
81
82 // On envoie les nouvelles dans la table dans la table
83 $ok = sql_updateq(
84 'spip_formulaires',
85 array(
86 'saisies' => serialize($saisies_nouvelles)
87 ),
88 'id_formulaire = '.$id_formulaire
89 );
90
91 // Si c'est bon on appelle d'éventuelles fonctions d'update des traitements
92 // puis on renvoie vers la config des traitements
93 if ($ok) {
94 // On va chercher les traitements
95 $traitements = unserialize(sql_getfetsel(
96 'traitements',
97 'spip_formulaires',
98 'id_formulaire = '.$id_formulaire
99 ));
100
101 // Pour chaque traitements on regarde s'i y a une fonction d'update
102 if (is_array($traitements)) {
103 foreach ($traitements as $type_traitement => $traitement) {
104 if ($update = charger_fonction('update', "traiter/$type_traitement", true)) {
105 $update($id_formulaire, $traitement, $saisies_anciennes, $saisies_nouvelles);
106 }
107 }
108 }
109 // On redirige vers la config suivante
110 $retours['redirect'] = parametre_url(
111 parametre_url(
112 parametre_url(
113 generer_url_ecrire('formulaire_edit'),
114 'id_formulaire',
115 $id_formulaire
116 ),
117 'configurer',
118 'traitements'
119 ),
120 'avertissement',
121 'oui'
122 );
123 }
124 }
125
126 return $retours;
127 }