Documentación GVHIDRA 3.1.5
Referencia de la Clase gvHidraForm_DB
Diagrama de herencias de gvHidraForm_DB
gvHidraForm Action Object gvHidraTreePattern IgepNovedades IgepPeticiones IgepPeticionesD

Métodos públicos

 gvHidraForm_DB ($dsn='', $nombreTablas=null)
 regenerarInstancia ($dsn='')
 getDSN ()
 getConnection ()
 setParametrosBusqueda ($str_where)
 setSearchParameters ($str_where)
 prepareDataSource ()
 recoverData ()
 prepareDataSourceDetails ($detail, $masterData)
 recoverDataDetail ()
 prepareDataSourceEdit ()
 recoverDataEdit ()
 setSelectForSearchQuery ($query)
 setWhereForSearchQuery ($query)
 setOrderByForSearchQuery ($query)
 setSelectForEditQuery ($query)
 setWhereForEditQuery ($query)
 setOrderByForEditQuery ($query)
 setPKForQueries ($fieldsForSearchQuery, $fieldsForEditQuery=array())
 showOnlyNewRecordsAfterInsert ($value)
 getFilterForSearch ()
 setFilterForSearch ($newFilter)
 getFilterForEdit ()
 setFilterForEdit ($newFilter)
 postInsertar ($objDatos)
 processInsert ()
 postModificar ($m_datos)
 processUpdate ()
 postBorrar ()
 processDelete ()
 limpiarInstancia ()
 calcularSecuenciaBD ($nombreSecuencia)
 calcularSecuencia ($tabla, $campoSecuencia, $camposDependientes, $valorInicial=1)
 addMatching ($campoTpl, $campoBD, $tablaBD)
 addList ($objLista)
 addConstante ($nombre, $valor)
 consultar ($str_consulta, $tipo=NULL)
 operar ($str_operacion)
 setLimiteConsulta ($int_limite)
 setTipoConsulta ($valorTipoConsulta)
 getTipoConsulta ()

Campos de datos

 $obj_conexion
 $v_nombreTablas
 $v_tablas
 $str_select
 $str_orderBy
 $matching
 $str_where
 $str_selectEditar
 $str_whereEditar
 $str_orderByEditar
 $str_whereFiltro
 $str_whereFiltroEdicion
 $int_limiteConsulta = 100
 $str_SelectConstantes
 $str_whereAdicional
 $int_tipoConsulta

Métodos privados

 getChangeFilterPostInsert ()
 createArrayCRUD ($m_datosTpl)

Atributos privados

 $v_pkForSearchQuery = array()
 $v_pkForEditQuery = array()
 $changeFilterPostInsert = true

Descripción detallada

Definición en la línea 50 del archivo gvHidraForm_DB.php.


Documentación de las funciones miembro

addConstante ( nombre,
valor 
)

Funcin encargada de almacenar constantes que se aaden al DBResult que se muestra en un panel. Es importante tener en cuenta que no se pueden aadir constantes en consultas con el operador SQL DISTINCT afectando a todo la tupla.

Parámetros:
nombrenombre que se le da a la constante
valorvalor que va a tomar la constante
Devuelve:
none

Definición en la línea 981 del archivo gvHidraForm_DB.php.

                                                      {

                //La cadena que tiene que guardar es del tipo '$valor' as "$nombre" 
                if(isset($nombre)&&isset($valor))          
                        $this->str_SelectConstantes.= ", "." '$valor' as \"$nombre\"";
        }//Fin de addConstante 
addList ( objLista)

Funcin encargada de indicar a Negocio que existe una definicin de una nueva Lista

Parámetros:
obj_listaobjetivo de tipo gvHidraList.
Devuelve:
none

Reimplementado de gvHidraForm.

Definición en la línea 942 del archivo gvHidraForm_DB.php.

                                          {

                $nombreClase = get_class($this);
                if(!is_object($objLista)) {

                        IgepSession::borraPanel($nombreClase);
                        throw new Exception('Error: Problema al adjuntar la lista '.$objLista->getName());
                }
                if($nombreClase=='') {

                        IgepSession::borraPanel($nombreClase);
                        throw new Exception('Error: Problema al adjuntar la lista '.$objLista->getName().'. Antes de definir las listas debe llamar al constructor de gvHidraForm_DB.');
                }         
                if(!$objLista->hayDSN())
                        $objLista->setDSN($this->getDSN()); 
                //Almacenamos la lista en la estructura interna y en los datos por defecto.
                $this->v_listas[$objLista->getName()] = $objLista;
                $resultadoLista = $objLista->construyeLista($this->getDefaultData());      
                $this->addDefaultData($objLista->getName(), $resultadoLista);

                //Guardamos la informacion de la lista en la estructura dataTypes.
                $this->v_descCamposPanel[$objLista->getName()]['multiple'] = $objLista->getMultiple();
                $this->v_descCamposPanel[$objLista->getName()]['radio'] = $objLista->getRadio();
                $this->v_descCamposPanel[$objLista->getName()]['size'] = $objLista->getSize();

                //En el caso de los datalles puede darse el caso de que no pasemos por phrame (refreshDetail), y que no ejecutemos el perform. Por eso lo metemos en la SESSION.
                $datosPreInsertados = IgepSession::dameVariable($nombreClase,'v_preInsercionDatos');
                $datosPreInsertados[$objLista->getName()]=$resultadoLista;
                IgepSession::guardaVariable($nombreClase,'v_preInsercionDatos',$datosPreInsertados);
        }//Fin de addList
addMatching ( campoTpl,
campoBD,
tablaBD 
)

Funcin encargada de indicar a Negocio la correspondencia de los campos de la TPL con los campos de la BD. En principio slo deben de indicarse los campos que se almacenarn en la BD.

Reimplementado en gvHidraTreePattern.

