|
|
NOTAS DE ACTUALIDAD
#!/usr/local/bin/perl
###########################
### Nuevo - Parametros para mostrar noticias
###
### resumen=n : No muestra el resumen de la noticia
### resumen=d : Muestra el resumen al final de la noticia (firma)
### fecha=n : No muestra la fecha de la noticia al mostrarla
### lista=a : Muestra toda la noticia en la lista (para mostrar en la lista cada una de las noticias con toda la información (usado en AmazonPepper para testimonials)
###
###########################
use DBI;
use CGI qw(:cgi);
use HTML::Entities;
#use strict;
### obtenemos paths principales:
our $document_root = $ENV{DOCUMENT_ROOT};
our $home_root = substr( $ENV{DOCUMENT_ROOT}, 0, rindex($ENV{DOCUMENT_ROOT}, "/")); # quitamos a document_root lo que sigue despues del ultimo / (el dominio en VPS3)
my $os = $^O;
our $cgi_root = ($os eq 'linux') ? $document_root."/cgi-bin" : $home_root."/cgi-bin";
our $nombre_dominio= $ENV{SERVER_NAME};
$nombre_dominio= substr( $nombre_dominio,4 ) if ( lc(substr($nombre_dominio,0,4)) eq 'www.');
###
require "$document_root/noticias/config.cgi";
require "pdlib.pl";
local ($dbh,$sth,$query,$numreg,$numret,@row,%numcampo,$nivel,$fila);
local @meslit = qw(Ene Feb Mar Abr May Jun Jul Ago Sep Oct Nov Dic);
print "Content-type: text/html\n\n";
# ¶metros retorna un HASH conteniendo $PARAM{variable} = valor
¶metros;
if (21==1) {
print "**** ENV ****";
while (($key, $val) = each %ENV) {
print "$key = $val \n"; }
print "**** PARAM ****";
while (($key, $val) = each %PARAM) {
print "$key = $val \n"; }
}
$ev = $PARAM{ev};
# Conecto Base de Datos
&conectardb("$cgi_root/noticias/$nombre_dominio");
# Obtenemos el codigo de la noticia a mostrar del URL.
$codigo = $ENV{QUERY_STRING_UNESCAPED};
##########################################################################
#
# Mostrar la noticia
#
##########################################################################
if ($PARAM{muestranot} == 1) {
# Se requiere imprimir noticia, tomamos configuracion de la noticia
$query = "SELECT * FROM notcontrol WHERE cod_aut = '$ev'";
$sth = $dbh->prepare($query) or die "Error - $query : $dbh->errstr \n";
$rv = $sth->execute or die "Error $sth->errstr \n";
if ($sth->rows == 0)
{
&mensaje("No hay programación para esta lista.","#");
exit 0;
}
$row = $sth->fetchrow_hashref;
foreach (keys %$row) {$$_ = $$row{$_}}
$query = "SELECT f_not,titulo,resumen,texto FROM noticias WHERE codigo = '$codigo'";
$sth = $dbh->prepare($query) or die "Error - $query : $dbh->errstr \n";
$rv = $sth->execute or die "Error $sth->errstr \n";
if ($sth->rows == 0)
{
&mensaje("La noticia seleccionada no se encuentra disponible.","#");
exit 0;
}
$row = $sth->fetchrow_hashref;
foreach (keys %$row) {$$_ = $$row{$_}}
($ano_not,$mes_not,$dia_not) = split /-/,$f_not;
#################################
### Aquí se imprime la noticias y sus adjuntos
### Se modifica para verificar si el adjunto se muestra sin imprimir la noticia o no
### En febrero 2010 se modifica el programa para lo siguiente:
### Si la noticia no contiene contenido ($texto), y además sólo hay un documento adjunto...
### entonces se muestra el documento de una vez. Si el documento es una imagen se muestra como una noticia normal, pero si es documento no imagen, se abra el documento de una vez.
#################################
#################################
### Continuación del programa
#################################
### Se decodifica el texto, habia sido encoded al grabarse
$texto = decode_entities($texto);
### Ojo, quité la clase a $texto ya que viene incluida cuando se usa FCKeditor.
print '';
print qq~ $titulo
~;
print qq~ $dia_not-$meslit[$mes_not-1]-$ano_not~ if uc($PARAM{fecha}) ne 'N';
print qq~ $resumen ~ if (uc($PARAM{resumen}) ne 'N' && uc($PARAM{resumen}) ne 'D');
print qq~$texto~;
print qq~ $resumen ~ if uc($PARAM{resumen}) eq 'D';
print ' ';
#################################
#################################
# Verificamos si hay documentos adjuntos a esta noticia
$query = "SELECT * FROM notdocum WHERE codigo = '$codigo' order by orden";
$sth = $dbh->prepare($query) or die "Error - $query : $dbh->errstr \n";
$rv = $sth->execute or die "Error $sth->errstr \n";
if ($sth->rows != 0)
{
# Suponemos que no hay documentos relacionados (posiblemente son todos imagenes)
$documentos = 0;
my $num_documentos = 1;
$listadocum = " Documentos relacionados:
";
while ( $row = $sth->fetchrow_hashref ) {
foreach (keys %$row) {$$_ = $$row{$_}}
if ($documento ne "") {
@array = split(/\./, $documento);
$exten = pop(@array);
$imagenes = "gif jpeg jpg jpe png tiff tif GIF JPEG JPG JPE PNG TIFF TIF";
$esimagen = index($imagenes, $exten);
local $enlace = $enlace_fin = '';
if ($esimagen != -1)
{
if ( -e $dir_documentos."/mx_".$documento) {
$enlace = qq~~;
$enlace_fin = "";
}
print qq~$enlace $enlace_fin ~;
$num_documentos++;
} else
{
# Marcamos que si hay documentos relacionados
$documentos = 1;
$listadocum .= qq~- $descripcion ($documento)
~;
}
}
}
# Si hay documentos relacionados, los mostramos.
if ($documentos) {print "$listadocum "}
}
#################################
#################################
$sth->finish;
}
##########################################################################
#
# Mostrar la lista de noticias
#
##########################################################################
# Se requiere imprimir lista, tomamos configuracion de la lista
my $query = "SELECT * FROM notlistas WHERE ntlista = '$PARAM{lista}'";
my $sth = $dbh->prepare($query) or die "Error - $query : $dbh->errstr \n";
my $rv = $sth->execute or die "Error $sth->errstr \n";
if ($sth->rows == 0)
{
#&mensaje("No hay programación para esta lista.","#");
# No hay promoción, no muestra nada
exit 0;
}
my $row = $sth->fetchrow_hashref;
foreach (keys %$row) {$$_ = $$row{$_}}
if ( uc($ntportada) eq 'S' ) {
##########################################################################
#
# Para PROMOCIÓN en capa encima de página (promoción hoteles)
#
##########################################################################
local $querycodigo;
$html_output = '';
# Seleccionamos las noticias a mostrar
$querycodigo = ($codigo eq "") ? "" : " and codigo<>$codigo";
# Si número máximo noticias a mostrar es -1, mostrar todas las noticias
my $limite = ($ntmaxlista < 0) ? "" : " LIMIT $ntmaxlista";
my $ordenmostrar = ($ntorden eq '') ? "ORDER BY f_not DESC, codigo" : "ORDER BY $ntorden";
$query = "SELECT codigo, portada, f_not, titulo, resumen, texto
FROM noticias
WHERE tipo='$ev' and activo='Y' $querycodigo and f_ini <= CURDATE() and f_fin >= CURDATE() $ordenmostrar $limite";
$sth = $dbh->prepare($query) or die "Error - $query : $dbh->errstr \n";
$rv = $sth->execute or die "Error $sth->errstr \n";
if ($sth->rows == 0)
{
#print qq~$ntsininf | ~;
# No hay noticias activas, no se muestra nada
}
else
{
my $promocion_activada = 0;
$fila = 1;
$td_not = "td1_not";
$a_not = "a_not";
while ( $row = $sth->fetchrow_hashref ) {
foreach (keys %$row) {$$_ = $$row{$_}}
$texto = decode_entities($texto);
($ano_ini,$mes_ini,$dia_ini) = split /-/,$f_ini;
($ano_fin,$mes_fin,$dia_fin) = split /-/,$f_fin;
($ano_not,$mes_not,$dia_not) = split /-/,$f_not;
print '';
if (uc($ntportada) eq 'S') {
if ( -e $dir_documentos."/pr_".$portada) {
print qq~ \n~;
}
}
print qq~ \n~;
if (uc($ntfecha) eq "S") {
print qq~ $dia_not-$meslit[$mes_not-1]-$ano_not\n~;
}
if (uc($ntfecha) eq "L") {
print qq~ $dia_not-$meslit[$mes_not-1]-$ano_not\n~;
}
if (uc($nttitulo) eq "S") {
print qq~ $titulo\n~;
}
if (uc($nttitulo) eq "L") {
print qq~ \n~;
}
if (uc($ntresumen) eq "S") {
print qq~ $resumen \n~;
}
if (uc($ntresumen) eq "L") {
print qq~ $resumen \n~;
}
if (uc($ntmasinf) eq "S") {
print qq~ $ntmeninf~;
}
if (!$promocion_activada) {
$promocion_activada = 1;
# Activar division que contiene la promoción
print qq~
~;
}
print ' '; #qq~ \n~;
print ' '; #' ';
} # endwhile
} # endif ($sth->rows == 0)
$rv = $dbh->disconnect;
}# if ( uc($ntportada) eq 'S' )
elsif ($PARAM{lista} ne '') {
##########################################################################
#
# Para mostrar lista normal
#
##########################################################################
local $querycodigo;
# Seleccionamos las noticias a mostrar
$querycodigo = ($codigo eq "") ? "" : " and codigo<>$codigo";
# Si número máximo noticias a mostrar es -1, mostrar todas las noticias
my $limite = ($ntmaxlista < 0) ? "" : " LIMIT $ntmaxlista";
my $ordenmostrar = ($ntorden eq '') ? "ORDER BY f_not DESC, codigo" : "ORDER BY $ntorden";
$query = "SELECT codigo, portada, f_not, titulo, resumen, texto
FROM noticias
WHERE tipo='$ev' and activo='Y' $querycodigo and f_ini <= CURDATE() and f_fin >= CURDATE() $ordenmostrar $limite";
$sth = $dbh->prepare($query) or die "Error - $query : $dbh->errstr \n";
$rv = $sth->execute or die "Error $sth->errstr \n";
if ($sth->rows == 0)
{
print qq~ $ntsininf | ~;
}
else
{
$fila = 1;
$td_not = "td1_not";
$a_not = "a_not";
while ( $row = $sth->fetchrow_hashref ) {
foreach (keys %$row) {$$_ = $$row{$_}}
$texto = decode_entities($texto);
($ano_ini,$mes_ini,$dia_ini) = split /-/,$f_ini;
($ano_fin,$mes_fin,$dia_fin) = split /-/,$f_fin;
($ano_not,$mes_not,$dia_not) = split /-/,$f_not;
if ($fila == 1) {
$tdsty = $nttdlis1;
$fecsty = $ntfeclis1;
$titsty = $nttitlis1;
$ressty = $ntreslis1;
$massty = $ntmaslis1;
$sinsty = $ntsinlis;
$fila = 2;
} else {
$tdsty = $nttdlis2;
$fecsty = $ntfeclis2;
$titsty = $nttitlis2;
$ressty = $ntreslis2;
$massty = $ntmaslis2;
$sinsty = $ntsinlis;
$fila = 1;
} #endif
# if ( lc($PARAM{lista}) eq 'p1' && 1 == 0) {
### Esto se hizo sólo para MC Consultores, procesos de selección.
# &muestra_procesos_seleccion;
# } else {
if ( uc($PARAM{mostrar}) eq 'TESTIMONIAL') {
# Esto está hecho para AmazonPepper - Testimonial
print " \n","";
print "$texto";
print "$resumen ";
print " | ";
}
else {
print " \n";
if (uc($ntportada) eq 'S' or uc($ntportada) eq 'D') {
if ( -e $dir_documentos."/th_".$portada) {
print '';
print qq~ ~;
print ' ';
} else {
print '' if (uc($ntportada) eq 'D'); ###pd Según parámetro (ntportada) las listas que incluyen imagen requiere poner la imagen en un division.
}
}
print ''; ###pd Cada noticia de la lista se encierra en un que va junto al division de la imagen.
if (uc($ntfecha) eq "S") {
print "$dia_not-$meslit[$mes_not-1]-$ano_not ";
}
if (uc($ntfecha) eq "L") {
print "$dia_not-$meslit[$mes_not-1]-$ano_not ";
}
if (uc($nttitulo) eq "S") {
print "$titulo ";
}
if (uc($nttitulo) eq "L") {
print "$titulo ";
}
if (uc($ntresumen) eq "S") {
print "$resumen ";
}
if (uc($ntresumen) eq "L") {
print "$resumen ";
}
if (uc($ntmasinf) eq "S") {
print "$ntmeninf";
}
print ' '; ###
print " | ";
}
} # endwhile
} # endif ($sth->rows == 0)
}# elsif ( $PARAM{lista}ne'' )
# Desconectamos de Base de Datos
$rv = $dbh->disconnect;
exit 0;
#################################
### Continuación del programa
#################################
sub documentos_adjuntos {
# Verificamos si hay documentos adjuntos a esta noticia
$query = "SELECT * FROM notdocum WHERE codigo = '$codigo' order by orden";
$sth = $dbh->prepare($query) or die "Error - $query : $dbh->errstr \n";
$rv = $sth->execute or die "Error $sth->errstr \n";
if ($sth->rows != 0)
{
# Suponemos que no hay documentos relacionados (posiblemente son todos imagenes)
$documentos = 0;
$listadocum = " Documentos relacionados:";
while ( $row = $sth->fetchrow_hashref ) {
foreach (keys %$row) {$$_ = $$row{$_}}
if ($documento ne "") {
@array = split(/\./, $documento);
$exten = pop(@array);
$imagenes = "gif jpeg jpg jpe png tiff tif GIF JPEG JPG JPE PNG TIFF";
$esimagen = index($imagenes, $exten);
local $enlace = $enlace_fin = '';
if ($esimagen != -1)
{
if ( -e $dir_documentos."/mx_".$documento) {
$enlace = qq~~;
$enlace_fin = "";
}
print qq~$enlace $enlace_fin ~;
} else
{
# Marcamos que si hay documentos relacionados
$documentos = 1;
$listadocum .= qq~- $descripcion ($documento)
~;
}
}
}
# Si hay documentos relacionados, los mostramos.
if ($documentos) {print "$listadocum "}
}
$sth->finish;
}
#################################
### Muestra procesos selección
#################################
sub muestra_procesos_seleccion {
print <
|
TITULO
print "\n",
"";
if ($nttitulo eq "S") {
print "$titulo";
}
if ($nttitulo eq "L") {
print "$titulo";
}
print <
|
FINTITULO
if ($ntresumen eq "S") {
print "$resumen ";
}
if ($ntresumen eq "L") {
print "$resumen ";
}
if ($ntmasinf eq "S") {
print "$ntmeninf";
}
print < |
|
|
|
FINNOTA
}
|
|
|
|