[PLUGINS] +set de base
[lhc/web/www.git] / www / plugins / formidable_1_0 / formulaires / editer_formulaire_traitements.php
1 <?php
2
3 // Sécurité
4 if (!defined("_ECRIRE_INC_VERSION")) return;
5
6 include_spip('inc/formidable');
7
8 function formulaires_editer_formulaire_traitements_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 $traitements = unserialize($formulaire['traitements']);
18 $saisies = unserialize($formulaire['saisies']);
19 if (!is_array($traitements)) $traitements = array();
20 if (!is_array($saisies)) $saisies = array();
21 $contexte['traitements'] = $traitements;
22 $contexte['traitements_choisis'] = array_keys($traitements);
23 $contexte['formulaire'] = _T_ou_typo($saisies, 'multi');
24 $contexte['id'] = $id_formulaire;
25
26 $traitements_disponibles = traitements_lister_disponibles();
27 $configurer_traitements = array();
28 foreach ($traitements_disponibles as $type_traitement => $traitement){
29 $configurer_traitements[] = array(
30 'saisie' => 'checkbox',
31 'options' => array(
32 'nom' => 'traitements_choisis',
33 'label' => $traitement['titre'],
34 'datas' => array(
35 $type_traitement => $traitement['description']
36 )
37 )
38 );
39 $configurer_traitements[] = array(
40 'saisie' => 'fieldset',
41 'options' => array(
42 'nom' => 'options',
43 'label' => $traitement['titre'],
44 'li_class' => "$type_traitement options_traiter"
45 ),
46 'saisies' => saisies_transformer_noms($traitement['options'], '/^.*$/', "traitements[$type_traitement][\\0]")
47 );
48 }
49 $contexte['_configurer_traitements'] = $configurer_traitements;
50
51 // Si on demande un avertissement et qu'il y a déjà des traitements de configurés
52 if (_request('avertissement') == 'oui')
53 $contexte['message_ok'] = $traitements ? _T('formidable:traitements_avertissement_modification') : _T('formidable:traitements_avertissement_creation');
54 }
55 else{
56 $contexte['editable'] = false;
57 }
58
59 // On enlève l'éventuel avertissement pour le prochain envoi
60 $contexte['action'] = parametre_url(self(), 'avertissement', '');
61
62 return $contexte;
63 }
64
65 function formulaires_editer_formulaire_traitements_verifier($id_formulaire){
66 include_spip('inc/saisies');
67 $erreurs = array();
68 $traitements_disponibles = traitements_lister_disponibles();
69
70 // On regarde quels traitements sont demandés
71 $traitements_choisis = _request('traitements_choisis');
72
73 if (is_array($traitements_choisis))
74 foreach ($traitements_choisis as $type_traitement){
75 $erreurs = array_merge($erreurs, saisies_verifier(saisies_transformer_noms($traitements_disponibles[$type_traitement]['options'], '/^.*$/', "traitements[$type_traitement][\\0]")));
76 }
77
78 return $erreurs;
79 }
80
81 function formulaires_editer_formulaire_traitements_traiter($id_formulaire){
82 $retours = array();
83 $id_formulaire = intval($id_formulaire);
84
85 // On récupère tout le tableau des traitements
86 $traitements = _request('traitements');
87 // On ne garde que les morceaux qui correspondent aux traitements choisis
88 $traitements_choisis = _request('traitements_choisis');
89 if (!$traitements_choisis) $traitements_choisis = array();
90 $traitements_choisis = array_flip($traitements_choisis);
91 $traitements = array_intersect_key($traitements, $traitements_choisis);
92
93 // Et on l'enregistre tel quel
94 $ok = sql_updateq(
95 'spip_formulaires',
96 array(
97 'traitements' => serialize($traitements)
98 ),
99 'id_formulaire = '.$id_formulaire
100 );
101
102 // On va sur la page de visualisation quand c'est fini
103 if ($ok){
104 $retours['redirect'] = parametre_url(generer_url_ecrire('formulaire'), 'id_formulaire', $id_formulaire);
105 }
106 else{
107 $retours['editable'] = true;
108 $retours['message_erreur'] = _T('formidable:erreur_base');
109 }
110
111 return $retours;
112 }
113
114 ?>