* $arg contient les différents arguments, séparés par des '/'. Une
* fois passés dans la fonctions split, il se présente de la manière
* suivante :
- * argument en position 1 : 'paye' ou 'tous'
- * argument en position 2 : type de souscription (dons, adhesion)
+ *
+ * argument en position 1 : 'paye', 'commande', 'erreur' ou 'tous'
+ * argument en position 2 : type de souscription ('dons',
+ * 'adhesion')
+ * argument en position 3 : identifiant de la campagne
+ * argument en position 4 : date de début (au format timestamp)
+ * argument en position 5 : date de fin (au format timestamp)
*/
- /* FIXME: permettre de selectionner les exports */
/* FIXME: améliorer la jointure... */
if (is_null($arg)) {
}
/* Vérification des droits de l'utilisateur. */
- if(!autoriser("exporter", "souscriptiondon", '')) {
+ if(!autoriser("exporter", "souscription", '')) {
include_spip('inc/minipres');
echo minipres();
exit;
}
- $arg = explode("/", $arg);
+ try {
+ $arg = explode("/", $arg);
- $type_statut = $arg[0];
- $type_souscription = $arg[1];
+ if(sizeof($arg) != 5)
+ throw new Exception();
+
+ $type_souscription = $arg[0];
+ if($type_souscription && !in_array($type_souscription, array('don', 'adhesion')))
+ throw new Exception();
+
+ $statut = $arg[1];
+ if($statut && !in_array($statut, array('paye', 'commande', 'erreur')))
+ throw new Exception();
+
+ $id_campagne = $arg[2];
+ if($id_campagne && !ctype_digit($id_campagne))
+ throw new Exception();
+
+ $date_debut = $arg[3];
+ $date_fin = $arg[4];
+
+ if(($date_debut && !ctype_digit($date_debut)) || ($date_fin && !ctype_digit($date_fin)))
+ throw new Exception();
+ }
+ catch(Exception $e) {
+ include_spip('inc/minipres');
+ echo minipres();
+ exit;
+ }
/* Préparation de la requête */
$select = "id_souscription, courriel, type_souscription,"
$where = array();
if($type_souscription)
$where[] = "type_souscription='$type_souscription'";
- else
- $type_souscription = "tous";
-
- if($type_statut == "payes") {
- $where[] = "reglee='oui'";
- }
- elseif($type_statut == "tous") {
- /* Afficher toutes les transactions du type demandé */
- }
- else {
- include_spip('inc/minipres');
- echo minipres("Argument invalide");
- exit;
+ if($statut) {
+ if($statut == "paye")
+ $where[] = "reglee='oui'";
+ elseif($statut == "commande")
+ $where[] = "spip_transactions.statut='commande'";
+ elseif($statut == "erreur")
+ $where[] = "spip_transactions.statut like 'echec'";
}
+ if($id_campagne)
+ $where[] = "spip_souscription_campagnes.id_souscription_campagne = '$id_campagne'";
+
+ if($date_debut)
+ $where[] = "date_souscription > '" . date ("Y-m-d 00:00:00", $date_debut) . "'";
+
+ if($date_fin)
+ $where[] = "date_souscription < '" . date ("Y-m-d 23:59:59", $date_fin) . "'";
+
$row = sql_select($select, $from, $where);
$entete = array("ID du don",
/* Utilisation de la fonction exporter_csv de Bonux */
$exporter_csv = charger_fonction('exporter_csv', 'inc/', true);
- $exporter_csv("souscriptions_${type_souscription}_${type_statut}", $row, ',', $entete);
+ $exporter_csv("souscriptions", $row, ',', $entete);
exit();
}
--- /dev/null
+[(#REM) Le tableau est inversé pour ne pas tomber dans le panneau de
+array_merge qui ne réindexe le tableau si la valeur est numérique. Le
+tableau est retourné lors de son utilisation via le filtre
+array_flip. ]
+#SET{liste_campagnes, #ARRAY{Tous, tous}}
+<BOUCLE_souscription_campagne(SOUSCRIPTION_CAMPAGNES)>
+ #SET{liste_campagnes, #GET{liste_campagnes}|array_merge{#ARRAY{#TITRE, #ID_SOUSCRIPTION_CAMPAGNE}}}
+</BOUCLE_souscription_campagne>
+
+<div class="formulaire_spip formulaire_exporter formulaire_#FORM">
+
+ <h3 class="titrem"><:souscription:voir_exporter:></h3>
+
+ [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
+ [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
+
+ [(#ENV{editable})
+ <form method="post" action="#ENV{action}">
+ #ACTION_FORMULAIRE{#ENV{action}}
+ <ul>
+ [(#SAISIE{selection, exporter_type_souscription, label=<:souscription:label_exporter_type_souscription:>,
+ cacher_option_intro=oui, datas=#ARRAY{tous, Tous, don, Dons, adhesion, Adhésions}})]
+
+ [(#SAISIE{selection, exporter_statut, label=<:souscription:label_exporter_statut:>, cacher_option_intro=oui,
+ datas=#ARRAY{tous, Tous, paye, Payés, commande, Commandes, erreur, Erreurs}})]
+
+ [(#SAISIE{selection, exporter_campagne, label=<:souscription:label_exporter_campagne:>,
+ cacher_option_intro=oui, datas=#GET{liste_campagnes}|array_flip})]
+
+ [(#SAISIE{date, exporter_date_debut, label=<:souscription:label_exporter_date_debut:>})]
+
+ [(#SAISIE{date, exporter_date_fin, label=<:souscription:label_exporter_date_fin:>})]
+ </ul>
+
+ <p class="boutons"><input type="submit" class="submit" value="<:souscription:bouton_exporter:>" /></p>
+ </form>
+ ]
+</div>
--- /dev/null
+<?php
+/**
+ * Gestion du formulaire de d'export des souscriptions
+ *
+ * @plugin Souscription
+ * @copyright 2013
+ * @author Olivier Tétard
+ * @licence GNU/GPL
+ * @package SPIP\Souscription\Formulaires
+ */
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+function formulaires_exporter_souscriptions_charger_dist($type_souscription="tous") {
+
+ if (!autoriser('exporter','souscription'))
+ return false;
+
+ return array('exporter_type_souscription' => $type_souscription,
+ 'exporter_statut' => "tous",
+ 'exporter_campagne' => "tous",
+ 'exporter_date_debut' => '',
+ 'exporter_date_fin' => '');
+}
+
+function formulaires_exporter_souscriptions_verifier_dist($type_souscription="tous") {
+ /*
+ * Note : la vérification du format des données est fait dans la
+ * fonction action (sauf pour les dates)
+ */
+
+ $erreurs = array();
+
+ $verifier = charger_fonction('verifier', 'inc/');
+ if($e = _request('exporter_date_debut') && $err = $verifier(_request('exporter_date_debut'), 'date'))
+ $erreurs['exporter_date_debut'] = $err;
+
+ if($e = _request('exporter_date_fin') && $err = $verifier(_request('exporter_date_fin'), 'date'))
+ $erreurs['exporter_date_fin'] = $err;
+
+ return $erreurs;
+}
+
+function formulaires_exporter_souscriptions_traiter_dist($type_souscription="tous") {
+ $type_souscription = _request('exporter_type_souscription');
+ $statut = _request('exporter_statut');
+ $campagne = _request('exporter_campagne');
+
+ $verifier = charger_fonction('verifier', 'inc/');
+ $date = "";
+ $verifier(_request('exporter_date_debut'), 'date', array('normaliser' => 'datetime'), $date_debut);
+ $verifier(_request('exporter_date_fin'), 'date', array('normaliser' => 'datetime'), $date_fin);
+
+ /* Construction de l'URL spéciale pour l'action d'exportation. */
+ $arg = sprintf("%s/%s/%s/%s/%s",
+ $type_souscription == 'tous' ? '' : $type_souscription,
+ $statut == 'tous' ? '' : $statut,
+ $campagne == 'tous' ? '' : $campagne,
+ $date_debut ? strtotime($date_debut) : "",
+ $date_fin ? strtotime($date_fin) : "");
+
+ include_spip('inc/actions');
+ $redirect = generer_action_auteur('exporter_souscriptions', $arg);
+
+ return array('redirect' => $redirect);
+}
// Produit automatiquement par le plugin LangOnet a partir de la langue source fr
// Module: souscription
// Langue: fr
-// Date: 28-05-2013 19:48:54
+// Date: 28-05-2013 19:55:44
// Items: 72
if (!defined('_ECRIRE_INC_VERSION')) return;
// A
'ajouter_lien_souscription' => 'Ajouter cette souscription',
+// B
+ 'bouton_exporter' => 'Exporter',
+
// C
'cfg_exemple' => 'Exemple',
'cfg_exemple_explication' => 'Explication de cet exemple',
'cfg_titre_parametrages' => 'Paramétrages',
'confirmer' => 'Valider',
'confirmer_creation_campagne' => 'Enregistrer',
+ 'config_info_enregistree' => 'La nouvelle configuration a été enregistrée',
// E
'explication_montant_adhesion' => '<NEW>',
'label_type_saisie' => 'Types de saisies',
'label_type_souscription' => 'Type de souscription',
'label_ville' => 'Ville',
+ 'label_exporter_campagne' => 'Campagne',
+ 'label_exporter_date_debut' => 'Date de début',
+ 'label_exporter_date_fin' => 'Date de fin',
+ 'label_exporter_statut' => 'Statut des souscriptions',
+ 'label_exporter_type_souscription' => "Type de souscription",
// S
'souscription_titre' => 'Souscription',
<paquet
prefix="souscription"
categorie="communication"
- version="0.5"
+ version="0.6"
etat="dev"
compatibilite="[3.0.5;3.0.*]"
logo=""
<licence>GNU/GPL</licence>
<necessite nom="saisies" compatibilite="[1.24.0;]" />
+ <necessite nom="verifier" compatibilite="[1.0.2;]" />
<necessite nom="bank" compatibilite="[2.2.1;]" />
<necessite nom="spip_bonux" compatibilite="[3.0.4;]" />
<necessite nom="pays" compatibilite="];[" />
<div class="liste-objets souscriptions caption-wrap"><strong class="caption">(#ENV*{sinon,''})</strong></div>
]<//B_liste_souscriptions>
-[(#BOITE_OUVRIR{<:souscription:voir_exporter:>,'simple','section'})]
-[(#SET{arguments_export, ''})]
-
-[(#SET{arguments_export,#GET{arguments_export}|concat{/#ENV{type_souscription}|?{#ENV{type_souscription}}, /}})]
-
-<ul>
- <li><a href="[(#URL_ACTION_AUTEUR{exporter_souscriptions,[(#VAL{payes}|concat{#GET{arguments_export}})]})]"><:souscription:label_exporter_payes:></a></li>
- <li><a href="[(#URL_ACTION_AUTEUR{exporter_souscriptions,[(#VAL{tous}|concat{#GET{arguments_export}})]})]"><:souscription:label_exporter_tous:></a></li>
-</ul>
-#BOITE_FERMER
+#FORMULAIRE_EXPORTER_SOUSCRIPTIONS{#ENV{type_souscription}}