diff --git a/formidable_pipelines.php b/formidable_pipelines.php index eede6ad3ad004b1f79d0d0470f8b2056645031f9..9464fbfbaed3e84d7c1e098e64ce0c21524713b7 100644 --- a/formidable_pipelines.php +++ b/formidable_pipelines.php @@ -10,7 +10,7 @@ if (!defined('_ECRIRE_INC_VERSION')) { return; } - +include_spip('inc/formidable_fichiers'); define( '_RACCOURCI_MODELE_FORMIDABLE', '(<(formulaire\|formidable|formidable|form)' # <modele @@ -163,12 +163,22 @@ function formidable_optimiser_base_disparus($flux) { 'spip_formulaires', 'statut='.sql_quote('poubelle') ); + $res2 = sql_select( + 'id_formulaire AS id', + 'spip_formulaires', + 'statut='.sql_quote('poubelle') + );//Copie pour supprimer les fichiers // On génère la suppression $flux['data'] += optimiser_sansref('spip_formulaires', 'id_formulaire', $res); + while ($reponse = sql_fetch($res2)){ + $flux['data'] += formidable_effacer_fichiers_formulaire($reponse['id']); + } + + - # les reponses qui sont associees a un formulaire inexistant + // les reponses qui sont associees a un formulaire inexistant $res = sql_select( 'R.id_formulaire AS id', 'spip_formulaires_reponses AS R LEFT JOIN spip_formulaires AS F ON R.id_formulaire=F.id_formulaire', @@ -177,16 +187,22 @@ function formidable_optimiser_base_disparus($flux) { $flux['data'] += optimiser_sansref('spip_formulaires_reponses', 'id_formulaire', $res); - // Les réponses qui sont à la poubelle $res = sql_select( - 'id_formulaires_reponse AS id', + 'id_formulaires_reponse AS id, id_formulaire AS form', 'spip_formulaires_reponses', sql_in('statut', array('refuse', 'poubelle')) - ); - + ); + $res2 = sql_select( + 'id_formulaires_reponse AS id, id_formulaire AS form', + 'spip_formulaires_reponses', + sql_in('statut', array('refuse', 'poubelle')) + ); //Copie pour la suppression des fichiers des réponses, c'est idiot de pas pouvoir faire une seule requete // On génère la suppression $flux['data'] += optimiser_sansref('spip_formulaires_reponses', 'id_formulaires_reponse', $res); + while ($reponse = sql_fetch($res2)){ + $flux['data'] += formidable_effacer_fichiers_reponse($reponse['form'], $reponse['id']); + } // les champs des reponses associes a une reponse inexistante @@ -220,7 +236,6 @@ function formidable_optimiser_base_disparus($flux) { sql_update('spip_formulaires_reponses', array('ip' => 'MD5(ip)'), $critere_cnil); } } - return $flux; } diff --git a/inc/formidable_fichiers.php b/inc/formidable_fichiers.php index 7ccd92b89f04d95f372a65a6ba7ca7c12104ce62..ef58076808a13ec8cf67f6571063a038b7b7718e 100644 --- a/inc/formidable_fichiers.php +++ b/inc/formidable_fichiers.php @@ -248,17 +248,39 @@ function formidable_deplacer_fichiers_produire_vue_saisie($saisie, $options) { } return $description_fichiers; } +/** + * Efface les fichiers d'un formulaire + * @param $str $id_formulaire + * @return int 1 ou 0 selon que l'on a effacé ou non un répertoire +**/ +function formidable_effacer_fichiers_formulaire($id_formulaire){ + $chemin = _DIR_FICHIERS_FORMIDABLE."formulaire_$id_formulaire"; + if (file_exists($chemin)) {// par sécurité + if (supprimer_repertoire($chemin)){ + return 1; + } else { + return 0; + } + } + return 0; +} /** * efface les fichiers d'une réponse formidable * @param $str $id_formulaire * @param $str $id_formulaires_reponse + * @return int 1 ou 0 selon que l'on a effacé ou non un répertoire **/ function formidable_effacer_fichiers_reponse($id_formulaire, $id_formulaires_reponse){ $chemin = _DIR_FICHIERS_FORMIDABLE."formulaire_$id_formulaire/reponse_$id_formulaires_reponse"; if (file_exists($chemin)) {// par sécurité - supprimer_repertoire($chemin); + if (supprimer_repertoire($chemin)){ + return 1; + } else { + return 0; + } } + return 0; } /** Efface les fichiers d'un champ pour les réponses d'un formulaire