#!/usr/bin/perl
$| = 1;
#--------------------------------------------------------------------------------------------
# genmanejabdmysql.pl - Programa para manejar la base de datos mysql
#--------------------------------------------------------------------------------------------
#
# Funciones: &inicializarvariables; Inicializa ciertas variables claves.
# ObtenerDatosForma(\%gl_campos); Para leer los datos enviados por la forma de la
# de la aplicacin cuyo nombre está conformado por
# varias variables "armadas" por el sistema:
# Nombre del proyecto_Nombre de la BD_form.html
# &leerparametros; Lee los parámetros de la aplicacin en el archivo
# llamado: Nombre del proyecto_Nombre de la BD_par
# &MuestreCampos(%gl_campos); Opcional para mostrar los campos de la BD para
# pruebas
# &menudeoperacion(%gl_campos, $operacion);Busca en %gl_campos el valor de $operacion
# &ejecutaroperacion; Controla el proceso de la ejecucin y corre las
# operaciones. Este mdulo controla el CGI
# &cerraroperacion; Termina el proceso cuando se selecciona la opcin
# salir
#--------------------------------------------------------------------------------------------
use DBI;
use DB_File; # Este programa usa DBI para acceder las Bases de Datos
use Fcntl ':flock'; # Funciones para bloquear archivos compartidos
use Mail::POP3Client;
##use MIME::Entity;
##use MIME::Parser;
use File::Basename;
use CGI;
#----------------Nuevo
use Socket;
print("Content-Type: text/html; charset=iso-8859-1\n\n");
#print("Content-Type: text/html; charset=utf-8\n\n");
#----------------Nuevo
$gl_listartodaslashorascal = 0;
&abrirlibrerias1;
my $cgi = new CGI;
@arr = $cgi->param();
#print ("
Hola @arr");
$guion = "";
$k = 0;
@arreglousuariocal = ();
#---------------------------------------------------------------------------------------
# Esta variable determina de donde viene la llamada a genmanejabdsql, pues si viene de
# genvercalendario.pl tiene campos del tipo fusuariocal y si no, viene de otro lado.
# Dependiendo de eso operacioentrar varíos campos de entrada del formulario o no.
#---------------------------------------------------------------------------------------
$vienedegenvercal = 0;
foreach $c (@arr) {
$gl_campos{$c} = $cgi->param($c);
if ($gl_campos{'fcronohoras'} == 0 || $gl_campos{'fcronohoras'} eq ""){$gl_campos{'fcronohoras'} = 9999};
# print ("
Parametros $c $gl_campos{$c}"); ### Lista campos de la forma
#---------------------------------------------------------------------------------------
# Analiza $gl_campos para crear la cadena de usuarios a los cuales se les va a mmirar su calendario
# Crea $cadenausauriocal para que el sistema mire si hay citas o no. Solo sirve para la opcin de
# citas
#---------------------------------------------------------------------------------------
$cadenadeusuariocal = "";
#------------------------------------
if ($c =~ /fusuariocal/) {
$vienedegenvercal = 1;
$arreglousuariocal[$k] = $gl_campos{$c};
$k++;
$cadenausuariocal = $cadenausuariocal.$guion.$gl_campos{$c};
$guion = "-";
}
}
#---------------------------------------------------------------------------------------
# Esta variable lee el usuario original debido a que operacioncitas hace operaciones con usuarios
# del grupo y cambia $gl_campos{'fusuario'}. Al almacenar el usuario original permitir controlar el
# acceso de otros usuarios al calendario
$usuariooriginal = $gl_campos{'fusuario'};
#---------------------------------------------------------------------------------------
&abrirlibrerias2;
&iniciarvalidacion;
if ($gl_campos{'fcronoop'} ne ""){$gl_listartodaslashorascal = 1};
if ($gl_campos{'basedatos'} eq ""){print ("
No tiene autorizacin");exit 0;};
&inicializarmimes;
&leerpuente;
&validardatos;
#&grabarclavedenav;
&leerparametros; # Lee el archivo proyecto.parametros
if ($gl_campos{'fcronodatos'} ne "" || $gl_campos{'fcronofechai'} ne ""){
&leerdatoscrono;
$cronodiastodo = $gl_campos{'fcronodias'};
$indicecronodias = 0;
$loncronodiastodo = length($cronodiastodo);
};
#foreach $d (keys(%gl_campos)){$c = $gl_campos{$d};print ("
Campos $d $c");} ####### Lista campos de la forma
if ($gl_campos{'proposito'} eq ""){$gl_campos{'proposito'} = " "};
if ($gl_campos{'lugar'} eq ""){$gl_campos{'lugar'} = " "};
if ($gl_campos{'operacion'} eq "entrar"){
$gl_campos{'lugar'} =~ s/$gl_campos{'fusuario'}\: //g;
$gl_campos{'lugar'} = $gl_campos{'fusuario'}.": ".$gl_campos{'lugar'};
}
if ($gl_campos{'asistentes'} eq ""){$gl_campos{'asistentes'} = " "};
#&MuestreCampos(%gl_campos); # Opcional para listar los campos leidos
# de la forma
if ($gl_niveldemensajes eq "1"){$nombreprograma = "genmanejabdsql.csv";open (PARAMETROS, ">uml/$nombreprograma");foreach $d (keys(%gl_campos)){$c = $gl_campos{$d};$tmp = $nombreprograma."\|".$d."\|".$c;print PARAMETROS ("$tmp\n")}};
&menudeoperacion(%gl_campos, $operacion); # Busca en %gl_campos el valor de $operacion
$quehacerdespues = "salir";
&ejecutaroperacion;
&versicierragraba;
&mensajedeterminacion;
&cerraroperacion;
sub validardatos {#Valda datos de selección de texto, edición y calendario
# Seleccion de texto
if ($gl_campos{'operacion'} eq "selecciondetexto") {
$bdoriginal = $gl_campos{'basedatos'};
$bdseleccorig = $gl_campos{'fbdparaselecc'};
@arr = split(/\./, $bdoriginal);
$tbd = pop(@arr);
$gl_campos{'basedatos'} = $gl_campos{'fbdparaselecc'}.".".$tbd;
}
# Editar
if ($gl_campos{'operacion'} eq "editar") {
$bdoriginal = $gl_campos{'basedatos'};
$bdseleccorig = $gl_campos{'fbdparaselecc'};
@arr = split(/\.mysql/, $gl_campos{'basedatos'});
$gl_campos{'fbdparaselecc'} = $arr[0];
}
# Horas
if ($gl_campos{'horai'} ne "" || $gl_campos{'horaf'} ne "") {
@arr1 = split (/:/, $gl_campos{'horai'});
@arr2 = split (/:/, $gl_campos{'horaf'});
$horai = $arr1[0].$arr1[1];
$horaf = $arr2[0].$arr2[1];
if ($horai > $horaf) {
print ("
");
print ("");
print ("");
&mensajedeterminacion;
exit (0);
}
};
if ($gl_campos{'horai'} ne ""){
@tmp = split (/:/, $gl_campos{'horai'});
if ($tmp[0] < 10) {
$tmp[0] = "0".$tmp[0];
$tmp[0] =~ s/00/0/g;
}
$gl_campos{'horai'} = $tmp[0].":".$tmp[1];
};
if ($gl_campos{'horaf'} ne ""){
@tmp = split (/:/, $gl_campos{'horaf'});
if ($tmp[0] < 10) {
$tmp[0] = "0".$tmp[0];
$tmp[0] =~ s/00/0/g;
}
$gl_campos{'horaf'} = $tmp[0].":".$tmp[1];
};
@arr = ();
$k = 0;
if ($gl_campos{'fcronodias'} ne ""){
for ($i = 0;$i < 7;$i++){
$arr[$i] = substr($gl_campos{'fcronodias'},$k,2);
$k = $k +2;
}
$lonarr = @arr;
foreach $c (@arr){
if ($mensajes{'gc-nombre-dias'} !~ /$c/ && $c ne ""){
print ("");
print ("");
print ("");
print (" $mensajes{'gc-nombre-dias'}");
print ("");
exit 0;
};
}
}
}
sub abrirlibrerias1 {
&librerias (__FILE__, __LINE__,
"./libreria/libinicializarvariables.pl");
&librerias (__FILE__, __LINE__,
"$dir_inicializarvariables");
&librerias (__FILE__, __LINE__,
"./libreria/libobtenercampos.pl");
&librerias (__FILE__, __LINE__,
"$dir_obtenercampos");
&librerias (__FILE__, __LINE__,
"./libreria/libcorreo.pl");
&librerias (__FILE__, __LINE__,
"$dir_correo");
}
sub abrirlibrerias2 {#Abre librerías
&librerias (__FILE__, __LINE__,
"./libreria/libclavesdenavegacion.pl");
&librerias (__FILE__, __LINE__,
"$dir_clavesdenavegacion");
&leerclavedenavegacion;
&librerias (__FILE__, __LINE__,
"./libreria/libleerpuente.pl");
&librerias (__FILE__, __LINE__,
"$dir_leerpuente");
&librerias (__FILE__, __LINE__,
"./libreria/libvalidar.pl");
&librerias (__FILE__, __LINE__,
"$dir_validar");
}
sub versicierragraba {#Cierra archivo en caso listar sobre archivo de salida
if ($gl_campos{'fgraba'} eq "si") {
close (LISTADO);
}
}
sub inicializarmimes {#Inicia MIMES
%tmime = ();
$tmime{'dos'} = "applicatios/msword";
$tmime{'xls'} = "applicatios/vnd.ms-excell";
$tmime{'gif'} = "image/gif";
}
#
# Subprograma mensajedeterminacion
#
sub mensajedeterminacion {#Mensaje de terminación
if ($gl_campos{'fdispositivo'} eq "pc"){
$target = "b";
} else {$target = "new"};
@arr = ();
@arr = split(/\./, $gl_campos{'basedatos'});
$archforma = "/cgi-bin/$gl_dircgiaplicacion/$gl_dircgiproyectos/$proyecto"."_"."$basededatoshtml"."_";
$archforma = $archforma."$gl_forma.pl?fusuario=$gl_campos{'fusuario'}&fbden=$arr[0].$arr[1]";
print (" ");
print (" $mensajes{'gmsql-titulomensajedet'}");
print (" ");
print (" ");
print ("