source: spip-zone/_plugins_/formidable/branches/v0/action/exporter_formulaires_reponses.php @ 107481

Last change on this file since 107481 was 107481, checked in by real3t@…, 3 years ago

Revert à la demande de l'auteur.
Il faudrait plutôt backporter ce qui a pu être fait sur le trunck au niveau du *traitement* de l'enregistrement anonymisé en base

File size: 2.7 KB
Line 
1<?php
2
3// Sécurité
4if (!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 */
11function 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                if (_request('format') === 'excel') { $delim=';'; } else { $delim=','; }
78                if ($reponses_completes and $exporter_csv = charger_fonction('exporter_csv', 'inc/', true)){
79                        echo $exporter_csv('reponses-formulaire-'.$formulaire['identifiant'], $reponses_completes, $delim);
80                        exit();
81                }
82        }
83}
84
85?>
Note: See TracBrowser for help on using the repository browser.