Definición en la línea 919 del archivo gvHidraForm_DB.php.

                                                                {
                //Comprobamos que la tabla est en nuestra lista de tablas   
                if(!in_array($tablaBD,$this->v_nombreTablas)) {
                        
                        IgepSession::borraPanel(get_class($this));
                        throw new Exception('Error de Programacin: Se ha definido un Matchig que contiene la tabla '.$tablaBD.' de la BD. Esta tabla no est en la lista de tablas de la clase. Compruebe que la definicin de las SELECT est antes que el matching');            
                }
                //Comprobamos que exista una referencia a ese campo en una SELECT   
                /*
                        $cond1 = strpos($this->str_select,$campoTpl);
                        $cond2 = strpos($this->str_selectEditar,$campoTpl);
                        if (($cond1===false) and ($cond2===false))
                                throw new Exception("Error de Programacin: Ha incluido el campo $campoTpl que no tiene ninguna referencia en las SELECT de la clase. Compruebe que la definicin de tablas est antes que el matching");
                */
                $this->matching[$campoTpl] = array('campo'=>$campoBD,'tabla'=>$tablaBD);   
        }//Fin de addMatching
calcularSecuencia ( tabla,
campoSecuencia,
camposDependientes,
valorInicial = 1 
)

Este mtodo calcula una secuencia compuesta por varios campos de la misma tabla.

Parámetros:
tablastring nombre de la tabla de la BD
campoSecuenciastring campo del que se quiere obtener la secuencia
camposDependientesarray contiene el nombre de los campos de los cuales va a depender la secuencia y sus valores. Estructura [nombreBD] = valor
valorInicialinteger Fija el valor inicial que devuelve calcularSecuencia en el caso de que no exstan tuplas en la tabla el valor por defecto es 1
Devuelve:
integer

Definición en la línea 892 del archivo gvHidraForm_DB.php.

                                                                                                      {
                $res = $this->obj_conexion->calcularSecuencia($tabla,$campoSecuencia,$camposDependientes, $valorInicial);
                if($this->obj_errorNegocio->hayError()) {
                        $this->showMensaje('IGEP-12',$this->obj_errorNegocio->getDescErrorDB());                                  
                        $this->obj_errorNegocio->limpiarError();
                        return -1;
                }
                else {
                        if (($res=='')||($res==null)||(!isset($res)))
                                return $valorInicial;
                        else 
                                return ($res);
                }
        }//Fin de funcion calcularSecuencia
calcularSecuenciaBD ( nombreSecuencia)

Este mtodo devuelve el valor de una secuencia programada en la base de datos para la conexin del panel

Parámetros:
nombreSecuenciastring nombre de la secuencia en la BD
Devuelve:
integer

Definición en la línea 872 del archivo gvHidraForm_DB.php.

                                                             {   
                $res = $this->obj_conexion->calcularSecuenciaBD($nombreSecuencia);
                if($this->obj_errorNegocio->hayError()) {
                        $this->showMensaje('IGEP-12',$this->obj_errorNegocio->getDescErrorDB());
                        $this->obj_errorNegocio->limpiarError();
                        return -1;
                }
                else
                        return $res;
        }
consultar ( str_consulta,
tipo = NULL 
)

Funcin que realiza una consulta a la Base de datos con la conexin actual Es la funcin que el programador debe gastar para realizar una consulta SQL

Parámetros:
stringque contiene la consulta.
arrayvector que indica si queremos convertir los datos
Devuelve:
array devuelve un array si todo ha ido bien o -1 en caso de error.

Definición en la línea 997 del archivo gvHidraForm_DB.php.

                                                           {
                if(!isset($this->obj_errorNegocio)){
                        global $g_error; 
                        $g_error = new IgepError();
                        $this->obj_errorNegocio = & $g_error;              
                }                         
                if (!is_null($tipo)) {
                        if (!array_key_exists('DATATYPES',$tipo)) {
                                // se supone que las columnas son las del panel
                                $tipo['DATATYPES'] = $this->v_descCamposPanel;
                        }
                }
                $res = $this->obj_conexion->consultar($str_consulta,$tipo);
                if($this->obj_errorNegocio->hayError()){
                        //La consulta es erronea.                  
                        $this->obj_errorNegocio->setMsjError($this->obj_mensaje =new IgepMensaje());
                        return -1;
                }
                return $res;
        }
createArrayCRUD ( m_datosTpl) [private]

Definición en la línea 1085 del archivo gvHidraForm_DB.php.

                                                      {

                //Creamos matriz de datos adaptada para las operaciones
                if(count($m_datosTpl)==0)
                        return array();
                $m_datos = array();             
                foreach($m_datosTpl as $index =>$row){
                        foreach($row as $field => $value){
                                //Comprobamos si el campo tiene matchig                         
                                if(isset($this->matching[$field])){
                                        $tipo = ($this->v_descCamposPanel[$field]['tipo']==''? TIPO_CARACTER: $this->v_descCamposPanel[$field]['tipo']);
                                        $this->obj_conexion->prepararOperacion($value,$tipo);
                                        //Construimos el array agrupando por tablas
                                        $m_datos[$this->matching[$field]['tabla']][$index][$this->matching[$field]['campo']] = $value;
                                }
                        }
                }
                return $m_datos;                
        }
getChangeFilterPostInsert ( ) [private]

Definición en la línea 588 del archivo gvHidraForm_DB.php.

                                                     {

                return $this->changeFilterPostInsert; 
        }
getConnection ( )

Devuelve el objeto conexin al que se est conectado.

public

Devuelve:
object

Definición en la línea 248 del archivo gvHidraForm_DB.php.

        {
                return $this->obj_conexion;
        }//Fin de getConnection
getDSN ( )

Definición en la línea 235 del archivo gvHidraForm_DB.php.

                         {
                if(!empty($this->_dsnInterno))
                        return $this->_dsnInterno;
                else
                        return '';
        }
getFilterForEdit ( )

Permite obtener el filtro actual que se est utilizando sobre la EditQuery.

