*
$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
?>