You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

426 lines
12 KiB

<?php
/*-----------------------------------*
* Proyecto : SAI *
* Autor : Federico A. Ocampo *
* Desc: Interfaz web de Seleccion *
* para Armado de Informes *
*-----------------------------------*/
//--------------------------------------
require_once "AppConfig.php";
//--------------------------------------
//-------------------------- FUNCIONES AUXILIARES VARIAS ------------------------------
/** Funcion: armarOpcionesSelect
* Recibe un arreglo asociativo bidimensional de tipo arreglo[n][codigo][descripcion]
* Crea el esquema de opciones HTML <option value="codigo" selected="?">codigo] - descripcion</option>
* El parametro $elegido indica que opcion es la seleccionada
*/
function armarOpcionesSelect(&$appConfig, &$aDatos, $elegido, $descr)
{
$NIVEL_DEBUG = $appConfig->DEBUG["nivel"]; //Para manejar errores
$ret_sel = ""; //retorno de la funcion
//Precondicion: El arreglo no puede estar vacio
$longDatos = sizeof($aDatos);
if($longDatos == 1 )
{
$campoId = key($aDatos[0]);
if($aDatos[0][$campoId] == '' )
{
return $ret_sel;
}
reset($aDatos[0]);
}
if($longDatos > 0)
{
$tagOption = ""; //String para almacenar el codigo HTML de cada opcion de select
//Como el arreglo es asociativo y no conocemos los nombres, los tomamos del primer elemento
$campoId = key($aDatos[0]);
next($aDatos[0]); //avanza el puntero interno del arreglo pos[0] = (Id,Descripcion)
$campoDesc = key($aDatos[0]);
if(isset($descr))
{
next($aDatos[0]); //avanza el puntero interno del arreglo pos[0] = (Id,Descripcion)
$campoDesc2 = key($aDatos[0]);
}
for($i=0;$i<$longDatos;$i++)
{
$tagOption = "<option value=\"{$aDatos[$i][$campoId]}\"";
//Si el elemento actual es el elegido en el select, se agrega el codigo HTML para marcarlo 'selected'
if( isset($elegido)
&& $elegido == $aDatos[$i][$campoId] )
{
$tagOption .= " selected style=\"font-weight: bold;\" ";
}
//El texto de la opcion es Id-Descripcion
$tagOption .= ">{$aDatos[$i][$campoId]}] - {$aDatos[$i][$campoDesc]} {$aDatos[$i][$campoDesc2]} </option>\n";
$ret_sel .= $tagOption;
}
reset($aDatos[0]);
}
else
{
if($NIVEL_DEBUG > 1)
{
$war_msg = "Error en parametros: ${$longDatos}";
trigger_error($war_msg, E_USER_WARNING);
}
}
return $ret_sel;
}
/** Genera el codigo JavaScript de dos arreglos de fechas 'fdes' y 'fhas' a partir de un arreglo de la
* forma arreglo[codigo][descripcion][fechaDesde][fechaHasta]*/
function armarArrayFechasDeVersion(&$aVersiones)
{
//PRECONDICION: el arreglo tiene al menos un elemento
$ret_afv = ""; //retorno de la funcion
$sizeArray = sizeof($aVersiones); //tamanio del arreglo
if($sizeArray > 0)
{
$ret_afv .= "var aFechasDesde = new Array($sizeArray);\n".
"var aFechasHasta = new Array($sizeArray);\n";
for($i=0;$i<$sizeArray;$i++)
{
//crea el codigo javascript de los dos arreglos
$ret_afv .= "aFechasDesde[$i] = \"{$aVersiones[$i]["mov_fdes"]}\";\n".
"aFechasHasta[$i] = \"{$aVersiones[$i]["mov_fhas"]}\";\n";
}
}
else
{
$err_msg = "Error en parametros de funcion armarArrayFechasDeVersion: parametro nulo";
trigger_error($err_msg, E_USER_ERROR);
}
return $ret_afv;
}
//Devuelve la fecha actual en el formato seteado
function verFechaActual($formato)
{
$ret_fecha = strftime($formato, time());
return $ret_fecha;
}
/**
* Utility function to return a value from a named array or a specified default
* Codigo obtenido del soft Mambo Open Source (www.mamboserver.com)
* @copyright (C) 2000 - 2004 Miro International Pty Ltd
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
*
* @param array arreglo con los valores (POST, GET, etc) a recibir
* @param string nombre del parametro
* @param T valor por defecto si no existe el dato
* @param int mascara a utilizar
*
* @return T
*/
define('_CIG_NOTRIM' , 0x0001 );
define('_CIG_ALLOWHTML', 0x0002 );
define('_CIG_NOSLASHES', 0x0003 );
define('_CIG_SQLSLASHES',0x0004 );
function utl_getParam( &$arr, $name, $def=null, $mask=0 )
{
$return = null;
if (isset( $arr[$name] ))
{
if (is_string( $arr[$name] ))
{
/* Elimina los espacios */
if (!($mask & _CIG_NOTRIM)) {
$arr[$name] = trim( $arr[$name] );
}
/* Elimina los tags html */
if (!($mask & _CIG_ALLOWHTML)) {
$arr[$name] = strip_tags( $arr[$name] );
}
/* Elimina las contrabarras */
if ($mask & _CIG_NOSLASHES)
{
if (get_magic_quotes_gpc()) {
$arr[$name] = stripslashes($arr[$name]);
}
}
elseif ($mask & _CIG_SQLSLASHES)
{
// Stripslashes
if (get_magic_quotes_gpc()) {
$arr[$name] = stripslashes($arr[$name]);
}
// Quote if not integer
if (!is_numeric($arr[$name])) {
if (function_exists('mysql_real_escape_string')) {
$arr[$name] = @mysql_real_escape_string($arr[$name]);
} else {
$arr[$name] = @mysql_escape_string($arr[$name]);
}
}
}
else
{
//Por defecto escapa los caracteres sin importar las Magic Quotes
if (get_magic_quotes_gpc()) {
$arr[$name] = stripslashes($arr[$name]);
}
$arr[$name] = addslashes($arr[$name]);
}
}
return $arr[$name];
}
else
{
return $def;
}
}
/**
* Prints the page header.
* @param $title The title of the page
* @param $css css tag
* @param $script script tag
*/
function utl_printHeader($title = '', $css = null, $script = null) {
global $appConfig;
echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-Transitional.dtd\">\n";
echo "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"es\" lang=\"es\">\n";
echo "<head>\n";
echo '<title>', htmlspecialchars($appConfig['app']['name']);
if ($title != '') {
echo " - {$title}";
}
echo "</title>\n";
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />\n";
echo '<meta name="author" content="', htmlspecialchars($appConfig['app']['comp']),"\" />\n";
echo '<meta name="description" content="', htmlspecialchars($appConfig['app']['desc']),"\" />\n";
if ($css) {
echo "{$css}\n";
}
if ($script) {
echo "{$script}\n";
}
echo "</head>\n";
}
/**
* Prints the page footer
*/
function utl_printFooter() {
echo "</body>\n</html>\n";
}
/**
* Prints the page body.
* @param $bodyClass - name of body class
*/
function utl_printBody($bodyClass = '', $onload='', $onsubmit='')
{
$bodyClass = htmlspecialchars($bodyClass);
echo "<body ", ($bodyClass == '' ? ' ' : " class=\"{$bodyClass}\" "),
($onload == '' ? '' : " onload=\"{$onload}\" "),
($onsubmit == '' ? '' : " onsubmit=\"{$onsubmit}\" "),
">\n";
}
/**
* Prints the HTML header (H1,.. Hn)
* @param int $size header font size
* @param string $title title to print
*/
function utl_printTitle($title, $size = 1, $class = '') {
$class = ($class != '') ? " class=\"$class\"" : '';
echo "<h$size".$class.">$title</h$size>\n";
}
/** Convierte la cadena aaaa-mm-dd a dd/mm/aaaa */
function utl_Formatea_fecha( &$cadena )
{
if(strlen($cadena)>0)
{
$pattern = '/-/';
$v_fecha= preg_split($pattern, trim($cadena), -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
$cadena = $v_fecha[2]. '/'. $v_fecha[1] . '/'. $v_fecha[0];
}
}
/** Convierte la cadena dd/mm/aaaa a aaaa-mm-dd */
function utl_Formatea_fecha_pg( &$cadena )
{
if(strlen($cadena)>0)
{
$pattern = '/\//';
$v_fecha= preg_split($pattern, trim($cadena), -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
$cadena = $v_fecha[2]. '-'. $v_fecha[1] . '-'. $v_fecha[0];
return $cadena;
}
}
/** Calcula edad de una persona a partir de la fecha de nacimiento y una fecha actual
* @param string $p_FecNac Fecha de nacimiento [AAAA-MM-DD]
* @param string $p_FecAct Fecha actual [AAAA-MM-DD]
* @return array Retorna una matriz de la forma matriz[item_registro][campo1][campo2]...[campon]
*/
function utl_Calcula_Edad($p_FecNac, $p_FecAct)
{
if(!$p_FecAct)
{
$p_FecAct=date("Y-m-d");
}
if( strlen($p_FecNac) < 0 )
{
echo "La fecha de nacimiento, para el calculo de la edad, no puede ser nula<br />";
return 0;
}
if( strlen($p_FecAct) < 0 )
{
echo "La fecha actual, para el calculo de la edad, no puede ser nula<br />";
return 0;
}
$v_pattern = '/-/';
$v_FecNac= preg_split($v_pattern, trim($p_FecNac), -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
$v_FecAct= preg_split($v_pattern, trim($p_FecAct), -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
if( (count($v_FecNac)!=3) )
{
echo "El formato de la fecha de nacimiento es INVALIDO [AAAA-MM-DD]<br />";
return 0;
}
if( (count($v_FecAct)!=3) )
{
echo "El formato de la fecha actual es INVALIDO [AAAA-MM-DD]<br />";
return 0;
}
$v_Edad = $v_FecAct[0]-$v_FecNac[0];
if( ( $v_FecAct[1] < $v_FecNac[1] )
|| ( $v_FecAct[1] == $v_FecNac[1] && $v_FecAct[2] < $v_FecNac[2]) )
$v_Edad=$v_Edad-1;
return $v_Edad;
}
/** Funcion que Agrega un mes a una fecha dada
* @param $p_FecCar: Fecha de carga, en formato dd/mm/aaaa
* @param $p_mes: Meses a agregar
* @return Cadena del tipo dd/mm/aaaa con el mes incrementado
*/
function utl_AgregaMes($p_FecCar, $p_mes)
{
$pattern = '/\//';
$v_fecha= preg_split($pattern, trim($p_FecCar), -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
$p_FecCar=$v_fecha[1]. "/" . $v_fecha[0] . "/" . $v_fecha[2];
$my_time = strtotime($p_FecCar);
$nextmonth = mktime(0, 0, 0, date("m", $my_time)+$p_mes, date("d", $my_time), date("Y", $my_time));
return date("d/m/Y", $nextmonth);
}
/** Funcion que cuenta los registros devueltos por un query, este revisa el primer campo
* que por definicion debe ser parte de la clave y no debe ser nulo */
function utl_count(&$pDatos)
{
$longDatos = sizeof($pDatos);
if($longDatos == 1 )
{
$campoId = key($pDatos[0]);
if($pDatos[0][$campoId] == '' )
{
return 0;
}
return 1;
}
return $longDatos;
}
/** Verifica que la primer fecha sea mayor que la segunda
Retorna 0 si la primera es mayor que la segunda
1 si la segunda es mayor que la primera
*/
function utl_FechaMayorIgual( $p_fechaA, $p_fechaB )
{
//Cargar los arrays desde y hasta, de esta forma
// array[0] = dia, array[1] = mes, array[2] = anio
$v_pattern = '/\//';
$v_array_fecha_A = preg_split($v_pattern, trim($p_fechaA), -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
$v_array_fecha_B = preg_split($v_pattern, trim($p_fechaB), -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
$v_dia_A=$v_array_fecha_A[0];
$v_mes_A=$v_array_fecha_A[1];
$v_anio_A=$v_array_fecha_A[2];
$v_dia_B=$v_array_fecha_B[0];
$v_mes_B=$v_array_fecha_B[1];
$v_anio_B=$v_array_fecha_B[2];
if( $v_anio_B < $v_anio_A) //Anio
return 0;
else
{
if( $v_anio_B == $v_anio_A)
{
if ( $v_mes_A > $v_mes_B ) //Mes
return 0;
else
{
if( $v_mes_B == $v_mes_A)
{
if( $v_dia_A > $v_dia_B) //Dia
return 0;
}
}
}
}
return 1;
}
function utl_Mensaje($ptipo, $pcod, $pmensaje, $pquery)
{
$return = '';
$v_tipo=strtoupper($ptipo);
$return .= '<strong><em style="color:#9933CC;">' . $pcod. "</em></strong> ";
if(trim($v_tipo) == "OK")
{
$return .= '<strong><em style="color:green;">Ok</em></strong> ';
}
if(trim($v_tipo) == "ERROR")
{
$return .= '<strong><em style="color:red;">Error: </em></strong>';
}
if(trim($v_tipo) == "ADVERTENCIA")
{
$return .= '<strong><em style="color:#FF9900;">Advertencia: </em></strong>';
}
$return .= '<em style="color:blue;">' . $pmensaje . '</em> ';
if($pquery!='')
$return .= ' - Consulta: <em style="color:blue;">' . $pquery . '</em>';
$return.='<br />';
return $return;
}
?>