FrontController.php
104 lines
| 4.2 KiB
| text/x-php
|
PhpLexer
|
r0 | <?php | |
|
r11 | class FrontController{ | |
static function main(){ | |||
|
r0 | ||
|
r11 | require 'libs/Config.php'; //de configuracion | |
require 'libs/SPDO.php'; //PDO con singleton | |||
require 'libs/ControllerBase.php'; //Clase controlador base | |||
require 'libs/ModelAbstract.php'; | |||
require 'libs/ModelBase.php'; //Clase modelo base | |||
require 'libs/View.php'; //Mini motor de plantillas | |||
|
r0 | ||
|
r11 | require 'libs/SessionsModel.php';//Clase para el manejo de sesiones | |
require 'libs/filesManager.php';//Clase para el manejo de archivos | |||
require 'config.php'; //Archivo con configuraciones. | |||
|
r0 | ||
|
r11 | if(! empty($_REQUEST['option'])) | |
$comp_name = $_REQUEST['option']; | |||
else | |||
$comp_name = "com_users"; | |||
|
r0 | ||
|
r11 | if(! empty($_REQUEST['controller'])) | |
$controllerName = $_REQUEST['controller'] . 'Controller'; | |||
else | |||
$controllerName = "UsersController"; | |||
|
r0 | ||
|
r11 | if(! empty($_REQUEST['action'])) | |
$actionName = $_REQUEST['action']; | |||
else | |||
$actionName = "ingresar"; | |||
$controllerPath = $config->get('components').DS.$comp_name.DS.$controllerName.'.php'; | |||
|
r10 | ||
|
r11 | //Incluimos el fichero que contiene nuestra clase controladora solicitada | |
if(is_file($controllerPath)) | |||
require $controllerPath; | |||
else | |||
die('El controlador no existe - 404 not found'); | |||
//Si no existe la clase que buscamos y su accion, tiramos un error 404 | |||
if (is_callable(array($controllerName, $actionName)) == false){ | |||
trigger_error ($controllerName . '->' . $actionName . '` no existe', E_USER_NOTICE); | |||
return false; | |||
} | |||
|
r10 | ||
|
r11 | if(isset($_SESSION['usersession']['iduser'])){ | |
$duracion_session = 20;//en minutos | |||
$valor_intervalo_session = 'PT'.$duracion_session.'M'; | |||
$intervalo_session = new DateInterval( $valor_intervalo_session ); //minutos | |||
$session_valida = true;//variable para definir si vemos la acción o mostramos el login | |||
|
r0 | $frontSession = new SessionsModel(); | |
|
r11 | $rs_session = $frontSession->validarSession(@$_SESSION['usersession']['iduser']); | |
//print_r($rs_session); | |||
$info_session = $rs_session->fetch(); | |||
if(is_array($info_session)){ | |||
$date_currency = new DateTime(date('Y-m-d H:i:s')); | |||
$date_session = new DateTime($info_session["date_last_activity"]); | |||
date_add($date_session, $intervalo_session); | |||
if($date_session < $date_currency ){ | |||
$session_valida = false; | |||
//unset($_SESSION['usersession']); | |||
|
r0 | }else{ | |
|
r11 | $session_valida = true; | |
|
r0 | } | |
|
r11 | }else{ | |
$session_valida = false; | |||
} | |||
|
r0 | ||
|
r11 | if($session_valida){ | |
$date_last_activity = new DateTime(date("Y-m-d H:i:s")); | |||
|
r0 | ||
|
r11 | $datos["date_last_activity"] = $date_last_activity->format("Y-m-d H:i:s") ; | |
$frontSession->setIdValue($_SESSION['usersession']['idsession']); | |||
|
r0 | ||
|
r11 | $_SESSION['usersession']['date_last_activity'] = $datos["date_last_activity"]; | |
|
r0 | ||
|
r11 | list($rs_actividad, $message) = $frontSession->UpdateItem($datos); | |
//Se direcciona al controlador | |||
$controller = new $controllerName(); | |||
$controller->$actionName(); | |||
}else{ | |||
//establecemos el controlado y la acción por defecto | |||
$actionName = "logout"; | |||
if($comp_name != "com_users"){ | |||
$comp_name = "com_users"; | |||
if($controllerName != "UsersController" ){ | |||
$controllerName = "UsersController"; //esto es para no instanciarlo dos veces | |||
$controllerPath = $config->get('components').DS.$comp_name.DS.$controllerName.'.php'; | |||
require $controllerPath; | |||
|
r0 | } | |
} | |||
|
r11 | ||
//:::instanciamos e invocamos la acción | |||
|
r0 | $controller = new $controllerName(); | |
$controller->$actionName(); | |||
} | |||
|
r11 | }else{ | |
$controller = new $controllerName(); | |||
$controller->$actionName(); | |||
} | |||
|
r0 | } | |
} | |||
?> |