<?php // File: index.php (Controlador Frontal en la raíz) // --- Paso 1: Configuración y Seguridad --- require_once 'Controladores/Core/SessionHandler.php'; check_session_timeout(); // --- Paso 2: Incluir las Clases --- // Modelos require_once 'Modelos/Database.php'; require_once 'Modelos/LoginModel.php'; // Controladores require_once 'Controladores/BaseController.php'; require_once 'Controladores/LoginController.php'; require_once 'Controladores/MenuController.php'; require_once 'Controladores/AsistenciaController.php'; require_once 'Controladores/CapacitacionController.php'; require_once 'Controladores/ConsultaController.php'; require_once 'Controladores/AdminController.php'; // --- Paso 3: Enrutador --- $url = isset($_GET['url']) ? $_GET['url'] : 'login/index'; $url = explode('/', trim($url, '/')); // El nombre del controlador se normaliza a ucfirst+lowercase para el nombre de clase $controllerName = isset($url[0]) ? ucfirst(strtolower($url[0])) . 'Controller' : 'LoginController'; // *** CORRECCIÓN CLAVE *** // El método se convierte a MINÚSCULAS para que el router sea insensible a mayúsculas. // Por eso todos los métodos en los controladores deben estar en minúsculas. // procesarSalida → procesarsalida $methodName = isset($url[1]) ? strtolower($url[1]) : 'index'; $params = array_slice($url, 2); // --- Paso 4: Cargar y Ejecutar el Controlador --- $controllerPath = 'Controladores/' . $controllerName . '.php'; if (file_exists($controllerPath)) { $controller = new $controllerName(); if (method_exists($controller, $methodName)) { call_user_func_array([$controller, $methodName], $params); } else { // Si es petición AJAX devolver JSON, si no, error HTML if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest') { header('Content-Type: application/json'); http_response_code(404); echo json_encode(['success' => false, 'message' => "Método '{$methodName}' no encontrado en '{$controllerName}'."]); } else { header("HTTP/1.0 404 Not Found"); die("Error 404: Método '{$methodName}' no encontrado en el controlador '{$controllerName}'."); } } } else { if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest') { header('Content-Type: application/json'); http_response_code(404); echo json_encode(['success' => false, 'message' => "Controlador '{$controllerName}' no encontrado."]); } else { header("HTTP/1.0 404 Not Found"); die("Error 404: Controlador '{$controllerName}' no encontrado."); } }