From 82430d7b23bf331546a6e10284b6ed4808b4e7db Mon Sep 17 00:00:00 2001 From: "maieul@maieul.net" <> Date: Fri, 3 Mar 2017 19:19:54 +0000 Subject: [PATCH] =?UTF-8?q?pouvoir=20effacer=20r=C3=A9guli=C3=A8rement=20l?= =?UTF-8?q?es=20r=C3=A9ponses=20d'un=20formulaire.=20=C3=89vite=20de=20con?= =?UTF-8?q?server=20plus=20qu'il=20ne=20faut=20des=20donn=C3=A9es=20potent?= =?UTF-8?q?iellement=20priv=C3=A9es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitattributes | 1 + formidable_pipelines.php | 1 + genie/formidable_effacer_enregistrements.php | 44 ++++++++++++++++++++ lang/formidable_fr.php | 2 + paquet.xml | 2 +- traiter/enregistrement.yaml | 15 ++++++- 6 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 genie/formidable_effacer_enregistrements.php diff --git a/.gitattributes b/.gitattributes index a26b483a..d3d86a8f 100644 --- a/.gitattributes +++ b/.gitattributes @@ -37,6 +37,7 @@ formulaires/importer_formulaire.html -text formulaires/importer_formulaire.php -text formulaires/inc-formidable-boutons.html -text formulaires/inc-formidable-unicite.html -text +genie/formidable_effacer_enregistrements.php -text genie/formidable_effacer_fichiers_email.php -text genie/formidable_hasher_ip.php -text http/collectionjson/formulaires-ressource.html -text diff --git a/formidable_pipelines.php b/formidable_pipelines.php index 67be1c18..f88bca4d 100644 --- a/formidable_pipelines.php +++ b/formidable_pipelines.php @@ -264,6 +264,7 @@ function formidable_formidable_traitements($flux) { function formidable_taches_generales_cron($flux) { $flux['formidable_hasher_ip'] = 24*3600; $flux['formidable_effacer_fichiers_email'] = 24*3600; + $flux['formidable_effacer_enregistrements'] = 24*3600; return $flux; } diff --git a/genie/formidable_effacer_enregistrements.php b/genie/formidable_effacer_enregistrements.php new file mode 100644 index 00000000..7c0b5efb --- /dev/null +++ b/genie/formidable_effacer_enregistrements.php @@ -0,0 +1,44 @@ +<?php + + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +include_spip('inc/formidable_fichiers'); +/** + * Effacer régulièrement les enregistrements obsolètes +**/ +function genie_formidable_effacer_enregistrements($t) { + $res = sql_select("id_formulaire,traitements","spip_formulaires"); + while ($result = sql_fetch($res)) { + $traitements = unserialize($result['traitements']); + $id_formulaire = $result['id_formulaire']; + if ( + isset ($traitements['enregistrement']['effacement']) + and $traitements['enregistrement']['effacement']=='on' + and isset($traitements['enregistrement']['effacement_delai']) + ) { + $delai = intval($traitements['enregistrement']['effacement_delai']); + + if ($delai > 0) { + // si on a bien configuré un délai + $asupprimer = sql_select( + 'id_formulaires_reponse', + 'spip_formulaires_reponses', + "DATE_SUB(CURDATE(), INTERVAL $delai DAY) > maj + AND id_formulaire = $id_formulaire" + ); // on utilise la date de maj, ce qui fait que lorsqu'une réponse est modifiée, l'échéance de la suppression est prorogée + while ($reponse = sql_fetch($asupprimer)){ + $id_formulaires_reponse = $reponse['id_formulaires_reponse']; + + formidable_effacer_fichiers_reponse($id_formulaire, $id_formulaires_reponse); // effacer d'abord les fichiers + sql_delete('spip_formulaires_reponses',"id_formulaires_reponse=$id_formulaires_reponse");// les réponses + sql_delete('spip_formulaires_reponses_champs',"id_formulaires_reponse=$id_formulaires_reponse");//les champs correspondant + spip_log("Effacement de la réponse $$id_formulaires_reponse du form $id_formulaire car antérieur à $delai jours"); + } + } + } + } + return 1; +} diff --git a/lang/formidable_fr.php b/lang/formidable_fr.php index 9ab876da..0ee5c60c 100644 --- a/lang/formidable_fr.php +++ b/lang/formidable_fr.php @@ -256,6 +256,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( 'traiter_enregistrement_option_auteur' => 'Utiliser les auteurs pour les formulaires', 'traiter_enregistrement_option_auteur_explication' => 'Attribuer un ou plusieurs auteurs à un formulaire. Si cette option est activée, seuls les auteurs d’un formulaire pourront accéder à leurs données.', 'traiter_enregistrement_option_choix_select_label' => 'Choisir une variable parmi celles proposées', + 'traiter_enregistrement_option_effacement_delai_label' => 'Nombre de jours avant effacement', + 'traiter_enregistrement_option_effacement_label' => 'Effacer régulièrement les résultats les plus anciens', 'traiter_enregistrement_option_identification_explication' => 'Si les réponses sont modifiables, quel procédé utiliser en priorité pour connaitre la réponse à modifier ?', 'traiter_enregistrement_option_identification_label' => 'Identification', 'traiter_enregistrement_option_ip_label' => 'Enregistrer les IPs (masquées après un délai de garde)', diff --git a/paquet.xml b/paquet.xml index 6ef46934..05ebf049 100644 --- a/paquet.xml +++ b/paquet.xml @@ -1,7 +1,7 @@ <paquet prefix="formidable" categorie="communication" - version="3.2.7" + version="3.3.0" etat="stable" compatibilite="[3.0.0;3.1.*]" logo="images/formidable-64.png" diff --git a/traiter/enregistrement.yaml b/traiter/enregistrement.yaml index a5736faa..af8ec6a5 100644 --- a/traiter/enregistrement.yaml +++ b/traiter/enregistrement.yaml @@ -66,4 +66,17 @@ options: nom: 'analyse_exclure_champs' label: '<:formidable:analyse_exclure_champs_label:>' explication: '<:formidable:analyse_exclure_champs_explication:>' - rows: 4 \ No newline at end of file + rows: 4 + - + saisie: 'case' + options: + nom: 'effacement' + label_case: '<:formidable:traiter_enregistrement_option_effacement_label:>' + li_class: 'pleine_largeur' + - + saisie: 'input' + options: + nom: 'effacement_delai' + label: '<:formidable:traiter_enregistrement_option_effacement_delai_label:>' + afficher_si: '@traitements[enregistrement][effacement]@=="on"' + -- GitLab