source: spip-zone/_plugins_/formidable/trunk/formulaires/editer_formulaire_traitements.php @ 112684

Last change on this file since 112684 was 112684, checked in by maieul@…, 2 years ago

revert r112683, il faut encore que je vérifie un point

File size: 4.5 KB
Line 
1<?php
2
3// Sécurité
4if (!defined('_ECRIRE_INC_VERSION')) {
5        return;
6}
7
8include_spip('inc/formidable');
9include_spip('inc/formidable_fichiers');
10
11function 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
72function 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_traitement_brut = saisies_verifier(
83                                saisies_transformer_noms(
84                                        $traitements_disponibles[$type_traitement]['options'],
85                                        '/^.*$/',
86                                        "traitements[$type_traitement][\\0]"),
87                                false
88                                );
89                        if (!empty($erreurs_traitement_brut)) {
90                                $erreurs_traitement = array($type_traitement => array());
91                                foreach ($erreurs_traitement_brut as $champ => $erreur) {
92                                        $champ_brut = preg_replace("#traitements\[$type_traitement\]\[(.*)\]#",'\1',$champ);
93                                        $erreurs_traitement[$type_traitement][$champ_brut] = $erreur;
94                                }
95                                $erreurs = array_merge($erreurs, $erreurs_traitement);
96                        }
97                }
98        }
99        if (!empty($erreurs)) {
100                $erreurs = array('traitements' => $erreurs);
101        }
102        return $erreurs;
103}
104
105function formulaires_editer_formulaire_traitements_traiter($id_formulaire) {
106        $retours = array();
107        $id_formulaire = intval($id_formulaire);
108
109        // On récupère tout le tableau des traitements
110        $traitements = _request('traitements');
111        // On ne garde que les morceaux qui correspondent aux traitements choisis
112        $traitements_choisis = _request('traitements_choisis');
113        if (!$traitements_choisis) {
114                $traitements_choisis = array();
115        }
116        $traitements_choisis = array_flip($traitements_choisis);
117        $traitements = array_intersect_key($traitements, $traitements_choisis);
118
119        // Si besoin, on créeun dossier pour stocker les fichiers
120
121        $erreur_creation_dossier = formidable_creer_dossier_formulaire($id_formulaire);
122        if ($erreur_creation_dossier) {
123                $retours['message_erreur'] = $erreur_creation_dossier;
124        }
125        // Et on l'enregistre tel quel
126        $ok = sql_updateq(
127                'spip_formulaires',
128                array(
129                        'traitements' => serialize($traitements)
130                ),
131                'id_formulaire = '.$id_formulaire
132        );
133
134        // On va sur la page de visualisation quand c'est fini
135        if ($ok) {
136                $retours['redirect'] = parametre_url(generer_url_ecrire('formulaire'), 'id_formulaire', $id_formulaire);
137        } else {
138                $retours['editable'] = true;
139                $retours['message_erreur'] = _T('formidable:erreur_base');
140        }
141
142        return $retours;
143}
Note: See TracBrowser for help on using the repository browser.