[PLUGINS] +set de base
[lhc/web/www.git] / www / plugins / formidable_1_0 / action / exporter_formulaires_reponses.php
1 <?php
2
3 // Sécurité
4 if (!defined("_ECRIRE_INC_VERSION")) return;
5
6 /*
7 * Exporter toutes les réponses d'un formulaire
8 * @param unknown_type $arg
9 * @return unknown_type
10 */
11 function action_exporter_formulaires_reponses_dist($arg=null) {
12 if (is_null($arg)){
13 $securiser_action = charger_fonction('securiser_action', 'inc');
14 $arg = $securiser_action();
15 }
16
17 // on ne fait des choses seulements si le formulaire existe et qu'il a des enregistrements
18 $ok = false;
19 if (
20 $id_formulaire = intval($arg)
21 and $formulaire = sql_fetsel('*','spip_formulaires','id_formulaire = '.$id_formulaire)
22 and $reponses = sql_allfetsel('*', 'spip_formulaires_reponses', 'id_formulaire = '.$id_formulaire.' and statut = '.sql_quote('publie'))
23 ) {
24 include_spip('inc/saisies');
25 include_spip('classes/facteur');
26 include_spip('inc/filtres');
27 $reponses_completes = array();
28
29 // La première ligne des titres
30 $titres = array(_T('public:date'), _T('formidable:reponses_auteur'), _T('formidable:reponses_ip'));
31 $saisies = saisies_lister_par_nom(unserialize($formulaire['saisies']), false);
32 foreach ($saisies as $nom=>$saisie){
33 $options = $saisie['options'];
34 $titres[] = sinon($options['label_case'], sinon($options['label'], $nom));
35 }
36 $reponses_completes[] = $titres;
37
38 // On parcourt chaque réponse
39 foreach ($reponses as $reponse){
40 // Est-ce qu'il y a un auteur avec un nom
41 $nom_auteur = '';
42 if ($id_auteur = intval($reponse['id_auteur'])){
43 $nom_auteur = sql_getfetsel('nom', 'spip_auteurs', 'id_auteur = '.$id_auteur);
44 }
45 if (!$nom_auteur) $nom_auteur = '';
46
47 // Le début de la réponse avec les infos (date, auteur, etc)
48 $reponse_complete = array($reponse['date'], $nom_auteur, $reponse['ip']);
49
50 // Ensuite tous les champs
51 foreach ($saisies as $nom=>$saisie){
52 $valeur = sql_getfetsel(
53 'valeur',
54 'spip_formulaires_reponses_champs',
55 'id_formulaires_reponse = '.intval($reponse['id_formulaires_reponse']).' and nom = '.sql_quote($nom)
56 );
57 if (is_array(unserialize($valeur)))
58 $valeur = unserialize($valeur);
59 $reponse_complete[] = Facteur::html2text(
60 recuperer_fond(
61 'saisies-vues/_base',
62 array_merge(
63 array(
64 'valeur_uniquement' => 'oui',
65 'type_saisie' => $saisie['saisie'],
66 'valeur' => $valeur
67 ),
68 $saisie['options']
69 )
70 )
71 );
72 }
73
74 // On ajoute la ligne à l'ensemble des réponses
75 $reponses_completes[] = $reponse_complete;
76 }
77
78 if ($reponses_completes and $exporter_csv = charger_fonction('exporter_csv', 'inc/', true)){
79 echo $exporter_csv('reponses-formulaire-'.$formulaire['identifiant'], $reponses_completes);
80 exit();
81 }
82 }
83 }
84
85 ?>