From 96f23a527eabc72e4214468f6101d26bbbf2a84c Mon Sep 17 00:00:00 2001 From: "camille.sauvage@espci.fr" <> Date: Fri, 5 Apr 2013 10:12:35 +0000 Subject: [PATCH] =?UTF-8?q?Export=20de=20l'analyse=20des=20r=C3=A9ponses?= =?UTF-8?q?=20en=20format=20CSV?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- action/exporter_analyse_reponses.php | 6 +- inc/formidable.php | 104 +++++++++++++++++++++++++-- lang/formidable_de.php | 18 ++--- lang/formidable_en.php | 17 ++--- lang/formidable_fr.php | 10 +-- lang/formidable_it.php | 14 ++-- lang/formidable_sk.php | 16 ++--- 7 files changed, 140 insertions(+), 45 deletions(-) diff --git a/action/exporter_analyse_reponses.php b/action/exporter_analyse_reponses.php index 81e9be7c..5175de85 100755 --- a/action/exporter_analyse_reponses.php +++ b/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' diff --git a/inc/formidable.php b/inc/formidable.php index 1319dc3c..187d8d99 100644 --- a/inc/formidable.php +++ b/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; } diff --git a/lang/formidable_de.php b/lang/formidable_de.php index 1cfa04d7..2aafb492 100644 --- a/lang/formidable_de.php +++ b/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ählen eine Variable von denen zur Verfü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ür jeden Autor ohne Offenlegung seiner Identitä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', diff --git a/lang/formidable_en.php b/lang/formidable_en.php index 01f532be..614cc047 100644 --- a/lang/formidable_en.php +++ b/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', diff --git a/lang/formidable_fr.php b/lang/formidable_fr.php index 6633b6d9..1ba8464d 100644 --- a/lang/formidable_fr.php +++ b/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 à partir de laquelle 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_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', diff --git a/lang/formidable_it.php b/lang/formidable_it.php index 28ca8b6c..b4c75a19 100644 --- a/lang/formidable_it.php +++ b/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', diff --git a/lang/formidable_sk.php b/lang/formidable_sk.php index a6fb1e57..3b5b57f9 100644 --- a/lang/formidable_sk.php +++ b/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', -- GitLab