Ajout de la possibilité de configurer les montants par campagne.
[spip_souscriptions.git] / formulaires / editer_souscription_campagne.php
1 <?php
2 /**
3  * Gestion du formulaire de d'édition de souscription_campagne
4  *
5  * @plugin     Souscription
6  * @copyright  2013
7  * @author     Olivier Tétard
8  * @licence    GNU/GPL
9  * @package    SPIP\Souscription\Formulaires
10  */
11
12 if (!defined('_ECRIRE_INC_VERSION')) return;
13
14 include_spip('inc/actions');
15 include_spip('inc/editer');
16
17 function formulaires_editer_souscription_campagne_identifier_dist($id_souscription_campagne='new',
18                                                                   $retour='',
19                                                                   $lier_trad=0,
20                                                                   $config_fonc='',
21                                                                   $row=array(),
22                                                                   $hidden='')
23 {
24   return serialize(array(intval($id_souscription_campagne)));
25 }
26
27 function formulaires_editer_souscription_campagne_charger_dist($id_souscription_campagne='new',
28                                                                $retour='',
29                                                                $lier_trad=0,
30                                                                $config_fonc='',
31                                                                $row=array(),
32                                                                $hidden='')
33 {
34   $valeurs = formulaires_editer_objet_charger('souscription_campagne',
35                                               $id_souscription_campagne,
36                                               '',
37                                               $lier_trad,
38                                               $retour,
39                                               $config_fonc,
40                                               $row,
41                                               $hidden);
42
43   $valeurs['objectif_oui_non'] = _request('objectif_oui_non');
44
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";
50
51   $saisies = array(array('saisie' => 'input',
52                          'options' => array('nom' => 'titre',
53                                             'label' => _T('souscription:label_titre'),
54                                             'obligatoire' => 'oui')
55                          ),
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'))
63                          ),
64                    array('saisie' => 'oui_non',
65                          'options' => array('nom' => 'objectif_oui_non',
66                                             'label' => _T('souscription:label_objectif_oui_non'),
67                                             'defaut' => $defaut_objectif)
68                          ),
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')),
78                                                   ),
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'))
83                                             ),
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')))
88                                             ),
89                          ),
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)
95                          ),
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")),
107                                                                      'defaut' => 'input')
108                                                   ),
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"',
114                                                                      'rows' => 4))
115                                             ),
116                          ),
117                    array('saisie' => 'textarea',
118                          'options' => array('nom' => 'texte',
119                                             'label' => _T('souscription:label_description'),
120                                             'inserer_barre' => 'edition',
121                                             'rows' => '10'))
122                    );
123
124   $valeurs['_saisies'] = $saisies;
125
126   return $valeurs;
127 }
128
129 function formulaires_editer_souscription_campagne_verifier_dist($id_souscription_campagne='new',
130                                                                 $retour='',
131                                                                 $lier_trad=0,
132                                                                 $config_fonc='',
133                                                                 $row=array(),
134                                                                 $hidden='')
135 {
136
137   $ret = formulaires_editer_objet_verifier('souscription_campagne',
138                                            $id_souscription_campagne,
139                                            array('titre',
140                                                  'type_objectif',
141                                                  ));
142
143   $type = _request("type_objectif");
144   if(!in_array($type, array('don', 'adhesion')))
145     $ret['type_objectif'] = _T("souscription:message_nok_objectif_invalide");
146
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");
153
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");
160     }
161   }
162
163   /* Si une limite est demandée, alors, on vérifie que le champs est
164    * bien un entier. */
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");
170   }
171
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');
180
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');
185
186       elseif(!montants_str2array($montants))
187         $ret['montants'] = _T('souscription:message_nok_montants');     
188     }
189   }
190
191   return $ret;
192 }
193
194 function formulaires_editer_souscription_campagne_traiter_dist($id_souscription_campagne='new',
195                                                                $retour='',
196                                                                $lier_trad=0,
197                                                                $config_fonc='',
198                                                                $row=array(),
199                                                                $hidden='')
200 {
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', '');
207   }
208
209   if(_request('configuration_specifique' != "on")) {
210     set_request('type_saisie', '');
211     set_request('montants', '');
212   }
213
214   $res = formulaires_editer_objet_traiter('souscription_campagne',
215                                           $id_souscription_campagne,
216                                           '',
217                                           $lier_trad,
218                                           $retour,
219                                           $config_fonc,
220                                           $row,
221                                           $hidden);
222
223   return $res;
224 }