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