Le formulaire de souscription ne s'affichait pas même sans objectif.
[spip_souscriptions.git] / formulaires / editer_souscription_campagne.php
index fb8d1e1..f934174 100644 (file)
@@ -14,143 +14,139 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 include_spip('inc/actions');
 include_spip('inc/editer');
 
-function formulaires_editer_souscription_campagne_identifier_dist($id_souscription_campagne='new',
-                                                                  $retour='',
-                                                                  $lier_trad=0,
-                                                                  $config_fonc='',
-                                                                  $row=array(),
-                                                                  $hidden='')
-{
-  return serialize(array(intval($id_souscription_campagne)));
+function formulaires_editer_souscription_campagne_identifier_dist($id_souscription_campagne = 'new',
+                                                                  $retour = '',
+                                                                  $lier_trad = 0,
+                                                                  $config_fonc = '',
+                                                                  $row = array(),
+                                                                  $hidden = ''){
+       return serialize(array(intval($id_souscription_campagne)));
 }
 
-function formulaires_editer_souscription_campagne_charger_dist($id_souscription_campagne='new',
-                                                               $retour='',
-                                                               $lier_trad=0,
-                                                               $config_fonc='',
-                                                               $row=array(),
-                                                               $hidden='')
-{
-  $valeurs = formulaires_editer_objet_charger('souscription_campagne',
-                                             $id_souscription_campagne,
-                                             '',
-                                             $lier_trad,
-                                             $retour,
-                                             $config_fonc,
-                                             $row,
-                                             $hidden);
-
-  $valeurs['objectif_oui_non'] = _request('objectif_oui_non');
-
-  /* Si la valeur du champ 'objectif' est 0, alors, c'est que
-   * l'objectif n'est pas activé. */
-  $defaut_objectif = "";
-  if($valeurs['objectif'] && $valeurs['objectif'] > 0)
-    $defaut_objectif = "on";
-
-  $saisies = array(array('saisie' => 'input',
-                        'options' => array('nom' => 'titre',
-                                           'label' => _T('souscription:label_titre'),
-                                           'obligatoire' => 'oui')
-                        ),
-                  array('saisie' => 'selection',
-                        'options' => array('nom' => 'type_objectif',
-                                           'obligatoire' => 'oui',
-                                           'label' => _T('souscription:label_type_objectif'),
-                                           'explication' => _T('souscription:explication_type_objectif'),
-                                           'datas' => array('don' => 'Dons',
-                                                            'adhesion' => 'Adhésions'))
-                        ),
-                  array('saisie' => 'oui_non',
-                        'options' => array('nom' => 'objectif_oui_non',
-                                           'label' => _T('souscription:label_objectif_oui_non'),
-                                           'defaut' => $defaut_objectif)
-                        ),
-                  array('saisie' => 'fieldset',
-                        'options' => array('nom' => 'groupe_limite',
-                                           'label' => _T('souscription:label_objectif_groupe'),
-                                           'afficher_si' => '@objectif_oui_non@ == "on"'),
-                        'saisies' => array(array('saisie' => 'input',
-                                                 'options' => array('nom' => 'objectif',
-                                                                    'obligatoire' => 'oui',
-                                                                    'label' => _T('souscription:label_objectif'),
-                                                                    'explication' => _T('souscription:explication_campagne_objectif')),
-                                                 ),
-                                           array('saisie' => 'input',
-                                                 'options' => array('nom' => 'objectif_initial',
-                                                                    'label' => _T('souscription:label_objectif_initial'),
-                                                                    'explication' => _T('souscription:explication_campagne_objectif_initial'))
-                                                 )
-                                           )
-                        ),
-                  array('saisie' => 'textarea',
-                        'options' => array('nom' => 'texte',
-                                           'label' => _T('souscription:label_description'),
-                                           'inserer_barre' => 'edition',
-                                           'rows' => '10'))
-                  );
-
-  $valeurs['_saisies'] = $saisies;
-
-  return $valeurs;
+function formulaires_editer_souscription_campagne_charger_dist($id_souscription_campagne = 'new',
+                                                               $retour = '',
+                                                               $lier_trad = 0,
+                                                               $config_fonc = '',
+                                                               $row = array(),
+                                                               $hidden = ''){
+       $valeurs = formulaires_editer_objet_charger('souscription_campagne',
+               $id_souscription_campagne,
+               '',
+               $lier_trad,
+               $retour,
+               $config_fonc,
+               $row,
+               $hidden);
+
+       /* Si la valeur du champ 'objectif' est 0, alors, c'est que
+        * l'objectif n'est pas activé. */
+       $valeurs['_defaut_objectif'] = "";
+       if ($valeurs['objectif'] AND $valeurs['objectif']>0)
+               $valeurs['_defaut_objectif'] = "on";
+
+       // pour la saisie uniquement, pas en base
+       $valeurs['objectif_oui_non'] = "";
+
+       return $valeurs;
 }
 
-function formulaires_editer_souscription_campagne_verifier_dist($id_souscription_campagne='new',
-                                                                $retour='',
-                                                                $lier_trad=0,
-                                                                $config_fonc='',
-                                                                $row=array(),
-                                                                $hidden='')
-{
-
-  $ret = formulaires_editer_objet_verifier('souscription_campagne',
-                                           $id_souscription_campagne,
-                                           array('titre',
-                                                 'type_objectif',
-                                                 ));
-
-  $type = _request("type_objectif");
-  if(!in_array($type, array('don', 'adhesion')))
-    $ret['type_objectif'] = _T("souscription:message_nok_objectif_invalide");
-
-  /* Si un objectif est demandé, alors on vérifie que les champs sont
-   * bien des entiers. */
-  if(_request('objectif_oui_non') == 'on') {
-    $objectif_initial = _request('objectif_initial');
-    if(!ctype_digit($objectif_initial) || intval($objectif_initial) < 0)
-      $ret['objectif_initial'] = _T("souscription:message_nok_objectif_initial_invalide");
-
-    $objectif = _request('objectif');
-    if(!ctype_digit($objectif) || intval($objectif) < 0)
-      $ret['objectif'] = _T("souscription:message_nok_objectif_initial_valeur");
-  }
-
-  return $ret;
+function formulaires_editer_souscription_campagne_verifier_dist($id_souscription_campagne = 'new',
+                                                                $retour = '',
+                                                                $lier_trad = 0,
+                                                                $config_fonc = '',
+                                                                $row = array(),
+                                                                $hidden = ''){
+
+       $erreurs = formulaires_editer_objet_verifier('souscription_campagne',
+               $id_souscription_campagne,
+               array('titre',
+                       'type_objectif',
+               ));
+
+       $type = _request("type_objectif");
+       if (!in_array($type, array('don', 'adhesion')))
+               $erreurs['type_objectif'] = _T("souscription_campagne:erreur_objectif_invalide");
+       elseif ($type=="don" AND lire_config("souscription/don_activer","off")!=="on")
+               $erreurs['type_objectif'] = _T("souscription_campagne:erreur_objectif_don_inactif");
+       elseif ($type=="adhesion" AND lire_config("souscription/adhesion_activer","off")!=="on")
+               $erreurs['type_objectif'] = _T("souscription_campagne:erreur_objectif_adhesion_inactif");
+
+       /* Si un objectif est demandé, alors on vérifie que les champs sont
+        * bien des entiers. */
+       if (_request('objectif_oui_non')=='on'){
+               $objectif = _request('objectif');
+               if (!ctype_digit($objectif) || intval($objectif)<0)
+                       $erreurs['objectif'] = _T("souscription_campagne:erreur_objectif_invalide");
+
+               $objectif_initial = _request('objectif_initial');
+               if ($objectif_initial!=''){
+                       if (!ctype_digit($objectif_initial) || intval($objectif_initial<0))
+                               $erreurs['objectif_initial'] = _T("souscription_campagne:erreur_objectif_initial_valeur");
+                       elseif (intval($objectif_initial)>$objectif)
+                               $erreurs['objectif_initial'] = _T("souscription_campagne:erreur_objectif_initial_supperieur_objectif");
+               }
+       }
+
+       /* Si une limite est demandée, alors, on vérifie que le champs est
+        * bien un entier. */
+       $limite_oui_non = _request('limite_oui_non');
+       if ($limite_oui_non=="on"){
+               $limite = _request('limite');
+               if (!ctype_digit($objectif))
+                       $erreurs['limite'] = _T("souscription_campagne:erreur_limite_valeur");
+       }
+
+       /* Si une guration spécifique est demandée, alors on vérifie les
+        * valeurs 'type_saisie' et 'montants' (si on a demandé un bouton
+        * radio ou une selection). Autrement, les données sont supprimées
+        * dans la fonction traiter. */
+       if (_request('configuration_specifique')){
+               $type_saisie = _request('type_saisie');
+               $saisies = array("input", "radio", "radioinput", "selection");
+               if (!$type_saisie || !in_array($type_saisie, $saisies))
+                       $erreurs['type_saisie'] = _T('souscription:erreur_champ_invalide');
+               else {
+                       $montants = _request('montants');
+                       if ($type_saisie && $type_saisie!=="input"){
+                               if (!$montants || !is_string($montants))
+                                       $erreurs['montants'] = _T('souscription:erreur_montants');
+
+                               elseif (!montants_str2array($montants))
+                                       $erreurs['montants'] = _T('souscription:erreur_montants');
+                       }
+               }
+       }
+
+       return $erreurs;
 }
 
-function formulaires_editer_souscription_campagne_traiter_dist($id_souscription_campagne='new',
-                                                               $retour='',
-                                                               $lier_trad=0,
-                                                               $config_fonc='',
-                                                               $row=array(),
-                                                               $hidden='')
-{
-
-  /* Si un objectif n'est pas demandée, alors, on remplace la valeur
-   * fournie (quelqu'elle soit, par 0) */
-  if(_request('objectif_oui_non') != "on") {
-    set_request('objectif', 0);
-    set_request('objectif_initial', 0);
-  }
-
-  $res = formulaires_editer_objet_traiter('souscription_campagne',
-                                          $id_souscription_campagne,
-                                          '',
-                                          $lier_trad,
-                                          $retour,
-                                          $config_fonc,
-                                          $row,
-                                          $hidden);
-
-  return $res;
+function formulaires_editer_souscription_campagne_traiter_dist($id_souscription_campagne = 'new',
+                                                               $retour = '',
+                                                               $lier_trad = 0,
+                                                               $config_fonc = '',
+                                                               $row = array(),
+                                                               $hidden = ''){
+       /* Si un objectif n'est pas demandée, alors, on remplace la valeur
+        * fournie (quelqu'elle soit, par 0) */
+       if (_request('objectif_oui_non')!="on"){
+               set_request('objectif', 0);
+               set_request('objectif_initial', 0);
+               set_request('objectif_limiter', 'off');
+       }
+
+       if (_request('configuration_specifique'!="on")){
+               set_request('type_saisie', '');
+               set_request('montants', '');
+       }
+
+       $res = formulaires_editer_objet_traiter('souscription_campagne',
+               $id_souscription_campagne,
+               '',
+               $lier_trad,
+               $retour,
+               $config_fonc,
+               $row,
+               $hidden);
+
+       return $res;
 }