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