89 lines
3.3 KiB
PHP
89 lines
3.3 KiB
PHP
<?php
|
|
/**
|
|
* Fichier d'actions pour les crons du plugin ESI_crvi_agenda
|
|
*
|
|
* Ce fichier fait uniquement le routage vers les méthodes appropriées
|
|
* dans les classes Event_Model et Notifications_Controller.
|
|
*
|
|
* Actions disponibles via paramètres GET :
|
|
* - action=get_today_incomplete : Récupère tous les événements d'aujourd'hui non complétés
|
|
* - action=send_sms_reminder : Envoie des SMS de rappel pour les événements dans X jours
|
|
* Paramètres additionnels :
|
|
* - days : nombre de jours avant l'événement (1, 2 ou 3, défaut: 3)
|
|
*
|
|
* Usage :
|
|
* /wp-content/plugins/ESI_crvi_agenda/app/crons/actions.php?key=K7mP9xQ2vN4rT8&action=get_today_incomplete
|
|
* /wp-content/plugins/ESI_crvi_agenda/app/crons/actions.php?key=K7mP9xQ2vN4rT8&action=send_sms_reminder&days=3
|
|
*
|
|
* Sécurité : Une clé secrète est requise via le paramètre GET 'key'
|
|
*/
|
|
|
|
define('WP_USE_THEMES', false);
|
|
|
|
// Clé secrète pour sécuriser l'accès aux actions cron
|
|
define('CRON_ACTIONS_SECRET_KEY', 'K7mP9xQ2vN4rT8');
|
|
|
|
// Vérification de la clé secrète via paramètre GET
|
|
if (!isset($_GET['key']) || $_GET['key'] !== CRON_ACTIONS_SECRET_KEY) {
|
|
http_response_code(403);
|
|
header('Content-Type: application/json');
|
|
die(json_encode(['error' => 'Accès refusé. Clé secrète requise.']));
|
|
}
|
|
|
|
// Déterminer le chemin du plugin
|
|
$plugin_dir = dirname(dirname(__DIR__));
|
|
$wp_load_path = $plugin_dir . '/../../../../wp-load.php';
|
|
|
|
// Vérifier que wp-load.php existe
|
|
if (!file_exists($wp_load_path)) {
|
|
http_response_code(500);
|
|
header('Content-Type: application/json');
|
|
die(json_encode(['error' => 'Erreur : wp-load.php introuvable.']));
|
|
}
|
|
|
|
require_once $wp_load_path;
|
|
|
|
// Charger les classes nécessaires
|
|
require_once dirname(__DIR__) . '/models/Event_Model.php';
|
|
require_once dirname(__DIR__) . '/controllers/Notifications_Controller.php';
|
|
|
|
use ESI_CRVI_AGENDA\models\CRVI_Event_Model;
|
|
use ESI_CRVI_AGENDA\controllers\CRVI_Notifications_Controller;
|
|
|
|
// Récupérer l'action demandée
|
|
$action = isset($_GET['action']) ? sanitize_text_field($_GET['action']) : '';
|
|
|
|
// Définir le header JSON
|
|
header('Content-Type: application/json; charset=utf-8');
|
|
|
|
// Router vers l'action appropriée
|
|
switch ($action) {
|
|
case 'get_today_incomplete':
|
|
$result = CRVI_Event_Model::get_today_incomplete_events();
|
|
echo json_encode($result, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
|
|
break;
|
|
|
|
case 'send_sms_reminder':
|
|
$days = isset($_GET['days']) ? (int) $_GET['days'] : 3;
|
|
$result = CRVI_Notifications_Controller::send_sms_reminder($days);
|
|
|
|
// Si c'est une erreur de validation, retourner un code 400
|
|
if (isset($result['error'])) {
|
|
http_response_code(400);
|
|
}
|
|
|
|
echo json_encode($result, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
|
|
break;
|
|
|
|
default:
|
|
http_response_code(400);
|
|
echo json_encode([
|
|
'error' => 'Action non reconnue',
|
|
'available_actions' => [
|
|
'get_today_incomplete' => 'Récupère tous les événements d\'aujourd\'hui non complétés',
|
|
'send_sms_reminder' => 'Envoie des SMS de rappel pour les événements dans X jours (paramètre: days=1|2|3)'
|
|
]
|
|
], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
|
|
break;
|
|
}
|