Devuelve la construccin que ha realizado el FW tras ejecutarse la accion buscar. Es el WHERE que obtiene los registros que se muestran en ese momento en el panel EditQuery

Parámetros:
none
Devuelve:
string

Definición en la línea 629 del archivo gvHidraForm_DB.php.

                                           {

                return $this->str_whereFiltroEdicion;
        }
getFilterForSearch ( )

Permite obtener el filtro actual que se est utilizando sobre la SearchQuery.

Devuelve la construccin que ha realizado el FW tras ejecutarse la accion buscar. Es el WHERE que obtiene los registros que se muestran en ese momento en el panel SearhQuery

Parámetros:
none
Devuelve:
string

Definición en la línea 602 del archivo gvHidraForm_DB.php.

                                             {

                return $this->str_whereFiltro;
        }
getTipoConsulta ( )

Mtodo que sirve para obtener el tipo de consulta del panel. Las posibilidades son: (0) Se contruye la Where igualando los campos a los valores. (1) Se construye con like y comodines para cada campo. (2) Por defecto, se contruye con like slo si el usuario ha especificado comodines.

Devuelve:
integer

Definición en la línea 1080 del archivo gvHidraForm_DB.php.

                                          {
                
                return $this->int_tipoConsulta;
        }   
gvHidraForm_DB ( dsn = '',
nombreTablas = null 
)

constructor. Generar a partir de los parmetros que se le pasen una conexin a al base de datos y un array de manejadores de tablas (una por cada una de las que mantenga el panel hijo).

Definición en la línea 186 del archivo gvHidraForm_DB.php.

                                                           {     
                
                //Contiene la coleccion de tablas que mantiene:
                //Generalmente una. Tambin pueden ser varias o ninguna.
                if(is_array($nombreTablas))
                        $this->v_nombreTablas= $nombreTablas;
                elseif($nombreTablas!==null)
                        $this->v_nombreTablas = array($nombreTablas);                   
                //Guardamos la referencia del dsn principal
                $this->_dsnInterno = $dsn;
                //Guardamos la referencia al tipo de consulta
                $this->int_tipoConsulta = ConfigFramework::getConfig()->getQueryMode();
                //Creamos la instancia de IgepSmarty que controla el Js
                $this->obj_IgSmarty = new IgepSmarty();
                //Generamos la instancia completa
                $this->regenerarInstancia($dsn);
        }//Fin de constructor
limpiarInstancia ( )

Mtodo que limpia de variables inncesarias el objeto actual antes de guardarlo en la SESSION private

Reimplementado de gvHidraForm.

Definición en la línea 856 del archivo gvHidraForm_DB.php.

                                          {
                //Esta funcin se encargar de liberar de carga la instancia de la clase antes de ponerla en la SESSION
                parent::limpiarInstancia();
                unset($this->obj_conexion->obj_conexion); 
                unset($this->obj_conexion->obj_errorConexion);  
                unset($this->v_tablas);
                unset($this->str_SelectConstantes);
        }
operar ( str_operacion)

Funcin que realiza una operacin SQL en la Base de datos con la conexin actual Es la funcin que el programador debe gastar para realizar una operacin SQL

Parámetros:
stringque contiene la operacin a realizar.
Devuelve:
integer devuelve 0 si todo ha ido bien o -1 en caso de error

Definición en la línea 1025 del archivo gvHidraForm_DB.php.

                                              {
                if(!isset($this->obj_errorNegocio)){
                        global $g_error; 
                        $g_error = new IgepError();
                        $this->obj_errorNegocio = & $g_error;
                }
                $this->obj_conexion->operar($str_operacion);
                if($this->obj_errorNegocio->hayError()){
                        //La consulta es erronea.
                        $this->obj_errorNegocio->setMsjError($this->obj_mensaje =new IgepMensaje());
                        return -1;
                }
                return 0;
        }
postBorrar ( )

Este mtodo es el mtodo abstracto que ofrece Igep para realizar operaciones una vez realiza la accin de borrar. Todo lo que se realice en este evento est incluido en la TRANSACTION por lo que podr cancelarse la operacin. Su utilizacin pude ser:

  • Si se quiere borrar N tuplas en una tabla con relacin 1:N con la tabla sobre la que ya hemos borrado. Si no se puede realizar la operacin, podemos cancelar toda la transaccin.

IMPORTANTE:: Si se quiere interrumpir la ejecucin del borrado, el programador debe utilizar el mtodo setError para indicar que se ha producido un error.

Devuelve:
integer

Definición en la línea 813 del archivo gvHidraForm_DB.php.

                                    { 
                return 0;   
        }
postInsertar ( objDatos)

Este mtodo es el mtodo abstracto que ofrece Igep para realizar operaciones una vez realiza la accin de insertar. Todo lo que se realice en este evento est incluido en la TRANSACTION por lo que podr cancelarse la operacin. Su utilizacin pude ser:

  • Si se quiere insertar N tuplas en una tabla con relacin 1:N con la tabla sobre la que ya hemos insertado. Si no se puede realizar la operacin, podemos cancelar toda la transaccin.

IMPORTANTE:: Si se quiere interrumpir la ejecucin de la Insercion, el programador debe utilizar el mtodo setError para indicar que se ha producido un error.

Devuelve:
integer

Definición en la línea 661 del archivo gvHidraForm_DB.php.

                                               { 
                return 0;   
        }
postModificar ( m_datos)

Este mtodo es el mtodo abstracto que ofrece Igep para realizar operaciones una vez realiza la accin de modificar. Todo lo que se realice en este evento est incluido en la TRANSACTION por lo que podr cancelarse la operacin. Su utilizacin pude ser:

  • Si se quiere modificar N tuplas en una tabla con relacin 1:N con la tabla sobre la que ya hemos modificado. Si no se puede realizar la operacin, podemos cancelar toda la transaccin.

IMPORTANTE:: Si se quiere interrumpir la ejecucin de la modificacin, el programador debe utilizar el mtodo setError para indicar que se ha producido un error.

