Se proporcionará una instancia de esta clase en los metodos abstractos que el * programador puede utilizar para cambiar el comportamiento de las acciones genericas * del framework. También en el metodo correspondiente a las acciones particulares. *

* *

Con los metodos proporcionados se podran manejar los datos obtenidos desde la REQUEST * de una forma racional (por campo, por tupla o por matriz de datos). Toda esta informacion * viene organizada por operacion; de modo que se proporcionara la informacion segun la accion * que este ejecutandose. *

* * @version $Id: IgepComunicaUsuario.php,v 1.58 2011-01-20 11:48:43 vnavarro Exp $ * @author David: * @author Keka: * @author Vero: * @author Raquel: * @author Toni: * @package gvHIDRA */ class IgepComunicaUsuario { /* * Instancia de IgepComunicacion * @access private * @var object IgepComunicacion */ var $comunica; /* * Datos utilizadaso en las inseciones para las listas * @access private * @var array datosPreinsertados */ var $datosPreinsertados; /* * Coleccion (array) de las listas definidas en el panel * @access private * @var array listasPanel */ var $listasPanel; /* * Objeto de la clase IgepMensaje que se creará en el caso de que el programador haga uso del método showMessage * @access private * @var objeto obj_mensaje */ var $obj_mensaje = null; /** * Constructor. Recibe como parámetro una instancia viva de la clase * IgepComunicacion * * @access public * @param object $comunica */ public function __construct(& $comunica, & $datosPreinsertados, & $listasPanel) { $this->comunica = & $comunica; $this->datosPreinsertados = & $datosPreinsertados; $this->listasPanel = & $listasPanel; } /** * reset reinicializa el acceso a datos * * @access public * @param $parametroOperacion Origen de datos (datos para insertar, para modificar, para borrar) * @return none */ public function reset($parametroOperacion='') { $this->comunica->reset($parametroOperacion); } /** * setOperation Fija la operación que va a ser origen de los datos * * @access public * @param $parametroOperacion Origen de datos (datos para insertar, para modificar, para borrar) * @return none */ public function setOperation($parametroOperacion) { $this->comunica->setOperation($parametroOperacion); } /** * getOperation Permite cual es el origen de los datos actual * * @access public * @return string */ public function getOperation() { return $this->comunica->getOperation(); } /** * setIndex Cuando se trabaja con un conjunto de fichas múltiple, se utiliza para fijar la fila * (registro/tupla del conjunto) sobre la que estamos trabajando, por defecto, es la ficha que * se está visializando (esta activa) * * @access public * @param integer $indice Indice de 0..nRegs que indica la tuplas * @return none */ public function setIndex($indice) { $this->comunica->int_filaActual = $indice; } /** * getIndex Devuelve el valor del indice del cursor sobre el origen de datos actual * * @access public * @param $parametroOperacion Origen de datos (datos para insertar, para modificar, para borrar) * @return integer */ public function getIndex($parametroOperacion='') { return $this->comunica->getIndex($parametroOperacion); } /** * currentTupla Este método devuelve el registro activo sobre el origen de datos actual (cursor) * * @access public * @param $parametroOperacion el tipo de operación, si no se indica se coge el fijado para la instancia * @return array */ public function currentTupla ($parametroOperacion=''){ return $this->comunica->currentTupla($parametroOperacion); } /** * getSrcImg devuelve el campo indicado como párametro del registro activo sobre el * origen de datos actual (cursor) * * @access public * @param string $nombreCampo Nombre del campo * @param $parametroOperacion Origen de datos (datos para insertar, para modificar, para borrar) * @return mixed */ public function getSrcImg($nombreCampo, $parametroOperacion='') { return $this->comunica->getCampo($nombreCampo, $parametroOperacion); } /** * getValue devuelve el campo indicado como párametro del registro activo sobre el * origen de datos actual (cursor) * * @access public * @param string $nombreCampo Nombre del campo * @param $parametroOperacion Origen de datos (datos para insertar, para modificar, para borrar) * @return mixed */ public function getValue($nombreCampo, $parametroOperacion='') { return $this->comunica->getCampo($nombreCampo, $parametroOperacion); } /** * getOldValue devuelve el valor antiguo del campo indicado como párametro del registro activo * * @access public * @param string $nombreCampo Nombre del campo * @return mixed */ public function getOldValue($nombreCampo) { return $this->comunica->getOldValue($nombreCampo); } /** * setSelected fija el valor de una lista * * @access public * @param string $nombreCampo Nombre del campo * @param string $valorCampo Valor del campo * @param $parametroOperacion Origen de datos (datos para insertar, para modificar, para borrar) * @return mixed */ public function setSelected($nombreCampo, $valorCampo, $parametroOperacion='') { return $this->comunica->setCampo($nombreCampo, $valorCampo, $parametroOperacion); } /** * setChecked método que permite modificar el valor del un check. * @param string name nombre del check * @param boolean check Checked si o no * @param string operacion Operacion sobre la que se quiere actuar * @return none */ public function setChecked($name, $check, $parametroOperacion='') { //Seleccionamos el valor dependiendo si esta seleccionado $desc = $this->comunica->descCampoPanel[$name]; ($check)?$value=$desc['valueChecked']:$value=$desc['valueUnchecked']; return $this->comunica->setCampo($name, $value, $parametroOperacion); } /** * isChecked método que permite saber si un check esta marcado o no * @param string name nombre del check * @param string operacion Operacion sobre la que se quiere actuar * @return boolean */ public function isChecked($name, $parametroOperacion='') { //Devolvemos true o false dependiendo del valor del check $value = $this->comunica->getCampo($name, $parametroOperacion); $desc = $this->comunica->descCampoPanel[$name]; ($value==$desc['valueChecked'])?$result = true: $result = false; return $result; } /** * setSrcImg fija el valor pasado como parámetro sobre el campo indicado como párametro del * registro activo sobre el origen de datos actual (cursor) * * @access public * @param string $nombreCampo Nombre del campo * @param string $valorCampo Valor del campo * @param $parametroOperacion Origen de datos (datos para insertar, para modificar, para borrar) * @return mixed */ public function setSrcImg($nombreCampo, $valorCampo, $parametroOperacion='') { return $this->comunica->setCampo($nombreCampo, $valorCampo, $parametroOperacion); } /** * setValue fija el valor pasado como parámetro sobre el campo indicado como párametro del * registro activo sobre el origen de datos actual (cursor) * * @access public * @param string $nombreCampo Nombre del campo * @param string $valorCampo Valor del campo * @param $parametroOperacion Origen de datos (datos para insertar, para modificar, para borrar) * @return mixed */ public function setValue($nombreCampo, $valorCampo, $parametroOperacion='') { return $this->comunica->setCampo($nombreCampo, $valorCampo, $parametroOperacion); } /** * setFocus fija el foco en el campo indicado ocmo parámetro del registro activo * * @access public * @param string $nombreCampo Nombre del campo * @param $parametroOperacion Origen de datos (datos para insertar, para modificar, para borrar) * @return mixed */ public function setFocus($nombreCampo, $parametroOperacion='') { return $this->comunica->setFocus($nombreCampo, $parametroOperacion); } /** * nextTupla Avanza la posición del cursor sobre el origen de datos * actual (cursor) y devuelve el registro/tupla correspondiente * * @access public * @param string $nombreCampo Nombre del campo * @param string $valorCampo Valor del campo * @param $parametroOperacion Origen de datos (datos para insertar, para modificar, para borrar) * @return mixed */ public function nextTupla($parametroOperacion='') { return $this->comunica->nextTupla($parametroOperacion); } /** * fetchTupla devuelve el registro/tupla correspondiente y * avanza la posición del cursor sobre el origen de datos * * @access public * @param $parametroOperacion Origen de datos (datos para insertar, para modificar, para borrar) * @return mixed */ public function fetchTupla($parametroOperacion='') { return $this->comunica->fetchTupla($parametroOperacion); } /** * setTupla sustituye el registro actual de la fuente de datos * prestablecida por el registro/tupla (array asociativo) pasado * como parámetro * * @access public * @param string $nombreCampo Nombre del campo * @param string $valorCampo Valor del campo * @param $parametroOperacion el tipo de operación, si no se indica se coge el fijado para la instancia * @return mixed */ public function setTupla($tupla, $parametroOperacion='') { return $this->comunica->setTupla($tupla, $parametroOperacion); } /** * getAllTuplas obtiene la matriz de registros correspondiente * al origen de datos pasado como argumento o prestablecido * * @access public * @param $parametroOperacion Origen de datos (datos para insertar, para modificar, para borrar) * @return mixed */ public function getAllTuplas($parametroOperacion='') { return $this->comunica->getAllTuplas($parametroOperacion); } /** * getAllTuplasAntiguas obtiene la matriz de registros original correspondiente * al origen de datos pasado como argumento o prestablecido * * @access public * @param $parametroOperacion Origen de datos (datos para insertar, para modificar, para borrar) * @return mixed */ public function getAllTuplasAntiguas($parametroOperacion='') { return $this->comunica->getAllTuplasAntiguas($parametroOperacion); } public function getAllOldTuplas($parametroOperacion='') { return $this->comunica->getAllTuplasAntiguas($parametroOperacion); } /** * setAllTuplas establece obtiene la matriz de registros correspondiente * al origen de datos pasado como argumento o prestablecido * * @access public * @param matriz $vTuplas Conjunto de tuplas/registros a asignar * @param $parametroOperacion Origen de datos (datos para insertar, para modificar, para borrar) * @return mixed */ public function setAllTuplas($vTuplas, $parametroOperacion='') { return $this->comunica->setAllTuplas($vTuplas, $parametroOperacion); } /** * isEmpty indica si el origen de datos prestablecido esta vacio o no * * @access public * @param $parametroOperacion Origen de datos (datos para insertar, para modificar, para borrar) * @return boolean */ public function isEmpty($parametroOperacion='') { return $this->comunica->isEmpty($parametroOperacion); } /** * getList obtiene la estructura de la lista * * @access public * @param $nombreCampo nombre del campo de la lista. * @param $parametroOperacion Origen de datos (datos para insertar, para modificar, para borrar). * @return _IgepEstructuraLista */ public function getList($nombreCampo, $parametroOperacion=''){ //Comprobamos si es una lista if(get_class($this->listasPanel[$nombreCampo])!='gvHidraList') return null; $objLista = & $this->listasPanel[$nombreCampo]; //Recogemos el valor del campo $valorSeleccionado = $this->getValue($nombreCampo, $parametroOperacion); //Montamos la lista //Si no tiene dependencia cogemos el valor de camposPreInsertados if(!$objLista->hayDependencia()) { $listaResultado = $this->datosPreinsertados[$nombreCampo]; } else { //Tenemos que construir la dependencia $tupla = $this->comunica->currentTupla($parametroOperacion); $listaResultado = $objLista->construyeLista($tupla); } $listaResultado['seleccionado'] = $valorSeleccionado; //Modificar aqui $objListaStruc = new _IgepEstructuraLista($listaResultado); return $objListaStruc; } /** * setList fija el contenido de una lista * * @access public * @param $nombreCampo nombre del campo de la lista. * @param $objListaStruc estructura de la lista * @param $parametroOperacion Origen de datos (datos para insertar, para modificar, para borrar). * @return none */ public function setList($nombreCampo, $objListaStruc, $parametroOperacion= '') { $v_lista = $objListaStruc->getEstructuraListaIgep(); $this->comunica->setList($nombreCampo, $v_lista, $parametroOperacion); } /** * getFileInfo metodo que devuelve para una tupla dada la información de un campo de tipo 'FILE' * que se ha subido al servidor. * @param string nombreCampo Nombre del campo FILE del que se quiere obtener la información * @param string parametroOperacion Indica la operación sobre la que se quiere la tupla * @return array */ function getFileInfo($nombreCampo, $pametroOperacion =''){ return $this->comunica->getFileInfo($nombreCampo, $pametroOperacion); } /** * Método que dada una tupla, fija el color para poder ser representado en una tabla de gvHidra * * @param array row tupla a la que se le quiere dar color. * @param string color color que se le va a dar a la tupla. * @return none */ public function setRowColor(&$row,$color){ if(!is_array($row)) die('setColorRow_Error: el parámetro row no es un array'); $row['__gvHidraRowColor'] = $color; } /* --------------------------FUNCIONES AUXILIARES -------------------------- */ /** * @access private * Método privado que prepara los datos antes de realizar una operacion en la BD. */ function _prepararOperacion($conexion,$v_desCampos){ $m_datos = $this->getAllTuplas(); $conexion->prepararOperacion($m_datos,$v_desCampos); $this->setAllTuplas($m_datos); $this->reset(); if($this->getOperation()=='actualizar') { $m_datosAnt = $this->getAllTuplasAntiguas(); $conexion->prepararOperacion($m_datosAnt,$v_desCampos); $this->comunica->m_datos_antiguosTpl = $m_datosAnt; $this->reset(); } } /** * prepararPresentacion este método prepara los datos que vienen de estado FW y los pasa a estado presentación * Devuelve el resultado por referencia y como valor de retorno. * * @access public * @param any $a_parametros * @param any $a_tipo * @param any $a_decimales: usado cuando convertimos valor individual * @return mixed */ static public function prepararPresentacion(& $a_parametros, $a_tipo, $a_decimales='2') { if($a_decimales==='') $a_decimales='2'; if (!is_array($a_parametros) and $a_parametros!=='' and $a_tipo!='') { // le doy estructura de vector para no repetir el codigo $vector = false; $a_parametros = array(array('col'=>$a_parametros,),); $a_tipo = array('col'=>array('tipo'=>$a_tipo, 'parteDecimal'=>$a_decimales),); } else $vector = true; if (is_array($a_tipo)) { $transformer = new IgepTransformer(); $carfw = ConfigFramework::getNumericSeparatorsFW(); $caruser = ConfigFramework::getNumericSeparatorsUser(); $transformer->setDecimal($carfw['DECIMAL'],$caruser['DECIMAL'],$carfw['GROUP'],$caruser['GROUP']); $fechafw = ConfigFramework::getDateMaskFW(); $fechauser = ConfigFramework::getDateMaskUser(); $transformer->setDate($fechafw,$fechauser); foreach($a_parametros as $fila => $tupla) foreach($a_tipo as $campo => $descTipo) if (isset($tupla[$campo])) { //ignoramos las listas if(is_array($a_parametros[$fila][$campo])) continue; $tipo_efectivo = (empty($descTipo['tipo'])? TIPO_CARACTER: ($descTipo['tipo']==TIPO_ENTERO? TIPO_DECIMAL: $descTipo['tipo'])); if ($tipo_efectivo == TIPO_DECIMAL) $a_parametros[$fila][$campo] = $transformer->expandExponent($a_parametros[$fila][$campo], $carfw['DECIMAL'], $carfw['GROUP']); if (isset($descTipo['tipo']) && ($descTipo['tipo'] == TIPO_DECIMAL)) $a_parametros[$fila][$campo] = $transformer->decimalPad($a_parametros[$fila][$campo], $descTipo['parteDecimal']); if(empty($a_parametros[$fila][$campo])) continue; elseif (($tipo_efectivo == TIPO_FECHA or $tipo_efectivo == TIPO_FECHAHORA) and is_object($a_parametros[$fila][$campo])) $a_parametros[$fila][$campo] = $a_parametros[$fila][$campo]->format($fechauser.($tipo_efectivo==TIPO_FECHAHORA? ' H:i:s':'')); else $a_parametros[$fila][$campo] = $transformer->process($tipo_efectivo, $a_parametros[$fila][$campo]); } } if (!$vector) $a_parametros = $a_parametros[0]['col']; return $a_parametros; } /** * getForward este método permite recuperar un actionForward (un destino). Esto permite cambiar el destino de * una accion. * * @access public * @param string $name identificador del actionForward que se quiere recuperar. * @return actionForward */ public function getForward($name) { $fordward = $this->comunica->getForward($name); if(empty($fordward)) die('Error: no existe el retorno '.$name.', consulte el fichero de mapeo.'); return $fordward; } } ?>