Browse Source

Export de l'analyse des réponses en format CSV

svn/root/tags/v1.3.6
camille.sauvage@espci.fr 10 years ago
parent
commit
96f23a527e
  1. 6
      action/exporter_analyse_reponses.php
  2. 104
      inc/formidable.php
  3. 18
      lang/formidable_de.php
  4. 17
      lang/formidable_en.php
  5. 10
      lang/formidable_fr.php
  6. 14
      lang/formidable_it.php
  7. 16
      lang/formidable_sk.php

6
action/exporter_analyse_reponses.php

@ -31,9 +31,9 @@ function action_exporter_analyse_reponses_dist($arg=null) {
$res = sql_select(
array('nom, valeur'),
'intranet_formulaires_reponses_champs AS FRC,
intranet_formulaires_reponses AS FR,
intranet_formulaires AS F',
'spip_formulaires_reponses_champs AS FRC,
spip_formulaires_reponses AS FR,
spip_formulaires AS F',
"FRC.id_formulaires_reponse=FR.id_formulaires_reponse
AND FR.statut='publie'

104
inc/formidable.php

@ -149,7 +149,7 @@ function formidable_verifier_reponse_formulaire($id_formulaire, $choix_identific
* @param array $env L'environnement, contenant normalement la réponse à la saisie
* @return string Retour le HTML des vues
*/
function formidable_analyser_saisie($saisie, $valeurs=array(), $reponses_total=0){
function formidable_analyser_saisie($saisie, $valeurs=array(), $reponses_total=0, $format_brut=false) {
// Si le paramètre n'est pas bon ou que c'est un conteneur, on génère du vide
if (!is_array($saisie) or (isset($saisie['saisies']) and $saisie['saisies']))
return '';
@ -177,10 +177,104 @@ function formidable_analyser_saisie($saisie, $valeurs=array(), $reponses_total=0
}
// On génère la saisie
return recuperer_fond(
'saisies-analyses/_base',
$contexte
);
if ($format_brut) {
return analyser_saisie($contexte);
} else {
return recuperer_fond(
'saisies-analyses/_base',
$contexte
);
}
}
/*
* Renvoie une ligne de réponse sous la forme d'un tableau
*
* @param array $saisie Un tableau décrivant une saisie
* @return array Tableau contenant une ligne
*/
function analyser_saisie($saisie) {
if (!isset($saisie['type_saisie']) or $saisie['type_saisie'] == '')
return '';
$ligne = array();
switch($saisie['type_saisie']) {
case 'selecteur_rubrique' :
case 'selecteur_rubrique_article' :
case 'selecteur_article' :
$ligne['plein'] = count(array_filter($saisie['valeurs']));
$ligne['vide'] = count(array_diff_key($saisie['valeurs']
, array_filter($saisie['valeurs'])));
break;
case 'radio' :
case 'selection' :
case 'selection_multiple' :
case 'checkbox' :
$stats = array();
foreach($saisie['valeurs'] as $valeur) {
if (is_array($valeur)) {
foreach($valeur as $choix) {
if (isset($stats["choix-$choix"]))
$stats["choix-$choix"]++;
else $stats["choix-$choix"] = 1;
}
} else {
if (isset($stats["choix-$valeur"]))
$stats["choix-$valeur"]++;
else $stats["choix-$valeur"] = 1;
}
}
$datas = is_string($saisie['datas'])
? saisies_chaine2tableau($saisie['datas'])
: $saisie['datas'];
foreach($datas as $key => $val) {
$nb = (isset($stats["choix-$key"]))
? $stats["choix-$key"]
: 0;
$ligne[$val] = $nb;
}
break;
case 'destinataires' :
$stats = array();
foreach($saisie['valeurs'] as $valeur) {
foreach($valeur as $choix) {
if (isset($stats["choix-$choix"]))
$stats["choix-$choix"]++;
else $stats["choix-$choix"] = 1;
}
}
foreach($stats as $key => $val) {
$key = str_replace('choix-', '', $key);
if ($key == '') $key = '<valeur vide>';
$auteur = sql_getfetsel('nom','spip_auteurs',"id_auteur=$key");
$ligne[$auteur] = $val;
}
break;
}
$vide = 0;
foreach($saisie['valeurs'] as $valeur) {
if ($valeur == '') $vide++;
switch($saisie['type_saisie']) {
case 'case' :
case 'oui_non' :
if(isset($ligne['oui']) == false) $ligne['oui'] = 0;
if(isset($ligne['non']) == false) $ligne['non'] = 0;
if ($valeur) $ligne['oui']++; else $ligne['non']++;
break;
case 'input' :
case 'hidden' :
case 'explication' :
break;
}
}
$ligne['sans_reponse'] = $vide;
$ligne['header'] = $saisie['label'] != ''
? $saisie['label']
: $saisie['type_saisie'];
return $ligne;
}

18
lang/formidable_de.php

@ -9,7 +9,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
// A
'analyse_avec_reponse' => 'Ausgefüllte Antworten',
'analyse_exporter' => 'Exporter l\'analyse', # NEW
'analyse_exporter' => 'Analyse exportieren',
'analyse_longueur_moyenne' => 'Durchschnittliche Anzahl Worte',
'analyse_nb_reponses_total' => '@nb@ personnes ont répondu à ce formulaire.', # NEW
'analyse_sans_reponse' => 'Leere Antworten',
@ -27,7 +27,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'cfg_analyse_classe_label' => 'Classe CSS de la barre de progression', # NEW
'cfg_titre_page_configurer_formidable' => 'Configurer Formidable', # NEW
'cfg_titre_parametrages_analyse' => 'Paramétrages de l\'analyse des réponses', # NEW
'champs' => 'Champs', # NEW
'champs' => 'Felder',
// E
'echanger_formulaire_forms_importer' => 'Forms & Tables (.xml)',
@ -64,7 +64,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'erreur_inexistant' => 'Formular nicht vorhanden.',
// F
'formulaire_anonyme_explication' => 'Ce formulaire est anonyme ; c\'est à dire que l\'identité de l\'utilisateur n\'est pas enregistrée.', # NEW
'formulaire_anonyme_explication' => "Diese Form ist anonym, dh die Identität des Benutzers nicht registriert ist.",
'formulaires_aucun' => 'Kein Formular vorhanden.',
'formulaires_dupliquer' => 'Formular kopieren',
'formulaires_dupliquer_copie' => '(Kopie)',
@ -111,7 +111,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'retour_aucun_traitement' => 'Ihre Antwort wurde gesendet, jedoch wurde keine Verarbeitungsoption für das Formular festgelegt. Deshalb geschieht mit den Daten aus diesem Formular überhaupt nichts. :)',
// S
'sans_reponses' => 'Sans réponse', # NEW
'sans_reponses' => 'Unbeantwortet',
// T
'titre_cadre_raccourcis' => 'Raccourcis', # NEW
@ -148,11 +148,11 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'traiter_enregistrement_erreur_base' => 'Beim Speichern in der Datenbank ist ein Fehler aufgetreten',
'traiter_enregistrement_erreur_deja_repondu' => 'Sie haben dieses Formular bereits ausgefüllt.',
'traiter_enregistrement_erreur_edition_reponse_inexistante' => 'La réponse à éditer est introuvable.', # NEW
'traiter_enregistrement_option_anonymiser_explication' => 'Rendre les résultats du formulaire anonymes (ne pas garder de traces de l\'identifiant des personnes ayant répondu.)', # NEW
'traiter_enregistrement_option_anonymiser_label' => 'Anonymiser le formulaire', # NEW
'traiter_enregistrement_option_anonymiser_variable_explication' => 'Quelle variable système utiliser pour calculer une valeur unique pour chaque auteur sans pour autant révéler son identité.', # NEW
'traiter_enregistrement_option_anonymiser_variable_label' => 'Variable à partir de laquelle anonymiser le formulaire', # NEW
'traiter_enregistrement_option_choix_select_label' => 'Choisir une variable parmi celles proposées', # NEW
'traiter_enregistrement_option_anonymiser_label' => "Anonymisierter Form",
'traiter_enregistrement_option_anonymiser_explication' => "Stellen die Ergebnisse der anonymen Form (nicht halten Trace-Kennung der Befragten).')",
'traiter_enregistrement_option_choix_select_label' => "W&auml;hlen eine Variable von denen zur Verf&uuml;gung.",
'traiter_enregistrement_option_anonymiser_variable_label' => "Variable aus dem anonymisierter Form.",
'traiter_enregistrement_option_anonymiser_variable_explication' => "Welches System Variable verwendet, um einen einzelnen Wert f&uuml;r jeden Autor ohne Offenlegung seiner Identit&auml;t zu berechnen.",
'traiter_enregistrement_option_identification_explication' => 'Si les réponses sont modifiables, quel procédé utiliser en priorité pour connaitre la réponse à modifier ?', # NEW
'traiter_enregistrement_option_identification_label' => 'Identification', # NEW
'traiter_enregistrement_option_moderation_label' => 'Moderation',

17
lang/formidable_en.php

@ -16,6 +16,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'analyse_une_reponse_total' => 'One person responded to this form.',
'analyse_zero_reponse_total' => 'No one responded to this form.',
'aucun_traitement' => 'No treatment',
'analyse_exporter' => 'Export analysis',
// B
'bouton_formulaires' => 'Forms',
@ -27,7 +28,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'cfg_analyse_classe_label' => 'CSS class of the progress bar',
'cfg_titre_page_configurer_formidable' => 'Configure Formidable',
'cfg_titre_parametrages_analyse' => 'Settings in the answers analysis',
'champs' => 'Champs', # NEW
'champs' => 'Fields',
// E
'echanger_formulaire_forms_importer' => 'Forms & Tables (.xml)',
@ -64,7 +65,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'erreur_inexistant' => 'This form doesn\'t exist.',
// F
'formulaire_anonyme_explication' => 'Ce formulaire est anonyme ; c\'est à dire que l\'identité de l\'utilisateur n\'est pas enregistrée.', # NEW
'formulaire_anonyme_explication' => 'This form is anonymous; meaning that the user\'s identity will not be recorded.',
'formulaires_aucun' => 'There is no form for now',
'formulaires_dupliquer' => 'Duplicate the form',
'formulaires_dupliquer_copie' => '(copy)',
@ -111,7 +112,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'retour_aucun_traitement' => 'Your reply was accepted. But as the function of the form has not yet been configured, nothing was done with your data!',
// S
'sans_reponses' => 'Sans réponse', # NEW
'sans_reponses' => 'Unanswered',
// T
'titre_cadre_raccourcis' => 'Shortcuts',
@ -148,11 +149,11 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'traiter_enregistrement_erreur_base' => 'An error occurred while writing to the database',
'traiter_enregistrement_erreur_deja_repondu' => 'You have already filled in this form.',
'traiter_enregistrement_erreur_edition_reponse_inexistante' => 'The answer to edit can not be found.',
'traiter_enregistrement_option_anonymiser_explication' => 'Rendre les résultats du formulaire anonymes (ne pas garder de traces de l\'identifiant des personnes ayant répondu.)', # NEW
'traiter_enregistrement_option_anonymiser_label' => 'Anonymiser le formulaire', # NEW
'traiter_enregistrement_option_anonymiser_variable_explication' => 'Quelle variable système utiliser pour calculer une valeur unique pour chaque auteur sans pour autant révéler son identité.', # NEW
'traiter_enregistrement_option_anonymiser_variable_label' => 'Variable à partir de laquelle anonymiser le formulaire', # NEW
'traiter_enregistrement_option_choix_select_label' => 'Choisir une variable parmi celles proposées', # NEW
'traiter_enregistrement_option_anonymiser_label' => "Anonymize form",
'traiter_enregistrement_option_anonymiser_explication' => "Make the form results anonymous (don\'t keep any tracks of user who have answered.)",
'traiter_enregistrement_option_choix_select_label' => "Select a variable from the available",
'traiter_enregistrement_option_anonymiser_variable_label' => "Variable from witch the form will be anonymized",
'traiter_enregistrement_option_anonymiser_variable_explication' => "What system variable used to calculate a single value for each author without revealing his identity.",
'traiter_enregistrement_option_identification_explication' => 'If the answers can be changed, which method is used first to know the answer to modify ?',
'traiter_enregistrement_option_identification_label' => 'Identification',
'traiter_enregistrement_option_moderation_label' => 'Moderation',

10
lang/formidable_fr.php

@ -146,11 +146,11 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'traiter_enregistrement_erreur_base' => 'Une erreur technique est survenue durant l\'enregistrement en base de données',
'traiter_enregistrement_erreur_deja_repondu' => 'Vous avez déjà répondu à ce formulaire.',
'traiter_enregistrement_erreur_edition_reponse_inexistante' => 'La réponse à éditer est introuvable.',
'traiter_enregistrement_option_anonymiser_explication' => 'Rendre les résultats du formulaire anonymes (ne pas garder de traces de l\'identifiant des personnes ayant répondu.)',
'traiter_enregistrement_option_anonymiser_label' => 'Anonymiser le formulaire',
'traiter_enregistrement_option_anonymiser_variable_explication' => 'Quelle variable système utiliser pour calculer une valeur unique pour chaque auteur sans pour autant révéler son identité.',
'traiter_enregistrement_option_anonymiser_variable_label' => 'Variable à partir de laquelle anonymiser le formulaire',
'traiter_enregistrement_option_choix_select_label' => 'Choisir une variable parmi celles proposées',
'traiter_enregistrement_option_anonymiser_label' => "Anonymiser le formulaire",
'traiter_enregistrement_option_anonymiser_explication' => "Rendre les résultats du formulaire anonymes (ne pas garder de traces de l'identifiant des personnes ayant répondu.)",
'traiter_enregistrement_option_choix_select_label' => "Choisir une variable parmi celles proposées",
'traiter_enregistrement_option_anonymiser_variable_label' => "Variable &agrave; partir de laquelle anonymiser le formulaire",
'traiter_enregistrement_option_anonymiser_variable_explication' => "Quelle variable syst&egrave;me utiliser pour calculer une valeur unique pour chaque auteur sans pour autant révéler son identité.",
'traiter_enregistrement_option_identification_explication' => 'Si les réponses sont modifiables, quel procédé utiliser en priorité pour connaitre la réponse à modifier ?',
'traiter_enregistrement_option_identification_label' => 'Identification',
'traiter_enregistrement_option_moderation_label' => 'Modération',

14
lang/formidable_it.php

@ -9,7 +9,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
// A
'analyse_avec_reponse' => 'Risposte non vuote',
'analyse_exporter' => 'Exporter l\'analyse', # NEW
'analyse_exporter' => 'Esporta l\'analisi',
'analyse_longueur_moyenne' => 'Lunghezza media in numero di parole',
'analyse_nb_reponses_total' => '@nb@ personnes ont répondu à ce formulaire.', # NEW
'analyse_sans_reponse' => 'Risposte vuote',
@ -27,7 +27,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'cfg_analyse_classe_label' => 'Classe CSS de la barre de progression', # NEW
'cfg_titre_page_configurer_formidable' => 'Configurer Formidable', # NEW
'cfg_titre_parametrages_analyse' => 'Paramétrages de l\'analyse des réponses', # NEW
'champs' => 'Champs', # NEW
'champ' => 'Campi',
// E
'echanger_formulaire_forms_importer' => 'Forms & Tables (.xml)',
@ -111,7 +111,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'retour_aucun_traitement' => 'La risposta è stata correttamente inviata. Grazie :)',
// S
'sans_reponses' => 'Sans réponse', # NEW
'sans_reponses' => 'Senza risposta',
// T
'titre_cadre_raccourcis' => 'Raccourcis', # NEW
@ -148,10 +148,10 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'traiter_enregistrement_erreur_base' => 'Si è verificato un errore tecnico durante il salvataggio in database',
'traiter_enregistrement_erreur_deja_repondu' => 'Hai già risposto a questo modulo.',
'traiter_enregistrement_erreur_edition_reponse_inexistante' => 'La risposta da modificare non esiste.',
'traiter_enregistrement_option_anonymiser_explication' => 'Rendre les résultats du formulaire anonymes (ne pas garder de traces de l\'identifiant des personnes ayant répondu.)', # NEW
'traiter_enregistrement_option_anonymiser_label' => 'Anonymiser le formulaire', # NEW
'traiter_enregistrement_option_anonymiser_variable_explication' => 'Quelle variable système utiliser pour calculer une valeur unique pour chaque auteur sans pour autant révéler son identité.', # NEW
'traiter_enregistrement_option_anonymiser_variable_label' => 'Variable à partir de laquelle anonymiser le formulaire', # NEW
'traiter_enregistrement_option_anonymiser_explication' => 'Fare i risultati di forma anonima (non conservare traccia di identificazione degli intervistati).', # NEW
'traiter_enregistrement_option_anonymiser_label' => 'Modo anonimo', # NEW
'traiter_enregistrement_option_anonymiser_variable_explication' => 'Quale variabile di sistema utilizzato per calcolare un singolo valore per ogni autore, senza rivelare la propria identità.', # NEW
'traiter_enregistrement_option_anonymiser_variable_label' => 'Variabile da cui la forma anonima', # NEW
'traiter_enregistrement_option_choix_select_label' => 'Choisir une variable parmi celles proposées', # NEW
'traiter_enregistrement_option_identification_explication' => 'Se le risposte sono modificabili, quale procedura si dovrà utilizzare in priorità per individuare la risposta da modificare?',
'traiter_enregistrement_option_identification_label' => 'Identificazione',

16
lang/formidable_sk.php

@ -9,7 +9,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
// A
'analyse_avec_reponse' => 'Neprázdne odpovede',
'analyse_exporter' => 'Exporter l\'analyse', # NEW
'analyse_exporter' => 'Exportovať analýzu',
'analyse_longueur_moyenne' => 'Priemerná dĺžka vyjadrená počtom slov',
'analyse_nb_reponses_total' => '@nb@ ľudia odpovedali na tento formulár.',
'analyse_sans_reponse' => 'Nevyplnené',
@ -27,7 +27,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'cfg_analyse_classe_label' => 'Trieda CSS stĺpca dokončenia úkonu',
'cfg_titre_page_configurer_formidable' => 'Nastaviť Formidable',
'cfg_titre_parametrages_analyse' => 'Nastavenia analýzy odpovedí',
'champs' => 'Champs', # NEW
'champs' => 'Pol\'a',
// E
'echanger_formulaire_forms_importer' => 'formuláre Forms & Tables (.xml)',
@ -111,7 +111,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'retour_aucun_traitement' => 'Vaša odpoveď bola odoslaná, ale k tomuto formuláru nebola definovaná žiadna funkcia. Nič neurobí. :-)',
// S
'sans_reponses' => 'Sans réponse', # NEW
'sans_reponses' => 'Neriešiteľný',
// T
'titre_cadre_raccourcis' => 'Skratky',
@ -148,11 +148,11 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'traiter_enregistrement_erreur_base' => 'Počas ukladania do databázy sa vyskytla technická chyba',
'traiter_enregistrement_erreur_deja_repondu' => 'Tento formulár ste už vyplnili.',
'traiter_enregistrement_erreur_edition_reponse_inexistante' => 'Odpoveď, ktorú chcete upraviť, sa nedá nájsť.',
'traiter_enregistrement_option_anonymiser_explication' => 'Rendre les résultats du formulaire anonymes (ne pas garder de traces de l\'identifiant des personnes ayant répondu.)', # NEW
'traiter_enregistrement_option_anonymiser_label' => 'Anonymiser le formulaire', # NEW
'traiter_enregistrement_option_anonymiser_variable_explication' => 'Quelle variable système utiliser pour calculer une valeur unique pour chaque auteur sans pour autant révéler son identité.', # NEW
'traiter_enregistrement_option_anonymiser_variable_label' => 'Variable à partir de laquelle anonymiser le formulaire', # NEW
'traiter_enregistrement_option_choix_select_label' => 'Choisir une variable parmi celles proposées', # NEW
'traiter_enregistrement_option_anonymiser_explication' => 'Urobte výsledky anonymnej forme (nevedú trasovanie identifikátor respondentov).', # NEW
'traiter_enregistrement_option_anonymiser_label' => 'Anonymizované podobe', # NEW
'traiter_enregistrement_option_anonymiser_variable_explication' => 'Čo systémová premenná slúži na výpočet jednej hodnoty pre každého autora, bez toho, aby odhalil svoju identitu.', # NEW
'traiter_enregistrement_option_anonymiser_variable_label' => 'Premenná, z ktorých anonymizujú formulár', # NEW
'traiter_enregistrement_option_choix_select_label' => 'Vyberte premennú, ktorá z dostupnej', # NEW
'traiter_enregistrement_option_identification_explication' => 'Ak sa odpovede dajú upraviť, aký spôsob sa použije ako prvý, aby sa zistilo, či sa odpoveď menila?',
'traiter_enregistrement_option_identification_label' => 'Identifikácia',
'traiter_enregistrement_option_moderation_label' => 'Kontrola',

Loading…
Cancel
Save