Devuelve:
integer

Definición en la línea 757 del archivo gvHidraForm_DB.php.

                                                {
                return 0;
        }
prepareDataSource ( ) [final]

Mtodo que construye la SQL que se lanzara posteriormente para obtener los datos

Devuelve:
none

Reimplementado de gvHidraForm.

Definición en la línea 284 del archivo gvHidraForm_DB.php.

                                                 {
                //Si no tiene consulta, ya hemos ejecutado el preBuscar y acabamos
                //Sino, si el retorno es distinto de 0 tambien acabamos
                if((empty($this->str_select))) {
                        return 0;
                }
                $m_datosFW = $this->comunica->getAllTuplas();
                
                //Creamos matriz de datos preparados para realizar la Query       
                $m_datos = array();

                if(is_array($m_datosFW) and count($m_datosFW)>0) {

                        $this->obj_conexion->prepararOperacion($m_datosFW,$this->v_descCamposPanel);

                        $undiacritic = array();

                        foreach($m_datosFW as $index => $row){
                                foreach($row as $field => $value){                              
                                        if(isset($this->matching[$field])){
                                                $campo = $this->matching[$field]['campo'];
                                                $tabla = $this->matching[$field]['tabla'];
                                                //Comprobamos que el valor sea distinto de vacio para poder darle valor
                                                if($value!='') {
                                                        $m_datos[$index][$tabla.'.'.$campo] = $value;
                                                        //Si el tipo es string es anyadimos el undiacritic                                      
                                                        (empty($this->v_descCamposPanel[$field]) 
                                                        or $this->v_descCamposPanel[$field]['tipo']==TIPO_CARACTER)? $undiacritic[$tabla.'.'.$campo] = true: $undiacritic[$tabla.'.'.$campo] = false;
                                                }
                                        }
                                }
                        }
                }               
                $str_where = '';
                if (isset($m_datos)) {  
                        $tipo = $this->getTipoConsulta();
                        foreach($m_datos as $v_datos) {  
                                $str_where = $this->obj_conexion->construirWhereBusqueda($v_datos,$undiacritic,$str_where,$tipo);
                        }//Fin de foreach                  
                }
                //Mezclamos las dos partes de la where
                $str_where = $this->obj_conexion->combinarWhere(array($str_where,$this->str_where,$this->str_whereAdicional));
                $this->str_whereAdicional = '';         
                //Almacenamos la ltima where realizada
                $this->str_whereFiltro = $str_where;
                //Si tenemos constantes se las concatenamos a la SELECT 
                if($this->str_SelectConstantes!=''){
                        $posFrom = strpos(strtolower($this->str_select),' from');
                        $this->str_select = substr_replace($this->str_select,$this->str_SelectConstantes,$posFrom,0);
                }
        }
prepareDataSourceDetails ( detail,
masterData 
) [final]

Mtodo que se encarga de preparar la fuente de datos de un detalle

Parámetros:
objectdetail referencia a la CM que se quiere recargar
arraymasterData matriz de datos del maestro
Devuelve:
none

Reimplementado de gvHidraForm.

Definición en la línea 361 del archivo gvHidraForm_DB.php.

                                                                           {
                if(!empty($detail->str_select)){
                        $v_datos = array();
                        foreach ($this->v_hijos[$this->panelDetalleActivo] as $padre => $hijo){          
                                $filapadre = array_keys($masterData);
                                $tablahijo = $detail->matching[$hijo]['tabla'];
                                $campohijo = $detail->matching[$hijo]['campo'];  
                                $campoConsultaHijo= $tablahijo.".".$campohijo; 
                                //Si es una lista le asignamos el valor del seleccionado
                                if(is_array($masterData[$filapadre[0]][$padre])) 
                                        $value = $masterData[$filapadre[0]][$padre]['seleccionado'];                            
                                else
                                        $value = $masterData[$filapadre[0]][$padre];
                                                                        
                                //Lo guardamos en datos por defecto del detalle
                                $detail->addDefaultData($hijo,$value);

                                //Fijamos el valor
                                $this->obj_conexion->prepararOperacion($value,$detail->v_descCamposPanel[$hijo]['tipo']);
                                $v_datos[$campoConsultaHijo] = $value;
                        }
                        //Componemos la WHERE de la consulta.
                        $str_where = $this->obj_conexion->construirWhere($v_datos,'');    
                        //Cuando no hay datos para el where dara error
                        $str_where = $this->obj_conexion->combinarWhere(array($str_where,$detail->str_where));
                        $detail->str_whereFiltro = $str_where;
                }
        }
prepareDataSourceEdit ( ) [final]

Reimplementado de gvHidraForm.

Definición en la línea 412 del archivo gvHidraForm_DB.php.

                                                     {
                if(empty($this->str_selectEditar))
                        return 0;
                $m_datosTpl = $this->comunica->getAlltuplas();
                $hayCamposClave = count($this->v_pkForSearchQuery);
                $str_where = '';        
                //OJO: Transformar datos de formato FW a formato BD
                foreach($m_datosTpl as $indice=>$v_datos) {      
                        //Si hay campos clave solo crearemos el Where sobre los campos selecionados
                        if($hayCamposClave>0) {
                                $v_datosCP = array();                           
                                foreach($this->v_pkForSearchQuery as $campoTpl){                  
                                        $campoBD = $this->matching[$campoTpl]['tabla'].'.'.$this->matching[$campoTpl]['campo'];           
                                        //Controlamos que el campo que aadimos no sea vacio, en principio no es necesario, pero por si acaso
                                        if($v_datos[$campoTpl]!=''){
                                                $this->obj_conexion->prepararOperacion($v_datos[$campoTpl],$this->v_descCamposPanel[$campoTpl]['tipo']);
                                                $v_datosCP[$campoBD] = $v_datos[$campoTpl];
                                        }                  
                                }
                                $str_where = $this->obj_conexion->construirWhere($v_datosCP,$str_where);                
                        }
                        else{
                                //Sino, crearemos el Where sobre todos los campos con matching
                                $v_tupla = array();
                                foreach($v_datos as $campoTpl=>$value){
                                        if(isset($this->matching[$campoTpl])){
                                                $campoBD = $this->matching[$campoTpl]['tabla'].'.'.$this->matching[$campoTpl]['campo'];
                                                //Controlamos que el campo que aadimos no sea vacio
                                                if($value!=''){
                                                        $this->obj_conexion->prepararOperacion($v_datos[$campoTpl],$this->v_descCamposPanel[$campoTpl]['tipo']);
                                                        $v_tupla[$campoBD] = $v_datos[$campoTpl];
                                                }
                                                        
                                        }
                                }
                                $str_where = $this->obj_conexion->construirWhere($v_tupla,$str_where);
                        }                       
                }
                $str_where = $this->obj_conexion->combinarWhere(array("($str_where)",$this->str_whereEditar));
                if($this->str_orderByEditar!='')
                        $orderBy = ' ORDER BY '.$this->str_orderByEditar;
                $this->str_whereFiltroEdicion = $str_where.$orderBy;
                return 0;
        }
