Browse Source
* export de l'analyse des données en en CSV depuis l'Espace Privésvn/root/tags/v1.3.6

14 changed files with 357 additions and 16 deletions
@ -0,0 +1,103 @@
|
||||
<?php |
||||
|
||||
// Sécurité |
||||
if (!defined("_ECRIRE_INC_VERSION")) return; |
||||
|
||||
/* |
||||
* Exporter l'analyse des réponses d'un formulaire |
||||
* @param unknown_type $arg |
||||
* @return unknown_type |
||||
*/ |
||||
function action_exporter_analyse_reponses_dist($arg=null) { |
||||
if (is_null($arg)){ |
||||
$securiser_action = charger_fonction('securiser_action', 'inc'); |
||||
$arg = $securiser_action(); |
||||
} |
||||
|
||||
// on ne fait des choses seulements si le formulaire existe et qu'il a des enregistrements |
||||
$ok = false; |
||||
if ( |
||||
$id_formulaire = intval($arg) |
||||
and $formulaire = sql_fetsel('*','spip_formulaires','id_formulaire = '.$id_formulaire) |
||||
and $reponses = sql_allfetsel('*', 'spip_formulaires_reponses', 'id_formulaire = '.$id_formulaire.' and statut = '.sql_quote('publie')) |
||||
) { |
||||
include_spip('inc/saisies'); |
||||
include_spip('classes/facteur'); |
||||
include_spip('inc/filtres'); |
||||
$reponses_completes = array(); |
||||
|
||||
$saisies = saisies_lister_par_nom(unserialize($formulaire['saisies']), false); |
||||
|
||||
$res = sql_select( |
||||
array('nom, valeur'), |
||||
|
||||
'intranet_formulaires_reponses_champs AS FRC, |
||||
intranet_formulaires_reponses AS FR, |
||||
intranet_formulaires AS F', |
||||
|
||||
"FRC.id_formulaires_reponse=FR.id_formulaires_reponse |
||||
AND FR.statut='publie' |
||||
AND F.id_formulaire=FR.id_formulaire |
||||
AND F.id_formulaire=$id_formulaire" |
||||
); |
||||
|
||||
$valeurs = array(); |
||||
while($r = sql_fetch($res)) { |
||||
$valeurs[$r['nom']][] = is_array(unserialize($r['valeur'])) |
||||
? unserialize($r['valeur']) |
||||
: $r['valeur']; |
||||
} |
||||
|
||||
foreach ($saisies as $nom=>$saisie){ |
||||
$valeur = sql_getfetsel( |
||||
'valeur', |
||||
'spip_formulaires_reponses_champs', |
||||
'id_formulaires_reponse = '.intval($reponse['id_formulaires_reponse']).' and nom = '.sql_quote($nom) |
||||
); |
||||
if (is_array(unserialize($valeur))) |
||||
$valeur = unserialize($valeur); |
||||
|
||||
$reponse_complete[] = formidable_analyser_saisie($saisie, $valeurs, 0, true); |
||||
} |
||||
|
||||
$colonnes = array(_T('formidable:champs'), _T('formidable:sans_reponses')); |
||||
foreach($reponse_complete as $reponses) { |
||||
foreach($reponses as $key => $reponse) { |
||||
if ($key == 'header' || $key == 'sans_reponse') continue; |
||||
if (in_array($key, $colonnes) == false) |
||||
array_push($colonnes, $key); |
||||
} |
||||
} |
||||
|
||||
$csv = array(); |
||||
foreach($reponse_complete as $reponses) { |
||||
foreach($colonnes as $colonne) { |
||||
$csv[$reponses['header']][$colonne] = |
||||
isset($reponses[$colonne]) |
||||
? $reponses[$colonne] |
||||
: ''; |
||||
} |
||||
$csv[$reponses['header']][_T('formidable:champs')] = $reponses['header']; |
||||
$csv[$reponses['header']][_T('formidable:sans_reponses')] |
||||
= $reponses['formidable:sans_reponse']; |
||||
} |
||||
|
||||
$cpt_ligne = 1; |
||||
$reponses_completes = array(); |
||||
$reponses_completes[0] = $colonnes; |
||||
foreach($csv as $ligne => $colonnes) { |
||||
$cpt_colonne = 0; |
||||
foreach($colonnes as $colonne) { |
||||
$reponses_completes[$cpt_ligne][$cpt_colonne++] = $colonne; |
||||
} |
||||
$cpt_ligne++; |
||||
} |
||||
|
||||
if ($reponses_completes and $exporter_csv = charger_fonction('exporter_csv', 'inc/', true)){ |
||||
echo $exporter_csv('analyses-formulaire-'.$formulaire['identifiant'], $reponses_completes); |
||||
exit(); |
||||
} |
||||
} |
||||
} |
||||
|
||||
?> |
@ -0,0 +1,8 @@
|
||||
<BOUCLE_formulaire(FORMULAIRES){id_formulaire}> |
||||
<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_analyse}}> |
||||
[(#BOITE_OUVRIR{<:formidable:titre_cadre_raccourcis:>,'info'})] |
||||
[(#URL_ACTION_AUTEUR{exporter_analyse_reponses,#ID_FORMULAIRE} |
||||
|icone_horizontale{<:formidable:analyse_exporter:>,formulaire,formulaire-analyse-exporter-24,center})] |
||||
#BOITE_FERMER |
||||
</BOUCLE_autoriser> |
||||
</BOUCLE_formulaire> |
Loading…
Reference in new issue