',','GROUP'=>'.'); } /** * Define los carácteres usados en internamente (PHP) para los números * * @access public * @static * @return mixed array asociativo con entrada 'DECIMAL' y 'GROUP' */ function caracteresNumericosNegocio(){ return array('DECIMAL'=>'.','GROUP'=>'se usa??'); } /** * Da formato a un número desde PHP para presentarlo en pantalla. * * @access public * @static * @param numero numero a formatear * @param numero decimales a considerar * @return string devuelve el número formateado */ function formatoNumero($num,$decimales=2){ $car = ConfIgep::caracteresNumericos(); $numf = number_format($num, $decimales, $car['DECIMAL'], $car['GROUP']); return $numf; } /** * Da formato a un número de pantalla para manejarlo en el php * Independientemente de la configuracion de bds y de presentación, * el php maneja el punto decimal. * Si hay sep. de grupos y de decimales, tambien se quitan los de grupos. * * @access public * @static * @param numero a formatear * @return string devuelve el número para PHP */ function transformaNumero($num){ $carconf = ConfIgep::caracteresNumericos(); $posGroup = strrpos($num,$carconf['GROUP']); $posUltDec = strrpos($num,$carconf['DECIMAL']); if (!($posUltDec === false) && !($posUltDec === false)) { $num = str_replace($carconf['GROUP'], '', $num); $posUltDec = strrpos($num,$carconf['DECIMAL']); } if ($carconf['DECIMAL'] != '.') { if (!($posUltDec === false)) $num = substr_replace($num,'.',$posUltDec,1); } return $num; } /** * Define la mascara de representación de fechas * * @access public * @static * @return string */ function mascaraRepresentacionFechas(){ return 'd/m/Y'; } /** * Define la mascara de representación de fechas en negocio (PHP) * * @access public * @static * @return string */ function mascaraFechasNegocio(){ return 'Y/m/d'; } /** * Da formato a una fecha para presentarlo en pantalla. * Pendiente de hacer uso de IgepTransformer * * @access public * @static * @param string fecha en formato timestamp * @param string tipo de formato: FECHAHORA, FECHA * @return string devuelve la fecha formateada */ function formatoFecha($fecha,$tipo){ $conf_negocio = ConfIgep::mascaraRepresentacionFechas(); if ($tipo == 'FECHA') return date($conf_negocio, $fecha); if ($tipo == 'FECHAHORA') return date($conf_negocio.' H:i:s', $fecha); return '!!tipo fecha incorrecto!!'; } /** * Da formato a una fecha pantalla para tratarla en negocio * Devuelve false si es incorrecta, o null si el valor es vacio * Hay algunas fechas como '30/02/2007' que no dan error con la funcion * strtotime sino que equivale a 2/3/2007. Por ese motivo añadimos mas * controles y asi poder validar la entrada del usuario. * * @access public * @static * @param string fecha en formato string * @return time devuelve la fecha formateada */ function formatoFechaNegocio($str_fechaHora){ if ($str_fechaHora=='' or $str_fechaHora==NULL or !isset($str_fechaHora)) return NULL; $fecha_ori = ConfIgep::mascaraRepresentacionFechas(); $fecha_dest = ConfIgep::mascaraFechasNegocio(); if ($fecha_ori != $fecha_dest) { $transformer = new IgepTransformer(); $transformer->setDate($fecha_ori,$fecha_dest); $str_fechaHora = $transformer->process(TIPO_FECHAHORA, $str_fechaHora); } $res = strtotime($str_fechaHora); // hasta php5.1 la funcion devuelve -1 si error if ($res == -1) return false; list($f, $h) = explode(" ",$str_fechaHora); if ($f != date($fecha_dest, $res)) return false; if (isset($h)) { list($hh, $hm, $hs) = explode(':',$h); if ($hh<0 || $hh>23 || $hm<0 || $hm>59 || (isset($hs) && ($hs<0 || $hs>59)) ) return false; } return $res; } /** * Compara dos fechas en formato timestamp * Devuelve un número positivo si la segunda fecha es posterior a la primera * * @access public * @static * @param string fecha en formato string * @param string fecha en formato string * @return int (timestamp) */ function comparaFechas($str_fechaHora1, $str_fechaHora2){ $fecha1 = ConfIgep::formatoFechaNegocio($str_fechaHora1); $fecha2 = ConfIgep::formatoFechaNegocio($str_fechaHora2); return ($fecha2-$fecha1); } // Fin de comparaFechas /** * Este método prepara los datos que vienen de una consulta de la BD antes de mostrarse en * el formato propio de IGEP. Generalmente, las fechas y los decimales en los sistemas que * tengan mascaras diferentes a las de IGEP (p.e. MySQL). * Este método puede ser invocado por el usuario, o bien se puede llamar opcionalmente con los metodos * 'consultar' de IgepNegocio e IgepConexion si le pasamos un segundo parámetro indicandole el NODO_INTERFAZ. * Se puede optimizar controlando que en el array de tipos haya fechas o numeros decimales. * * @access public * @param any $a_parametros * @param any $a_tipo * @return none */ function prepararPresentacion( $a_parametros, $a_tipo, $dsn) { $transforma = false; $transformer = new IgepTransformer(); $carbd = IgepDB::caracteresNumericos($dsn); $carconf = ConfIgep::caracteresNumericos(); if ($carbd['DECIMAL'] != $carconf['DECIMAL']) { $transformer->setDecimal($carbd['DECIMAL'],$carconf['DECIMAL']); $transforma = true; } $fechabd = IgepDB::mascaraFechas($dsn); $fechaconf = ConfIgep::mascaraRepresentacionFechas(); if ($fechabd != $fechaconf) { $transformer->setDate($fechabd,$fechaconf); $transforma = true; } if ($transforma) { if(is_array($a_parametros)) foreach($a_parametros as $fila => $tupla){ foreach($tupla as $campo => $valor) $a_parametros[$fila][$campo] = $transformer->process($a_tipo[$campo]['tipo'],$valor); } elseif($a_parametros!='' and $a_tipo!='') $a_parametros = $transformer->process($a_tipo,$a_parametros); } return $a_parametros; } // Fin de prepararPresentacion /** * Este método prepara los datos que vienen de una consulta de la BD antes de operar en PHP. * Generalmente, las fechas y los decimales en los sistemas que tengan mascaras diferentes a las de PHP. * Este método puede ser invocado por el usuario, o bien se puede llamar opcionalmente con los metodos * 'consultar' de IgepNegocio e IgepConexion si le pasamos un segundo parámetro indicandole el NODO_NEGOCIO. * Se puede optimizar controlando que en el array de tipos haya fechas o numeros decimales. * * @access public * @param any $a_parametros * @param any $a_tipo * @param mixed $dsn * @return mixed */ function prepararNegocio( $a_parametros, $a_tipo, $dsn) { $transforma = false; $transformer = new IgepTransformer(); $carbd = IgepDB::caracteresNumericos($dsn); $carconf = ConfIgep::caracteresNumericosNegocio(); if ($carbd['DECIMAL'] != $carconf['DECIMAL']) { $transformer->setDecimal($carbd['DECIMAL'],$carconf['DECIMAL']); $transforma = true; } $fechabd = IgepDB::mascaraFechas($dsn); $fechaconf = ConfIgep::mascaraFechasNegocio(); if ($fechabd != $fechaconf) { $transformer->setDate($fechabd,$fechaconf); $transforma = true; } if ($transforma) { if(is_array($a_parametros)) foreach($a_parametros as $fila => $tupla){ foreach($tupla as $campo => $valor) $a_parametros[$fila][$campo] = $transformer->process($a_tipo[$campo]['tipo'],$valor); } elseif($a_parametros!='' and $a_tipo!='') $a_parametros = $transformer->process($a_tipo,$a_parametros); } return $a_parametros; } // Fin de prepararNegocio function obtenerDefVentanaGeneral($constanteConstruccion){ switch($constanteConstruccion){ case 'PROVINCIAS': //Ventana de Selección de Provincias $datosVentana['consulta'] = 'select cpro, dpro from tcom_provincias'; $datosVentana['camposBusqueda'] = array('cpro','dpro'); break; case 'SERVICIOS': //Ventana de Seleccion para los Servicios $datosVentana['consulta'] = 'select cdg, cserv, dserv from vcom_servicios'; $datosVentana['camposBusqueda'] = array('cdg','cserv','dserv'); break; default: return -1; } return $datosVentana; } function obtenerDefListaGeneral($nombre){ switch($nombre){ case 'MUNICIPIOS': //Lista de Municipios $consulta = 'select cmun as "valor",dmun as "descripcion" from tcom_municipios'; break; case 'MUNICIPIOS-CV': //Lista de Municipios-CV $consulta = 'select cmun as "valor",dmun as "descripcion" from tcom_municipios where cpro in (\'03\',\'12\',\'46\')'; break; case 'COMARCAS': //Lista de Comarcas $consulta = ' select DISTINCT tcom_comarcas.ccom as "valor",dcom as "descripcion" from tcom_comarcas, tcom_municipios WHERE tcom_municipios.ccom = tcom_comarcas.ccom'; break; case 'PROVINCIAS': //Lista de Provincias. $consulta = 'select cpro as "valor",dpro as "descripcion" from tcom_provincias'; break; case 'PROVINCIAS-CV': //Lista de Provincias. $consulta = 'select cpro as "valor",dpro as "descripcion" from tcom_provincias where cpro in (\'03\',\'12\',\'46\')'; break; case 'DIRGRAL': //Lista de Direcciones Generales. $consulta = ' select cdg as "valor",ddg as "descripcion" from tcom_dirgral WHERE cdg in (\'01\',\'05\',\'06\',\'03\',\'04\',\'17\',\'18\')'; break; case 'VERSIONESAPLICACION': $str_aplicacion = ComunSession::dameAplicacion(); $str_modulo = ComunSession::hayModulo('M_INTRANET'); $consulta = " select numver as \"valor\", case when numver like '%ctual' THEN ' Otros' ELSE numver END as \"descripcion\", coalesce(max(fver),current_date-10000) from tptc_peticiones WHERE (numver LIKE '%.%' OR numver like '%ctual' or ('".$str_modulo."'='1' and numver='Próxima')) and estado='SO' and VISIBLEUSER = 'S' AND APLICACION = '".$str_aplicacion."' GROUP BY NUMVER ORDER BY 3 DESC"; break; case 'PETICIONES': $consulta = 'select estado as "valor", desc_estado as "descripcion" from tptc_estado_peticiones'; break; default: $consulta = -1; } return $consulta; }//Fin de obtenerDefListaGenerales } /** Variable que indica el nivel de log que se va a registrar. * Los valores posibles son: * LOG_NONE * LOG_ERRORS * LOG_AUDIT * LOG_ALL */ $g_log = LOG_ERRORS; if (ConfIgep::es_desarrollo()) { $g_dsn_ora = array( 'phptype' => 'oci8', 'username' => 'igep_acons', 'password' => 'paco', 'hostspec' => 'rosa.luna', ); $g_dsn_ptc = array( 'phptype' => 'pgsql', 'username' => 'ptc_ac', 'password' => 'ptccc', 'hostspec' => 'rosa.coput.gva.es', 'database' => 'marte', //'port' => '5432', en pgsql ); $g_dsn_log = array( 'phptype' => 'pgsql', 'username' => 'igep_alog', 'password' => 'errlog', 'hostspec' => 'rosa.coput.gva.es', 'database' => 'marte', ); } else { $g_dsn_ora = array( 'phptype' => 'oci8', 'username' => 'igep_acons', 'password' => 'paco', 'hostspec' => 'lola.luna', ); $g_dsn_ptc = array( 'phptype' => 'pgsql', 'username' => 'ptc_ac', 'password' => 'ptcrocc', 'hostspec' => 'lola.coput.gva.es', 'database' => 'marte', //'port' => '5432', en pgsql ); $g_dsn_log = array( 'phptype' => 'pgsql', 'username' => 'igep_alog', 'password' => 'errlog', 'hostspec' => 'lola.coput.gva.es', 'database' => 'marte', ); } ?>