chaines de langue, et detail objectif et avancement dans les listes de campagnes
[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, informer_comite_local, 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(_T("souscription:label_exporter_entete_id_don"),
94                   _T("souscription:label_exporter_entete_courriel"),
95                   _T("souscription:label_exporter_entete_type_souscription"),
96                   _T("souscription:label_exporter_entete_montant"),
97                   _T("souscription:label_exporter_entete_reglee"),
98                   _T("souscription:label_exporter_entete_statut"),
99                   _T("souscription:label_exporter_entete_date_paiement"),
100                   _T("souscription:label_exporter_entete_mode_paiement"),
101                   _T("souscription:label_exporter_entete_id_autorisation"),
102                   _T("souscription:label_exporter_entete_nom"),
103                   _T("souscription:label_exporter_entete_prenom"),
104                   _T("souscription:label_exporter_entete_adresse"),
105                   _T("souscription:label_exporter_entete_code_postal"),
106                   _T("souscription:label_exporter_entete_ville"),
107                   _T("souscription:label_exporter_entete_pays"),
108                   _T("souscription:label_exporter_entete_telephone"),
109                   _T("souscription:label_exporter_entete_recu_fiscal"),
110                   _T("souscription:label_exporter_entete_informer"),
111                   _T("souscription:label_exporter_entete_informer_comite_local"),
112                   _T("souscription:label_exporter_entete_date_don"),
113                   _T("souscription:label_exporter_entete_id_campagne"),
114                   _T("souscription:label_exporter_entete_titre_campagne"));
115
116   /* Utilisation de la fonction exporter_csv de Bonux */
117   $exporter_csv = charger_fonction('exporter_csv', 'inc/', true);
118
119   $exporter_csv("souscriptions", $row, ',', $entete);
120   exit();
121 }