Changeset 101450 in spip-zone


Ignore:
Timestamp:
Dec 31, 2016, 12:24:04 AM (3 years ago)
Author:
nicolas.dorigny@…
Message:

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

Location:
_plugins_/formidable/branches/v3_dev
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/formidable/branches/v3_dev/formulaires/exporter_formulaire_reponses.php

    r101439 r101450  
    77
    88include_spip('inc/formidable');
     9include_spip('inc/formidable_fichiers');
    910include_spip('inc/config');
    1011
     
    8990                );
    9091                $reponses_completes[] = $titres;
    91 
     92        $saisies_fichiers = array();
     93       
    9294                // On parcourt chaque réponse
    9395                foreach ($reponses as $reponse) {
     
    111113                                $reponse_complete[] = statut_texte_instituer('formulaires_reponse', $reponse['statut']);
    112114                        }
    113                         $saisies_fichiers = False;
     115                       
    114116                        // Ensuite tous les champs
     117            $tenter_unserialize = charger_fonction('tenter_unserialize', 'filtre/');
    115118                        foreach ($saisies as $nom => $saisie) {
    116                                 if ($saisie['saisie'] == 'fichiers') {//tester s'il y a des saisies parmi les fichiers
    117                                         $saisies_fichiers = True;
    118                                 }       
     119               
    119120                                if ($saisie['saisie'] != 'explication') {
    120121                                        $valeur = sql_getfetsel(
     
    123124                                                'id_formulaires_reponse = ' . intval($reponse['id_formulaires_reponse']) . ' and nom = ' . sql_quote($nom)
    124125                                        );
    125                                         $tenter_unserialize = charger_fonction('tenter_unserialize', 'filtre/');
    126                                         $valeur = $tenter_unserialize($valeur);
     126                                       
     127                                        // Saisie de type fichier ?
     128                    if ($saisie['saisie'] == 'fichiers') {//tester s'il y a des saisies parmi les fichiers
     129                        if ($valeur = $tenter_unserialize($valeur)) {
     130                            foreach ($valeur as $v) {
     131                                // On ajoute à la liste des fichiers des réponses
     132                                $chemin = _DIR_FICHIERS_FORMIDABLE . 'formulaire_' . $id_formulaire . '/reponse_' . $reponse['id_formulaires_reponse'];
     133                                $chemin_fichier = $chemin . '/' . $saisie['options']['nom'] . '/' . $v['nom'];
     134                                if(file_exists($chemin_fichier)){
     135                                    $saisies_fichiers[] = $chemin_fichier;
     136                                }
     137                            }
     138                        }
     139                    }
     140                   
    127141                                        $reponse_complete[] = facteur_mail_html2text(
    128142                                                recuperer_fond(
     
    153167                        $reponses_completes[] = $reponse_complete;
    154168                }
    155                 if (!$saisies_fichiers) {// si pas de saisie fichiers, on envoie directement le csv
    156                         if ($reponses_completes and $exporter_csv = charger_fonction('exporter_csv', 'inc/', true)) {
    157                                 $exporter_csv('reponses-formulaire-' . $formulaire['identifiant'], $reponses_completes, $delim);
    158                                 exit();
    159                         }
    160                 }       else {
    161                         if ($reponses_completes and $exporter_csv = charger_fonction('exporter_csv', 'inc/', true)) {
    162                                 $fichier_csv = $exporter_csv('reponses-formulaire-' . $formulaire['identifiant'], $reponses_completes, $delim, null, False);
    163                                 $fichier_zip = sous_repertoire(_DIR_CACHE, 'export').'reponses-formulaire-' . $formulaire['identifiant'].'.zip';
    164                                 include_spip('inc/formidable_fichiers');
    165                                 $fichier_zip = formidable_zipper_reponses_formulaire($formulaire['id_formulaire'], $fichier_zip, $fichier_csv);
    166                                 if (!$fichier_zip) {// si erreur lors du zippage
    167                                         return false;
    168                                 } else {
    169                                         formidable_retourner_fichier($fichier_zip, basename($fichier_zip));     
    170                                 }
    171                         }
    172                 }
     169
     170        if (!count($saisies_fichiers)) {// si pas de saisie fichiers, on envoie directement le csv
     171            if ($reponses_completes and $exporter_csv = charger_fonction('exporter_csv', 'inc/', true)) {
     172                $exporter_csv('reponses-formulaire-' . $formulaire['identifiant'], $reponses_completes, $delim);
     173                exit();
     174            }
     175        } else {
     176            if ($reponses_completes and $exporter_csv = charger_fonction('exporter_csv', 'inc/', true)) {
     177                $fichier_csv = $exporter_csv('reponses-formulaire-' . $formulaire['identifiant'], $reponses_completes, $delim, null, false);
     178                $fichier_zip = sous_repertoire(_DIR_CACHE, 'export') . 'reponses-formulaire-' . $formulaire['identifiant'] . '.zip';
     179                include_spip('inc/formidable_fichiers');
     180                $fichier_zip = formidable_zipper_reponses_formulaire($formulaire['id_formulaire'], $fichier_zip, $fichier_csv, $saisies_fichiers);
     181                if (!$fichier_zip) {// si erreur lors du zippage
     182                    return false;
     183                } else {
     184                    formidable_retourner_fichier($fichier_zip, basename($fichier_zip));
     185                }
     186            }
     187        }
    173188        } else {
    174189                return false;
  • _plugins_/formidable/branches/v3_dev/inc/formidable_fichiers.php

    r101440 r101450  
    382382 * @return str|int chemin complet du zip ou 0 si erreur lors de la création
    383383**/
    384 function formidable_zipper_reponses_formulaire($id_formulaire, $chemin_du_zip, $fichier_csv) {
    385         include_spip('inc/pclzip');
    386         $chemin_fichiers = _DIR_FICHIERS_FORMIDABLE."formulaire_$id_formulaire";
    387         $zip = new PclZip("$chemin_du_zip");
    388         if (!$zip -> create($chemin_fichiers,
    389                         PCLZIP_OPT_REMOVE_PATH, $chemin_fichiers)
    390         ) {
    391                 spip_log("Impossible de créer le zip pour l'export des réponses du formulaire $id_formulaire","formidable"._LOG_ERREUR);
    392                 return 0;
    393         } else {
    394                 $zip -> delete(PCLZIP_OPT_BY_NAME, "test.txt");
    395                 $zip -> add($fichier_csv, PCLZIP_OPT_REMOVE_ALL_PATH);
    396                 return $chemin_du_zip;
    397         }
     384function formidable_zipper_reponses_formulaire($id_formulaire, $chemin_du_zip, $fichier_csv, $saisies_fichiers) {
     385    include_spip('inc/pclzip');
     386    $zip = new PclZip("$chemin_du_zip");
     387    $chemin_fichiers = _DIR_FICHIERS_FORMIDABLE . 'formulaire_' . $id_formulaire;
     388    if (!$zip->create($saisies_fichiers, PCLZIP_OPT_REMOVE_PATH, $chemin_fichiers)
     389    ) {
     390        spip_log("Impossible de créer le zip pour l'export des réponses du formulaire $id_formulaire", "formidable" . _LOG_ERREUR);
     391        return 0;
     392    } else {
     393        $zip->delete(PCLZIP_OPT_BY_NAME, "test.txt");
     394        $zip->add($fichier_csv, PCLZIP_OPT_REMOVE_ALL_PATH);
     395        return $chemin_du_zip;
     396    }
    398397}
    399398/**
Note: See TracChangeset for help on using the changeset viewer.