Ajout de la possibilité de limiter les "places" d'une campagne.
authorOlivier Tétard <olivier.tetard@miskin.fr>
Thu, 3 Oct 2013 20:18:40 +0000 (22:18 +0200)
committerOlivier Tétard <olivier.tetard@miskin.fr>
Fri, 4 Oct 2013 14:12:11 +0000 (16:12 +0200)
Ajout d'un champ « limite » permettant d'indiquer si la campagne doit être limitée en nombre (par exemple dans le cas d'une adhésion à tarif spécial).

base/souscription.php
formulaires/editer_souscription_campagne.php
lang/souscription_fr.php
souscription_administrations.php

index d0fc1db..4429e19 100644 (file)
@@ -82,10 +82,10 @@ function souscription_declarer_tables_objets_sql($tables) {
                           "objectif"                 => "int(11) NOT NULL DEFAULT 0",
                           "objectif_initial"         => "int(11) NOT NULL DEFAULT 0",
                           "type_objectif"            => "varchar(255) NOT NULL DEFAULT 0",
+                          "objectif_limiter"         => "varchar(3) NOT NULL DEFAULT 0",
                           "titre"                    => "text NOT NULL DEFAULT ''",
                           "texte"                    => "longtext NOT NULL DEFAULT ''",
                           "statut"                   => "varchar(255) NOT NULL DEFAULT 0",
-                          "limite"                   => "bigint(21) NOT NULL DEFAULT 0",
                           "date"                     => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'",
                           "maj"                      => "TIMESTAMP"
                           ),
@@ -94,8 +94,8 @@ function souscription_declarer_tables_objets_sql($tables) {
                          ),
           'titre' => "titre AS titre, '' AS lang",
           'date' => "date",
-          'champs_editables'  => array('objectif', 'titre', 'texte', 'objectif_initial', 'type_objectif'),
-          'champs_versionnes' => array('objectif', 'titre', 'texte', 'objectif_initial', 'type_objectif'),
+          'champs_editables'  => array('objectif', 'titre', 'texte', 'objectif_initial', 'type_objectif', 'objectif_limiter'),
+          'champs_versionnes' => array('objectif', 'titre', 'texte', 'objectif_initial', 'type_objectif', 'objectif_limiter'),
           'rechercher_champs' => array(),
           );
 
index 21793cc..d1b5695 100644 (file)
@@ -80,8 +80,12 @@ function formulaires_editer_souscription_campagne_charger_dist($id_souscription_
                                                  'options' => array('nom' => 'objectif_initial',
                                                                     'label' => _T('souscription:label_objectif_initial'),
                                                                     'explication' => _T('souscription:explication_campagne_objectif_initial'))
-                                                 )
-                                           )
+                                           ),
+                                           array('saisie' => 'oui_non',
+                                                 'options' => array('nom' => 'objectif_limiter',
+                                                                    'explication' => _T('souscription:explication_campagne_objectif_limite'),
+                                                                    'label' => _T('souscription:label_objectif_limite')))
+                                           ),
                         ),
                   array('saisie' => 'textarea',
                         'options' => array('nom' => 'texte',
@@ -129,6 +133,15 @@ function formulaires_editer_souscription_campagne_verifier_dist($id_souscription
     }
   }
 
+  /* 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))
+      $ret['limite'] = _T("souscription:message_nok_limite_valeur");
+  }
+
   return $ret;
 }
 
@@ -139,12 +152,12 @@ function formulaires_editer_souscription_campagne_traiter_dist($id_souscription_
                                                                $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', '');
   }
 
   $res = formulaires_editer_objet_traiter('souscription_campagne',
index 06a18aa..569b740 100644 (file)
@@ -34,6 +34,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'explication_montants' => 'Le montants divent être au format suivant: <code>[montant]|[description]</code> à raison d\'une entrée par ligne.',
        'explication_campagne_objectif' => 'Permet d\'indiquer un objectif monétaire pour la campagne.',
        'explication_campagne_objectif_initial' => 'Permet d\'indiquer le niveau initial de la campagne. Ce champs peut être utilisé pour indiquer des dons ou adhésions n\'ayant pas été compatibilisées par le module de souscriptions.',
+       'explication_campagne_objectif_limite' => "Permet de bloquer les nouvelles adhésions/dons pour cette campagne si l'objecif est attend (offre spéciale d'adhésion par exemple)",
        'explication_recu_fiscal' => ' ',
        'explication_type_objectif' => 'Type de l\'objectif (influe le montant de l\'objectif)',
        'explication_bloc_fiscal_adhesion' => "Les informations suivantes sont nécessaire pour nous permettre de réaliser l'adhésion&nbsp;:",
@@ -106,6 +107,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'label_objectif' => 'Niveau de l\'objectif',
        'label_objectif_initial' => 'Niveau initial de la campagne',
        'label_objectif_groupe' => 'Definition de l\'objectif de la campagne',
+       'label_objectif_limite' => 'Fermer la campagne si l\'objectif est atteint',
        'label_pays' => 'Pays',
        'label_prenom' => 'Prénom',
        'label_recu_fiscal' => 'Recevoir un reçu fiscal',
index a3d3bc0..abb75dc 100644 (file)
@@ -34,7 +34,7 @@ function souscription_upgrade($nom_meta_base_version, $version_cible) {
 
   $maj['0.3'] = array(array('sql_alter', "TABLE spip_souscriptions ADD telephone text NOT NULL DEFAULT ''"));
 
-  $maj['0.4'] = array(array('sql_alter', "TABLE spip_souscription_campagnes ADD limite bigint(21) NOT NULL DEFAULT 0"));
+  $maj['0.4'] = array(array('sql_alter', "TABLE spip_souscription_campagnes ADD objectif_limiter varchar(3) NOT NULL DEFAULT ''"));
 
   include_spip('base/upgrade');
   maj_plugin($nom_meta_base_version, $version_cible, $maj);