diff --git a/inc/formidable_fichiers.php b/inc/formidable_fichiers.php index 9a3e7f326347a02ac52f2afe3a7fc12142753d39..65d5a422cebb0538b1f6cedba9ae1b1cabd653c7 100644 --- a/inc/formidable_fichiers.php +++ b/inc/formidable_fichiers.php @@ -256,6 +256,33 @@ function formidable_effacer_fichiers_reponse($id_formulaire, $id_formulaires_rep } } +/** Efface les fichiers d'un champ pour les réponses d'un formulaire + * @param str $id_formulaire + * @param array|str $reponses + * @param str $champ +**/ +function formidable_effacer_fichiers_champ($id_formulaire, $reponses, $champ) { + if ($champ != '') { // on devrait pas arriver ici avec un $champ vide, mais prenons nos précaution + + if (!is_array($reponses)) { + $reponses = array($reponses); + } + + $rep_vide = array(".",'..','.ok'); // si scandire retourne cela où inférieur, alors le dossier est vide + foreach ($reponses as $rep) { + $chemin_reponse = _DIR_FICHIERS_FORMIDABLE."formulaire_$id_formulaire/reponse_$rep"; + $chemin_champ = $chemin_reponse."/".$champ; + + if (file_exists($chemin_champ)) { + effacer_repertoire_temporaire($chemin_champ); + if (count(array_diff(scandir($chemin_reponse), $rep_vide)) == 0) { // si jamais il ne reste plus aucun fichiers pour cette réponse, on peut effacer le repertoire de celle-ci + effacer_repertoire_temporaire($chemin_reponse); + } + } + + } + } +} /** * Générer une url d'action pour la récupération d'un fichier lié à une réponse * @param int|str $id_formulaire diff --git a/traiter/enregistrement.php b/traiter/enregistrement.php index f5cdf2a1e7098e9f35a28a2698f839f4bf8bd34e..4661f9e0e72e2ae4f179685037cf1a2bc2c7f799 100644 --- a/traiter/enregistrement.php +++ b/traiter/enregistrement.php @@ -180,7 +180,6 @@ function traiter_enregistrement_update_dist($id_formulaire, $traitement, $saisie 'id_formulaire = '.$id_formulaire ); $reponses = array_map('reset', $reponses); - // Tous les noms de champs à supprimer $noms = array_keys($comparaison['supprimees']); @@ -192,6 +191,12 @@ function traiter_enregistrement_update_dist($id_formulaire, $traitement, $saisie sql_in('nom', $noms) ) ); + // On efface les vieux fichiers + foreach ($noms as $nom) { + if ($comparaison['supprimees'][$nom]['saisie'] == 'fichiers') { + formidable_effacer_fichiers_champ($id_formulaire, $reponses, $nom); + } + } } }