ajout fonctions utiliraires

This commit is contained in:
theShlavuk 2026-01-22 08:05:14 +01:00
parent 760e4d4f78
commit b123b75b27
7 changed files with 104 additions and 5 deletions

View File

@ -173,6 +173,8 @@ class CRVI_Plugin {
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']);
// Redirection des utilisateurs non connectés depuis les pages intervenant
add_action('template_redirect', [self::class, 'redirect_non_logged_from_intervenant_pages']);
}
/**
@ -282,6 +284,85 @@ class CRVI_Plugin {
public static function load_filters() {
/* add_filter('rest_endpoints', [self::class, 'register_routes']); */
add_filter('wp_script_attributes', [self::class, 'custom_script_tag'], 10, 2);
// Redirection des intervenants après connexion vers leur espace
add_filter('login_redirect', [self::class, 'redirect_intervenant_after_login'], 10, 3);
}
/**
* Redirige les intervenants vers leur espace après connexion
*
* @param string $redirect_to URL de redirection par défaut
* @param string $requested_redirect_to URL de redirection demandée
* @param WP_User|WP_Error $user Utilisateur connecté ou erreur
* @return string URL de redirection
*/
public static function redirect_intervenant_after_login($redirect_to, $requested_redirect_to, $user) {
// Vérifier si l'utilisateur est valide et n'est pas une erreur
if (is_wp_error($user) || !is_a($user, 'WP_User')) {
return $redirect_to;
}
// Si une redirection spécifique a été demandée, la respecter
if (!empty($requested_redirect_to)) {
return $requested_redirect_to;
}
// Vérifier si l'utilisateur a le rôle 'intervenant'
if (in_array('intervenant', $user->roles, true)) {
// Rediriger vers l'espace intervenant
return home_url('/espace-intervenant');
}
// Pour les autres utilisateurs, utiliser la redirection par défaut
return $redirect_to;
}
/**
* Redirige les utilisateurs non connectés depuis les pages intervenant vers la home
* Vérifie la page 'espace-intervenant' (ID 3307) et ses pages enfants
*/
public static function redirect_non_logged_from_intervenant_pages() {
// Vérifier si l'utilisateur est connecté
if (is_user_logged_in()) {
return;
}
global $post;
// ID de la page espace-intervenant
$intervenant_page_id = 3307;
// Vérifier si on est sur la page espace-intervenant ou une de ses pages enfants
$is_intervenant_page = false;
if ($post && $post->post_type === 'page') {
// Vérifier si c'est la page espace-intervenant elle-même
if ($post->ID == $intervenant_page_id) {
$is_intervenant_page = true;
}
// Vérifier si c'est une page enfant de espace-intervenant
if (!$is_intervenant_page && $post->post_parent) {
$current_post = $post;
// Remonter la hiérarchie pour vérifier si un parent est la page 3307
while ($current_post->post_parent) {
$current_post = get_post($current_post->post_parent);
if (!$current_post) {
break;
}
if ($current_post->ID == $intervenant_page_id) {
$is_intervenant_page = true;
break;
}
}
}
}
// Si on est sur une page intervenant et que l'utilisateur n'est pas connecté, rediriger vers la home
if ($is_intervenant_page) {
wp_redirect(home_url('/'));
exit;
}
}
public function load_shortcodes() {

View File

@ -269,11 +269,29 @@ class AgendaVisualFilters {
// Fallback : utiliser le slug si l'ID n'est pas disponible
langueSelect.value = filters.traduction;
}
// Déclencher l'événement change pour que le système de filtrage existant prenne le relais
// Support pour Select2 si présent
if (window.jQuery && jQuery(langueSelect).hasClass('select2-hidden-accessible')) {
jQuery(langueSelect).trigger('change');
} else {
// Déclencher l'événement change natif
langueSelect.dispatchEvent(new Event('change', { bubbles: true }));
}
}
} else {
const langueSelect = document.getElementById('langue_filtre');
if (langueSelect) {
langueSelect.value = '';
// Déclencher l'événement change pour que le système de filtrage existant prenne le relais
// Support pour Select2 si présent
if (window.jQuery && jQuery(langueSelect).hasClass('select2-hidden-accessible')) {
jQuery(langueSelect).trigger('change');
} else {
// Déclencher l'événement change natif
langueSelect.dispatchEvent(new Event('change', { bubbles: true }));
}
}
}

View File

@ -18,7 +18,7 @@ $user = wp_get_current_user();
<div class="row mb-4">
<div class="col-12">
<h1 class="h2 mb-2">
<i class="fas fa-calendar-alt me-2"></i>Mon Agenda
<!-- <i class="fas fa-calendar-alt me-2"></i> -->Mon Agenda
</h1>
<nav class="navbar navbar-expand-lg navbar-light bg-light rounded p-3">
<div class="container-fluid">

View File

@ -18,7 +18,7 @@ $user = wp_get_current_user();
<div class="row mb-4">
<div class="col-12">
<h1 class="h2 mb-2">
<i class="fas fa-calendar-alt me-2"></i>Mon Agenda
<!-- <i class="fas fa-calendar-alt me-2"></i> -->Mon Agenda
</h1>
<nav class="navbar navbar-expand-lg navbar-light bg-light rounded p-3">
<div class="container-fluid">

View File

@ -20,7 +20,7 @@ $today = date('d/m/Y');
<div class="row mb-4">
<div class="col-12">
<h1 class="h2 mb-2">
<i class="fas fa-home me-2"></i>Mon Espace Intervenant
<!-- <i class="fas fa-home me-2"></i> -->Mon Espace Intervenant
</h1>
<p class="text-muted">Bonjour <?php echo esc_html($intervenant_nom); ?></p>
</div>

View File

@ -34,7 +34,7 @@ if (!is_wp_error($langues_terms) && !empty($langues_terms)) {
<div class="row mb-4">
<div class="col-12">
<h1 class="h2 mb-2">
<i class="fas fa-clock me-2"></i>Mes Permanences
<!-- <i class="fas fa-clock me-2"></i> -->Mes Permanences
</h1>
<nav class="navbar navbar-expand-lg navbar-light bg-light rounded p-3">
<div class="container-fluid">

View File

@ -80,7 +80,7 @@ $jours_labels = [
<div class="row mb-4">
<div class="col-12">
<h1 class="h2 mb-2">
<i class="fas fa-user me-2"></i>Mon Profil
<!-- <i class="fas fa-user me-2"></i> -->Mon Profil
</h1>
<nav class="navbar navbar-expand-lg navbar-light bg-light rounded p-3">
<div class="container-fluid">