diff --git a/formidable_pipelines.php b/formidable_pipelines.php index 9464fbfbaed3e84d7c1e098e64ce0c21524713b7..8ad700f92d627bbeeffcbe6cfba2df383259a834 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 ef58076808a13ec8cf67f6571063a038b7b7718e..c6b13831da4eba0f12427e41770246634240d5e7 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