Skip to content
Extraits de code Groupes Projets
Valider e70b1bd3 rédigé par nicolas.dorigny@gmail.com's avatar nicolas.dorigny@gmail.com
Parcourir les fichiers

On n'exporte que les fichiers des réponses séléctionnées en fonction du statut

parent e36ec81b
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -6,6 +6,7 @@ if (!defined('_ECRIRE_INC_VERSION')) {
}
include_spip('inc/formidable');
include_spip('inc/formidable_fichiers');
include_spip('inc/config');
function formulaires_exporter_formulaire_reponses_charger($id_formulaire = 0) {
......@@ -88,7 +89,8 @@ function exporter_formulaires_reponses($id_formulaire, $delim = ',', $statut_rep
)
);
$reponses_completes[] = $titres;
$saisies_fichiers = array();
// On parcourt chaque réponse
foreach ($reponses as $reponse) {
// Est-ce qu'il y a un auteur avec un nom
......@@ -110,20 +112,32 @@ function exporter_formulaires_reponses($id_formulaire, $delim = ',', $statut_rep
if ($statut_reponses != 'publie') {
$reponse_complete[] = statut_texte_instituer('formulaires_reponse', $reponse['statut']);
}
$saisies_fichiers = False;
// Ensuite tous les champs
$tenter_unserialize = charger_fonction('tenter_unserialize', 'filtre/');
foreach ($saisies as $nom => $saisie) {
if ($saisie['saisie'] == 'fichiers') {//tester s'il y a des saisies parmi les fichiers
$saisies_fichiers = True;
}
if ($saisie['saisie'] != 'explication') {
$valeur = sql_getfetsel(
'valeur',
'spip_formulaires_reponses_champs',
'id_formulaires_reponse = ' . intval($reponse['id_formulaires_reponse']) . ' and nom = ' . sql_quote($nom)
);
$tenter_unserialize = charger_fonction('tenter_unserialize', 'filtre/');
$valeur = $tenter_unserialize($valeur);
// Saisie de type fichier ?
if ($saisie['saisie'] == 'fichiers') {//tester s'il y a des saisies parmi les fichiers
if ($valeur = $tenter_unserialize($valeur)) {
foreach ($valeur as $v) {
// On ajoute à la liste des fichiers des réponses
$chemin = _DIR_FICHIERS_FORMIDABLE . 'formulaire_' . $id_formulaire . '/reponse_' . $reponse['id_formulaires_reponse'];
$chemin_fichier = $chemin . '/' . $saisie['options']['nom'] . '/' . $v['nom'];
if(file_exists($chemin_fichier)){
$saisies_fichiers[] = $chemin_fichier;
}
}
}
}
$reponse_complete[] = facteur_mail_html2text(
recuperer_fond(
'saisies-vues/_base',
......@@ -152,24 +166,25 @@ function exporter_formulaires_reponses($id_formulaire, $delim = ',', $statut_rep
// On ajoute la ligne à l'ensemble des réponses
$reponses_completes[] = $reponse_complete;
}
if (!$saisies_fichiers) {// si pas de saisie fichiers, on envoie directement le csv
if ($reponses_completes and $exporter_csv = charger_fonction('exporter_csv', 'inc/', true)) {
$exporter_csv('reponses-formulaire-' . $formulaire['identifiant'], $reponses_completes, $delim);
exit();
}
} else {
if ($reponses_completes and $exporter_csv = charger_fonction('exporter_csv', 'inc/', true)) {
$fichier_csv = $exporter_csv('reponses-formulaire-' . $formulaire['identifiant'], $reponses_completes, $delim, null, False);
$fichier_zip = sous_repertoire(_DIR_CACHE, 'export').'reponses-formulaire-' . $formulaire['identifiant'].'.zip';
include_spip('inc/formidable_fichiers');
$fichier_zip = formidable_zipper_reponses_formulaire($formulaire['id_formulaire'], $fichier_zip, $fichier_csv);
if (!$fichier_zip) {// si erreur lors du zippage
return false;
} else {
formidable_retourner_fichier($fichier_zip, basename($fichier_zip));
}
}
}
if (!count($saisies_fichiers)) {// si pas de saisie fichiers, on envoie directement le csv
if ($reponses_completes and $exporter_csv = charger_fonction('exporter_csv', 'inc/', true)) {
$exporter_csv('reponses-formulaire-' . $formulaire['identifiant'], $reponses_completes, $delim);
exit();
}
} else {
if ($reponses_completes and $exporter_csv = charger_fonction('exporter_csv', 'inc/', true)) {
$fichier_csv = $exporter_csv('reponses-formulaire-' . $formulaire['identifiant'], $reponses_completes, $delim, null, false);
$fichier_zip = sous_repertoire(_DIR_CACHE, 'export') . 'reponses-formulaire-' . $formulaire['identifiant'] . '.zip';
include_spip('inc/formidable_fichiers');
$fichier_zip = formidable_zipper_reponses_formulaire($formulaire['id_formulaire'], $fichier_zip, $fichier_csv, $saisies_fichiers);
if (!$fichier_zip) {// si erreur lors du zippage
return false;
} else {
formidable_retourner_fichier($fichier_zip, basename($fichier_zip));
}
}
}
} else {
return false;
}
......
......@@ -381,20 +381,19 @@ function formidable_effacer_fichiers_email() {
* @param str $fichier_csv un fichier csv à ajouter, contenant les réponses
* @return str|int chemin complet du zip ou 0 si erreur lors de la création
**/
function formidable_zipper_reponses_formulaire($id_formulaire, $chemin_du_zip, $fichier_csv) {
include_spip('inc/pclzip');
$chemin_fichiers = _DIR_FICHIERS_FORMIDABLE."formulaire_$id_formulaire";
$zip = new PclZip("$chemin_du_zip");
if (!$zip -> create($chemin_fichiers,
PCLZIP_OPT_REMOVE_PATH, $chemin_fichiers)
) {
spip_log("Impossible de créer le zip pour l'export des réponses du formulaire $id_formulaire","formidable"._LOG_ERREUR);
return 0;
} else {
$zip -> delete(PCLZIP_OPT_BY_NAME, "test.txt");
$zip -> add($fichier_csv, PCLZIP_OPT_REMOVE_ALL_PATH);
return $chemin_du_zip;
}
function formidable_zipper_reponses_formulaire($id_formulaire, $chemin_du_zip, $fichier_csv, $saisies_fichiers) {
include_spip('inc/pclzip');
$zip = new PclZip("$chemin_du_zip");
$chemin_fichiers = _DIR_FICHIERS_FORMIDABLE . 'formulaire_' . $id_formulaire;
if (!$zip->create($saisies_fichiers, PCLZIP_OPT_REMOVE_PATH, $chemin_fichiers)
) {
spip_log("Impossible de créer le zip pour l'export des réponses du formulaire $id_formulaire", "formidable" . _LOG_ERREUR);
return 0;
} else {
$zip->delete(PCLZIP_OPT_BY_NAME, "test.txt");
$zip->add($fichier_csv, PCLZIP_OPT_REMOVE_ALL_PATH);
return $chemin_du_zip;
}
}
/**
* Générer une url d'action pour la récupération d'un fichier lié à une réponse
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter