*
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.24 2006-03-30 08:57:04 afelixf Exp $
* @author David:
* @author Keka:
* @author Vero:
* @author Raquel:
* @author Toni:
* @package igep
*/
class IgepSession extends ComunSession{
/*Funciones con todo el Panel*/
/**
* Comprueba si existe en la SESSION un objeto Panel
*
* @access public
* @param string $clasePanel
* @return bool
*/
function existePanel($clasePanel){
global $g_aplicacion;
return isset($_SESSION[$g_aplicacion][$clasePanel]);
}
/**
* Borra de la SESSION la posición correspondiente a un Panel
*
* @access public
* @param string $clasePanel
*/
function borraPanel($clasePanel){
global $g_aplicacion;
unset($_SESSION[$g_aplicacion][$clasePanel]);
}
/**
* Devuelve el contenido de un panel
*
* @access public
* @param string $clasePanel
*/
function damePanel($clasePanel){
global $g_aplicacion;
return ($_SESSION[$g_aplicacion][$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
*/
function guardaPanel($clasePanel,$objeto){
global $g_aplicacion;
if($clasePanel=='')
return -1;
//Comprueba q el objeto corresponda a una instancia del panel excepto en el caso de ventanaSeleccion
if(get_class($objeto) == strtolower($clasePanel)){
$_SESSION[$g_aplicacion][$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
*/
function _guardaPanelIgep($clasePanel,$objeto){
global $g_aplicacion;
$_SESSION[$g_aplicacion][$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
*/
function dameFilaActual($clasePanel){
global $g_aplicacion;
if(isset($_SESSION[$g_aplicacion][$clasePanel]->int_filaActual))
return $_SESSION[$g_aplicacion][$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
*/
function dameUltimaConsulta($clasePanel){
global $g_aplicacion;
return $_SESSION[$g_aplicacion][$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
*/
function dameUltimaEdicion($clasePanel){
global $g_aplicacion;
return $_SESSION[$g_aplicacion][$clasePanel]->obj_ultimaEdicion;
}
/**
* Devuelve un array con la tupla seleccionada de la última consulta.
*
* @access public
* @param string $clasePanel
* @return array
*/
function dameTuplaSeleccionada($clasePanel){
global $g_aplicacion;
return $_SESSION[$g_aplicacion][$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
*/
function dameCampoTuplaSeleccionada($clasePanel,$campo){
global $g_aplicacion;
$valor = $_SESSION[$g_aplicacion][$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[$g_aplicacion][$clasePanel]->obj_ultimaConsulta[IgepSession::dameFilaActual($clasePanel)][$campo]["seleccionado"];
else
return $_SESSION[$g_aplicacion][$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
*/
function guardaMensaje($clasePanel,$mensaje){
global $g_aplicacion;
$claseMensaje = get_class($mensaje);
if(strtolower($claseMensaje) == "igepmensaje")
$_SESSION[$g_aplicacion][$clasePanel]->obj_mensaje = $mensaje;
}
/**
* Método que indice si existe el panel en la SESSION
* @param string $clasePanel
* @return integer
*/
function existeMensaje($clasePanel){
global $g_aplicacion;
return (!empty($_SESSION[$g_aplicacion][$clasePanel]->obj_mensaje));
}
/**
* Método que devuelve el mensaje de un panel almacenado en la SESSION
* @param string $clasePanel
* @return IgepMensaje
*/
function dameMensaje($clasePanel){
global $g_aplicacion;
return $_SESSION[$g_aplicacion][$clasePanel]->obj_mensaje;
}
/**
* Método que borra un panel de la SESSION
* @param string $clasePanel
* @return none
*/
function borraMensaje($clasePanel){
global $g_aplicacion;
unset($_SESSION[$g_aplicacion][$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
*/
function existeVariable($clasePanel,$variable){
global $g_aplicacion;
return isset($_SESSION[$g_aplicacion][$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
*/
function dameVariable($clasePanel,$variable){
global $g_aplicacion;
return $_SESSION[$g_aplicacion][$clasePanel]->$variable;
}
/**
* Borra la referencia a una variable de un Panel en la SESSION.
*
* @access public
* @param string $clasePanel
* @param string $variable
*/
function borraVariable($clasePanel,$variable){
global $g_aplicacion;
unset($_SESSION[$g_aplicacion][$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
*/
function guardaVariable($clasePanel,$nombreVar,$valor){
global $g_aplicacion;
$_SESSION[$g_aplicacion][$clasePanel]->$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
*/
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
*/
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
*/
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
*/
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
*/
function dameModulos(){
$v_modulos = array_merge ($_SESSION[ComunSession::dameAplicacion()]['modulosDIN'], $_SESSION[ComunSession::dameAplicacion()]['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
*/
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
*/
function _marcarPanelVisitado($nombrePanel){
$panelesVisitados = IgepSession::dameVariable('global','panelesVisitados');
if(!in_array($nombrePanel,$panelesVisitados))
array_push($panelesVisitados,$nombrePanel);
IgepSession::guardaVariable('global','panelesVisitados',$panelesVisitados);
}
function _borrarPanelesVisitados(){
//Borramos el contenido de los paneles anteriores
foreach (IgepSession::dameVariable('global','panelesVisitados') as $panelVisitado){
IgepSession::borraPanel($panelVisitado);
}
IgepSession::guardaVariable('global','panelesVisitados',array());
}
}
?>