processDelete ( )

Reimplementado de gvHidraForm.

Definición en la línea 817 del archivo gvHidraForm_DB.php.

                                       {
                $this->obj_conexion->empezarTransaccion();
                $m_datosTpl = $this->comunica->getAllTuplas();
                $m_datos = $this->createArrayCRUD($m_datosTpl);
                //Si tenemos una tabla de mantenimiento
                if(isset($this->v_tablas)){
                        foreach($this->v_tablas as $tabla) {
                                if(is_array($m_datos[$tabla->getTabla()])) {
                                        foreach ($m_datos[$tabla->getTabla()] as $v_datos)                                                                                        
                                                $tabla->borrar($v_datos);
                                }                                                                  
                        }
                }
                //Lanzamos el postBorrar si no ha habido errores
                $errores = $this->obj_errorNegocio->hayError();
                $retorno = 0;
                if(!$errores){
                        $this->comunica->reset();
                        $comunicaUsuario = new IgepComunicaUsuario($this->comunica,$this->v_preInsercionDatos,$this->v_listas);
                        $retorno = $this->postBorrar($comunicaUsuario);
                }
                //Comprobacin de errores
                $errores = $this->obj_errorNegocio->hayError();
                //Cancelamos la transaccion si hay errores o el return es -1
                if($errores or $retorno==-1){
                        $this->obj_conexion->acabarTransaccion(1);
                        return -1;
                }
                else {
                        $this->obj_conexion->acabarTransaccion(0);
                        return $retorno;
                }
        }
processInsert ( )

Mtodo encargado de realizar los INSERTs private

Reimplementado de gvHidraForm.

Definición en la línea 669 del archivo gvHidraForm_DB.php.

                                        {
                /*Empezamos la transaccin*/
                $this->obj_conexion->empezarTransaccion();                                                
                $m_datosTpl = $this->comunica->getAllTuplas();
                //Creamos matriz de datos adaptada para la insercion
                $m_datos = $this->createArrayCRUD($m_datosTpl);
                //Si tiene una tabla de mantenimiento
                if(!empty($this->v_tablas)){
                        foreach($this->v_tablas as $tabla) {
                                $tabla->insertar($m_datos[$tabla->getTabla()]);  
                        }
                }
                //Realizamos la operacin de Post-Insercin si no hay errores.    
                $errores = $this->obj_errorNegocio->hayError();
                if(!$errores) {

                        // Antes del postInsertar cambiamos el filtro de busqueda
                        // Si el programador quiere, puede volver a poner el mismo en el postInsertar
                        $hayInsercion = $this->comunica->hayDatos('insertar');
                        if($hayInsercion and !isset($this->str_nombrePadre)) { 
                                
                                $tuplas = $m_datosTpl;
                                $nuevasTuplas = '';
                                
                                //Cambiamos el filtro tras insertar a no ser que el programador haya indicado lo contrario.
                                if($this->getChangeFilterPostInsert()==true){
                                
                                        IgepDebug::setDebug(DEBUG_IGEP,'PostInsert: el FW cambia el filtro de bsqueda para que slo muestre los nuevos registros');

                                        foreach($tuplas as $tupla){
                                                //Renombramos la tupla para que aada el nombre de la tabla
                                                if(count($this->v_pkForEditQuery)) {
                                                        foreach($this->v_pkForEditQuery as $campo) {
                                                                $campoBD = $this->matching[$campo]['tabla'].'.'.$this->matching[$campo]['campo'];
                                                                $this->obj_conexion->prepararOperacion($tupla[$campo],$this->v_descCamposPanel[$campo]['tipo']);                                                                
                                                                $tuplaRenombrada[$campoBD]=$tupla[$campo];
                                                        }
                                                }
                                                else{
                                                        foreach($tupla as $campo=>$valor) {
                                                                if (isset($this->matching[$campo])) {

                                                                        $campoBD = $this->matching[$campo]['tabla'].'.'.$this->matching[$campo]['campo'];
                                                                        $this->obj_conexion->prepararOperacion($valor,$this->v_descCamposPanel[$campo]['tipo']);
                                                                        $tuplaRenombrada[$campoBD]=$valor;
                                                                }
                                                        }
                                                }                                
                                                $unaTupla = $this->obj_conexion->construirWhere($tuplaRenombrada,'');
                                                if ($nuevasTuplas!='')
                                                        $nuevasTuplas.=' OR ';
                                                $nuevasTuplas.= $unaTupla;      
                                        }
                                        if($this->str_where!='')
                                                $wherePanel = $this->str_where.' AND ';
                                        $this->str_whereFiltro = ' WHERE '.$wherePanel.' ('.$nuevasTuplas.')';
                                }
                        }

                        $this->comunica->reset();
                        $comunicaUsuario = new IgepComunicaUsuario($this->comunica,$this->v_preInsercionDatos,$this->v_listas);
                        $retorno = $this->postInsertar($comunicaUsuario);
                }
                /*Comprobacin de  errores*/
                $errores = $this->obj_errorNegocio->hayError();  
                //Cancelamos la transaccion si hay errores o el return es -1
                if($errores or $retorno==-1){
                        $this->obj_conexion->acabarTransaccion(1);
                        return -1;
                }
                else{

                        $this->obj_conexion->acabarTransaccion(0);
                        return $retorno;
                }
        }
