From 547ee1addb47235f28b53a330b1f80e2ea2ef0f9 Mon Sep 17 00:00:00 2001
From: =?utf8?q?Olivier=20T=C3=A9tard?= <olivier.tetard@miskin.fr>
Date: Fri, 4 Oct 2013 15:54:08 +0200
Subject: [PATCH] Ajout d'une nouvelle balise #AVANCEMENT_CAMPAGNE.
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
Content-Transfer-Encoding: 8bit

Cette balise permet de calculer l'avancement d'une campagne en fonction du type de celle-ci et du niveau initial (le cas échéant).
---
 souscription_fonctions.php | 44 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)
 create mode 100644 souscription_fonctions.php

diff --git a/souscription_fonctions.php b/souscription_fonctions.php
new file mode 100644
index 0000000..eccddeb
--- /dev/null
+++ b/souscription_fonctions.php
@@ -0,0 +1,44 @@
+<?php
+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).
+ *
+ * Cette balise ne peut être utilisée que dans une boucle de type
+ * SOUSCRIPTION_CAMPAGNE
+ */
+function balise_AVANCEMENT_CAMPAGNE_dist($p) {
+
+  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;
+}
-- 
2.39.5