#!/usr/bin/perl # -------------------------------COMENTARIO GLOBAL--------------- # --------------------------------------------------------------- # SCRIPT. # ----------- # prontus_taxport_lista.cgi # --------------------------------------------------------------- # UBICACION. # ----------- # /cgi-bin/. # --------------------------------------------------------------- # PROPOSITO. # ----------- # Listar articulos prontus tipo tema, en base a la info de la BD prontus. # Este Administrador implementa links del tipo "anterior/sgte". # Si la pág. está y no requiere actualización: # La despliego solamente. # Si la pág. no está o requiere actualización: # La genero dinámicamente y construyo los links a las demás páginas tb. dinámicamente. # # Cuando la pag. requiere actualización: # Requerirá actualización si la pagina tiene una antiguedad igual o mayor al parametro 'as' # Una vez que se ha decidido actualizar la página, el criterio para seleccionar los artículos a considerar es el sgte.: # Considerar sólo aquellos artículos cuya fecha de publicacion (la que ingresa el usuario) es <= fecha hoy. # --------------------------------------------------------------- # LLAMADAS A SCRIPTS. # ------------------------ # /prontus4_nots/site/artic//pags/.html # --------------------------------------------------------------- # INVOCACIONES ACEPTADAS. # ------------------------ # /cgi-bin/prontus_taxport_lista.cgi?seccion=%%_SECCION1%%&tema=%%_TEMA1%%&subtema=%%_SUBTEMA1%%&_REL_PATH_PRONTUS=/prontus_dev&&_MV=$FORM{'_MV'} # Los primeros 3 parametros son optativos, si uno no viene se muestra todo para ese parametro.- # --------------------------------------------------------------- # ARCHIVOS DE ENTRADA. # ------------------------ # Plantilla: /prontus4_nots/plantillas/cache/nroedic/tema/*.* # --------------------------------------------------------------- # ARCHIVOS DE SALIDA. # ------------------------ # /prontus4_nots/site/cache/nroedic/tema/.html # --------------------------------------------------------------- # Tablas. # ------------------------ # BD: 'prontus_'. Tabla: 'ART', 'SECC', 'TEMAS', 'SUBTEMAS' # --------------------------------------------------------------- # --------------------------------------------------------------- # HISTORIAL DE VERSIONES. # --------------------------- # 1.0 - 15/01/2003 - YCH - Primera Version basada en /sites/cooperativa.cl/web/prontus/coop_ptema_lista.cgi # 1.1 - 08/01/2003 - YCH - Adaptaciones DRs # 1.2 - 02/06/2004 - MCO - Se eliminan los saltos de linea al titulo para que no de errores JS al # asignar titulos a los recortes. # -------------------------------BEGIN SCRIPT-------------------- # --------------------------------------------------------------- # DIRECTIVAS DE COMPILACION. # --------------------------- BEGIN { require 'dir_cgi.pm'; my ($ROOTDIR) = $ENV{'DOCUMENT_ROOT'}; # desde el web $ROOTDIR .= '/' . $DIR_CGI_CPAN; unshift(@INC,$ROOTDIR); # Para dejar disponibles las librerias }; use prontus_varglb; &prontus_varglb::init(); use lib_prontus; use glib_hrfec_02; use glib_dbi_02; use glib_cgi_04; use glib_fildir_02; use strict; use DBI; # --------------------------------------------------------------- # MAIN. # --------------------------------------------------------------- my ($BD, $LOOP, %FORM, $NOM_PRONTUS, %TABLA_TEM); my ($FILASXPAG); &glib_cgi_04::new(); $FORM{'_REL_PATH_PRONTUS'} = &glib_cgi_04::param('_REL_PATH_PRONTUS'); # ejemplo : /publicadores/prontus_noticias $FORM{'_MV'} = &glib_cgi_04::param('_MV'); # nombre de la vista $FORM{'_MV'} =~ s/[^\w]//g; # rotulos tax my ($RELDIR_ARTIC) = "$FORM{'_REL_PATH_PRONTUS'}$prontus_varglb::DIR_CONTENIDO$prontus_varglb::DIR_ARTIC/%%DIRFECHA%%$prontus_varglb::DIR_PAG"; my ($RELDIR_PORT_DST) = "$FORM{'_REL_PATH_PRONTUS'}$prontus_varglb::DIR_CONTENIDO$prontus_varglb::DIR_PTEMA"; my ($RELDIR_PORT_TMP) = "$FORM{'_REL_PATH_PRONTUS'}$prontus_varglb::DIR_TEMP$prontus_varglb::DIR_PTEMA"; my ($RELPATHFILE_PORT_TMP); my ($EXT_PORT_TMP); my ($CURR_DTIME) = &glib_hrfec_02::get_dtime_pack4(); my ($SECCION_FOR_FILE, $TEMA_FOR_FILE); main:{ if ($FORM{'_MV'}) { # nombre de la vista. $RELDIR_PORT_DST = $RELDIR_PORT_DST . '-' . $FORM{'_MV'}; $RELDIR_PORT_TMP = $RELDIR_PORT_TMP . '-' . $FORM{'_MV'}; }; if ((! -d "$prontus_varglb::DIR_SERVER$FORM{'_REL_PATH_PRONTUS'}") || (! -d "$prontus_varglb::DIR_SERVER$RELDIR_PORT_TMP")) { print "Content-Type: text/html\n\n"; print "Error: Directorios de trabajo no válidos"; exit; }; $RELPATHFILE_PORT_TMP = $RELDIR_PORT_TMP . '/' . &get_tpl_tema("$prontus_varglb::DIR_SERVER$RELDIR_PORT_TMP"); $EXT_PORT_TMP = &get_ext_ptema($RELPATHFILE_PORT_TMP); # extension con punto if (! -f "$prontus_varglb::DIR_SERVER$RELPATHFILE_PORT_TMP") { print "Content-Type: text/html\n\n"; print "Error: Plantilla de taxport no válida"; exit; }; # Carga variables de configuracion. my $path_conf = &get_path_conf(); &lib_prontus::load_config($path_conf); $path_conf =~ s/^$prontus_varglb::DIR_SERVER//; $FILASXPAG = $prontus_varglb::TAXPORT_ARTXPAG; $FORM{'seccion'} = &glib_cgi_04::param('seccion'); $FORM{'seccion'} =~ s/[^0-9]//g; # orion $FORM{'tema'} = &glib_cgi_04::param('tema'); $FORM{'tema'} =~ s/[^0-9]//g; # orion $FORM{'subtema'} = &glib_cgi_04::param('subtema'); $FORM{'subtema'} =~ s/[^0-9]//g; # orion $FORM{'ft'} = &glib_cgi_04::param('ft'); $FORM{'ft'} =~ s/[^0-1]//g; # forzar taxport # Si ft no viene, entonces si el nivel taxonomico tiene asociado una portada, se redireccionara hacia ella. # $FORM{'tipart'} = &glib_cgi_04::param('tipart'); # Ej: 'fid_general' $FORM{'nropag'} = &glib_cgi_04::param('nropag'); $FORM{'nropag'} =~ s/[^0-9]//g; # Elimina todo lo no-numerico. $FORM{'nropag'} = '1' if $FORM{'nropag'} eq ''; # $FORM{'as'} = &glib_cgi_04::param('as'); # $FORM{'as'} =~ s/[^0-9]//g; # Elimina todo lo no-numerico. $FORM{'as'} = $prontus_varglb::TAXPORT_REFRESH_SEGS; $FORM{'seccion'} = '0' if ($FORM{'seccion'} eq ''); $FORM{'tema'} = '0' if ($FORM{'tema'} eq ''); $FORM{'subtema'} = '0' if ($FORM{'subtema'} eq ''); if (!$FORM{'seccion'}) { print "Content-Type: text/html\n\n"; print "Error: Sección no especificada."; exit; }; # unlink "$prontus_varglb::DIR_SERVER$RELDIR_PORT/$SECCION_FOR_FILE" . '_' . $TEMA_FOR_FILE . '_' . $FORM{'nropag'} . '.html'; # debug # print STDERR "pag_portada[$pag_portada]"; if (!$FORM{'ft'}) { my $url_tax = &get_url_tax(); if ($url_tax) { print "Location: $url_tax\n\n"; exit; }; }; if (! &portada_disponible()) { &generar_portada(); }; print "Location: http://$ENV{'SERVER_NAME'}$RELDIR_PORT_DST/$FORM{'seccion'}" . '_' . $FORM{'tema'} . '_' . $FORM{'subtema'} . '_' . $FORM{'nropag'} . $EXT_PORT_TMP . "\n\n"; }; # --------------------------------------------------------------- sub get_path_conf { my ($nom_prontus); if ($FORM{'_REL_PATH_PRONTUS'} =~ /\/(\w+)$/) { $nom_prontus = $1; return "$prontus_varglb::DIR_SERVER$FORM{'_REL_PATH_PRONTUS'}/cpan/$nom_prontus.cfg"; }; return ''; }; # --------------------------------------------------------------- sub get_tpl_tema { # Obtiene nombre del q sera el tpl de la portada tipo tema, es el primer archivo q se encuentre. my ($ruta_dir) = $_[0]; my (@lisdir, $k); @lisdir = &glib_fildir_02::lee_dir($ruta_dir); @lisdir = grep !/^\./, @lisdir; # Elimina directorios . y .. foreach $k (@lisdir) { if (-f "$ruta_dir/$k") { return $k; }; }; return ''; }; # --------------------------------------------------------------- sub salir { my $msg = $_[0]; print "Content-Type: text/html\n\n"; print $msg; exit; }; # --------------------------------------------------------------- sub get_ext_ptema { my ($path_file) = $_[0]; if ($path_file =~ /(\.\w+)$/) { return $1; }; return ''; }; # --------------------------------------------------------------- sub genera_filtros { # Genera segmento variable del sql para encontrar los articulos. my ($id_secc1, $id_tema1, $id_subtema1) = ($FORM{'seccion'},$FORM{'tema'},$FORM{'subtema'}); $id_secc1 =~ s/"/""/g; $id_tema1 =~ s/"/""/g; $id_subtema1 =~ s/"/""/g; $CURR_DTIME =~ /^(\d{8})(\d\d\d\d)/; my $dt_system = $1; my $hhmm_system = $2; my ($filtros); if ($id_secc1) { $filtros = "(ART_IDSECC1 = \"$id_secc1\" or ART_IDSECC2 = \"$id_secc1\" or ART_IDSECC3 = \"$id_secc1\")"; if ($id_tema1) { # Distinto de todos. $filtros .= " and (ART_IDTEMAS1 = \"$id_tema1\" or ART_IDTEMAS2 = \"$id_tema1\" or ART_IDTEMAS3 = \"$id_tema1\")" if $filtros ne ''; if ($id_subtema1) { # Distinto de todos. $filtros .= " and (ART_IDSUBTEMAS1 = \"$id_subtema1\" or ART_IDSUBTEMAS2 = \"$id_subtema1\" or ART_IDSUBTEMAS3 = \"$id_subtema1\")" if $filtros ne ''; }; }; $filtros .= " and (ART_FECHAPHORAP <= \"$dt_system$hhmm_system\") "; $filtros .= " and (ART_ALTA = \"1\") " if ($prontus_varglb::CONTROLAR_ALTA_ARTICULOS eq 'SI'); if ($prontus_varglb::CONTROL_FECHA eq 'SI') { $filtros .= " and (ART_FECHAEHORAE >= \"$dt_system$hhmm_system\") OR ( (ART_FECHAEHORAE < \"$dt_system$hhmm_system\") AND (ART_SOLOPORTADAS = \"1\") )"; }; return $filtros; } else { return ''; }; return $filtros; }; # genera_filtros. # --------------------------------------------------------------- sub portada_disponible { # return 0; # debug my ($pag_portada) = "$prontus_varglb::DIR_SERVER$RELDIR_PORT_DST/$FORM{'seccion'}" . '_' . $FORM{'tema'} . '_' . $FORM{'subtema'} . '_' . $FORM{'nropag'} . $EXT_PORT_TMP; # print STDERR "pag_portada[$pag_portada] y as[$FORM{'as'}]\n"; my ($dtime_pag, $buffer); if (-f $pag_portada) { # Si se indica que no hay que refrescar las taxports, entonces siempre dice que la pagina esta disponible ok. return 1 if ($prontus_varglb::TAXPORT_REFRESH eq 'NO'); # Obtener estadisticas del arch. my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime, $mtime, $ctime, $blksize, $blocks)=stat $pag_portada; # Si los seg. de antiguedad de la pagina son mayores que $FORM{'as'} if ((time - $mtime) > $FORM{'as'}) { return 0; # regenerar } else { return 1; }; } else { return 0; # si la pag. no esta, hay que generarla }; }; # --------------------------------------------------------------- sub get_nombreyport { # Obtiene nombre y port de seccion, tema o subtema. my ($entidad) = $_[0]; my ($entidad_id) = $_[1]; my ($nomfile_envista) = $_[2]; # rotulos tax my ($sql, $salida, $nom, $port); $entidad_id = '0' if ($entidad_id eq ''); $sql = "select $entidad" . "_NOM, $entidad" . "_PORT from $entidad where $entidad" . "_ID = \"$entidad_id\""; $salida = &glib_dbi_02::ejecutar_sql_bind($BD, $sql, \($nom, $port)); $salida->fetch; $salida->finish; $nom = &lib_prontus::get_nomtax_envista($FORM{'_MV'}, $nomfile_envista, $entidad_id) if ($FORM{'_MV'}); # rotulos tax return ($nom, $port); }; # --------------------------------------------------------------- sub get_url_tax { # Obtiene url asociada al ultimo nivel de tax. my ($entidad); my ($entidad_id); my ($sql, $salida, $nom); if ($FORM{'subtema'}) { $entidad = 'SUBTEMAS'; $entidad_id = $FORM{'subtema'}; } elsif ($FORM{'tema'}) { $entidad = 'TEMAS'; $entidad_id = $FORM{'tema'}; } elsif ($FORM{'seccion'}) { $entidad = 'SECC'; $entidad_id = $FORM{'seccion'}; } else { return ''; }; &conectar_bd(); $entidad_id = '0' if ($entidad_id eq ''); $sql = "select $entidad" . "_PORT from $entidad where $entidad" . "_ID = \"$entidad_id\""; $salida = &glib_dbi_02::ejecutar_sql_bind($BD, $sql, \($nom)); $salida->fetch; $salida->finish; $BD->disconnect; return &lib_prontus::get_tax_link($nom, $FORM{'_MV'}); }; # --------------------------------------------------------------- sub conectar_bd { # MYSQL if ($prontus_varglb::MOTOR_BD eq 'MYSQL') { $BD = DBI->connect("DBI:mysql:$prontus_varglb::NOM_BD:$prontus_varglb::SERVER_BD", $prontus_varglb::USER_BD, $prontus_varglb::PWD_BD) || &salir("Error: la base de datos '$prontus_varglb::NOM_BD' no existe o no se pudo conectar con ella, revise los parámetros de conexion en el .cfg del publicador o bien contacte al administrador del sistema."); }; # SQLITE if ($prontus_varglb::MOTOR_BD eq 'PRONTUS') { my $file_db = "$prontus_varglb::DIR_SERVER$prontus_varglb::DIR_DBM/prontus_db.db"; if ((!-f $file_db) || (!-s $file_db)) { &salir("Error: Base de datos no existe."); }; $BD = DBI->connect("dbi:SQLite2:dbname=$file_db","",""); }; }; # --------------------------------------------------------------- sub generar_portada { my ($lista, $pagina, $plantilla_listado, $html_nros_pag); &conectar_bd(); # Generar pagina final (loopeando una fila modelo) $plantilla_listado = $prontus_varglb::DIR_SERVER . $RELPATHFILE_PORT_TMP; $pagina = &glib_fildir_02::read_file($plantilla_listado); if ($pagina =~ /%%LOOP%%(.*?)%%\/LOOP%%/isg) { $LOOP = $1; }; if ($pagina =~ /%%_TAXPORT_ARTXPAG=(\d+)%%/i) { $FILASXPAG = $1 if ($1 > 0); }; # print STDERR "antes make_lsta\n"; ($lista, $html_nros_pag) = &make_lista(); # print STDERR "lista[$lista]\n"; $pagina =~ s/%%LOOP%%(.*?)%%\/LOOP%%/$lista/isg; if ($html_nros_pag ne '') { $pagina =~ s/%%_HTML_NROS_PAG%%/ $html_nros_pag /; } else { $pagina =~ s/%%_HTML_NROS_PAG%%//; $pagina =~ s/%%_msg%%.*?%%\/_msg%%/No hay más noticias en esta sección/is; }; # La navbar my $secc_tema_stema_nom; # secc my ($secc_nom, $secc_port) = &get_nombreyport('SECC', $FORM{'seccion'}, 'seccion'); # rotulos tax my $lnk_secc; if ($secc_port) { $lnk_secc = &lib_prontus::get_tax_link($secc_port); } else { $lnk_secc = "/cgi-bin/prontus_taxport_lista.cgi?seccion=$FORM{'seccion'}&_REL_PATH_PRONTUS=$FORM{'_REL_PATH_PRONTUS'}&_MV=$FORM{'_MV'}"; }; $secc_tema_stema_nom = "$secc_nom"; # tem my ($tem_nom, $tem_port) = &get_nombreyport('TEMAS', $FORM{'tema'}, 'tema-' . $FORM{'seccion'}); # rotulos tax if ($tem_nom) { my $lnk_tem; if ($tem_port) { $lnk_tem = &lib_prontus::get_tax_link($tem_port); } else { $lnk_tem = "/cgi-bin/prontus_taxport_lista.cgi?seccion=$FORM{'seccion'}&tema=$FORM{'tema'}&_REL_PATH_PRONTUS=$FORM{'_REL_PATH_PRONTUS'}&_MV=$FORM{'_MV'}"; # rotulos tax }; $secc_tema_stema_nom .= " / $tem_nom"; }; # stem my ($stem_nom, $stem_port) = &get_nombreyport('SUBTEMAS', $FORM{'subtema'}, 'subtema-' . $FORM{'tema'}); # rotulos tax if ($stem_nom) { my $lnk_stem; if ($stem_port) { $lnk_stem = &lib_prontus::get_tax_link($stem_port); } else { $lnk_stem = "/cgi-bin/prontus_taxport_lista.cgi?seccion=$FORM{'seccion'}&tema=$FORM{'tema'}&subtema=$FORM{'subtema'}&_REL_PATH_PRONTUS=$FORM{'_REL_PATH_PRONTUS'}&_MV=$FORM{'_MV'}"; # rotulos tax }; $secc_tema_stema_nom .= "/ $stem_nom"; }; $pagina =~ s/%%_SECC_TEMA_STEMA_NOM%%/$secc_tema_stema_nom/isg; $pagina =~ s/%%nropag%%/$FORM{'nropag'}/isg; $pagina =~ s/%%NOMSECC%%/$secc_nom/isg; # reemplazar nombre del prontus $pagina =~ s/%%_PRONTUS_ID%%/$prontus_varglb::PRONTUS_ID/isg; $pagina =~ s/%%.*?%%//isg; $BD->disconnect; # Escribe portada en el disco. &glib_fildir_02::check_dir("$prontus_varglb::DIR_SERVER$RELDIR_PORT_DST"); &glib_fildir_02::write_file("$prontus_varglb::DIR_SERVER$RELDIR_PORT_DST/$FORM{'seccion'}" . '_' . $FORM{'tema'} . '_' . $FORM{'subtema'} . '_' . $FORM{'nropag'} . $EXT_PORT_TMP, $pagina); }; # -------------------------------------------------------------------------# sub get_fecha_pasada { # Retrocede desde hoy (aaaammdd) una cantidad de dias hasta encontrar una fecha valida y la retorna como dd/mm/aaaa. my ($fecha, $fecha_valida, $fecha_formateada, $filler, $fecha_final); my ($hoy, $dias) = ($_[0], $_[1]); if ($dias > 0) { $fecha = $hoy; for (1..$dias) { # Da lo mismo el sentido '> a <' o '< a >' ya que es la misma cantidad de dias y $fecha es la que se resta en 1. $fecha_valida = 0; while (! $fecha_valida) { $fecha--; $fecha_formateada = &glib_hrfec_02::des_normaliza_fecha($fecha); ($fecha_valida, $filler, $fecha_final) = &glib_hrfec_02::valida_fecha($fecha_formateada); }; }; }; return $fecha_final; }; # get_fecha_pasada. # --------------------------------------------------------------- sub get_tot_artics { my ($filtros) = $_[0]; my ($sql, $salida, $tot); my ($count_art); $sql = "select count(ART_ID) from ART %%FILTRO%%"; if ($filtros ne '') { $sql =~ s/%%FILTRO%%/ where $filtros /; $sql =~ s/group by ART_ID//i; } else { $sql =~ s/%%FILTRO%%//; }; # print STDERR "$sql contar[$sql]"; # &glib_fildir_02::write_file('tipotema.sql', $sql); # debug $salida = &glib_dbi_02::ejecutar_sql_bind($BD, $sql, \($count_art)); $salida->fetch; $salida->finish; $count_art = '0' if $count_art eq ''; $count_art = $prontus_varglb::TAXPORT_MAXARTICS if ($count_art > $prontus_varglb::TAXPORT_MAXARTICS); return $count_art; }; # --------------------------------------------------------------- sub carga_tabla_temas { my ($sql, $salida, $nom, $id); $sql = "select TEMAS_ID, TEMAS_NOM from TEMAS "; $salida = &glib_dbi_02::ejecutar_sql_bind($BD, $sql, \($id, $nom)); while ($salida->fetch) { $TABLA_TEM{$id} = $nom; }; $salida->finish; }; # --------------------------------------------------------------- sub make_lista { my ($sql, $cdate, $tot_artics, $lnk, $filtros); my ($salida, $filas, $nro_filas, $lineas); my ($art_id, $art_fecha, $art_horap, $art_titu, $art_baja, $art_dirfecha, $art_extension, $art_tipoficha, $art_idtemas1); my ($tpl_nropag) = '%%cnro_pag%%'; my ($tpl_nropag2) = '%%cnro_pag%%'; my ($tpl_nropag_aux, $html_nros_pag, $desde_nroreg, $cnro_pag, $ref_dtime); # precarga tabla de temas. &carga_tabla_temas(); # Obtener tmsp correspondiente a las 01.00 hrs de ayer. $CURR_DTIME =~ /^(\d{8})(\d{6})$/; $cdate = $1; $filtros = &genera_filtros(); $tot_artics = &get_tot_artics($filtros); # print STDERR "tot_artics[$tot_artics]\n"; # Generar footer con nros de paginas $cnro_pag = 0; $html_nros_pag = ''; my $i; for ($i=0;$i<$tot_artics;$i++) { if (((($i % $FILASXPAG) == 0) and ($i >= $FILASXPAG)) or ($i == 0)){ # print STDERR "ENTRA\n"; $cnro_pag++; if ($cnro_pag == $FORM{'nropag'}) { $tpl_nropag_aux = $tpl_nropag2; }else{ $tpl_nropag_aux = $tpl_nropag; }; $lnk = "/cgi-bin/prontus_taxport_lista.cgi?seccion=$FORM{'seccion'}&tema=$FORM{'tema'}&subtema=$FORM{'subtema'}&nropag=$cnro_pag&_REL_PATH_PRONTUS=$FORM{'_REL_PATH_PRONTUS'}&_MV=$FORM{'_MV'}"; # rotulos tax $tpl_nropag_aux =~ s/%%lnk%%/$lnk/; $tpl_nropag_aux =~ s/%%cnro_pag%%/$cnro_pag/; $html_nros_pag .= "$tpl_nropag_aux\n"; }; }; # Generar la lista de articulos de esta pagina. $desde_nroreg = 0; if ($FORM{'nropag'} > 1) { $desde_nroreg = (($FORM{'nropag'} - 1) * $FILASXPAG); }; $sql = "select ART_ID, ART_FECHAP, ART_HORAP, ART_TITU, ART_BAJA, ART_DIRFECHA, ART_EXTENSION, ART_TIPOFICHA, ART_IDTEMAS1 from ART %%FILTRO%% order by ART_FECHAP desc, ART_HORAP desc LIMIT $desde_nroreg, $FILASXPAG"; # Parche exclusivo fiap if ($FORM{'_MV'} eq 'eng') { $sql = "select distinctrow ART_ID, ART_FECHAP, ART_HORAP, ART_TITU, ART_BAJA, ART_DIRFECHA, ART_EXTENSION, ART_TIPOFICHA, ART_IDTEMAS1 from ART, ART_ENG %%FILTRO%% order by ART_FECHAP desc, ART_HORAP desc LIMIT $desde_nroreg, $FILASXPAG"; }; if ($filtros ne '') { $filtros = ' ART_AUTOINC = ART_ENG_AUTOINC and ' . $filtros if ($FORM{'_MV'} eq 'eng'); # Parche exclusivo fiap $sql =~ s/%%FILTRO%%/ where $filtros /; } else { $filtros = ' where ART_AUTOINC = ART_ENG_AUTOINC ' if ($FORM{'_MV'} eq 'eng'); # Parche exclusivo fiap $sql =~ s/%%FILTRO%%/$filtros/; }; $salida = &glib_dbi_02::ejecutar_sql_bind($BD, $sql, \($art_id, $art_fecha, $art_horap, $art_titu, $art_baja, $art_dirfecha, $art_extension, $art_tipoficha, $art_idtemas1)); $nro_filas = 0; my $resul = $salida->rows; # print STDERR "sql taxport[$sql]\n"; while ($salida->fetch) { $nro_filas++; my $tem = $TABLA_TEM{$art_idtemas1}; $filas .= &generar_fila($art_id, $art_fecha, $art_horap, $art_titu, $art_baja, $art_dirfecha, $art_extension, $art_tipoficha, $tem); }; $salida->finish; if ($nro_filas == 0) { $filas = &generar_fila(); }; return ($filas, $html_nros_pag); }; # --------------------------------------------------------------- sub generar_fila { # Genera y retorna cada fila de la tabla. my ($art_id, $art_fecha, $art_horap, $art_titu, $art_baja, $art_dirfecha, $art_extension, $art_tipoficha, $tem) = @_; my ($fila, $lnk, $titular); my ($reldir_artic) = $RELDIR_ARTIC; $fila = $LOOP; if ($art_id ne '') { $reldir_artic =~ s/%%DIRFECHA%%/$art_dirfecha/i; $lnk = "$reldir_artic/$art_id" . '.' . $art_extension; # if (($art_tipoficha eq 'fid_breves.html') or ($art_tipoficha eq 'fid_audio.html')) { # $lnk = "javascript: subWin('$lnk', 'art', 380, 400, 200, 75)"; # }; # # if (($art_tipoficha eq 'fid_marcador_virtual.html') or ($art_tipoficha eq 'fid_marcadorv_tenis.html')) { # $lnk = "javascript: subWin('$lnk', 'art', 500, 347, 200, 75)"; # }; my $fechaplong; my $fechapshrt; if (($art_fecha eq '00000000') or ($art_fecha eq '99999999') or ($art_fecha eq '')) { $art_fecha = ''; } else { $fechaplong = &glib_hrfec_02::expande_fecha($art_fecha); $fechapshrt = &glib_hrfec_02::des_normaliza_fecha($art_fecha); }; if ($art_baja !~ /\.$/) { $art_baja =~ s/ [^ ]+$//; $art_baja .= '...' if ($art_baja); }; $art_baja =~ s/
/#!-=br=-!#/isg; $art_baja =~ s/<\w+?>//isg; # se borran tags para evitar conflictos con formateo de la pagina. $art_baja =~ s/<.*$//sg; # producto del truncaje del campo al momento de meterlo a la BD pueden haber quedado tags incompletos. $art_baja =~ s/#!-=br=-!#/
/isg; # Armar la fila. $art_titu = &lib_prontus::escape_html($art_titu); $art_titu =~s/[\r\n]//g; # 1.2. if ($art_horap =~ /(\d\d)(\d\d)/) { $art_horap = $1 . ':' . $2; }; $fila =~ s/%%_FILE%%/$lnk/isg; $fila =~ s/%%_FECHAP%%/$art_fecha/isg; $fila =~ s/%%_HORAP%%/$art_horap/isg; $fila =~ s/%%_TITULAR%%/$art_titu/isg; $fila =~ s/%%_BAJADA%%/$art_baja/isg; $fila =~ s/%%_NOM_TEMA1%%/$tem/isg; $fila =~ s/%%_FECHAPLONG%%/$fechaplong/isg; $fila =~ s/%%_FECHAPSHRT%%/$fechapshrt/isg; # Reemplaza TS, FECHAC, FECHACLONG, FECHACSHRT $fila = &lib_prontus::replace_tsdata($fila, $art_id); # Si quedaron marcas sin susituir es porque corresponden a campos del artic q no estan en la BD asi que # abro el artic y parseo todas las marcas. if ($fila =~ /%%\w+%%/) { my $data_xml = &lib_prontus::get_xml_data("$prontus_varglb::DIR_SERVER$lnk"); my %claves; # claves para procesar condicionales ($fila, %claves) = &lib_prontus::parse_xml_data_inloop($data_xml, $fila, $art_id); # Procesa IFs. $fila = &lib_prontus::procesa_condicional('IF', $fila, \%claves); # Procesa NIFs. $fila = &lib_prontus::procesa_condicional('NIF', $fila, \%claves); }; } else { # Armar la fila sin datos. $fila =~ s/%%_FILE%%//isg; $fila =~ s/%%_FECHAP%%//isg; $fila =~ s/%%_HORAP%%//isg; $fila =~ s/%%_TITULAR%%//isg; $fila =~ s/%%_BAJADA%%//isg; $fila =~ s/%%_NOM_TEMA1%%//isg; $fila =~ s/%%_TS%%//isg; $fila =~ s/%%_FECHAPLONG%%//isg; $fila =~ s/%%_FECHAPSHRT%%//isg; }; # print STDERR "FILA[$fila]\n\n\n"; return $fila; }; # -------------------------END SCRIPT----------------------