processUpdate ( )

proceso de actualizacion de los datos

Reimplementado de gvHidraForm.

Definición en la línea 764 del archivo gvHidraForm_DB.php.

                                       {
                /*Empezamos transaccin*/
                $this->obj_conexion->empezarTransaccion();        
                //Si tenemos tabla de mantenimiento
                $m_datosTpl = $this->comunica->getAllTuplas();
                $m_datosAntiguosTpl = $this->comunica->getAllTuplasAntiguas();
                //Creamos matriz de datos adaptada para la insercion
                $m_datos = $this->createArrayCRUD($m_datosTpl);
                $m_datosant  = $this->createArrayCRUD($m_datosAntiguosTpl);
                if(isset($this->v_tablas)){
                        foreach($this->v_tablas as $tabla) {
                                if(is_array($m_datos[$tabla->getTabla()])) {
                                        foreach($m_datos[$tabla->getTabla()] as $indice => $v_datos) {
                                                $tabla->actualizar($v_datos, $m_datosant[$tabla->getTabla()][$indice]);
                                        }
                                }
                        }
                }
                //Lanzamos el postModificar si no ha habido errores
                $errores = $this->obj_errorNegocio->hayError();
                if(!$errores){
                        $this->comunica->reset();
                        $comunicaUsuario = new IgepComunicaUsuario($this->comunica,$this->v_preInsercionDatos,$this->v_listas);
                        $retorno = $this->postModificar($comunicaUsuario);
                }
                /*Comprobacin de errores*/
                $errores = $this->obj_errorNegocio->hayError();  
                //Cancelamos la transaccion si hay errores o el return es -1
                if($errores or $retorno==-1){
                        $this->obj_conexion->acabarTransaccion(1);
                        return -1;
                }
                else {
                        $this->obj_conexion->acabarTransaccion(0);
                        return $retorno;
                }
        }       
recoverData ( ) [final]

Mtodo que lanza la consulta SQL y retorna los datos

Devuelve:
none

Reimplementado de gvHidraForm.

Definición en la línea 340 del archivo gvHidraForm_DB.php.

                                           {
                //Si tiene consulta la lanza
                if(!empty($this->str_select)){
                        //Aadimos el Order By
                        if (isset($this->str_orderBy))
                                $orden = ' ORDER BY '.$this->str_orderBy; 
                        $str_where = $this->str_whereFiltro;            
                        //Aadimos el lmite de la consulta
                        $limite = $this->obj_conexion->construirLimite($str_where,$this->int_limiteConsulta); 
                        //Realizamos la Consulta
                        $consultaActual = $this->str_select.$str_where.$orden.$limite;   
                        $res = $this->obj_conexion->consultar($consultaActual); 
                        //Antes de transformar los datos comprobamos que no hay error de BD
                        if($res!=-1)
                                $this->obj_conexion->transform_BD2FW($res,$this->v_descCamposPanel);
                        return $res;
                }
                else
                        return array(); 
        }
recoverDataDetail ( ) [final]

Mtodo que lanza la consulta SQL y retorna los datos del detalle

Devuelve:
none

Reimplementado de gvHidraForm.

Definición en la línea 394 del archivo gvHidraForm_DB.php.

                                                 {
                //Si tiene consulta la lanza
                if(!empty($this->str_select)){
                        //dejo el ordeby de momento
                        if (isset($this->str_orderBy))
                                $orden = ' ORDER BY '.$this->str_orderBy;
                        $str_where = $this->str_whereFiltro;                                    
                        //OJO: hay que transformar res a formato FW de formato BD
                        $res = $this->obj_conexion->consultar($this->str_select.$str_where.$orden);
                        //Antes de transformar los datos comprobamos que no hay error de BD
                        if($res!=-1)            
                                $this->obj_conexion->transform_BD2FW($res,$this->v_descCamposPanel);
                        return $res;
                }
                else
                        return array(); 
        }
recoverDataEdit ( ) [final]

Reimplementado de gvHidraForm.

Definición en la línea 457 del archivo gvHidraForm_DB.php.

                                               {
                if(!empty($this->str_selectEditar)){
                        $consultaActual = $this->str_selectEditar.$this->str_whereFiltroEdicion;        
                        $res = $this->obj_conexion->consultar($consultaActual);
                        //Antes de transformar los datos comprobamos que no hay error de BD
                        if($res!=-1)
                                $this->obj_conexion->transform_BD2FW($res,$this->v_descCamposPanel);
                        return $res;
                }
                return array();
        }       
regenerarInstancia ( dsn = '')

Reimplementado en gvHidraTreePattern.

Definición en la línea 204 del archivo gvHidraForm_DB.php.

                                            {
                //Recuperamos la instancia de la clase Error. Si no existe (caso en el que venimos de Views), lo creamos
                global $g_error;                                
                //#NVI#VIEWS#: Cuando quietemos del views las llamadas a Negocio quitamos este if
                if(!isset($g_error)) 
                        $g_error = new IgepError(); 
                $this->obj_errorNegocio = & $g_error;
                if($dsn=='')
                        $dsn=$this->getDSN();
                //Como es una instancia de una clase hija creamos la conexin.    
                if($dsn!='')
                        $this->obj_conexion = new IgepConexion($dsn);              
                //Comprobacin de errores de la conexion.
                if($this->obj_errorNegocio->hayError()){                        
                        $v_descError = $this->obj_errorNegocio->getDescErrorDB();                                          
                        $mensajeError = new IgepMensaje('IGEP-6',$v_descError);
                        IgepSession::guardaVariable('principal','obj_mensaje',$mensajeError);
                        return;
                }
                //Si es un form de mantenimiento, creamos las clases de persistencia
                if(count($this->v_nombreTablas)>0){
                        $i=0;           
                        foreach($this->v_nombreTablas as $tabla) {        
                                $this->v_tablas[$i] = new IgepPersistencia($this->obj_conexion->getPEARConnection(),$tabla);
                                ++$i;                      
                        }
                }
                //Creamos la instancia de IgepComunicacion
                $this->comunica = new IgepComunicacion($this->v_descCamposPanel);               
        }
