File "index.php"

Full Path: C:/wamp64/www/Asistencia_Capacitacion/index.php
File size: 2.73 KB
MIME-type: text/x-php
Charset: utf-8

<?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.");
    }
}