Ajout de la possibilité de configurer les montants par campagne.
[spip_souscriptions.git] / souscription_fonctions.php
index c3be168..3d1c4aa 100644 (file)
@@ -1,15 +1,69 @@
 <?php
-/**
- * Fonctions utiles au plugin Souscription
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+function calcul_avancement_campagne($id_campagne, $type_objectif, $objectif_initial) {
+
+  $res = sql_fetsel(array("COUNT(*) as nombre",
+                         "SUM(montant) AS somme"),
+                   "spip_souscriptions AS S INNER JOIN spip_transactions AS T ON (S.id_transaction = T.id_transaction)",
+                   array("S.id_souscription_campagne=".sql_quote($id_campagne),
+                         "T.reglee = 'oui'"));
+
+  $nombre = $res['nombre'];
+  $somme = $objectif_initial;
+
+  return ($type_souscription == "don" ? $somme : $nombre) + $objectif_initial;
+}
+
+/*
+ * Balise #AVANCEMENT_CAMPAGNE permettant de faire les calculs
+ * d'avancement de la campagne (nombre des adhésions pourl es
+ * campagnes de type adhésion ; somme des montants pour les campagnes
+ * de dons).
  *
- * @plugin     Souscription
- * @copyright  2013
- * @author     Olivier Tétard
- * @licence    GNU/GPL
- * @package    SPIP\Souscription\Fonctions
+ * Cette balise ne peut être utilisée que dans une boucle de type
+ * SOUSCRIPTION_CAMPAGNE
  */
+function balise_AVANCEMENT_CAMPAGNE_dist($p) {
 
-if (!defined('_ECRIRE_INC_VERSION')) return;
+  if($p->type_requete != "souscription_campagnes") {
+    $msg = array('zbug_champ_hors_boucle',
+                array('champ' => '#AVANCEMENT_CAMPAGNE')
+                );
+    erreur_squelette($msg, $p);
+  }
+  else {
+    $_campagne = champ_sql('id_souscription_campagne', $p);
+    $_type_objectif = champ_sql('type_objectif', $p);
+    $_objectif_initial = champ_sql('objectif_initial', $p);
+    $p->code = "calcul_avancement_campagne($_campagne, $_type_objectif, $_objectif_initial)";
+    $p->interdire_scripts = false;
+  }
+
+  return $p;
+}
+
+function montants_array2str($array) {
+  include_spip('inc/saisies');
+
+  $montants = "";
+  foreach($array as $prix => $description) {
+    $montants .= $prix . "|" . $description . "\n";
+  }
+
+  return $montants;
+}
+
+function montants_str2array($str) {
+  include_spip('inc/saisies');
 
+  /* Vérification du format de la chaine. Elle doit être sous la forme
+   * « [montant] | [label] », par exemple « 10 | 10 € ». */
+  foreach(explode("\n", $str) as $l) {
+    if(!preg_match('/^[0-9]+\|.*/', $l)) {
+      return false;
+    }
+  }
 
-?>
+  return saisies_chaine2tableau(saisies_aplatir_chaine($str));
+}