From f54f1060e8c0a2a931872f0297cf65d456f37a14 Mon Sep 17 00:00:00 2001 From: jps Date: Wed, 21 Jan 2026 10:36:19 +0100 Subject: [PATCH] Ajout clear transient pour debug --- app/controllers/Plugin.php | 56 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/app/controllers/Plugin.php b/app/controllers/Plugin.php index bb88fbd..4f57b51 100644 --- a/app/controllers/Plugin.php +++ b/app/controllers/Plugin.php @@ -171,6 +171,8 @@ class CRVI_Plugin { add_action('acf/save_post', [self::class, 'check_intervenant_availability_on_save'], 20); // Hook pour afficher les messages de conflit d'indisponibilités add_action('admin_notices', [self::class, 'display_intervenant_conflicts_notice']); + // Hook pour vider le cache via paramètre URL + add_action('admin_init', [self::class, 'handle_clear_cache_request']); } /** @@ -1284,4 +1286,58 @@ class CRVI_Plugin { delete_transient('crvi_intervenant_conflicts_' . $user_id); } } + + /** + * Gère la demande de vidage du cache via paramètre URL + * Usage: ?crvi_clear_cache=1 ou ?crvi_clear_cache=traductions + */ + public static function handle_clear_cache_request() { + // Vérifier si le paramètre existe + if (!isset($_GET['crvi_clear_cache'])) { + return; + } + + // Vérifier les permissions (seulement pour les admins) + if (!current_user_can('manage_options')) { + wp_die('Vous n\'avez pas les permissions nécessaires pour vider le cache.'); + } + + $cache_type = sanitize_text_field($_GET['crvi_clear_cache']); + global $wpdb; + + switch ($cache_type) { + case 'traductions': + case 'capacites': + // Vider uniquement le cache des capacités de traduction + \ESI_CRVI_AGENDA\models\CRVI_TraductionLangue_Model::invalidate_cache(); + $message = 'Cache des capacités de traduction vidé avec succès.'; + break; + + case 'all': + case '1': + case 'true': + // Vider tous les transients du plugin CRVI + $wpdb->query( + "DELETE FROM {$wpdb->options} + WHERE option_name LIKE '_transient_crvi_%' + OR option_name LIKE '_transient_timeout_crvi_%'" + ); + $message = 'Tous les caches CRVI vidés avec succès.'; + break; + + default: + $message = 'Type de cache non reconnu. Utilisez: traductions, all, ou 1'; + break; + } + + // Afficher un message et rediriger + add_action('admin_notices', function() use ($message) { + echo '

' . esc_html($message) . '

'; + }); + + // Rediriger pour retirer le paramètre de l'URL + $redirect_url = remove_query_arg('crvi_clear_cache'); + wp_safe_redirect($redirect_url); + exit; + } } \ No newline at end of file