2 if (!defined('_ECRIRE_INC_VERSION')) return;
4 function calcul_avancement_campagne($id_campagne, $type_objectif, $objectif_initial) {
6 $res = sql_fetsel(array("COUNT(*) as nombre",
7 "SUM(montant) AS somme"),
8 "spip_souscriptions AS S INNER JOIN spip_transactions AS T ON (S.id_transaction = T.id_transaction)",
9 array("S.id_souscription_campagne=".sql_quote($id_campagne),
12 $nombre = $res['nombre'];
13 $somme = $objectif_initial;
15 return ($type_souscription == "don" ? $somme : $nombre) + $objectif_initial;
19 * Balise #AVANCEMENT_CAMPAGNE permettant de faire les calculs
20 * d'avancement de la campagne (nombre des adhésions pourl es
21 * campagnes de type adhésion ; somme des montants pour les campagnes
24 * Cette balise ne peut être utilisée que dans une boucle de type
25 * SOUSCRIPTION_CAMPAGNE
27 function balise_AVANCEMENT_CAMPAGNE_dist($p) {
29 if($p->type_requete != "souscription_campagnes") {
30 $msg = array('zbug_champ_hors_boucle',
31 array('champ' => '#AVANCEMENT_CAMPAGNE')
33 erreur_squelette($msg, $p);
36 $_campagne = champ_sql('id_souscription_campagne', $p);
37 $_type_objectif = champ_sql('type_objectif', $p);
38 $_objectif_initial = champ_sql('objectif_initial', $p);
39 $p->code = "calcul_avancement_campagne($_campagne, $_type_objectif, $_objectif_initial)";
40 $p->interdire_scripts = false;
46 function montants_str2array($str) {
47 include_spip('inc/saisies');
49 /* Vérification du format de la chaine. Elle doit être sous la forme
50 * « [montant] | [label] », par exemple « 10 | 10 € ». */
51 foreach(explode("\n", trim($str)) as $l) {
52 if(!preg_match('/^[0-9]+\|.*/', $l)) {
57 return saisies_chaine2tableau(saisies_aplatir_chaine($str));