refactoring formulaire edition campagne, en HTML, avec meilleure lisibilite/accessibilite
[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   /* Si la valeur du champ 'objectif' est 0, alors, c'est que
44    * l'objectif n'est pas activé. */
45         $valeurs['_defaut_objectif'] = "";
46   if($valeurs['objectif'] AND $valeurs['objectif'] > 0)
47           $valeurs['_defaut_objectif'] = "on";
48
49         // pour la saisie uniquement, pas en base
50         $valeurs['objectif_oui_non'] = "";
51
52   return $valeurs;
53 }
54
55 function formulaires_editer_souscription_campagne_verifier_dist($id_souscription_campagne='new',
56                                                                 $retour='',
57                                                                 $lier_trad=0,
58                                                                 $config_fonc='',
59                                                                 $row=array(),
60                                                                 $hidden='')
61 {
62
63   $ret = formulaires_editer_objet_verifier('souscription_campagne',
64                                            $id_souscription_campagne,
65                                            array('titre',
66                                                  'type_objectif',
67                                                  ));
68
69   $type = _request("type_objectif");
70   if(!in_array($type, array('don', 'adhesion')))
71     $ret['type_objectif'] = _T("souscription:message_nok_objectif_invalide");
72
73   /* Si un objectif est demandé, alors on vérifie que les champs sont
74    * bien des entiers. */
75   if(_request('objectif_oui_non') == 'on') {
76     $objectif = _request('objectif');
77     if(!ctype_digit($objectif) || intval($objectif) < 0)
78       $ret['objectif'] = _T("souscription:message_nok_objectif_invalide");
79
80     $objectif_initial = _request('objectif_initial');
81     if($objectif_initial != '') {
82       if(!ctype_digit($objectif_initial) || intval($objectif_initial < 0))
83         $ret['objectif_initial'] = _T("souscription:message_nok_objectif_initial_valeur");
84       elseif(intval($objectif_initial) > $objectif)
85         $ret['objectif_initial'] = _T("souscription:message_nok_objectif_initial_supperieur_objectif");
86     }
87   }
88
89   /* Si une limite est demandée, alors, on vérifie que le champs est
90    * bien un entier. */
91   $limite_oui_non = _request('limite_oui_non');
92   if($limite_oui_non == "on") {
93     $limite = _request('limite');
94     if(!ctype_digit($objectif))
95       $ret['limite'] = _T("souscription:message_nok_limite_valeur");
96   }
97
98   /* Si une guration spécifique est demandée, alors on vérifie les
99    * valeurs 'type_saisie' et 'montants' (si on a demandé un bouton
100    * radio ou une selection). Autrement, les données sont supprimées
101    * dans la fonction traiter. */
102   if(_request('configuration_specifique')) {
103     $type_saisie = _request('type_saisie');
104     if(!$type_saisie || !in_array($type_saisie, array('radio', 'selection', 'input')))
105       $ret['type_saisie'] = _T('souscription:message_nok_type_saisie');
106
107     $montants = _request('montants');
108     if($type_saisie && in_array($type_saisie, array('radio', 'selection'))) {
109       if(!$montants || !is_string($montants))
110         $ret['montants'] = _T('souscription:message_nok_montants');
111
112       elseif(!montants_str2array($montants))
113         $ret['montants'] = _T('souscription:message_nok_montants');     
114     }
115   }
116
117   return $ret;
118 }
119
120 function formulaires_editer_souscription_campagne_traiter_dist($id_souscription_campagne='new',
121                                                                $retour='',
122                                                                $lier_trad=0,
123                                                                $config_fonc='',
124                                                                $row=array(),
125                                                                $hidden='')
126 {
127   /* Si un objectif n'est pas demandée, alors, on remplace la valeur
128    * fournie (quelqu'elle soit, par 0) */
129   if(_request('objectif_oui_non') != "on") {
130     set_request('objectif', 0);
131     set_request('objectif_initial', 0);
132     set_request('objectif_limiter', '');
133   }
134
135   if(_request('configuration_specifique' != "on")) {
136     set_request('type_saisie', '');
137     set_request('montants', '');
138   }
139
140   $res = formulaires_editer_objet_traiter('souscription_campagne',
141                                           $id_souscription_campagne,
142                                           '',
143                                           $lier_trad,
144                                           $retour,
145                                           $config_fonc,
146                                           $row,
147                                           $hidden);
148
149   return $res;
150 }