FrontController.php
116 lines
| 5.1 KiB
| text/x-php
|
PhpLexer
|
r0 | <?php | |
class FrontController | |||
{ | |||
static function main() | |||
{ | |||
//require 'Zend/Date.php'; //Libreria | |||
//date_default_timezone_set('Europe/Madrid'); | |||
//Incluimos algunas clases: | |||
//echo "----- hay alguien ahi -----"; | |||
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 | |||
require 'models/SessionsModel.php'; | |||
require 'libs/filesManager.php'; | |||
require 'config.php'; //Archivo con configuraciones. | |||
//Con el objetivo de no repetir nombre de clases, nuestros controladores | |||
//terminaran todos en Controller. Por ej, la clase controladora Items, sera ItemsController | |||
if(! empty($_REQUEST['option'])) | |||
$comp_name = $_REQUEST['option']; | |||
else | |||
$comp_name = "com_users"; | |||
//Formamos el nombre del Controlador o en su defecto, tomamos que es el IndexController | |||
if(! empty($_REQUEST['controller'])) | |||
$controllerName = $_REQUEST['controller'] . 'Controller'; | |||
else | |||
$controllerName = "UsersController"; | |||
//Lo mismo sucede con las acciones, si no hay accion, tomamos index como accion | |||
if(! empty($_REQUEST['action'])) | |||
$actionName = $_REQUEST['action']; | |||
else | |||
$actionName = "ingresar"; | |||
$controllerPath = $config->get('components').DS.$comp_name.DS.$controllerName.'.php'; | |||
//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; | |||
} | |||
$frontSession = new SessionsModel(); | |||
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 | |||
//obtenemos la ultima sesión ingresada | |||
$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']); | |||
}else{ | |||
$session_valida = true; | |||
} | |||
}else{ | |||
$session_valida = false; | |||
} | |||
if($session_valida){ | |||
$date_last_activity = new DateTime(date("Y-m-d H:i:s")); | |||
$datos["date_last_activity"] = $date_last_activity->format("Y-m-d H:i:s") ; | |||
$frontSession->setIdValue($_SESSION['usersession']['idsession']); | |||
$_SESSION['usersession']['date_last_activity'] = $datos["date_last_activity"]; | |||
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; | |||
} | |||
} | |||
//:::instanciamos e invocamos la acción | |||
$controller = new $controllerName(); | |||
$controller->$actionName(); | |||
} | |||
}else{ | |||
$controller = new $controllerName(); | |||
$controller->$actionName(); | |||
} | |||
} | |||
} | |||
?> |