*
  • $v_defLista - Vector donde se almacena la estructura de la lista que se está creando. Hay que tener en cuenta que * la creación de esta puede darse en dos pasos según si tiene dependencia o no la lista
  • *
  • $nombre - Es un string donde se almancena el nombre del campo de la tpl que contiene la lista y que es el nombre * que identificará a la lista en la estructura de listas de igep.
  • * * @version $Id: IgepLista.php,v 1.43 2006-06-16 07:52:45 afelixf Exp $ * @author David: * @author Keka: * @author Vero: * @author Raquel: * @author Toni: * @package igep */ class IgepLista{ var $_nombre; var $_consulta; var $_datosDin; var $_datosEst; var $_dependencia; var $_orden; var $_seleccionado; var $_dsn; var $v_defLista; var $_seleccionadoDefecto; //NO SE SABE //error_reporting(E_STRICT | E_ALL | E_NOTICE); function IgepLista($nombreListaTpl, $consulta='', $conexionAlternativa='') { $this->_datosEst = array(); $this->_seleccionado = ''; $this->setNombre($nombreListaTpl); if(!empty($consulta)) { $consulta = $this->_procesarDefinicion($consulta); //Como la consulta nos puede venir con Order By, se lo quitamos. $posOrder = strpos(strtolower($consulta),"order by"); if($posOrder===false){ $this->setConsulta($consulta); $this->setOrden(" ORDER BY 2"); } else { $this->setConsulta(substr($consulta,0,$posOrder)); $this->setOrden(substr ($consulta,$posOrder)); } } //Ahora no se le puede pasar un array a esta función, pero por compatibilidad lo dejamos else $this->setConsulta ($consulta); $this->setDSN($conexionAlternativa); }//Fin de constructor //--------------------------------------------- //Métodos relativos al nombre //--------------------------------------------- function getNombre(){ return $this->_nombre; }//Fin de getnombre function setNombre($nombre){ $this->_nombre = $nombre; }//Fin de getnombre //--------------------------------------------- //FIN:Métodos relativos al nombre //--------------------------------------------- //--------------------------------------------- //Métodos relativos a la dependencia //--------------------------------------------- function hayDependencia() { return (!empty($this->_dependencia)); } function getArrayDependencia() { return ($this->_dependencia); } function setDependencia($listasCamposTpl, $listasCamposBD){ $dependencia = array(); if((!is_array($listasCamposTpl)) or (!is_array($listasCamposBD)) or (count($listasCamposTpl)!=count($listasCamposBD))) die('Error en la introducción de la dependencia de la lista que actua sobre el campo TPL '.$this->getNombre().' . Recuerde que debe introducir dos arrays.'); $i=0; for($i=0;$i_dependencia = $dependencia; }//Fin de setDependencia //--------------------------------------------- //FIN:Métodos relativos a la dependencia //--------------------------------------------- //--------------------------------------------- //Métodos relativos a la consulta SQL //--------------------------------------------- function getConsulta() { return ($this->_consulta); } function setConsulta($cadena){ $this->_consulta = $cadena; } function getOrden() { return (' '.$this->_orden); } function setOrden($cadena){ $this->_orden = $cadena; } //--------------------------------------------- //FIN:Métodos relativos a la consulta SQL //--------------------------------------------- //--------------------------------------------- //Métodos relativos a la conexión //--------------------------------------------- function hayDSN() { return (!empty($this->_dsn)); } function getDSN() { return ($this->_dsn); } function setDSN($dsn) { $this->_dsn = $dsn; } //--------------------------------------------- //FIN:Métodos relativos a la conexión //--------------------------------------------- //--------------------------------------------- //Métodos relativos al item seleccionado //--------------------------------------------- function getSeleccionado(){ return $this->_seleccionado; } function setSeleccionado($valor){ $this->_seleccionado = $valor; } function marcarSeleccionado($valor){//DEPRECATED //die('Tienes que cambiar el marcarSeleccionado por setSeleccionado.'); $this->_seleccionado = $valor; } //--------------------------------------------- //FIN:Métodos relativos al item seleccionado //--------------------------------------------- /** * Método que añade opciones estáticas a una lista. * * @param $valor indica el valor del option * @param $descripcion indica la descripcion del option * @param $posicion indica la posicion donde se añade la opción * @return array */ function addOpcion($valor, $descripcion) { $nuevaOpcion = array("valor"=>$valor, "descripcion"=>$descripcion); array_push($this->_datosEst, $nuevaOpcion); } function _procesarDefinicion($nombre){ $consulta = ConfIgep::obtenerDefListaGeneral($nombre); if($consulta == -1){ if(function_exists('obtenerDefLista')) $consulta = obtenerDefLista($nombre); else die('Error: La consulta especificada no esta incluidad en el fichero config.php . Se trata de la lista de la Tpl '.$this->nombre); } return $consulta; }//Fin de obtenerDefLista function construyeLista ($regFuenteDependencia = '') { //Debug:Indicamos que ejecutamos la consulta IgepDebug::setDebug(DEBUG_IGEP,'IgepLista: Construyendo la lista '.$this->getNombre()); $res2 = array(); if ($this->getConsulta()!='') { //Si la lista es estática la añadimos directamente a datosPreInsertados //Comprobamos si tiene conexion especifica o no $conexionParticular = new IgepConexion($this->getDSN()); //Vamos a comprobar si tiene dependencia $strDependencia = ''; if ($this->hayDependencia()) { //Tenemos que ver si el campos del que depende tiene valor $v_Dependencia = $this->getArrayDependencia(); $valorSeleccionado = ''; foreach($v_Dependencia as $campoDependiente => $campoDependienteBd) { //Si el campo dependiente tiene valor if(is_array($regFuenteDependencia[$campoDependiente])) { $valorSeleccionado = $regFuenteDependencia[$campoDependiente]['seleccionado']; } else { if(!empty($regFuenteDependencia[$campoDependiente])) { $valorSeleccionado = $regFuenteDependencia[$campoDependiente]; } } if(!empty($valorSeleccionado)){ if($strDependencia != '') $strDependencia.=' AND '; $strDependencia.= $campoDependienteBd." = '".$valorSeleccionado."'"; } $valorSeleccionado = ''; } if(!empty($strDependencia)) { if((strpos(strtolower($this->getConsulta()),'where')===false)) $strDependencia = ' WHERE '.$strDependencia; else $strDependencia = ' AND '.$strDependencia; $consulta = $this->getConsulta().$strDependencia.$this->getOrden(); $res2 = $conexionParticular->consultar($consulta); } else $res2 = array(); } else { $consulta = $this->getConsulta().$this->getOrden(); $res2 = $conexionParticular->consultar($consulta); } if (DB::isError($res2)) $res2 = array(); } $res2 = array_merge($this->_datosEst, $res2); if (count($res2)==0) $lista_resultanteNuevo = array('seleccionado'=>'', 'lista'=>array()); else $lista_resultanteNuevo = array('seleccionado'=>$this->getSeleccionado(),'lista'=>$res2); return $lista_resultanteNuevo; } }//Fin IgepLista /** * Classe de uso interno que encapsula la estructura de Arrays que se utiliza en * IGEP para el manejo de las listas. Se utilizara en IgepComunicaIU * @package igep */ class _IgepEstructuraLista { var $_listaIGEP; function _IgepEstructuraLista(& $lista) { $this->_listaIGEP = $lista; } function setSelectedItem($valor) { $this->_listaIGEP['seleccionado'] = $valor; } /** * Alias para setSelectedItem */ function setSeleccionado($valor) { $this->setSelectedItem($valor); } /** * Alias para setSelectedItem */ function marcarSelecionado($valor) { $this->setSelectedItem($valor); } function addItem($valor, $descripcion) { $this->_listaIGEP['lista'][]= array('valor'=>$valor,'descripcion'=>$descripcion); } function addOpcion($valor, $descripcion) { $this->addItem($valor, $descripcion); } function deleteItem($valor) { $numElem = count($this->_listaIGEP['lista']); $i = 0; $nuevaLista = array(); while ($i<$numElem) { if ($this->_listaIGEP['lista'][$i]['valor'] != $valor) array_push($nuevaLista,$this->_listaIGEP['lista'][$i]); $i++; } $this->_listaIGEP['lista'] = $nuevaLista; } function deleteOpcion($valor) { $this->deleteItem($valor); } function toArray() { return($this->_listaIGEP); } function getEstructuraListaIgep() { return($this->_listaIGEP); } function arrayToObject($v_lista) { $this->_listaIGEP=$v_lista; } function clean(){ $this->_listaIGEP['seleccionado'] = null; $this->_listaIGEP['lista'] = array(); } function limpiar(){ $this->clean(); } }//Fin _IgepEstructuraLista ?>