3cc357573190021abe7c9dd5795e3da839d1bb97
[spip_souscriptions.git] / action / exporter_souscriptions.php
1 <?php
2 if (!defined("_ECRIRE_INC_VERSION")) return;
3
4 function action_exporter_souscriptions_dist($arg=null) {
5   /*
6    * $arg contient les différents arguments, séparés par des '/'. Une
7    * fois passés dans la fonctions split, il se présente de la manière
8    * suivante :
9    *
10    *   argument en position 1 : 'paye', 'commande', 'erreur' ou 'tous'
11    *   argument en position 2 : type de souscription ('dons',
12    *                            'adhesion')
13    *   argument en position 3 : identifiant de la campagne
14    *   argument en position 4 : date de début (au format timestamp)
15    *   argument en position 5 : date de fin (au format timestamp)
16    */
17
18   /* FIXME: améliorer la jointure... */
19
20   if (is_null($arg)) {
21     $securiser_action = charger_fonction('securiser_action', 'inc');
22     $arg = $securiser_action();
23   }
24
25   /* Vérification des droits de l'utilisateur. */
26   if(!autoriser("exporter", "souscription", '')) {
27     include_spip('inc/minipres');
28     echo minipres();
29     exit;
30   }
31
32   try {
33     $arg = explode("/", $arg);
34
35     if(sizeof($arg) != 5)
36       throw new Exception();
37
38     $type_souscription = $arg[0];
39     if($type_souscription && !in_array($type_souscription, array('don', 'adhesion')))
40       throw new Exception();
41
42     $statut = $arg[1];
43     if($statut && !in_array($statut, array('paye', 'commande', 'erreur')))
44       throw new Exception();
45
46     $id_campagne = $arg[2];
47     if($id_campagne && !ctype_digit($id_campagne))
48       throw new Exception();
49
50     $date_debut = $arg[3];
51     $date_fin = $arg[4];
52
53     if(($date_debut && !ctype_digit($date_debut)) || ($date_fin && !ctype_digit($date_fin)))
54       throw new Exception();
55   }
56   catch(Exception $e) {
57     include_spip('inc/minipres');
58     echo minipres();
59     exit;
60   }
61
62   /* Préparation de la requête */
63   $select = "id_souscription, courriel, type_souscription,"
64     ."montant, reglee, spip_transactions.statut, date_paiement, mode, autorisation_id,"
65     ."nom, prenom, adresse, code_postal, ville, pays, telephone, recu_fiscal, envoyer_info, date_souscription,"
66     ."spip_souscription_campagnes.id_souscription_campagne, titre";
67   $from = "spip_souscriptions LEFT JOIN spip_transactions USING(id_transaction) LEFT JOIN spip_souscription_campagnes USING(id_souscription_campagne)";
68
69   $where = array();
70   if($type_souscription)
71     $where[] = "type_souscription='$type_souscription'";
72
73   if($statut) {
74     if($statut == "paye")
75       $where[] = "reglee='oui'";
76     elseif($statut == "commande")
77       $where[] = "spip_transactions.statut='commande'";
78     elseif($statut == "erreur")
79       $where[] = "spip_transactions.statut like 'echec%'";
80   }
81
82   if($id_campagne)
83     $where[] = "spip_souscription_campagnes.id_souscription_campagne = '$id_campagne'";
84
85   if($date_debut)
86     $where[] = "date_souscription > '" . date ("Y-m-d 00:00:00", $date_debut) . "'";
87
88   if($date_fin)
89     $where[] = "date_souscription < '" . date ("Y-m-d 23:59:59", $date_fin) . "'";
90
91   $row = sql_select($select, $from, $where);
92
93   $entete = array("ID du don",
94                   "Courriel",
95                   "Type de souscription",
96                   "Montant",
97                   "Reglée",
98                   "Statut",
99                   "Date de paiement",
100                   "Mode de paiement",
101                   "ID de l'autorisation",
102                   "Nom",
103                   "Prénom",
104                   "Adresse",
105                   "Code Postal",
106                   "Ville",
107                   "Pays",
108                   "Téléphone",
109                   "Souhaite reçu fiscal",
110                   "Souhaite être informé",
111                   "Date don",
112                   "ID Campagne",
113                   "Titre de la campagne");
114
115   /* Utilisation de la fonction exporter_csv de Bonux */
116   $exporter_csv = charger_fonction('exporter_csv', 'inc/', true);
117
118   $exporter_csv("souscriptions", $row, ',', $entete);
119   exit();
120 }