![]() |
Documentación GVHIDRA 3.1.5
|
Métodos públicos | |
__construct ($dsn, $persistent=false) | |
__destruct () | |
getPEARConnection () | |
getConexion () | |
getDSN () | |
isPersistent () | |
empezarTransaccion () | |
acabarTransaccion ($error) | |
construirWhere ($v_datos, $str_where) | |
construirWhereConLike ($v_datos, $str_where, $tipoConsulta) | |
unDiacriticCondition ($col, $val, $tipo=1, $prepare=true) | |
normalCondition ($col, $val, $tipo=1) | |
construirWhereBusqueda ($v_datos, $undiacritic, $str_where, $tipoConsulta) | |
combinarWhere ($v_cadenas) | |
construirLimite (&$str_where, $int_limiteConsulta=100) | |
consultar ($str_select, $typeDesc=NULL) | |
consultarForUpdate ($str_select, $tipo=NULL) | |
preparedQuery ($str_select, $dml_ddl, $params, $tipo=null, &$cur=null) | |
preparedQueryForUpdate ($str_select, $params, $tipo=null, &$cur=null) | |
transformResultSet (&$res, $typeDesc) | |
operar ($str_operar) | |
prepararOperacion (&$a_parametros, $a_tipo=TIPO_CARACTER) | |
transform_BD2FW (&$a_parametros, $a_tipo=TIPO_CARACTER) | |
prepararNumero ($a_num) | |
prepararFecha ($a_fecha) | |
calcularSecuenciaBD ($nombreSecuencia) | |
calcularSecuencia ($tabla, $campoSecuencia, $camposDependientes, $valorInicial=1) | |
Métodos públicos estáticos | |
static | transform_BD2User ($a_parametros, $a_tipo, $a_dsn, $a_decimales=2) |
Campos de datos | |
$obj_conexion | |
$obj_errorConexion | |
$v_dsn | |
Métodos privados | |
conectar ($dsn) | |
desconectar () | |
Atributos privados | |
$persistent |
Definición en la línea 54 del archivo IgepConexion.php.
__construct | ( | $ | dsn, |
$ | persistent = false |
||
) |
Constructor. Recibe como parmetro un array con la definicin del dsn.
public
array | $dsn | |
bool | $persistent |
Definición en la línea 92 del archivo IgepConexion.php.
{ //Cogemos la referencia de la variable de error global global $g_error; $this->obj_errorConexion = & $g_error; //Realizamos la conexin $this->v_dsn = $dsn; $this->persistent = $persistent; $this->obj_conexion = $this->conectar($dsn); }
__destruct | ( | ) |
Definición en la línea 103 del archivo IgepConexion.php.
{ $this->desconectar(); }
acabarTransaccion | ( | $ | error | ) |
Finaliza una transaccin (COMMIT o ROLLBACK) en la conexin a la que est apuntando. Recibe un parmetro que indica si el procesado de las diferentes operaciones que se han realizado ha concluido satisfactoriamente o no. Dependiendo de ello se realizar el COMMIT o el ROLLBACK. Dicho parmetro es $error
public
integer | $error |
Definición en la línea 239 del archivo IgepConexion.php.
{ //Debug:Indicamos que ejecutamos la consulta if ($error) IgepDebug::setDebug(DEBUG_IGEP,'Acabamos transaccin con ROLLBACK'); else IgepDebug::setDebug(DEBUG_IGEP,'Acabamos transaccin con COMMIT'); $res = IgepDB::acabarTransaccion($this->v_dsn,$this->obj_conexion,$error); if (PEAR::isError($res)) $this->obj_errorConexion->setError("IGEP-9",'IgepConexion.php',"acabarTransaccion",$res); }//Fin de acabarTransaccion
calcularSecuencia | ( | $ | tabla, |
$ | campoSecuencia, | ||
$ | camposDependientes, | ||
$ | valorInicial = 1 |
||
) |
Este mtodo calcula una secuencia compuesta por varios campos de la misma tabla.
tabla | string nombre de la tabla de la BD |
campoSecuencia | string campo del que se quiere obtener la secuencia |
camposDependientes | array contiene el nombre de los campos de los cuales va a depender la secuencia y sus valores. Estructura [nombreBD] = valor |
valorInicial | integer Fija el valor inicial que devuelve calcularSecuencia en el caso de que no exstan tuplas en la tabla el valor por defecto es 1 |
Definición en la línea 884 del archivo IgepConexion.php.
{ $i=0; $where=''; foreach($camposDependientes as $campo => $valor){ if($where!='') $where.=' AND '; else $where = 'WHERE '; $where.=$campo."='".$valor."' "; ++$i; } $sql = "SELECT max($campoSecuencia) as \"secuencia\" FROM $tabla $where"; IgepDebug::setDebug(DEBUG_IGEP,'IgepConexion: Calculamos secuencia: '.$sql); $resc = $this->obj_conexion->query($sql); if(PEAR::isError($resc)) { $this->obj_errorConexion->setError('IGEP-12','IgepConexion.php','calcularSecuencia',$resc); return -1; } else { $res = $resc->fetchAll(); if (($res[0]['secuencia']=='')||($res[0]['secuencia']==null)||(!isset($res[0]['secuencia']))) return $valorInicial; else return ($res[0]['secuencia'] +1); } }//Fin de funcion calcularSecuencia
calcularSecuenciaBD | ( | $ | nombreSecuencia | ) |
Este mtodo devuelve el valor de una secuencia programada en la base de datos para la conexion actual
nombreSecuencia | string nombre de la secuencia en la BD |
Definición en la línea 859 del archivo IgepConexion.php.
{ $sql = IgepDB::obtenerSecuenciaBD($this->getDsn(),$nombreSecuencia); IgepDebug::setDebug(DEBUG_IGEP,'IgepConexion: Calculamos secuencia BD: '.$sql); $resc = $this->obj_conexion->query($sql); if (PEAR::isError($resc)){ $this->obj_errorConexion->setError('IGEP-12','IgepConexion.php',"calcularSecuenciaBD",$resc); return -1; } else{ $res = $resc->fetchAll(); return $res[0]['nextval']; } }
combinarWhere | ( | $ | v_cadenas | ) |
Mtodo encargado de, dadas una serie de cadenas, componerlas para crear una nica cadena para la where de una SQL. private
array | $v_cadenas | Array que contiene las diferentes cadenas que componen la WHERE |
Definición en la línea 473 del archivo IgepConexion.php.
{ $str_where = ''; foreach($v_cadenas as $cadena){ if(trim($cadena)!=''){ if ($str_where!='') $str_where.= ') AND '; $str_where.='('.$cadena; } } if($str_where!='') $str_where=' WHERE '.$str_where.')'; return $str_where; }
conectar | ( | $ | dsn | ) | [private] |
Realiza la conexin a la base de datos especificada
public
Definición en la línea 113 del archivo IgepConexion.php.
{ // truco para que el autoload cargue la clase, y asi esten definidas las constantes if (!class_exists('MDB2')) throw new gvHidraException('No existe la clase MDB2'); IgepDB::preConexion($dsn); $options = array( 'portability' => MDB2_PORTABILITY_NONE, ); //Para evitar problemas con el funcionamiento del MDB2, forzamos a que se utilice una //nueva conexion siempre. La informacion esta en el bug Pear::MDB2 (Bug #17198) //Forzamos a que siempre utilice una nueva conexion if(!$this->isPersistent()) $dsn['new_link'] = true; $res = MDB2::connect($dsn,$options); if (PEAR::isError($res)) { //Comprobamos que el Log esta activo para evitar entrar en un bucle $conexion = ConfigFramework::getConfig()->getLogConnection(); if(is_object($conexion->obj_conexion)) { $this->obj_errorConexion->setError("IGEP-6",'IgepConexion.php',"conectar",$res); } } else { IgepDB::postConexion($dsn,$res); //Finalmente marcamos el fetchMode por defecto $res->setFetchMode(MDB2_FETCHMODE_ASSOC); } return $res; }// Fin de conectar
construirLimite | ( | &$ | str_where, |
$ | int_limiteConsulta = 100 |
||
) |
Mtodo encargado de construir el limit para las consultas private
Definición en la línea 493 del archivo IgepConexion.php.
{ if(is_int($int_limiteConsulta)){ $limite = IgepDB::obtenerLimit($str_where, $this->v_dsn, $int_limiteConsulta); } return $limite; }//Fin de construirLimite
construirWhere | ( | $ | v_datos, |
$ | str_where | ||
) |
Mtodo encargado de construir las WHERE de las consultas. private
Definición en la línea 256 del archivo IgepConexion.php.
{ //Esta funcin construye una WHERE igualando los valores con los nombres de los campos. if (isset($v_datos)){ if($str_where!='') $inicio_condicion=' OR ('; else $inicio_condicion=' ('; $str_condicion=''; foreach($v_datos as $prop => $val) { if ($str_condicion!='') { $str_condicion.=' AND '; } $str_condicion.=$prop; if (gettype($val)=='string') { if($val!='') $str_condicion.="='".$val."'"; else $str_condicion.=' is null'; } else { if($val!='') $str_condicion.='='.$val; else $str_condicion.=' is null'; } }//FIN foreach if(trim($str_condicion)!='') $str_where.=$inicio_condicion.$str_condicion.')'; } return $str_where; } //Fin de construirWhere
construirWhereBusqueda | ( | $ | v_datos, |
$ | undiacritic, | ||
$ | str_where, | ||
$ | tipoConsulta | ||
) |
Mtodo encargado de construir las WHERE de las consultas incluyendo las condiciones de busqueda que ha seleccionado el programador a partir del parmetro tipoConsulta.
Este es un metodo alternativo a construirWhereConLike, donde siempre se descartan caracteres especiales y mayusculas Llamado desde gvHidraForm_DB->prepareDataSource
Dependiendo del valor de la variable realiza una construccin de la Where u otra. Los tipos son:
Definición en la línea 438 del archivo IgepConexion.php.
{ //Construimos la Where if (isset($v_datos)){ $str_condicion=''; foreach ($v_datos as $prop => $val){ if ($val!=''){ if ($str_condicion!='') $str_condicion.=' AND '; if($undiacritic[$prop]) $str_condicion .= $this->unDiacriticCondition($prop, $val, $tipoConsulta, false); else $str_condicion .= $this->normalCondition($prop, $val, $tipoConsulta); } }//FIN foreach if (trim($str_condicion)!='') { // hay where previa cuando la consulta se hace sobre varios registros: se concatenan los criterios // en el mismo registro con and, y los de cada registro con or if ($str_where!='') $inicio_condicion =' OR ('; else $inicio_condicion =' ('; $str_where.=$inicio_condicion.$str_condicion.')'; } } return $str_where; }//Fin de construirWhereBusqueda
construirWhereConLike | ( | $ | v_datos, |
$ | str_where, | ||
$ | tipoConsulta | ||
) |
Mtodo encargado de construir las WHERE de las consultas incluyendo las condiciones de busqueda que ha seleccionado el programador a partir del parmetro tipoConsulta.
Este es un metodo alternativo a construirWhereBusqueda, donde solo se descartan caracteres especiales y mayusculas en tipo 3 Llamado desde gvHidraForm_DB->prepareDataSource (actualmente no se usa)
Dependiendo del valor de la variable realiza una construccin de la Where u otra. Los tipos son:
Definición en la línea 303 del archivo IgepConexion.php.
{ if($tipoConsulta==0) return $this->construirWhere($v_datos,$str_where); else //Construimos la Where if (isset($v_datos)){ // hay where previa cuando la consulta se hace sobre varios registros: se concatenan los criterios // en el mismo registro con and, y los de cada registro con or if($str_where!='') $inicio_condicion =' OR ('; else $inicio_condicion =' ('; $str_condicion=''; $dsn = $this->getDsn(); foreach($v_datos as $prop => $val){ if($val!=''){ if ($str_condicion!='') $str_condicion.=' AND '; if($tipoConsulta==3) $expr = "lower(".IgepDB::toTextForVS($dsn, $prop).")"; else $expr = $prop; if($tipoConsulta==2) //Son 3 iguales porque si colocamos 2 no distinguimos entre algo que est en la posicin 0 y el false if((strpos($val,'%')===false) and (strpos($val,'_')===false)) if (gettype($val)=='string') $expr .= "='".$val."'"; else $expr .= '='.$val; else $expr = IgepDB::toTextForVS($dsn, $expr)." LIKE '".$val."'"; elseif ($tipoConsulta==3) $expr .= " LIKE ".IgepDB::unDiacritic($dsn,"lower('%".$val."%')"); else // tipo 1 $expr = IgepDB::toTextForVS($dsn, $expr)." LIKE '%".$val."%'"; $str_condicion .= $expr; } }//FIN foreach if(trim($str_condicion)!='') $str_where.=$inicio_condicion.$str_condicion.')'; } return $str_where; }//Fin de construirWhereConLike
consultar | ( | $ | str_select, |
$ | typeDesc = NULL |
||
) |
Dada una una consulta realiza la SELECT correspondiente. Si se indica el parametro typeDesc cambiar los datos de origen al formato FW
public
string | str_select cadena con la query SQL |
array | typeDesc descripcion de los campos para posibles transformaciones |
Definición en la línea 511 del archivo IgepConexion.php.
{ //Debug:Indicamos que ejecutamos la consulta IgepDebug::setDebug(DEBUG_IGEP,'IgepConexion: Ejecutamos consulta: '.$str_select); if(!$this->obj_errorConexion->hayError()){ $resc = $this->obj_conexion->query($str_select); if (PEAR::isError($resc)){ $this->obj_errorConexion->setError("IGEP-5",'IgepConexion.php',"consultar",$resc,$str_select); return -1; } $res = $resc->fetchAll(); $this->transformResultSet($res, $typeDesc); return $res; } }
consultarForUpdate | ( | $ | str_select, |
$ | tipo = NULL |
||
) |
Dada una consulta realiza la SELECT correspondiente pero bloqueando las filas para modificacion
public
string | $str_select |
Definición en la línea 536 del archivo IgepConexion.php.
{ IgepDebug::setDebug(DEBUG_IGEP,'IgepConexion: Ejecutamos consultaForUpdate: '.$str_select); $tran = $this->obj_conexion->inTransaction(); // devuelve null si no hemos abierto la transaccion con mdb2 if (!is_null($tran) and !$tran) throw new gvHidraNotInTransException('Para llamar a consultarForUpdate hay que estar en una transaccion'); $str_select .= ' '.IgepDB::obtenerBloqueo($this->getDSN()); $res = $this->consultar($str_select, $tipo); if ($res == -1) { // ver si error de bloqueado o timeout $cod = $this->obj_errorConexion->getDescErrorDB(); if (IgepDB::isLocked($this->getDSN(), $cod[0])) { $msg = 'IgepConexion: no se puede bloquear los registros solicitados'; IgepDebug::setDebug(DEBUG_IGEP, $msg); throw new gvHidraLockException($msg, 4, null, $this->obj_errorConexion->obj_dbError); } } return $res; }
desconectar | ( | ) | [private] |
Realiza la desconexin a la base de datos a la que actualmente se est conectado.
public
Definición en la línea 150 del archivo IgepConexion.php.
{ if (is_object($this->obj_conexion) and method_exists($this->obj_conexion, 'rollback')) { $this->obj_conexion->rollback(); //Si no es persistente desconectamos if(!$this->isPersistent()) { $res = $this->obj_conexion->disconnect(); if (PEAR::isError($res)) $this->obj_errorConexion->setError("IGEP-7",'IgepConexion.php',"desconectar",$res); } } }// Fin de desconectar
empezarTransaccion | ( | ) |
Empieza una transaccin (BEGIN) en la conexin a la que est apuntando.
public
Definición en la línea 217 del archivo IgepConexion.php.
{ //Debug:Indicamos que ejecutamos la consulta IgepDebug::setDebug(DEBUG_IGEP,'Empezamos transaccin.'); $res = IgepDB::empezarTransaccion($this->v_dsn,$this->obj_conexion); if (PEAR::isError($res)) $this->obj_errorConexion->setError("IGEP-8",'IgepConexion.php',"empezarTransaccion",$res); }//Fin de empezarTransaccion
getConexion | ( | ) |
Devuelve el objeto conexin al que se est conectado.
public
Definición en la línea 180 del archivo IgepConexion.php.
{ // DEPRECATED: se fija en v. 3.2 IgepDebug::setDebug(WARNING, 'DEPRECATED IgepConexion::getConexion. Usar IgepConexion::getPEARConnection '. '<br>En version 3.2 se borrar.'); return $this->getPEARConnection(); }//Fin de getConexion
getDSN | ( | ) |
Devuelve el dsn de la conexin.
public
Definición en la línea 194 del archivo IgepConexion.php.
{ return $this->v_dsn; }//Fin de getDSN
getPEARConnection | ( | ) |
Devuelve el objeto conexin al que se est conectado.
public
Definición en la línea 168 del archivo IgepConexion.php.
{ return $this->obj_conexion; }//Fin de getPEARConnection
isPersistent | ( | ) |
Indica si una conexion se ha establecido con el atributo persistente(reusable)
public
Definición en la línea 205 del archivo IgepConexion.php.
{ return $this->persistent; }//Fin de isPersistent
normalCondition | ( | $ | col, |
$ | val, | ||
$ | tipo = 1 |
||
) |
Para formar condiciones de busqueda con tipos de datos diferentes a string
$col | nombre columna |
$val | valor a filtrar en la columna |
$tipo | 0..2, igual que el queryMode |
Definición en la línea 398 del archivo IgepConexion.php.
{ $dsn = $this->getDSN(); $expr1 = IgepDB::toTextForVS($dsn, $col); $val_nolike = "'$val'"; switch ($tipo) { case 0: $expr2 = ' = '.$val_nolike; break; case 1: $expr2 = ' like '."'%$val%'"; break; case 2: if (strpos($val,'%')===false and strpos($val,'_')===false) $expr2 = ' = '.$val_nolike; else $expr2 = ' like '.$val_nolike; break; default: throw new gvHidraException('IgepConexion::normalCondition -> valor de tipo no soportado: '.$tipo); } return $expr1.$expr2; }
operar | ( | $ | str_operar | ) |
Dada una una consulta realiza la SELECT correspondiente.
public
string | $str_select |
Definición en la línea 663 del archivo IgepConexion.php.
{ //Debug:Indicamos que ejecutamos la operacion IgepDebug::setDebug(DEBUG_IGEP,'IgepConexion: Ejecutamos operacin: '.$str_operar); if(!$this->obj_errorConexion->hayError()){ $res = $this->obj_conexion->exec($str_operar); if (PEAR::isError($res)){ $this->obj_errorConexion->setError("IGEP-11",'IgepConexion.php',"operar",$res,$str_operar); return -1; } return $res; } }
prepararFecha | ( | $ | a_fecha | ) |
Transforma una fecha de capa negocio a capa datos
public
any | $a_fecha |
Definición en la línea 796 del archivo IgepConexion.php.
{ $this->prepararOperacion($a_fecha, TIPO_FECHAHORA); return $a_fecha; }
prepararNumero | ( | $ | a_num | ) |
Transforma un numero de capa negocio a capa datos
public
any | $a_num |
Definición en la línea 782 del archivo IgepConexion.php.
{ $this->prepararOperacion($a_num, TIPO_DECIMAL); return $a_num; }
prepararOperacion | ( | &$ | a_parametros, |
$ | a_tipo = TIPO_CARACTER |
||
) |
Convierte de FW a DB Este mtodo debe ser invocado por el usuario antes de realizar cualquier consulta/operacion a la BD para garantizar la portabilidad.
public
any | $a_parametros | |
any | $a_tipo |
Definición en la línea 688 del archivo IgepConexion.php.
{ $transformer = new IgepTransformer(); $carfw = ConfigFramework::getNumericSeparatorsFW(); $backslash = IgepDB::backSlashScape($this->getDsn()); $carbd = IgepDB::caracteresNumericos($this->getDsn()); $transformer->setDecimal($carfw['DECIMAL'],$carbd['DECIMAL'],$carfw['GROUP'],$carbd['GROUP']); //Cogemos la mascara a la que tenemos que transformar el timestamp $fechafw = ConfigFramework::getDateMaskFW(); $fechabd = IgepDB::mascaraFechas($this->getDsn()); $transformer->setDate($fechafw, $fechabd); $transformer->setCharacter("'","''"); $transformer->setCharacter("\\",$backslash); if (!is_array($a_parametros) and $a_parametros!='') { //si el tipo es nulo le ponemos TIPO_CARACTER if(empty($a_tipo)) $a_tipo=TIPO_CARACTER; // 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,),); } else $vector = true; if (is_array($a_tipo)) foreach ($a_parametros as $fila => $tupla) foreach ($tupla as $campo => $valor){ if(empty($a_parametros[$fila][$campo])) continue; $tipo_efectivo = (empty($a_tipo[$campo]['tipo'])? TIPO_CARACTER: ($a_tipo[$campo]['tipo']==TIPO_ENTERO? TIPO_DECIMAL: $a_tipo[$campo]['tipo'])); if ($tipo_efectivo == TIPO_DECIMAL) $tupla[$campo] = $transformer->expandExponent($tupla[$campo], $carfw['DECIMAL'], $carfw['GROUP']); if (($tipo_efectivo == TIPO_FECHA or $tipo_efectivo == TIPO_FECHAHORA) and is_object($tupla[$campo])) $a_parametros[$fila][$campo] = $tupla[$campo]->format($fechabd.($tipo_efectivo==TIPO_FECHAHORA? ' H:i:s':'')); else $a_parametros[$fila][$campo] = $transformer->process($tipo_efectivo, $tupla[$campo]); } if (!$vector) $a_parametros = $a_parametros[0]['col']; }//Fin de prepararOperacion
preparedQuery | ( | $ | str_select, |
$ | dml_ddl, | ||
$ | params, | ||
$ | tipo = null , |
||
&$ | cur = null |
||
) |
Ejecucin de consulta preparada Si se usan placeholders con nombre, en los parametros pasaremos array asociativo.
boolean | $dml_ddl,: | false para select, true para el resto |
array | tipo: tipos para usar en transformaciones |
Definición en la línea 572 del archivo IgepConexion.php.
{ if (empty($cur)) { IgepDebug::setDebug(DEBUG_IGEP,"Preparando sql: $str_select con dml_ddl: ".($dml_ddl? 'true': 'false')); $db_pear = $this->obj_conexion; $in = null; // por defecto todo text if ($dml_ddl) $out = MDB2_PREPARE_MANIP; else $out = null; $cur = $db_pear->prepare($str_select, $in, $out); if (PEAR::isError($cur)) { $this->obj_errorConexion->setError("IGEP-5",'IgepConexion.php',"preparedQuery",$cur,$str_select); throw new gvHidraPrepareException('Error: '.$cur->getMessage()." - Preparando sql: $str_select", 1, null, $cur); } } IgepDebug::setDebug(DEBUG_IGEP,"Ejecutando sql: $str_select<br>* parametros: ".var_export($params,true)); $res = $cur->execute($params); if (PEAR::isError($res)) { $this->obj_errorConexion->setError("IGEP-5",'IgepConexion.php',"preparedQuery",$res,$str_select.' y parmetros de entrada '.var_export($params,true)); throw new gvHidraExecuteException('Error: '.$res->getMessage()." - Ejecutando sql ($str_select) con parmetros: ".var_export($params,true), 2, null, $res); } if ($dml_ddl) return $res; $vec = $res->fetchAll(MDB2_FETCHMODE_ASSOC); if (PEAR::isError($vec)) { $this->obj_errorConexion->setError("IGEP-5",'IgepConexion.php',"preparedQuery",$vec,$str_select); throw new gvHidraFetchException('Error: '.$vec->getMessage()." - Ejecutando recuperacin de registros", 3, null, $vec); } $this->transformResultSet($vec, $tipo); return $vec; }
preparedQueryForUpdate | ( | $ | str_select, |
$ | params, | ||
$ | tipo = null , |
||
&$ | cur = null |
||
) |
Dada una consulta realiza la SELECT correspondiente pero bloqueando las filas para modificacion y usando sentencias preparadas Devuelve vector excepciones: 4: hay bloqueo resto: las propias de preparedQuery
Definición en la línea 614 del archivo IgepConexion.php.
{ IgepDebug::setDebug(DEBUG_IGEP,'IgepConexion: Ejecutamos preparedQueryForUpdate: '.$str_select); $tran = $this->obj_conexion->inTransaction(); // devuelve null si no hemos abierto la transaccion con mdb2 if (!is_null($tran) and !$tran) throw new gvHidraNotInTransException('Para llamar a preparedQueryForUpdate hay que estar en una transaccion'); $str_select .= ' '.IgepDB::obtenerBloqueo($this->getDSN()); try { $res = $this->preparedQuery($str_select, false, $params, $tipo, $cur); } catch (gvHidraExecuteException $e) { // ver si error de bloqueado o timeout $cod = $this->obj_errorConexion->getDescErrorDB(); if (IgepDB::isLocked($this->getDSN(), $cod[0])) throw new gvHidraLockException('IgepConexion: no se puede bloquear los registros solicitados', 4, null, $e->getSqlerror()); throw $e; } return $res; }
transform_BD2FW | ( | &$ | a_parametros, |
$ | a_tipo = TIPO_CARACTER |
||
) |
Convierte datos de DB a FW No valida los datos en origen, por lo que de momento si en origen tenemos una fecha con hora, en el destino estara sin hora.
public
any | $a_parametros | |
any | $a_tipo |
Definición en la línea 741 del archivo IgepConexion.php.
{ $transformer = new IgepTransformer(); $carbd = IgepDB::caracteresNumericos($this->getDsn()); $carfw = ConfigFramework::getNumericSeparatorsFW(); $transformer->setDecimal($carbd['DECIMAL'],$carfw['DECIMAL'],$carbd['GROUP'],$carfw['GROUP']); $fechabd = IgepDB::mascaraFechas($this->getDsn()); $fechafw = ConfigFramework::getDateMaskFW(); $transformer->setDate($fechabd,$fechafw); if (!is_array($a_parametros)) { // 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,),); } else $vector = true; if (is_array($a_tipo)) foreach ($a_parametros as $fila => $tupla) foreach ($tupla as $campo => $valor){ $tipo_efectivo = (empty($a_tipo[$campo]['tipo'])? TIPO_CARACTER: ($a_tipo[$campo]['tipo']==TIPO_ENTERO? TIPO_DECIMAL: $a_tipo[$campo]['tipo'])); if (empty($a_parametros[$fila][$campo])) { if ($tipo_efectivo==TIPO_FECHA or $tipo_efectivo==TIPO_FECHAHORA) $a_parametros[$fila][$campo] = null; continue; } $a_parametros[$fila][$campo] = $transformer->process($tipo_efectivo, $valor); if ($tipo_efectivo==TIPO_FECHA or $tipo_efectivo==TIPO_FECHAHORA) $a_parametros[$fila][$campo] = new gvHidraTimestamp($a_parametros[$fila][$campo]); } if (!$vector) $a_parametros = $a_parametros[0]['col']; }
static transform_BD2User | ( | $ | a_parametros, |
$ | a_tipo, | ||
$ | a_dsn, | ||
$ | a_decimales = 2 |
||
) | [static] |
Convierte de DB a User Si estamos convirtiendo un numero a decimal podemos indicar el numero de decimales.
public
any | $a_parametros | |
any | $a_tipo | |
mixed | $a_dsn | |
number | $a_decimales |
Definición en la línea 813 del archivo IgepConexion.php.
{ 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(); $carbd = IgepDB::caracteresNumericos($a_dsn); $carconf = ConfigFramework::getNumericSeparatorsUser(); $transformer->setDecimal($carbd['DECIMAL'],$carconf['DECIMAL'],$carbd['GROUP'],$carconf['GROUP']); $fechabd = IgepDB::mascaraFechas($a_dsn); $fechaconf = ConfigFramework::getDateMaskUser(); $transformer->setDate($fechabd,$fechaconf); foreach($a_parametros as $fila => $tupla) foreach($a_tipo as $campo => $descTipo){ if(isset($tupla[$campo])) { $tipo_efectivo = (empty($descTipo['tipo'])? TIPO_CARACTER: ($descTipo['tipo']==TIPO_ENTERO? TIPO_DECIMAL: $descTipo['tipo'])); if ($tipo_efectivo == TIPO_DECIMAL) $tupla[$campo] = $transformer->expandExponent($tupla[$campo], $carbd['DECIMAL'], $carbd['GROUP']); if ($descTipo['tipo'] == TIPO_DECIMAL) $tupla[$campo] = $transformer->decimalPadDatos($tupla[$campo], $descTipo['parteDecimal'], $a_dsn); $a_parametros[$fila][$campo] = $transformer->process($tipo_efectivo, $tupla[$campo]); } } } if ($vector) return $a_parametros; else return $a_parametros[0]['col']; } // Fin de prepararPresentacion
transformResultSet | ( | &$ | res, |
$ | typeDesc | ||
) |
Transforma los datos obtenidos por consultar y preparedQuery
Definición en la línea 637 del archivo IgepConexion.php.
{ if (empty($typeDesc)) return; if (array_key_exists('DATATYPES',$typeDesc)) { // convertimos los tipos a la estructura usada en this->v_descCamposPanel si es necesario $datatypes = array(); foreach($typeDesc['DATATYPES'] as $clave=>$valor) if (is_array($valor) and array_key_exists('tipo',$valor)) $datatypes[$clave] = $valor; else $datatypes[$clave] = array('tipo'=>$valor); } else $datatypes = null; $this->transform_BD2FW($res,$datatypes); }
unDiacriticCondition | ( | $ | col, |
$ | val, | ||
$ | tipo = 1 , |
||
$ | prepare = true |
||
) |
Para formar condiciones de busqueda. Actua como en las ventanas de seleccin (donde no se tienen en cuenta mayusculas ni caracteres especiales)
$col | nombre columna |
$val | valor a filtrar en la columna |
$tipo | 0..2, igual que el queryMode |
$prepare | boolean: si hay que transformar el valor a bd |
Definición en la línea 359 del archivo IgepConexion.php.
{ $dsn = $this->getDSN(); $val = strtolower($val); if ($prepare) $this->prepararOperacion($val, TIPO_CARACTER); $expr1 = 'lower('.IgepDB::toTextForVS($dsn, $col).')'; $expr1 = IgepDB::unDiacritic($dsn, $expr1); $val_nolike = IgepDB::unDiacritic($dsn,"'$val'"); switch ($tipo) { case 0: $expr2 = ' = '.$val_nolike; break; case 1: $expr2 = ' like '.IgepDB::unDiacritic($dsn,"'%$val%'"); break; case 2: if (strpos($val,'%')===false and strpos($val,'_')===false) $expr2 = ' = '.$val_nolike; else $expr2 = ' like '.$val_nolike; break; default: throw new gvHidraException('IgepConexion::unDiacriticCondition -> valor de tipo no soportado: '.$tipo); } return $expr1.$expr2; }
$obj_conexion |
Definición en la línea 61 del archivo IgepConexion.php.
$obj_errorConexion |
Definición en la línea 68 del archivo IgepConexion.php.
$persistent [private] |
Definición en la línea 82 del archivo IgepConexion.php.
$v_dsn |
Definición en la línea 75 del archivo IgepConexion.php.