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