setFilterForEdit ( newFilter)

Permite cambiar el filtro actual que se est utilizando sobre la EditQuery.

Fija el WHERE que se utilizar para refrescar los datos del panel EditQuery

Parámetros:
newFilterstring
Devuelve:
none

Definición en la línea 642 del archivo gvHidraForm_DB.php.

                                                     {

                $this->str_whereFiltroEdicion = $newFilter;
        }
setFilterForSearch ( newFilter)

Permite cambiar el filtro actual que se est utilizando sobre la SearchQuery.

Fija el WHERE que se utilizar para refrescar los datos del panel SearhQuery

Parámetros:
newFilterstring
Devuelve:
none

Definición en la línea 615 del archivo gvHidraForm_DB.php.

                                                       {

                $this->str_whereFiltro = $newFilter;
        }
setLimiteConsulta ( int_limite)

Funcin que debe utilizar el programador para indicar el lmite de registros que se pueden recuperar de la base de datos con una consulta. Por defecto IGEP tiene un lmite de 100.

Parámetros:
integernmero que indica el lmite.
Devuelve:
none

Definición en la línea 1047 del archivo gvHidraForm_DB.php.

                                                      {
                $this->int_limiteConsulta = $int_limite;
        } 
setOrderByForEditQuery ( query)

Permite especificar la clausula 'ORDER BY' de la query consulta del CRUD de gvHidra que se lanza en la accin editar (paso de tabular a registro en patrn T-R)

Parámetros:
String$queryClusula 'ORDER BY' de sentencia SQL

Definición en la línea 525 del archivo gvHidraForm_DB.php.

        {
                $this->str_orderByEditar = $query;
        }
setOrderByForSearchQuery ( query)

Permite especificar la clausula 'ORDER BY' de la query consulta del CRUD de gvHidra que se lanza en la accin buscar.

Parámetros:
String$queryClusula 'ORDER BY' de sentencia SQL

Definición en la línea 495 del archivo gvHidraForm_DB.php.

        {
                $this->str_orderBy = $query;
        }
setParametrosBusqueda ( str_where)

Este mtodo almacenar una cadena que luego se anexar a la WHERE de la consulta a ejecutar. En esa cadena se pueden incluir condiciones especiales como aadir un EXISTS si cierto campo del panel de busqueda est a true.

Parámetros:
stringstr_where contiene la cadena que se quiere concatenar a la WHERE de la consulta
Devuelve:
integer

Definición en la línea 263 del archivo gvHidraForm_DB.php.

setPKForQueries ( fieldsForSearchQuery,
fieldsForEditQuery = array() 
)

Permite especificar la PK de las dos queries que se pueden definir en el FW. El primer parametro permite definir la PK para el el searchMode. El segundo corresponde con el editMode.

Parámetros:
array$fieldsForSearchQueryCampos que componen la clave primaria en la query del searchMode
array$fieldsForEditQueryOpcional. Campos que componen la clave primaria en la query del editMode

Definición en la línea 537 del archivo gvHidraForm_DB.php.

                                                                                           {

                //pk searchQuery
                foreach($fieldsForSearchQuery as $campoTpl) {
                        if(!isset($this->matching[$campoTpl])) {
                                
                                IgepSession::borraPanel(get_class($this));
                                throw new Exception('Error setPKForQueries: Param1 - Todos los campos claves tienen que tener matching');
                        }
                        array_push($this->v_pkForSearchQuery,$campoTpl);
                }

                //Comprobamos que existe el PK para SearchQuery
                if(count($this->v_pkForSearchQuery)==0) {

                        IgepSession::borraPanel(get_class($this));
                        throw new Exception('Error setPKForQueries: Debe haber introducido la PK para el SearchMode previamente');
                }

                //pk editQuery          
                if(count($fieldsForEditQuery)>0) {
                        foreach($fieldsForEditQuery as $campoTpl) {
                                if(!isset($this->matching[$campoTpl])) {
                                        
                                        IgepSession::borraPanel(get_class($this));
                                        throw new Exception('Error setPKForQueries: Param2 - Todos los campos claves tienen que tener matching');
                                }
                                array_push($this->v_pkForEditQuery,$campoTpl);
                        }
                }
        }
setSearchParameters ( str_where)

Este mtodo almacenar una cadena que luego se anexar a la WHERE de la consulta a ejecutar. En esa cadena se pueden incluir condiciones especiales como aadir un EXISTS si cierto campo del panel de busqueda est a true.

Parámetros:
stringstr_where contiene la cadena que se quiere concatenar a la WHERE de la consulta
Devuelve:
integer

Definición en la línea 274 del archivo gvHidraForm_DB.php.

                                                       {

                if(trim($str_where)!='')
                        $this->str_whereAdicional = $str_where;
        }
setSelectForEditQuery ( query)

Permite especificar la cabecera de la query consulta del CRUD de gvHidra que se lanza en la accin editar (paso de tabular a registro en patrn T-R)

Parámetros:
String$queryCabecera de sentencia SQL

Definición en la línea 505 del archivo gvHidraForm_DB.php.

        {
                $this->str_selectEditar = $query;
        }
setSelectForSearchQuery ( query)

