*
El más habitual es consultar, dentro de una clase manejadora de un panel (las clases ubicadas en action), el
* valor de cierto campo, atributo, tupla seleccionada,... Para ello se puede hacer uso de los métodos de consulta de
* esta clase. Notese que en este caso NUNCA se deberá almacenar valores en la SESSION, ya que si se quiere
* almacenar valores se deben de almacenar como variables de clase e Igep, internamente, ya se encargará de
* almacenarlos en la SESSION.
* Otro uso, menos habitual, pero que puede requerirse es el de crear una instancia de una clase manejadora de un panel
* desde otra clase manejadora. En este caso los encargados de almacenar los valores en la SESSION serán los programadores.
* Por esta razón se proporcionan métodos para almacenar valores.
*
* @version $Id: IgepSession.php,v 1.34.2.1 2009-05-22 11:02:57 gaspar Exp $
* @author David:
* @author Keka:
* @author Vero:
* @author Raquel:
* @author Toni:
* @package gvHIDRA
*/
class IgepSession extends ComunSession
{
private static function getApplicationName()
{
$conf = ConfigFramework::getConfig();
return $conf->getApplicationName();
}
/*Funciones con todo el Panel*/
/**
* Comprueba si existe en la SESSION un objeto Panel
*
* @access public
* @param string $clasePanel
* @return bool
*/
public static function existePanel($clasePanel)
{
return isset($_SESSION[self::getApplicationName()][$clasePanel]);
}
/**
* Inicia la sesion de php, inicializando previamente todo lo necesario
*
* @access public
* @param string $app codigo de la aplicación
*/
static function session_start($app=null)
{
// fijar ruta para sesiones?
//ini_set('session.save_path', '../tmp');
session_start();
}
/**
* Borra de la SESSION la posición correspondiente a un Panel
*
* @access public
* @param string $clasePanel
*/
static function borraPanel($clasePanel)
{
unset($_SESSION[self::getApplicationName()][$clasePanel]);
}
/**
* Devuelve el contenido de un panel
*
* @access public
* @param string $clasePanel
*/
static function damePanel($clasePanel)
{
return ($_SESSION[self::getApplicationName()][$clasePanel]);
}
/**
* Almacena en la SESSION un objeto Panel. Comprueba que el objeto coincida con la clase adecuada.
* Si todo va bien devuelve 1 indicando que la operación se ha realizado con exito. De lo contrario retorna -1.
*
* @access public
* @param string $clasePanel
* @param object $objeto
* @return integer
*/
static function guardaPanel($clasePanel,$objeto)
{
if($clasePanel=='')
return -1;
//Comprueba q el objeto corresponda a una instancia del panel excepto en el caso de ventanaSeleccion
if(get_class($objeto) == $clasePanel){
$_SESSION[self::getApplicationName()][$clasePanel] = $objeto;
return 0;
}
else
die("No se puede guardar en la SESSION el panel $clasePanel porque la clase proporcionada no es del tipo correcto");
}
/**
*Para cuando Igep hace uso de la SESSION y no quiere tener restricciones.
*@access private
*/
static function _guardaPanelIgep($clasePanel,$objeto)
{
$_SESSION[self::getApplicationName()][$clasePanel] = $objeto;
return 0;
}
/*Funciones con las variables heredadas de Negocio*/
/**
* Devuelve el índice de la tupla actualmente seleccionada en el panel. Este índice hace referencia a la posición dentro del array de resultados.
* Si no está activo el indice es porque la posición actual es 0.
*
* @access public
* @param string $clasePanel
* @return integer
*/
static function dameFilaActual($clasePanel)
{
if(isset($_SESSION[self::getApplicationName()][$clasePanel]->int_filaActual))
return $_SESSION[self::getApplicationName()][$clasePanel]->int_filaActual;
else
return 0;
}
/**
* Devuelve el array de resultados correspondiente a la última consulta. Es importante tener en cuenta
* que este array procede de la consulta realizada con la Select introducida en la variable $str_select. Esta
* consulta se lanza con el proceso buscar de Igep.
*
* @access public
* @param string $clasePanel
* @return array
*/
static function dameUltimaConsulta($clasePanel)
{
return $_SESSION[self::getApplicationName()][$clasePanel]->obj_ultimaConsulta;
}
/**
* Devuelve el array de resultados correspondiente a la última edición. Es importante tener en cuenta
* que este array procede de la consulta realizada con la Select introducida en las variable $str_selectEditar. Esta
* consulta se lanza con el proceso editar de Igep.
*
* @access public
* @param string $clasePanel
* @return array
*/
static function dameUltimaEdicion($clasePanel)
{
return $_SESSION[self::getApplicationName()][$clasePanel]->obj_ultimaEdicion;
}
/**
* Devuelve un array con la tupla seleccionada de la última consulta.
*
* @access public
* @param string $clasePanel
* @return array
*/
static function dameTuplaSeleccionada($clasePanel)
{
return $_SESSION[self::getApplicationName()][$clasePanel]->obj_ultimaConsulta[IgepSession::dameFilaActual($clasePanel)];
}
/**
* Devuelve el valor de un campo de la tupla seleccionada de la última consulta.
*
* @access public
* @param string $clasePanel
* @param string $campo
* @return string
*/
static function dameCampoTuplaSeleccionada($clasePanel,$campo)
{
$valor = $_SESSION[self::getApplicationName()][$clasePanel]->obj_ultimaConsulta[IgepSession::dameFilaActual($clasePanel)][$campo];
//Si se trata de una lista en este caso devolvemos el valor del campo seleccionado
if(is_array($valor))
return $_SESSION[self::getApplicationName()][$clasePanel]->obj_ultimaConsulta[IgepSession::dameFilaActual($clasePanel)][$campo]["seleccionado"];
else
return $_SESSION[self::getApplicationName()][$clasePanel]->obj_ultimaConsulta[IgepSession::dameFilaActual($clasePanel)][$campo];
}
/**
* Almacena en la SESSION un mensaje. Este método enmascara la inserción de mensajes en la clase, ya que
* se encarga de comprobar que el objeto que recibe es un objeto de la clase IgepMensaje y realiza la asignación
* a la variable de IgepNegocio destinada para el mensaje de los paneles, obj_mensaje. Si no cumple las condiciones
* requeridas no se realiza la asignación.
*
* @access public
* @param string $clasePanel
* @param object $mensaje
*/
static function guardaMensaje($clasePanel,$mensaje)
{
$claseMensaje = get_class($mensaje);
if($claseMensaje == "IgepMensaje")
$_SESSION[self::getApplicationName()][$clasePanel]->obj_mensaje = $mensaje;
}
/**
* Método que indice si existe el panel en la SESSION
* @param string $clasePanel
* @return integer
*/
static function existeMensaje($clasePanel)
{
return (!empty($_SESSION[self::getApplicationName()][$clasePanel]->obj_mensaje));
}
/**
* Método que devuelve el mensaje de un panel almacenado en la SESSION
* @param string $clasePanel
* @return IgepMensaje
*/
static function dameMensaje($clasePanel)
{
return $_SESSION[self::getApplicationName()][$clasePanel]->obj_mensaje;
}
/**
* Método que borra un panel de la SESSION
* @param string $clasePanel
* @return none
*/
static function borraMensaje($clasePanel)
{
unset($_SESSION[self::getApplicationName()][$clasePanel]->obj_mensaje);
}
/*Funciones con variables particulares*/
/**
* Comprueba si existe en la SESSION alguna variable particular dentro de la definición de un Panel.
*
* @access public
* @param string $clasePanel
* @param string $variable
* @return bool
*/
static function existeVariable($clasePanel,$variable)
{
return isset($_SESSION[self::getApplicationName()][$clasePanel]->$variable);
}
/**
* Devuelve el valor de una variable de un Panel contenido en la SESSION.
*
* @access public
* @param string $clasePanel
* @param string $variable
* @return any
*/
static function dameVariable($clasePanel,$variable)
{
if(isset($_SESSION[self::getApplicationName()][$clasePanel]->$variable))
return $_SESSION[self::getApplicationName()][$clasePanel]->$variable;
return null;
}
/**
* Devuelve el valor de una variable ubiucada en la zona global de la SESSION.
*
* @access public
* @param string $nomVariable
* @return any
*/
static function dameVariableGlobal($nomVariable)
{
$value = $_SESSION[self::getApplicationName()]['gvhGlobalZone']->$nomVariable;
if(isset($value))
return $value;
return null;
}
/**
* Borra la referencia a una variable de un Panel en la SESSION.
*
* @access public
* @param string $clasePanel
* @param string $variable
*/
static function borraVariable($clasePanel,$variable)
{
unset($_SESSION[self::getApplicationName()][$clasePanel]->$variable);
}
/**
* Almacena en la SESSION el valor de una variable de un Panel
*
* @access public
* @param string $clasePanel
* @param string $nombreVar
* @param mixed $valor
*/
static function guardaVariable($clasePanel, $nombreVar, $valor)
{
$_SESSION[self::getApplicationName()][$clasePanel]->$nombreVar = $valor;
}
/**
* Almacena en la zona de la SESSION global el valor de una variable
*
* @access public
* @param string $clasePanel
* @param string $nombreVar
* @param mixed $valor
*/
static function guardaVariableGlobal($nombreVar, $valor)
{
$_SESSION[self::getApplicationName()]['gvhGlobalZone']->$nombreVar = $valor;
}
/**
* Añade el módulo $nomModulo dinámicamente,
* el segundo parámetro, $valor es opcional,
* si se utiliza, se añadira el $valor, al registro
* de valores del modulo
* @access public
* @param string nomModulo
* @param array $valor
*/
static function anyadeModuloValor($nomModulo, $valor=null, $descripcion=null)
{
if ( !(IgepSession::hayModuloDinamico($nomModulo)) )
{
$_SESSION[ComunSession::dameAplicacion()]['modulosDIN'][$nomModulo]['valor']= $valor;
$_SESSION[ComunSession::dameAplicacion()]['modulosDIN'][$nomModulo]['descripcion']= $descripcion;
}
}
/**
* Quita el módulo $nomModulo dinámicamente,
* el segundo parámetro, $valor es opcional,
* si aparece, se elimina el el módulo siempre
* que coincida el valor que tenía asignado
* con el valor previmanete registrado
* @access public
* @param string nomModulo
* @param array $valor
*/
static function quitaModuloValor($nomModulo, $valor=null)
{
if ($valor==null)
{
if ( (IgepSession::hayModuloDinamico($nomModulo)) )
unset($_SESSION[ComunSession::dameAplicacion()]['modulosDIN'][$nomModulo]);
}
else
{
if
(
(IgepSession::hayModuloDinamico($nomModulo))
&& ($_SESSION[ComunSession::dameAplicacion()]['modulosDIN'][$nomModulo]['valor'] == $valor)
)
unset($_SESSION[ComunSession::dameAplicacion()]['modulosDIN'][$nomModulo]);
}
}
/**
* Sobrecarga la funcion de la clsase padre, devuelve true siempre que existan módulos, sean o no dinamicos
* cierto módulo para la aplicación actual.
* @access public
* @param string nomModulo
* @return bool
*/
static function hayModulo($nomModulo)
{
return (
array_key_exists($nomModulo,$_SESSION[ComunSession::dameAplicacion()]['modulosDIN'])
||
array_key_exists($nomModulo,$_SESSION[ComunSession::dameAplicacion()]['modulos'])
);
}
/**
* Comprueba si el usuario al que pertenece la SESSION tiene concedido
* cierto módulo para la aplicación actual.
* @access public
* @param string nomModulo
* @return bool
*/
static function hayModuloDinamico($nomModulo)
{
if (isset ($_SESSION[ComunSession::dameAplicacion()]['modulosDIN']))
return (array_key_exists($nomModulo,$_SESSION[ComunSession::dameAplicacion()]['modulosDIN']));
else
return false;
}
/**
* Devuelve el array con todos los modulos concedidos para un usuario y para la aplicación actual.
* @access public
* @return array
*/
function dameModulosDinamicos()
{
return $_SESSION[ComunSession::dameAplicacion()]['modulosDIN'];
}
/**
* Sobrecarga el método de la clase padre, devolviendo un array formado por
* los móodulos dinámicos y los modulos concedidos para un usuario y
* para la aplicación actual, información que preoviene de comun.
* @access public
* @return array
*/
static function dameModulos()
{
$modulosDin = is_array($_SESSION[ComunSession::dameAplicacion()]['modulosDIN'])?$_SESSION[ComunSession::dameAplicacion()]['modulosDIN']:array();
$modulos = is_array($_SESSION[ComunSession::dameAplicacion()]['modulos'])?$_SESSION[ComunSession::dameAplicacion()]['modulos']:array();
$v_modulos = array_merge ($modulosDin, $modulos);
return($v_modulos);
}
/**
* Devuelve el array con los valores de un módulo Dinámico
* concreto para la aplicación actual. Si no existe retorna -1
* @access public
* @param string nomModulo
* @return array
*/
static function dameModuloDinamico($nomModulo)
{
if (IgepSession::hayModuloDinamico($nomModulo))
return $_SESSION[ComunSession::dameAplicacion()]['modulosDIN'][$nomModulo];
else
return -1;
}
/**
* Este método agrega un panel a la lista de paneles visitados
*
* @param nombrePanel nombre que identifica al panel (claseManejadora)
* @return none
*/
static function _marcarPanelVisitado($nombrePanel)
{
$panelesVisitados = IgepSession::dameVariable('global','panelesVisitados');
if(!isset($panelesVisitados))
$panelesVisitados=array();
if(!in_array($nombrePanel,$panelesVisitados))
array_push($panelesVisitados,$nombrePanel);
IgepSession::guardaVariable('global','panelesVisitados',$panelesVisitados);
}
static function _borrarPanelesVisitados()
{
//Borramos el contenido de los paneles anteriores
foreach (IgepSession::dameVariable('global','panelesVisitados') as $panelVisitado){
IgepSession::borraPanel($panelVisitado);
}
IgepSession::guardaVariable('global','panelesVisitados',array());
}
}
?>