##// END OF EJS Templates
modificada la instancia de la clase SessionModel
modificada la instancia de la clase SessionModel

File last commit:

r11:12
r11:12
Show More
FrontController.php
104 lines | 4.2 KiB | text/x-php | PhpLexer
<?php
class FrontController{
static function main(){
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 '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.
if(! empty($_REQUEST['option']))
$comp_name = $_REQUEST['option'];
else
$comp_name = "com_users";
if(! empty($_REQUEST['controller']))
$controllerName = $_REQUEST['controller'] . 'Controller';
else
$controllerName = "UsersController";
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;
}
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
$frontSession = new SessionsModel();
$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();
}
}
}
?>