3 * Gestion du formulaire de d'édition de souscription_campagne
7 * @author Olivier Tétard
9 * @package SPIP\Souscription\Formulaires
12 if (!defined('_ECRIRE_INC_VERSION')) return;
14 include_spip('inc/actions');
15 include_spip('inc/editer');
17 function formulaires_editer_souscription_campagne_identifier_dist($id_souscription_campagne='new',
24 return serialize(array(intval($id_souscription_campagne)));
27 function formulaires_editer_souscription_campagne_charger_dist($id_souscription_campagne='new',
34 $valeurs = formulaires_editer_objet_charger('souscription_campagne',
35 $id_souscription_campagne,
43 $valeurs['objectif_oui_non'] = _request('objectif_oui_non');
45 /* Si la valeur du champ 'objectif' est 0, alors, c'est que
46 * l'objectif n'est pas activé. */
47 $defaut_objectif = "";
48 if($valeurs['objectif'] && $valeurs['objectif'] > 0)
49 $defaut_objectif = "on";
51 $saisies = array(array('saisie' => 'input',
52 'options' => array('nom' => 'titre',
53 'label' => _T('souscription:label_titre'),
54 'obligatoire' => 'oui')
56 array('saisie' => 'selection',
57 'options' => array('nom' => 'type_objectif',
58 'obligatoire' => 'oui',
59 'label' => _T('souscription:label_type_objectif'),
60 'explication' => _T('souscription:explication_type_objectif'),
61 'datas' => array('don' => 'Dons',
62 'adhesion' => 'Adhésions'))
64 array('saisie' => 'oui_non',
65 'options' => array('nom' => 'objectif_oui_non',
66 'label' => _T('souscription:label_objectif_oui_non'),
67 'defaut' => $defaut_objectif)
69 array('saisie' => 'fieldset',
70 'options' => array('nom' => 'groupe_limite',
71 'label' => _T('souscription:label_objectif_groupe'),
72 'afficher_si' => '@objectif_oui_non@ == "on"'),
73 'saisies' => array(array('saisie' => 'input',
74 'options' => array('nom' => 'objectif',
75 'obligatoire' => 'oui',
76 'label' => _T('souscription:label_objectif'),
77 'explication' => _T('souscription:explication_campagne_objectif')),
79 array('saisie' => 'input',
80 'options' => array('nom' => 'objectif_initial',
81 'label' => _T('souscription:label_objectif_initial'),
82 'explication' => _T('souscription:explication_campagne_objectif_initial'))
84 array('saisie' => 'oui_non',
85 'options' => array('nom' => 'objectif_limiter',
86 'explication' => _T('souscription:explication_campagne_objectif_limite'),
87 'label' => _T('souscription:label_objectif_limite')))
90 array('saisie' => 'oui_non',
91 'options' => array('nom' => 'configuration_specifique',
92 'label' => _T('souscription:label_configuration_specifique'),
93 'explication' => _T('souscription:explication_configuration_specifique'),
94 'defaut' => $defaut_objectif)
96 array('saisie' => 'fieldset',
97 'options' => array('nom' => 'groupe_configuration_specifique',
98 'label' => _T('souscription:label_objectif_groupe'),
99 'afficher_si' => '@configuration_specifique@ == "on"'),
100 'saisies' => array(array('saisie' => 'selection',
101 'options' => array('nom' => 'type_saisie',
102 'label' => _T('souscription:label_type_saisie'),
103 'explication' => _T('souscription:explication_type_saisie'),
104 'datas' => array("input" => _T("souscription:configurer_type_saisie_input"),
105 "radio" => _T("souscription:configurer_type_saisie_radio"),
106 "selection" => _T("souscription:configurer_type_saisie_selection")),
109 array('saisie' => 'textarea',
110 'options' => array('nom' => 'montants',
111 'label' => _T('souscription:label_montants'),
112 'explication' => _T('souscription:explication_montants'),
113 'afficher_si' => '@type_saisie@ == "radio" || @type_saisie@ == "selection"',
117 array('saisie' => 'textarea',
118 'options' => array('nom' => 'texte',
119 'label' => _T('souscription:label_description'),
120 'inserer_barre' => 'edition',
124 $valeurs['_saisies'] = $saisies;
129 function formulaires_editer_souscription_campagne_verifier_dist($id_souscription_campagne='new',
137 $ret = formulaires_editer_objet_verifier('souscription_campagne',
138 $id_souscription_campagne,
143 $type = _request("type_objectif");
144 if(!in_array($type, array('don', 'adhesion')))
145 $ret['type_objectif'] = _T("souscription:message_nok_objectif_invalide");
147 /* Si un objectif est demandé, alors on vérifie que les champs sont
148 * bien des entiers. */
149 if(_request('objectif_oui_non') == 'on') {
150 $objectif = _request('objectif');
151 if(!ctype_digit($objectif) || intval($objectif) < 0)
152 $ret['objectif'] = _T("souscription:message_nok_objectif_invalide");
154 $objectif_initial = _request('objectif_initial');
155 if($objectif_initial != '') {
156 if(!ctype_digit($objectif_initial) || intval($objectif_initial < 0))
157 $ret['objectif_initial'] = _T("souscription:message_nok_objectif_initial_valeur");
158 elseif(intval($objectif_initial) > $objectif)
159 $ret['objectif_initial'] = _T("souscription:message_nok_objectif_initial_supperieur_objectif");
163 /* Si une limite est demandée, alors, on vérifie que le champs est
165 $limite_oui_non = _request('limite_oui_non');
166 if($limite_oui_non == "on") {
167 $limite = _request('limite');
168 if(!ctype_digit($objectif))
169 $ret['limite'] = _T("souscription:message_nok_limite_valeur");
172 /* Si une guration spécifique est demandée, alors on vérifie les
173 * valeurs 'type_saisie' et 'montants' (si on a demandé un bouton
174 * radio ou une selection). Autrement, les données sont supprimées
175 * dans la fonction traiter. */
176 if(_request('configuration_specifique')) {
177 $type_saisie = _request('type_saisie');
178 if(!$type_saisie || !in_array($type_saisie, array('radio', 'selection', 'input')))
179 $ret['type_saisie'] = _T('souscription:message_nok_type_saisie');
181 $montants = _request('montants');
182 if($type_saisie && in_array($type_saisie, array('radio', 'selection'))) {
183 if(!$montants || !is_string($montants))
184 $ret['montants'] = _T('souscription:message_nok_montants');
186 elseif(!montants_str2array($montants))
187 $ret['montants'] = _T('souscription:message_nok_montants');
194 function formulaires_editer_souscription_campagne_traiter_dist($id_souscription_campagne='new',
201 /* Si un objectif n'est pas demandée, alors, on remplace la valeur
202 * fournie (quelqu'elle soit, par 0) */
203 if(_request('objectif_oui_non') != "on") {
204 set_request('objectif', 0);
205 set_request('objectif_initial', 0);
206 set_request('objectif_limiter', '');
209 if(_request('configuration_specifique' != "on")) {
210 set_request('type_saisie', '');
211 set_request('montants', '');
214 $res = formulaires_editer_objet_traiter('souscription_campagne',
215 $id_souscription_campagne,