From 18a92e7dddd49490f9c8b5c60aeaade7faae1d2a Mon Sep 17 00:00:00 2001
From: "maieul@maieul.net" <>
Date: Tue, 27 Dec 2016 11:33:22 +0000
Subject: [PATCH] =?UTF-8?q?effacer=20r=C3=A9guli=C3=A8rement=20les=20fichi?=
 =?UTF-8?q?ers=20des=20r=C3=A9ponses=20par=20email?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 formidable_pipelines.php    |  2 ++
 inc/formidable_fichiers.php | 30 ++++++++++++++++++++++++++++++
 2 files changed, 32 insertions(+)

diff --git a/formidable_pipelines.php b/formidable_pipelines.php
index 9464fbfb..8ad700f9 100644
--- a/formidable_pipelines.php
+++ b/formidable_pipelines.php
@@ -214,6 +214,8 @@ function formidable_optimiser_base_disparus($flux) {
 
 	$flux['data'] += optimiser_sansref('spip_formulaires_reponses_champs', 'id_formulaires_reponse', $res);
 
+	// Les fichiers des réponses enregistrées par email
+	$flux['data'] += formidable_effacer_fichiers_email();
 	//
 	// CNIL -- Informatique et libertes
 	//
diff --git a/inc/formidable_fichiers.php b/inc/formidable_fichiers.php
index ef580768..c6b13831 100644
--- a/inc/formidable_fichiers.php
+++ b/inc/formidable_fichiers.php
@@ -17,6 +17,9 @@ if (!defined('_DIR_FICHIERS_FORMIDABLE')) {
 if (!defined('_FORMIDABLE_EXPIRATION_FICHIERS_EMAIL')) {
 	define ('_FORMIDABLE_EXPIRATION_FICHIERS_EMAIL',24*3600); // Combien de temps un lien par email dans fichier est valable (en seconde)
 }
+if (!defined('_FORMIDABLE_EFFACEMENT_FICHIERS_EMAIL')) {
+	define ('_FORMIDABLE_EFFACEMENT_FICHIERS_EMAIL', _FORMIDABLE_EXPIRATION_FICHIERS_EMAIL); // Au bout de combien de temps efface-t-on les fichiers enregistrés lorsque le traitement est uniquement email? 
+}
 /** 
  * Créer, si le formulaire contient des saisies de type fichiers, un dossier pour stocker les fichiers.
  * Vérifier que ce dossier soit accessible en écriture.
@@ -310,6 +313,33 @@ function formidable_effacer_fichiers_champ($id_formulaire, $reponses, $champ) {
 		}
 	}	
 }
+
+/** Efface les fichiers des réponses par email
+ * lorsque la constante _FORMIDABLE_EFFACEMENT_FICHIERS_EMAIL est différent de 0 et que le temps est écoulé
+ * @return int nombre de dossiers effacés
+ **/
+function formidable_effacer_fichiers_email() {
+	if (_FORMIDABLE_EFFACEMENT_FICHIERS_EMAIL == 0) {
+		return 0;
+	}
+	$dossiers_effaces = 0;
+	$chemin = _DIR_FICHIERS_FORMIDABLE."timestamp";
+	$timestamp = time();
+	foreach (scandir($chemin) as $dossier){
+		if (strval(intval($dossier))!=$dossier) { // on ne traite que les dossiers qui ont comme nom un entier
+			continue;
+		}
+		if ($timestamp - intval($dossier) >= _FORMIDABLE_EFFACEMENT_FICHIERS_EMAIL) {
+			$chemin_complet = "$chemin/$dossier";
+			var_dump($chemin_complet);
+			if (supprimer_repertoire($chemin_complet)) {
+				$dossiers_effaces++;
+			}	
+		}
+	}
+	return $dossiers_effaces;
+}
+
 /**
  * Générer une url d'action pour la récupération d'un fichier lié à une réponse
  * @param int|str $id_formulaire
-- 
GitLab