##// END OF EJS Templates
agregadas imagenes para el administrador del sitio
agregadas imagenes para el administrador del sitio

File last commit:

r0:1
r6:7
Show More
FrontController.php
116 lines | 5.1 KiB | text/x-php | PhpLexer
<?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();
}
}
}
?>