4 if (!defined('_ECRIRE_INC_VERSION')) {
8 include_spip('inc/formidable');
9 include_spip('inc/config');
11 function formulaires_exporter_formulaire_reponses_charger($id_formulaire = 0) {
13 $contexte['id_formulaire'] = intval($id_formulaire);
18 function formulaires_exporter_formulaire_reponses_verifier($id_formulaire = 0) {
24 function formulaires_exporter_formulaire_reponses_traiter($id_formulaire = 0) {
26 $statut_reponses = _request('statut_reponses');
28 if (_request('type_export') == 'csv') {
29 $ok = exporter_formulaires_reponses($id_formulaire, ',', $statut_reponses);
30 } elseif (_request('type_export') == 'xls') {
31 $ok = exporter_formulaires_reponses($id_formulaire, 'TAB', $statut_reponses);
35 $retours['editable'] = 1;
36 $retours['message_erreur'] = _T('formidable:info_aucune_reponse');
44 * Exporter toutes les réponses d'un formulaire (anciennement action/exporter_formulaire_reponses)
45 * @param integer $id_formulaire
46 * @return unknown_type
48 function exporter_formulaires_reponses($id_formulaire, $delim = ',', $statut_reponses = 'publie') {
49 include_spip('inc/puce_statut');
50 // on ne fait des choses seulements si le formulaire existe et qu'il a des enregistrements
51 if ($id_formulaire > 0
52 and $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = ' . $id_formulaire)
53 and $reponses = sql_allfetsel('*', 'spip_formulaires_reponses', 'id_formulaire = ' . $id_formulaire . ($statut_reponses == 'publie' ?
' and statut = "publie"' : ''))
55 include_spip('inc/saisies');
56 include_spip('facteur_fonctions');
57 include_spip('inc/filtres');
58 $reponses_completes = array();
60 // La première ligne des titres
63 _T('formidable:reponses_auteur'),
64 _T('formidable:reponses_ip')
66 if ($statut_reponses != 'publie') {
67 $titres[] = _T('formidable:reponse_statut');
69 $saisies = saisies_lister_par_nom(unserialize($formulaire['saisies']), false);
70 foreach ($saisies as $nom => $saisie) {
71 if ($saisie['saisie'] != 'explication') { // on exporte tous les champs sauf explications
72 $options = $saisie['options'];
73 $titres[] = sinon($options['label_case'], sinon($options['label'], $nom));
77 // On passe la ligne des titres de colonnes dans un pipeline
79 'formidable_exporter_formulaire_reponses_titres',
81 'args' => array('id_formulaire'=>$id_formulaire, 'formulaire'=>$formulaire),
85 $reponses_completes[] = $titres;
87 // On parcourt chaque réponse
88 foreach ($reponses as $reponse) {
89 // Est-ce qu'il y a un auteur avec un nom
91 if ($id_auteur = intval($reponse['id_auteur'])) {
92 $nom_auteur = sql_getfetsel('nom', 'spip_auteurs', 'id_auteur = ' . $id_auteur);
98 // Le début de la réponse avec les infos (date, auteur, etc)
99 $reponse_complete = array(
104 if ($statut_reponses != 'publie') {
105 $reponse_complete[] = statut_texte_instituer('formulaires_reponse', $reponse['statut']);
108 // Ensuite tous les champs
109 foreach ($saisies as $nom => $saisie) {
110 if ($saisie['saisie'] != 'explication') {
111 $valeur = sql_getfetsel(
113 'spip_formulaires_reponses_champs',
114 'id_formulaires_reponse = ' . intval($reponse['id_formulaires_reponse']) . ' and nom = ' . sql_quote($nom)
116 if (is_array(unserialize($valeur))) {
117 $valeur = unserialize($valeur);
119 $reponse_complete[] = facteur_mail_html2text(
121 'saisies-vues/_base',
124 'valeur_uniquement' => 'oui',
125 'type_saisie' => $saisie['saisie'],
135 // On passe la ligne de réponse dans un pipeline
136 $reponse_complete = pipeline(
137 'formidable_exporter_formulaire_reponses_reponse',
139 'args' => array('id_formulaire'=>$id_formulaire, 'formulaire'=>$formulaire, 'reponse'=>$reponse),
140 'data' => $reponse_complete,
144 // On ajoute la ligne à l'ensemble des réponses
145 $reponses_completes[] = $reponse_complete;
148 if ($reponses_completes and $exporter_csv = charger_fonction('exporter_csv', 'inc/', true)) {
149 $exporter_csv('reponses-formulaire-' . $formulaire['identifiant'], $reponses_completes, $delim);