* @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 showMensaje * @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 */ function IgepComunicaUsuario(& $comunica, & $datosPreinsertados, & $listasPanel) { $this->comunica = & $comunica; $this->datosPreinsertados = & $datosPreinsertados; $this->listasPanel = & $listasPanel; } /** * Reinicializa el acceso a datos * * @access public * @param $parametroOperacion Origen de datos (datos para insertar, para modificar, para borrar) * @return none */ function reset($parametroOperacion='') { $this->comunica->reset($parametroOperacion); } /** * 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 */ function setOperacion($parametroOperacion) { $this->comunica->setOperacion($parametroOperacion); }//Fin function setOperacion /** * setIndice 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 */ function setIndice($indice) { $this->comunica->int_filaActual = $indice; }//Fin function setOperacion /** * Permite cual es el origen de los datos actual * * @access public * @return string */ function getOperacion() { return $this->comunica->getOperacion(); }//Fin function getOperacion /** * 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 */ function getIndice($parametroOperacion='') { return $this->comunica->getIndice($parametroOperacion); } /** * 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 */ function currentTupla ($parametroOperacion=''){ return $this->comunica->currentTupla($parametroOperacion); }//Fin function currentTupla /** * getCampo 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 */ function getCampo($nombreCampo, $parametroOperacion='') { return $this->comunica->getCampo($nombreCampo, $parametroOperacion); }//Fin function getCampo /** * Alias para getCampo */ function getValue($nombreCampo, $parametroOperacion='') { return $this->comunica->getCampo($nombreCampo, $parametroOperacion); } /** * getOldValue devuelve el valor antiguo del campo indicado como párametro del registro activo */ function getOldValue($nombreCampo) { return $this->comunica->getOldValue($nombreCampo); } /** * setCampo 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 */ function setCampo($nombreCampo, $valorCampo, $parametroOperacion='') { return $this->comunica->setCampo($nombreCampo, $valorCampo, $parametroOperacion); }//Fin function setCampo /** * 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 */ function setSelected($nombreCampo, $valorCampo, $parametroOperacion='') { return $this->comunica->setCampo($nombreCampo, $valorCampo, $parametroOperacion); }//Fin function setSelected /* * alias setSelected */ function setSeleccionado($nombreCampo, $valorCampo, $parametroOperacion='') { return $this->setSelected($nombreCampo, $valorCampo, $parametroOperacion); }//Fin function setSeleccionado /** * Alias para setCampo */ function setValue($nombreCampo, $valorCampo, $parametroOperacion='') { return $this->comunica->setCampo($nombreCampo, $valorCampo, $parametroOperacion); }//Fin function setValue /** * 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 */ function nextTupla($parametroOperacion='') { return $this->comunica->nextTupla($parametroOperacion); }//Fin function nextTupla /** * 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 */ function fetchTupla($parametroOperacion='') { return $this->comunica->fetchTupla($parametroOperacion); }//Fin function nextTupla /** * 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 */ function setTupla($tupla, $parametroOperacion='') { return $this->comunica->setTupla($tupla, $parametroOperacion); }//Fin function setTupla /** * 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 */ function getAllTuplas($parametroOperacion='') { return $this->comunica->getAllTuplas($parametroOperacion); }//Fin function getAllTuplas /** * 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 */ function getAllTuplasAntiguas($parametroOperacion='') { return $this->comunica->getAllTuplasAntiguas($parametroOperacion); }//Fin function getAllTuplasAntiguas /** * 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 */ function setAllTuplas($vTuplas, $parametroOperacion='') { return $this->comunica->setAllTuplas($vTuplas, $parametroOperacion); }//Fin de setAllTuplas /** * hayDatos indica si el origen de datos prestablecido * * @access public * @param $parametroOperacion Origen de datos (datos para insertar, para modificar, para borrar) * @return mixed */ function hayDatos($parametroOperacion='') { return $this->comunica->hayDatos($parametroOperacion); }//fin de hayDatos function getLista($nombreCampo, $parametroOperacion=''){ //Comprobamos si es una lista if(get_class($this->listasPanel[$nombreCampo])!='IgepLista') return null; $objLista = & $this->listasPanel[$nombreCampo]; //Recogemos el valor del campo $valorSeleccionado = $this->getCampo($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; } function setLista($nombreCampo, $objListaStruc, $parametroOperacion= '') { //Modificar aqui $v_lista = $objListaStruc->getEstructuraListaIgep(); $this->comunica->setLista($nombreCampo, $v_lista, $parametroOperacion); } /** * Método 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 */ function setRowColor(&$row,$color){ if(!is_array($row)) die('setColorRow_Error: el parámetro row no es un array'); $row['__gvHidraRowColor'] = $color; } /* --------------------------FUNCIONES AUXILIARES -------------------------- */ /** * Pasa a una fecha en formato IGEP(cristiano) a timestamp */ function strtotime_es($str_fechaHora) { return ConfIgep::formatoFechaNegocio($str_fechaHora); } /** * Pasa a una fecha en formato timestamp a IGEP(cristiano), * indicando opcionalmente si tiene hora o no */ function timetostr_es($ts_fechaHora,$conhora='FECHA') { return ConfIgep::formatoFecha($ts_fechaHora, $conhora); } function comparaFechas($str_fechaHora1, $str_fechaHora2){ return ConfIgep::comparaFechas($str_fechaHora1, $str_fechaHora2); }//Fin de comparaFechas /** * 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->getOperacion()=='actualizar'){ $m_datosAnt = $this->getAllTuplasAntiguas(); $conexion->prepararOperacion($m_datosAnt,$v_desCampos); $this->comunica->m_datos_antiguosTpl = $m_datosAnt; $this->reset(); } } //REVIEW: PARCHE 3 NIVELES DE DATOS /********************************************************PARCHE PROVISIONAL********************************************************/ /* * PARCHE: PARA QUE PODAMOS TENER DE FORMA TRANSITORIA LOS DATOS EN UN FORMATO OPERABLE POR EL USUARIO(PHP) EN LOS PRE, POST Y ACCIONES DE INTERFAZ * SE CREAN ESTOS DOS MÉTODOS PARA QUE, DE ESTE MODO, PODAMOS ESCAPAR PRIMERO LOS NÚMEROS Y LAS FECHAS, Y EN OTRO MÉTODO LAS CADENAS. * * ASI, PRIMERO UTILIZAMOS EL MÉTODO prepararOperacionNumerosFechas QUE DEJA LOS DATOS EN FORMATO PHP. * UNA VEZ REALIZADOS LOS CAMBIOS POR EL USUARIO, ESCAPAMOS LAS CADENAS PARA DEJARLO EN FORMATO BD. */ function _prepararOperacionNumerosFechas($conexion,$v_desCampos){ $m_datos = $this->getAllTuplas(); $conexion->prepararOperacionNumerosFechas($m_datos,$v_desCampos); $this->setAllTuplas($m_datos); $this->reset(); if($this->getOperacion()=='actualizar'){ // guardo errores para que no me afecte la conversion de datos antiguos $err = ConfIgep::getTransformErrors(); $m_datosAnt = $this->getAllTuplasAntiguas(); $conexion->prepararOperacionNumerosFechas($m_datosAnt,$v_desCampos); $this->comunica->_setAllTuplasAntiguas($m_datosAnt,'actualizar'); $this->reset(); ConfIgep::setTransformErrors($err); } } function _prepararOperacionCadenas($conexion,$v_desCampos){ $m_datos = $this->getAllTuplas(); $conexion->prepararOperacionCadenas($m_datos,$v_desCampos); $this->setAllTuplas($m_datos); $this->reset(); if($this->getOperacion()=='actualizar'){ $m_datosAnt = $this->getAllTuplasAntiguas(); $conexion->prepararOperacionCadenas($m_datosAnt,$v_desCampos); $this->comunica->_setAllTuplasAntiguas($m_datosAnt,'actualizar'); $this->reset(); } } /******************************************************** FIN PARCHE ********************************************************/ /** * Este método prepara los datos que vienen de una consulta de la BD antes de mostrarse en * el formato propio de IGEP. Generalmente, las fechas y los decimales en los sistemas que * tengan mascaras diferentes a las de IGEP (p.e. MySQL). * Este método debe ser invocado por el usuario despues de realizar cualquier consulta a la BD * para garantizar la portabilidad. * SE RECOMIENDA USAR EL METODO DE ConfIgep. * * @access public * @param any $a_parametros * @param any $a_tipo * @param mixed $dsn * @return none */ function prepararPresentacion(& $a_parametros, $a_tipo, $dsn = '') { //Si es un presentación sin conexion suponemos que el formato es correcto if($dsn==''){ if(isset($this->comunica->dsnActual)) $dsn=$this->comunica->dsnActual; else return; } $a_parametros = ConfIgep::prepararPresentacion($a_parametros, $a_tipo, $dsn); } // Fin de prepararPresentacion //REVIEW: Toni Para poder conseguir que las acciones de negocio tengan acceso a mapeos diferentes a los ya especificados por gvHidra 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; } }//Fin de IgepComunicaUsuario ?>