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