[PLUGINS] ~formidable 1.3.6 --> 1.9.1
[lhc/web/www.git] / www / plugins / formidable_1_0 / action / exporter_analyse_reponses.php
1 <?php
2
3 // Sécurité
4 if (!defined("_ECRIRE_INC_VERSION")) return;
5
6 /*
7 * Exporter l'analyse des réponses d'un formulaire
8 * @param unknown_type $arg
9 * @return unknown_type
10 */
11 function action_exporter_analyse_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 $saisies = saisies_lister_par_nom(unserialize($formulaire['saisies']), false);
30
31 // exclure les champs non analysés
32 $traitement = unserialize($formulaire['traitements']);
33 foreach (explode("|",$traitement['enregistrement']['analyse_exclure_champs']) as $exclure){
34 unset($saisies[$exclure]);
35 }
36 $res = sql_select(
37 array('nom, valeur'),
38
39 'spip_formulaires_reponses_champs AS FRC,
40 spip_formulaires_reponses AS FR,
41 spip_formulaires AS F',
42
43 "FRC.id_formulaires_reponse=FR.id_formulaires_reponse
44 AND FR.statut='publie'
45 AND F.id_formulaire=FR.id_formulaire
46 AND F.id_formulaire=$id_formulaire"
47 );
48
49 $valeurs = array();
50 while($r = sql_fetch($res)) {
51 $valeurs[$r['nom']][] = is_array(unserialize($r['valeur']))
52 ? unserialize($r['valeur'])
53 : $r['valeur'];
54 }
55
56 foreach ($saisies as $nom=>$saisie){
57 $valeur = sql_getfetsel(
58 'valeur',
59 'spip_formulaires_reponses_champs',
60 'id_formulaires_reponse = '.intval($reponse['id_formulaires_reponse']).' and nom = '.sql_quote($nom)
61 );
62 if (is_array(unserialize($valeur)))
63 $valeur = unserialize($valeur);
64
65 $reponse_complete[] = formidable_analyser_saisie($saisie, $valeurs, 0, true);
66 }
67
68 $colonnes = array(_T('formidable:champs'), _T('formidable:sans_reponses'));
69 foreach($reponse_complete as $reponses) {
70 foreach($reponses as $key => $reponse) {
71 if ($key == 'header' || $key == 'sans_reponse') continue;
72 if (in_array($key, $colonnes) == false)
73 array_push($colonnes, $key);
74 }
75 }
76
77 $csv = array();
78 foreach($reponse_complete as $reponses) {
79 foreach($colonnes as $colonne) {
80 $csv[$reponses['header']][$colonne] =
81 isset($reponses[$colonne])
82 ? $reponses[$colonne]
83 : '';
84 }
85 $csv[$reponses['header']][_T('formidable:champs')] = $reponses['header'];
86 $csv[$reponses['header']][_T('formidable:sans_reponses')]
87 = $reponses['formidable:sans_reponse'];
88 }
89
90 $cpt_ligne = 1;
91 $reponses_completes = array();
92 $reponses_completes[0] = $colonnes;
93 foreach($csv as $ligne => $colonnes) {
94 $cpt_colonne = 0;
95 foreach($colonnes as $colonne) {
96 $reponses_completes[$cpt_ligne][$cpt_colonne++] = $colonne;
97 }
98 $cpt_ligne++;
99 }
100
101 if ($reponses_completes and $exporter_csv = charger_fonction('exporter_csv', 'inc/', true)){
102 $exporter_csv('analyses-formulaire-'.$formulaire['identifiant'], $reponses_completes);
103 exit();
104 }
105 }
106 }
107
108 ?>