FrontController.php
128 lines
| 6.0 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 | |||
//añadido Noe Medina para validar sesiones | |||
require 'models/SessionsModel.php'; //Mini motor de plantillas | |||
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_subjects"; | |||
//definimos $comp_name como variable global | |||
define('COMPONENT', $comp_name ); | |||
//Formamos el nombre del Controlador o en su defecto, tomamos que es el IndexController | |||
if(! empty($_REQUEST['controller'])) | |||
$controllerName = $_REQUEST['controller'] . 'Controller'; | |||
else | |||
$controllerName = "SubjectController"; | |||
//Lo mismo sucede con las acciones, si no hay accion, tomamos index como accion | |||
if(! empty($_REQUEST['action'])) | |||
$actionName = $_REQUEST['action']; | |||
else | |||
$actionName = "dolist"; | |||
$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; | |||
} | |||
//Si todo esta bien, creamos una instancia del controlador y llamamos a la accion | |||
//Antes validamos el tiempo de existencia de la sesión en caso de haber ingresado al sistema | |||
//Obtener el tiempo de sesion en segundos | |||
//instanciamos el objeto $session para manejar la sesión vía base de datos | |||
$frontSession = new SessionsModel(); | |||
//echo "Estoy verde!!!!!!"; | |||
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 | |||
//echo "HOLA :::: -------> ".$_SESSION['usersession']['iduser']." --- iduser<br />"; | |||
//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(is_array($info_session) && ($info_session['date_session'] < (date("Y-m-d H:i:s",$_SESSION['usersession']['date_session'] + $tiempo_session))) ){ | |||
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") ; | |||
$datos["idsession"] = $info_session["idsession"]; | |||
$_SESSION['usersession']['date_last_activity'] = $date_last_activity->format("Y-m-d H:i:s") ; | |||
$_SESSION['usersession']['idsession'] = $info_session["idsession"]; | |||
$rs_actividad = $frontSession->setActivity($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(); | |||
} | |||
} | |||
} | |||
?> |