Permite especificar la cabecera de la query consulta del CRUD de gvHidra que se lanza en la accin buscar.

Parámetros:
String$queryCabecera de sentencia SQL

Definición en la línea 475 del archivo gvHidraForm_DB.php.

        {
                $this->str_select = $query;
        }
setTipoConsulta ( valorTipoConsulta)

Mtodo que sirve para fijar el tipo de consulta del panel. Siempre se descartan maysculas y marcas diacrticas. Las posibilidades son: (0) Se contruye la Where igualando los campos a los valores. (1) Se construye con like y comodines para cada campo. (2) Por defecto, se contruye con like slo si el usuario ha especificado comodines.

Parámetros:
integer$valorTipoConsultaEntero entre 0 y 2 que indica el tipo deseado.
Devuelve:
none

Definición en la línea 1060 del archivo gvHidraForm_DB.php.

                                                            {
                
                if(($valorTipoConsulta>-1) and ($valorTipoConsulta<3))
                        $this->int_tipoConsulta = $valorTipoConsulta;
                        
                else {
                        
                        $nombreClaseActual = get_class($this);
                        IgepSession::borraPanel($nombreClaseActual);
                        throw new Exception('Error en el constructor de la clase '.$nombreClaseActual.'. El valor del tipo de consulta debe encontrarse entre [0-2]');                  
                }
        }
setWhereForEditQuery ( query)

Permite especificar la clausula 'WHERE' de la query consulta del CRUD de gvHidra que se lanza en la accin editar (paso de tabular a registro en patrn T-R)

Parámetros:
String$queryClusula 'WHERE' de sentencia SQL

Definición en la línea 515 del archivo gvHidraForm_DB.php.

        {
                $this->str_whereEditar = $query;
        }
setWhereForSearchQuery ( query)

Permite especificar la clausula 'WHERE' de la query consulta del CRUD de gvHidra que se lanza en la accin buscar.

Parámetros:
String$queryClusula 'WHERE' de sentencia SQL

Definición en la línea 485 del archivo gvHidraForm_DB.php.

        {
                $this->str_where = $query;
        }
showOnlyNewRecordsAfterInsert ( value)

Indica si el filtro se debe regenerar tras una insercion. Tras insertar una tupla, para evitar que dicha tupla no aparezca en el filtro previo, se elimina dicho filtro y se crea uno nuevo que apunta a la nueva tupla insertada (a travs de su PK o todos sus campos).

Puede haber casos en los que nos interese que este comportamiento no se produzca. Con este mtodo podemos cambiar el comportamiento por defecto. Los valores que admite son:

-Con valor true, despues de insertar solo se vera la nueva tupla insertada. Valor por defecto -Con valor false no modifica el filtro, por lo que se recarga el panel con el filtro previo.

Parámetros:
booleanvalue
Devuelve:
none

Definición en la línea 583 del archivo gvHidraForm_DB.php.

                                                              {

                $this->changeFilterPostInsert = $value;
        }

Documentación de los campos

$changeFilterPostInsert = true [private]

Definición en la línea 180 del archivo gvHidraForm_DB.php.

$int_limiteConsulta = 100

Definición en la línea 138 del archivo gvHidraForm_DB.php.

integer $int_tipoConsulta

Variable interna que permite modificar el tipoConsulta general de un panel. Los valores posibles son: (0) Se construye la Where igualando los campos a los valores. (1) Se construye con like y comodines para cada campo. (2) Por defecto, se contruye con like slo si el usuario ha especificado comodines. (3) Se contruye con like, case unsensitive y sin considerar las marcas diacrticas (no distingue acentos, ,..). private

Definición en la línea 177 del archivo gvHidraForm_DB.php.

array $matching

Variable que controla el match-in entre las tpl y la bd private

Definición en la línea 93 del archivo gvHidraForm_DB.php.

$obj_conexion

Definición en la línea 58 del archivo gvHidraForm_DB.php.

$str_orderBy

Definición en la línea 86 del archivo gvHidraForm_DB.php.

string $str_orderByEditar

Esta variable contiene el ORDER BY que se aplicar al segundo panel de edicin.

Definición en la línea 117 del archivo gvHidraForm_DB.php.

$str_select

Definición en la línea 79 del archivo gvHidraForm_DB.php.

$str_SelectConstantes

Definición en la línea 145 del archivo gvHidraForm_DB.php.

string $str_selectEditar

Esta variable contiene la SELECT que se aplicar al segundo panel de edicin.

Definición en la línea 105 del archivo gvHidraForm_DB.php.

string $str_where

Esta variable contiene la WHERE que se aplicar a la Select de bsqueda

Definición en la línea 99 del archivo gvHidraForm_DB.php.

$str_whereAdicional

Definición en la línea 166 del archivo gvHidraForm_DB.php.

string $str_whereEditar

Esta variable contiene la WHERE que se aplicar al segundo panel de edicin.

Definición en la línea 111 del archivo gvHidraForm_DB.php.

string $str_whereFiltro

String donde se almacena el filtro de la Where de Busqueda. Es importante porque este filtro se mantiene hasta que se vuelva a realizar otra busqueda private

Definición en la línea 124 del archivo gvHidraForm_DB.php.

string $str_whereFiltroEdicion

String donde se almacena el filtro de la Where de la seleccin (3 pestaas en el panel lis). Es importante porque este filtro se mantiene hasta que se vuelva a realizar otra edicion private

Definición en la línea 131 del archivo gvHidraForm_DB.php.

$v_nombreTablas

Definición en la línea 65 del archivo gvHidraForm_DB.php.

$v_pkForEditQuery = array() [private]

Definición en la línea 159 del archivo gvHidraForm_DB.php.

$v_pkForSearchQuery = array() [private]

Definición en la línea 152 del archivo gvHidraForm_DB.php.

$v_tablas

Definición en la línea 72 del archivo gvHidraForm_DB.php.


La documentación para esta clase fue generada a partir del siguiente fichero: