Está en la página 1de 36

Universidad de Santiago de Chile.

Facultad de Ingeniera - Departamento de Ingeniera Informtica


Ingeniera de Ejecucin en Computacin e Informtica
Ctedra de Ingeniera del Software

Software para la Administracin


de un Foro Conversacional
Documento de Requerimientos de
Usuario (DDD)
Escrito de acuerdo a la Norma PSS-05.
Estndar de Ingeniera de Software de la ESA

ESTADO DEL DOCUMENTO


SISTEMA DE ADMINISTRACION DE PROYECTOS
VERSION
AUTOR
FECHA
RAZONES DEL CAMBIO
1.0
NN-JP-MS
08/05/2004
Documento de Diseo Detallado
1.1
NN-JP-MS
16/15/2004
Revisin Segn reuniones
1.2
NN-JP-MS
21/05/2004
Revisin segn reuniones
1.3
NN-JP-MS
06/06/2004
Correccin y refinamiento
1.4
NN-JP-MS
19/07/2004
Creacin del Documento de Diseo Detallado DDD
Integrantes:
Curso:
Profesor:
Ayudante

Julio 2004

TABLA DE CONTENIDOS

1.INTRODUCCIN.............................................................................................................................................................1
1.1PROPSITO...........................................................................................................................................................................................................1
1.2MBITO................................................................................................................................................................................................................1
1.3DEFINICIONES Y ABREVIATURAS.........................................................................................................................................................................1
1.4REFERENCIAS.......................................................................................................................................................................................................1
1.5VISIN GENERAL.................................................................................................................................................................................................2
2.ESTNDARES DEL PROYECTO CONVENCIONES Y PROCEDIMIENTOS.....................................................2
2.1ESTNDARES DE DISEO.....................................................................................................................................................................................2
2.2ESTNDARES DE PROGRAMACIN.......................................................................................................................................................................2
2.3HERRAMIENTAS DE DESARROLLO DE SOFTWARE................................................................................................................................................2
3.DESCRIPCIN DE LOS COMPONENTES.................................................................................................................2
4.PLAN DE PRUEBAS........................................................................................................................................................6
4.1.Pruebas de verificacin y validacin de datos..............................................................................................................................................6
4.2.Pruebas de integracin.................................................................................................................................................................................6
APNDICE A: LISTADO CDIGO FUENTE................................................................................................................8
APNDICE B: MATRIZ DE TRAZABILIDAD DE SR VS COMPONENTES.........................................................34

Software para la Administracin de un Foro de Discusin

DDD

ii

1. INTRODUCCIN
El propsito de este documento, es detallar los primeros mdulos definidos, por tratarse de una
primera versin.

1.1Propsito
El propsito de este documento, es al final del proyecto detallar todos los mdulos
definidos en la fase AD, codificarlo y documentarlo.

1.2mbito
Este Documento, es una herramienta prctica y necesaria para un desarrollador, ac se
describe cada componente (mdulos) que usara el software, que ser definido en las
etapas posteriores a esta versin.

1.3Definiciones y Abreviaturas
SAFODI
ADD
DDD

Producto de software a elaborar


Documento de Diseo Arquitectnico de la
aplicacin SAFODI
Documento de Diseo Detallado de la
aplicacin

Metodo

1.4Referencias
Textos
Documento desarrollado en la fase URD.
Noem Nuez, Jorge Prez y Manuel Silva.
Ingeniera de Software, Un enfoque prctico.
Roger Pressman V5.
ESA Software Engineering Standards,
ESA PSS-05-00 Issue 2.
Apuntes de clase de Ingeniera de Software,
Profesor Juan Carlos Cockbaine, Universidad de Santiago de Chile.

1.5Visin General
La fase Diseo Detallado (DD), pretende ahondar ms el nivel de abstraccin, de manera
de especificar con mayor detalle los mdulos que participan en el desarrollo del producto
de software SAFODI

2. ESTNDARES DEL
PROCEDIMIENTOS

PROYECTO

CONVENCIONES

2.1Estndares de Diseo
Este proyecto ha sido desarrollado en base al paradigma de proceso incremental
estudiado en ctedra, y a travs de los distintos documentos como el libro: Ingeniera de
Software, Un enfoque prctico, del autor Roger Pressman V5, ESA Software Engineering
Standards, ESA PSS-05-00 Issue 2 y Apuntes de clase de Ingeniera de Software,
Profesor Juan Carlos Cockbaine, Universidad de Santiago de Chile.
El mtodo utilizado, el anlisis estructurado, se esta organizando a travs de la funcin a
procedimientos, este se basa en la descomposicin de un programa en sub-programas, la
unidad fundamental de este tipo de descomposicin es el sub-programa, el programa
resultante toma la forma de un rbol, en la que cada subprograma realiza su trabajo,
llamando ocasionalmente a otro programa. El Anlisis estructurado se concentra en
especificar y descomponer la funcionalidad del sistema total.

2.2Estndares de Programacin
Se est realizando una programacin mediante mdulos, como en el diagrama modular y
se estn definiendo los parmetros para su posterior utilizacin.

2.3Herramientas de desarrollo de Software


El lenguaje de programacin que se usara ser Perl.

3. DESCRIPCIN DE LOS COMPONENTES


Descripcin de componentes
ID
Nombre
Descripcin
Parmetros
Tipo de funcin

DD1
inicio.cgi
Mdulo de inicio del sitio
ninguno
Funcin cliente

ID
Nombre
Descripcin
Parmetros
Tipo de funcin

DD2
semaforo.cgi
Men principal del sitio
$ident, $admin; $esmod, $usuario
Funcin cliente

ID
Nombre
Descripcin
Parmetros
Tipo de funcin

DD3
mapaconv.cgi
Muestra el mapa conversacional
$ident, $admin; $esmod, $usuario
Funcin cliente

ID
Nombre
Descripcin
Parmetros
Tipo de funcin

DD4
politicas.cgi
Muestra polticas del sitio
$ident, $admin; $esmod, $usuario
Funcin cliente

ID
Nombre
Descripcin
Parmetros
Tipo de funcin

DD5
mapadelsitio.cgi
Muestra el mapa del sitio
$ident, $admin; $esmod, $usuario
Funcin cliente

ID
Nombre
Descripcin
Parmetros
Tipo de funcin

DD6
contadm.cgi
Muestra polticas del sitio
$ident, $admin; $esmod, $usuario
Funcin cliente

ID
Nombre
Descripcin
Parmetros
Tipo de funcin

DD7
debates.cgi
Arma pantalla con debates de un tema seleccionado al inicio del sitio
$ident, $admin; $esmod, $usuario, $id_tema
Funcin cliente

ID
Nombre
Descripcin
Parmetros
Tipo de funcin

DD8
ndebate.cgi
Crea pgina para inscribir un nuevo debate
$ident, $admin; $esmod, $usuario
Funcin cliente

ID
Nombre
Descripcin
Parmetros
Tipo de funcin

DD9
mailmod.cgi
Permite mandar un mensaje al moderador de un tema
$ident, $admin; $esmod, $usuario
Funcin cliente

ID
Nombre

DD10
respuesta.cgi
3

Descripcin
Parmetros
Tipo de funcin

Arma pantalla con respuestas de un debate seleccionado en la lista de


debates de un tema
$ident, $admin; $esmod, $usuario, $id_debate
Funcin cliente

ID
Nombre
Descripcin
Parmetros
Tipo de funcin

DD11
administrador.cgi
Despliega un men con opciones de administracin del sitio
$ident, $admin; $esmod, $usuario
Funcin cliente

ID
Nombre
Descripcin

DD12
identif.cgi
Pide datos para identificar a un usuario y lo valida en la tabla de
usuarios
$ident, $admin; $esmod, $usuario
Funcin cliente

Parmetros
Tipo de funcin
ID
Nombre
Descripcin
Parmetros
Tipo de funcin
ID
Nombre
Descripcin

DD13
mantlist.cgi
Dentro de la consola de administracin esta opcin permite modificar
estados de un tema ( suspender, reactivar ) o eliminarlo.
$ident, $admin; $esmod, $usuario
Funcin cliente

Parmetros
Tipo de funcin

DD14
moddebate.cgi
Muestra los debates por moderar si es que el usuario en curso es
moderador de al menos un tema.
$ident, $admin; $esmod, $usuario
Funcin cliente

ID
Nombre
Descripcin
Parmetros
Tipo de funcin

DD15
moderador.cgi
Muestra menu de opciones para el moderador
$ident, $admin; $esmod, $usuario
Funcin cliente

ID
Nombre
Descripcin

DD16
modifmod.cgi
Opcin al interior del ambiente de administracin que permite
cambiarle el moderador a un tema
$ident, $admin; $esmod, $usuario
Funcin cliente

Parmetros
Tipo de funcin
ID
Nombre
Descripcin
Parmetros

DD17
modifusr.cgi
Opcin al interior del ambiente de administracin que permite cambiar
la situacin de un usuario ( suspender, reactivar, eliminar )
$ident, $admin; $esmod, $usuario
4

Tipo de funcin

Funcin cliente

ID
Nombre
Descripcin
Parmetros
Tipo de funcin

DD18
modresp.cgi
Permite al moderador validar respuestas
$ident, $admin; $esmod, $usuario
Funcin cliente

ID
Nombre
Descripcin
Parmetros
Tipo de funcin

DD19
nrespuesta.cgi
Permite a un usuario identificado agregar un opinin dentro de un
debate
$ident, $admin; $esmod, $usuario, $id_debate
Funcin cliente

ID
Nombre
Descripcin
Parmetros
Tipo de funcin

DD20
nuevotema.cgi
Permite a un usuario identificado ingresar un nuevo tema
$ident, $admin; $esmod, $usuario
Funcin cliente

ID
Nombre
Descripcin

DD21
nusuario.cgi
Permite a cualquier visitante o usuario inscribir a travs de un
formulario un nuevo integrante del sitio
$ident, $admin; $esmod, $usuario
Funcin cliente

Parmetros
Tipo de funcin
ID
Nombre
Descripcin
Parmetros
Tipo de funcin
ID
Nombre
Descripcin
Parmetros
Tipo de funcin
ID
Nombre
Descripcin

DD22
validtem.cgi
Opcin al interior del ambiente de administracin que permite validar
los nuevos temas incritos por los usuarios
$ident, $admin; $esmod, $usuario
Funcin cliente
DD23
validuser.cgi
Opcin al interior del ambiente de administracin que permite validar
los nuevos usuarios
$ident, $admin; $esmod, $usuario
Funcin cliente

Parmetros
Tipo de funcin

DD24
Vermens1.cgi
Permite al administrador ver los mensajes que le han dejado los
usuarios
$ident, $admin; $esmod, $usuario
Funcin cliente

ID

DD25
5

Nombre
Descripcin
Parmetros
Tipo de funcin

Vermens2.cgi
Permite al moderador ver los mensajes que le han dejado los usuarios
$ident, $admin; $esmod, $usuario
Funcin cliente

4. PLAN DE PRUEBAS
Las pruebas de software son un elemento crtico para la garanta de calidad del software y
representan una revisin final de las especificaciones, diseo y codificacin. Conociendo la
funcin especfica para la que fue diseado el software, se crean pruebas que demuestren la
operatividad de cada funcin, es decir, que la operacin interna se ajusta a la perfeccin con las
especificaciones y requerimientos para lo que fue diseada.
El objetivo de esta etapa fue encontrar errores, para ello, solamente se utiliz el mtodo de la
caja negra verificando el dominio de entrada y salida del software para descubrir errores de
funcionalidad, comportamiento y desempeo.
En esta etapa se hicieron revisiones en forma ms general, recorriendo la funcionalidad del
sitio web. La razn de lo anterior se debe a que el esquema interno de los mdulos es lineal,
adems, por falta de tiempo no se hicieron ms pruebas de caja blanca.
Para realizar la estrategia de prueba antes mencionada, se debi poblar la base de datos del
foro, llenando datos de carcter variado en todas las tablas, de manera de cubrir los dominio de
valores posibles, y otros especificados en el Diccionario de Datos. De esta forma se pudieron
realizar las siguientes pruebas:
4. Pruebas de verificacin y validacin de datos
5. Pruebas de integracin
6. Pruebas de sistema

4.1. Pruebas de verificacin y validacin de datos


Este tipo de pruebas tiene por funcin realizar la verificacin y validacin.
Por verificacin, se entiende el conjunto de actividades que asegure que el software
desarrollado realice correctamente una funcin especfica.
La validacin, se refiere a un conjunto de actividades que aseguren que el software
construido se ajusta a los requisitos del cliente.

4.2. Pruebas de integracin


Estas corresponden a una tcnica sistemtica para construir la estructura de un programa
mientras que se intentaba detectar errores asociados con la interaccin entre los mdulos

que componen el sistema, para ello, se realizaron pruebas cada vez que se integra un
nuevo mdulo.
Dentro de las pruebas realizadas se experiment con diferentes usuarios, pues la forma de
enfrentarse a la interaccin con una aplicacin cambia de una persona a otra, pudiendo
as aumentar la probabilidad de encontrar un error de programacin.
Nro.
1

Verificador
Noem Nuez

Prueba
Ingresar Tema

Manuel Silva

Eliminar Tema

Jorge Prez

Ingreso a consola de
administrador

Noem Nuez

Ingreso de un debate

Manuel Silva

Ingreso de una opinin

Noem Nuez

Envo de mail al
administrador

Jorge Prez

Envo de mail al
moderador de un tema

Manuel Silva

Moderar debates

Noem Nuez

Moderar opiniones

10

Manuel Silva

Cambiar moderador a un
tema

11

Noem Nuez

Suspender usuario

Resultado
Tema ingresado a la base de
datos
Se pudo verificar que al eliminar
un tema el sistema es capaz de
eliminar todos los registros que
estn afectos por su dominancia
Se pudo comprobar que slo al
identificarse como Administrador
se tiene acceso al link de la
consola. Por lo tanto, el usuario y
el moderador no tienen acceso al
ambiente del administrador.
Se ingres un debate, quedando
este oculto al visitante de la
pgina, estado del cual no saldr
hasta que el moderador valide
dicho debate.
Se ingres una opinin, quedando
este oculto al visitante de la
pgina, estado del cual no saldr
hasta que el moderador valide
dicha opinin.
Se envi mail al administrador,
quedando disponible en los
mensajes para leer del
administrador
Se envi mail al moderador,
quedando disponible en los
mensajes para leer de dicho
moderador
Se aprobaron y rechazaron
algunos debates publicados por
los usuarios
Se aprobaron y rechazaron
algunas opiniones publicadas por
los usuarios
Se ingres como administrador y
desde la herramienta de cambiar
moderador se cambi a uno.
Se suspendi usuario
comprobando que no tuvo acceso
a publicar

DDD
APNDICE A: LISTADO CDIGO FUENTE

LISTADO CDIGO FUENTE

ID
Nombre
Descripcin
Parmetros
Tipo de funcin

DD1
inicio.cgi
Mdulo de inicio del sitio
ninguno
Funcin cliente

#!C:\perl\bin\perl.exe -w
use CGI;
$ident
$esmod
$esadmin
$usuario

=
=
=
=

0;
0;
0;
"no_ident";

ID
Nombre
Descripcin
Parmetros
Tipo de funcin

DD2
semaforo.cgi
Men principal del sitio
$ident, $admin; $esmod, $usuario
Funcin cliente

Mdulo semforo.cgi, es el programa principal que arranca a los dems, est puesto
completamente, aunque los otros mdulos slo se explicarn en lo relevante.
#!C:\perl\bin\perl.exe -w
#use strict;
use DBI;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
#Para el OS C:\Archivos de programa\Apache Group\Apache2\htdocs
#Para el webserver /
$dbDriver
= "dbi:ODBC:odbc_semaforo";
$dbUserName = "sa";
$dbPassword = "";
aqui se crea la variable que referencia al ODBC que abre la base de datos. Abajo se
reciben las variables que llegan como parmetros y se integran al programa.
$x = new
$trasp
$esmod
$esmod
$trasp
$esadmin
$esadmin
$trasp =
$ident =
$ident =
$usuario

CGI;
= $x->param('esmod');
= 0;
= $esmod+$trasp;
= $x->param('esadmin');
= 0;
= $esadmin+$trasp;
$x->param('ident');
0;
$ident+$trasp;
= $x->param('usuario');

$dataIn
= new CGI;
$dataIn->header();
$requestType = $dataIn->param('requestType');
$sql = $dataIn->param('sql');
print "Content-type: text/html\n\n"; # encabezado HTML (Muy importante!!)
$sql = "select nombre from temas where estado = 1";
$dbh = &connectToDB();

$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
aqu arriba se ejecuta una consulta que lista los nombres de los temas de conversacin.
print qq(<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">\n);
print "<!---->\n";
print "<HTML><HEAD><TITLE>el sem&aacute;FORO - p&aacute;gina de foros</TITLE>\n";
print qq(<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">\n);
print "<META \n";
print qq(content=" "\n);
print "name=keywords>\n";
print qq(<META content="Foros interesantes" name=description>\n);
print "<META content=Espaol name=Language><LINK \n";
print qq(href="/estilo.css" \n);
print "type=text/css rel=stylesheet>\n";
print qq(<META content="MSHTML 6.00.2800.1106" name=GENERATOR><style
type="text/css">\n);
print "<!--\n";
print "body {\n";
print "
background-color: #EFEBDE;\n";
print "}\n";
print ".Estilo1 {\n";
print "
font-size: 36pt;\n";
print "
font-weight: bold;\n";
print "
font-style: italic;\n";
print "
color: #CEBEA5;\n";
print "}\n";
print "-->\n";
print "</style></HEAD>\n";
print "<BODY>\n";
print qq(<TABLE height=503 cellSpacing=0 cellPadding=0 width="100%" border=0>\n);
print "<TBODY>\n";
print "<TR>\n";
print qq(<TD width="19%" rowspan="3" align=middle vAlign=top>\n);
print qq(
<P align="left"><img src="/semabig.jpg" width="139" height="274"
align="top"></P>
</TD>\n);
print qq(
<TD vAlign=center align=middle width="62%" height=82><p
align="center"><span class="Estilo1">el sem&aacute;FORO</span><br>\n);
print "
<BR> \n";
print "
</p>
</TD>\n";
print qq(
<TD vAlign=center align=middle width="19%" height=82>\n);
print "
<TABLE cellSpacing=0 cellPadding=0 width=124 border=0>\n";
print "
<TBODY>\n";
print "
<TR>\n";
print "
<TD class=tdAzul>\n";
print "
<TABLE cellSpacing=1 cellPadding=0 width=124 border=0>\n";
print "
<TBODY>\n";
print "
<TR>\n";
print "
<TD class=tdtitulo align=middle \n";
print "width=120><B>Usuarios</B></TD></TR>\n";
print "
<TR>\n";
print "
<TD vAlign=top width=120 height=20>\n";
print qq(
<TABLE height="13%" cellSpacing=0 cellPadding=3
width="100%" \n);
print "
border=0>\n";
print "
<TBODY>\n";
print "
<TR>\n";
print qq(
<TD height=9><p><FONT class=v1><a
href="http://localhost/cgi-bin/identif.cgi?
ident=$ident&esmod=$esmod&esadmin=$esadmin&usuario=$usuario">Identificacin</a> \n);
print "
<BR>\n";
print qq(
<a href="http://localhost/cgi-bin/nusuario.cgi?
ident=$ident&esmod=$esmod&esadmin=$esadmin&usuario=$usuario">
Nuevo Usuario<br>\n</a>);
Si las variables globales hacen ver que el usuario es moderador o administrador segn
las variables globales entonces despliega cdigo html adicional para que lo imprima en
el navegador del cliente.

10

if ($esadmin eq 1)
{
print qq(
<a href="http://localhost/cgibin/administrador.cgi?
ident=$ident&esmod=$esmod&esadmin=$esadmin&usuario=$usuario">Administrador</a><br>\n);
}
if ($esmod eq 1)
{
print qq(
<a href="http://localhost/cgibin/moderador.cgi?
ident=$ident&esmod=$esmod&esadmin=$esadmin&usuario=$usuario">Moderador</a>
<br>\n);
}
print "
</FONT></p>\n";
print "
</TD>\n";
print "
</TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR>\n";
print " <TR>\n";
print qq(
<TD width="62%" height="225" align=middle vAlign=top>&nbsp; <TABLE
width=124 border=0 align="center" cellPadding=0 cellSpacing=0>\n);
print "
<TBODY>\n";
print "
<TR>\n";
print "
<TD class=tdAzul>\n";
#print "
<TABLE cellSpacing=1 cellPadding=1 width=189 border=0>\n";
print "
<TABLE cellSpacing=1 cellPadding=1 width=124 border=0>\n";
print "
<TBODY>\n";
print "
<TR>\n";
#print qq(
<TD class=tdtitulo align=middle width=185><div
align="center">Temas</div></TD>\n);
print qq(
<TD class=tdtitulo align=middle width=120><div
align="center">Temas</div></TD>\n);
print "
</TR>\n";
print "
<TR>\n";
#print "
<TD vAlign=top width=185 height=62>\n";
print "
<TD vAlign=top width=120 height=62>\n";
print qq(
<TABLE height="100%" cellSpacing=0 cellPadding=3 \n);
print qq(
width="100%" border=0>\n);
print "
<TBODY>\n";
print "
<TR>\n";
print qq(
<TD vAlign=top><SPAN class=v1>);
los for listan los nombres de los temas, estos ya han sido almacenados con el select
anterior y guardado en un array.
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
print qq(<a href="http://localhost/cgi-bin/debates.cgi?
ident=$ident&esmod=$esmod&esadmin=$esadmin&usuario=$usuario&tema=$column">$column</a><BR
>\n);
}
}
}
print qq( </SPAN></TD>\n);
print "
</TR>\n";
print "
</TBODY>\n";
print "
</TABLE></TD>\n";
print "
</TR>\n";
print "
<TR>\n";
ofrece ingresar nuevo tema slo si el visitante es usuario identificado
if ($ident eq 0)
{
print qq(<TD class=tdtitulo align=middle width=120><div align="center">Nuevo
Tema</a> </div></TD>\n);

11

}
else
{
print qq(<TD class=tdtitulo align=middle width=120><div align="center"><a
href="http://localhost/cgi-bin/nuevotema.cgi?
ident=$ident&esmod=$esmod&esadmin=$esadmin&usuario=$usuario">Nuevo Tema</a>
</div></TD>\n);
}
print "
</TR>\n";
print "
</TBODY>\n";
print "
</TABLE></TD>\n";
print "
</TR>\n";
print "
</TBODY>\n";
print "
</TABLE>
</TD>\n";
print qq(
<TD vAlign=top align=middle width="19%">\n);
print "
<BR>\n";
print "
<BR>\n";
print "
<BR>\n";
print "
</TD>\n";
print " </TR>\n";
print " <TR>\n";
print qq(
<TD align=middle><div align="center"><SPAN class=v1><BR>\n);
print "
<BR>\n";
print "
<FONT class=v1 color=#c7c19a> \n";
print "
Copyright 2004, el semaFORO <BR>\n";
print qq(
<a href="http://localhost/cgi-bin/contadm.cgi?
ident=$ident&esmod=$esmod&esadmin=$esadmin&usuario=$usuario">contactar al administrador
</a></FONT> - <a href="http://localhost/cgi-bin/politicas.cgi?
ident=$ident&esmod=$esmod&esadmin=$esadmin&usuario=$usuario">pol&iacute;ticas del
sitio</a> - <a href="http://localhost/cgi-bin/mapadelsitio.cgi?
ident=$ident&esmod=$esmod&esadmin=$esadmin&usuario=$usuario">mapa del sitio</a> - <a
href="http://localhost/cgi-bin/mapaconv.cgi?
ident=$ident&esmod=$esmod&esadmin=$esadmin&usuario=$usuario">mapa conversacional
<BR>\n);
print "
</a><BR>\n";
print "
</SPAN>\n";
print "
</div>\n";
print "<TD>&nbsp;</TD></TD></TR></TBODY></TABLE>\n";
print "</BODY></HTML>\n";
#$rc=$dbh->disconnect;
exit(1);
subrutinas a cargo de conectar la base de datos y de obtener los datos ordenados en
filas
sub connectToDB
{
return (DBI->connect($dbDriver, $dbUserName, $dbPassword));
# return (DBI->connect($dbName, $dbUserName, $dbPassword, $dbDriver));
}
sub executeSQLStatement
{
my ($sql) = shift;
$dataObject = $dbh->prepare($sql);
$dataObject->execute();
return $dataObject;
}
sub getDBRows
{
my ($dataObject) = shift;
return $dataObject->fetchall_arrayref();
}

ID
Nombre

DD3
mapaconv.cgi
12

Descripcin
Parmetros
Tipo de
funcin

Muestra el mapa conversacional


$ident, $admin; $esmod, $usuario
Funcin cliente

Rutina no implementada an. Por ahora muestra una imagen de lo que sera el applet del mapa
conversacional.
ID
Nombre
Descripcin
Parmetros
Tipo de
funcin

DD4
politicas.cgi
Muestra polticas del sitio
$ident, $admin; $esmod, $usuario
Funcin cliente

Pgina plana sin consultas, slo muestra de manera fija las polticas del sitio.
ID
Nombre
Descripcin
Parmetros
Tipo de
funcin

DD5
mapadelsitio.cgi
Muestra el mapa del sitio
$ident, $admin; $esmod, $usuario
Funcin cliente

Pgina fija con una imagen jpg del mapa del sitio.
ID
Nombre
Descripcin
Parmetros
Tipo de
funcin

DD6
contadm.cgi
Muestra polticas del sitio
$ident, $admin; $esmod, $usuario
Funcin cliente

Este cdigo primero enva a un formulario html, luego con los datos del formulario busca
el siguiente ID que le corresponde al nuevo registro que se agrega en la tabla contactar
if ($nombre eq "")
{
&printSearchForm();
exit;
}
else
{
$next_id = 1;
$esmod
$esadmin
$ident
$usuario

=
=
=
=

cookie('esmod');
cookie('esadmin');
cookie('ident');
cookie('usuario');

$sql="select id_mensaje from contactar";


$dbh = &connectToDB();
$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
foreach $rowReference (@dbRows)

13

{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
#$next_id = $next_id + 1;
if ( $column > $next_id )
{
$next_id = $column;
}
}
}
}
$next_id = $next_id + 1;
$sql="insert into contactar (nombre, email ,mensaje, tipomensaje, id_usuario,
id_mensaje ) values('$nombre','$email','$texto',1,0,$next_id)";
$dataObject = executeSQLStatement($sql);
&avisoOK();
exit;
}

ID
Nombre
Descripcin
Parmetros
Tipo de
funcin

DD7
debates.cgi
Arma pantalla con debates de un tema seleccionado al inicio
del sitio
$ident, $admin; $esmod, $usuario, $id_tema
Funcin cliente

Crea arreglos de cada columna que tiene que listar en este ambiente
@iddebate = ();
$sql = "select id_debate from debates where estado = 1 and id_tema = $idtema";
$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
push(@iddebate,$column);
}
}
}
@titulo = ();
$sql = "select titulo from debates where estado = 1 and id_tema = $idtema";
$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
push(@titulo,$column);
}
}
}
ya en el despliegue html muestra la lista de debates sacada de los arreglos
$i = 0;

14

for ($i=0;$i<$totreg;$i++)
{
print qq( <TR>);
print qq( <TD width="71%"><SPAN class=v1><a href="http://localhost/cgibin/respuesta.cgi?
ident=$ident&esmod=$esmod&esadmin=$esadmin&usuario=$usuario&id_debate=$iddebate[$i]">$ti
tulo[$i] </a></SPAN></TD>);
print qq( <TD width="25%"><SPAN class=v1>$usuario[$i]</SPAN></TD>);
print qq( <TD align=middle width="8%"><SPAN );
print qq( class=v1>$fecha[$i]</SPAN></TD>);
print qq( <TD align=middle width="10%"><SPAN );
print qq( class=v1> </SPAN></TD></TR>);
}

ID
Nombre
Descripcin
Parmetros
Tipo de
funcin

DD8
ndebate.cgi
Crea pgina para inscribir un nuevo debate
$ident, $admin; $esmod, $usuario
Funcin cliente

Este cdigo primero enva a un formulario html, luego con los datos del formulario busca
el siguiente ID que le corresponde al nuevo registro que se agrega en la tabla debates
if ($ntema eq "")
{
&printSearchForm();
exit;
}
else
{
$next_id
$esmod
$esadmin
$ident
$usuario
$idtema

=
=
=
=
=
=

1;
cookie('esmod');
cookie('esadmin');
cookie('ident');
cookie('usuario');
cookie('idtema');

$sql="select id_debate from debates";


$dbh = &connectToDB();
$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
#$next_id = $next_id + 1;
if ( $column > $next_id )
{
$next_id = $column;
}
}
}
}
$next_id = $next_id + 1;
$sql="insert into debates (id_debate, id_tema, titulo ,usuario, fecha, hora, estado,
id_usuario ) values($next_id,$idtema, '$ntema','$usuario','11/11/2003', '11:40',
0,$ident)";
$dataObject = executeSQLStatement($sql);
&avisoOK();
exit;
}

15

ID
Nombre
Descripcin
Parmetros
Tipo de funcin

DD9
mailmod.cgi
Permite mandar un mensaje al moderador de un tema
$ident, $admin; $esmod, $usuario
Funcin cliente

Este cdigo primero enva a un formulario html, luego con los datos del formulario busca
el siguiente ID que le corresponde al nuevo registro que se agrega en la tabla contactar
if ($nombre eq "")
{
&printSearchForm();
exit;
}
else
{
$next_id = 1;
$esmod
$esadmin
$ident
$usuario

=
=
=
=

cookie('esmod');
cookie('esadmin');
cookie('ident');
cookie('usuario');

$dbh = &connectToDB();
$sql="select id_mod from temas where nombre = '$tema'";
$id_mod = 0;
$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
$id_mod = $column;
}
}
}
$sql="select id_mensaje from contactar";
$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
#$next_id = $next_id + 1;
if ( $column > $next_id )
{
$next_id = $column;
}
}
}
}
$next_id = $next_id + 1;
$sql="insert into contactar (nombre, email ,mensaje, tipomensaje, id_usuario,
id_mensaje ) values('$nombre','$email','$texto',0,$id_mod,$next_id)";
$dataObject = executeSQLStatement($sql);
&avisoOK();
exit;
}

16

ID
Nombre
Descripcin
Parmetros
Tipo de
funcin

DD10
respuesta.cgi
Arma pantalla con respuestas de un debate seleccionado en la
lista de debates de un tema
$ident, $admin; $esmod, $usuario, $id_debate
Funcin cliente

Crea arreglos de cada columna que tiene que listar en este ambiente
$sql = "select titulo from debates where id_debate = $id_debate";
$dbh = &connectToDB();
$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
$titulo=" ";
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
$titulo = $column;
}
}
}
@texto = ();
$sql = "select texto from respuestas where id_debate = $id_debate and estado = 1";
$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
push(@texto,$column);
}
}
}
ya en el despliegue html muestra la lista de debates sacada de los arreglos
$i = 0;
for ($i=0;$i<$totreg;$i++)
{
print qq( <TR>);
print qq( <TD width="71%"><SPAN class=v1><a>$texto[$i] </a></SPAN></TD>);
print qq( <TD width="25%"><SPAN class=v1>$usuario[$i]</SPAN></TD>);
print qq( <TD align=middle width="8%"><SPAN );
print qq( class=v1>$fecha[$i]</SPAN></TD>);
print qq( <TD align=middle width="10%"><SPAN );
print qq( class=v1> </SPAN></TD></TR>);
}

ID
Nombre
Descripcin
Parmetros
Tipo de

DD11
administrador.cgi
Despliega un men con opciones de administracin
del sitio
$ident, $admin; $esmod, $usuario
Funcin cliente

17

funcin
Pgina sencilla, slo trae links para otras pginas
print qq(
<table width="673" border="0">);
print qq(
<tr>);
print qq(
<td width="316"><a href="http://localhost/cgibin/modifmod.cgi?ident=$ident&esmod=$esmod&esadmin=$esadmin&usuario=$usuario">Modificar
Moderador</a> </td>);
print qq(
<td width="250"><a href="http://localhost/cgibin/mantlist.cgi?ident=$ident&esmod=$esmod&esadmin=$esadmin&usuario=$usuario">Mantener
Lista de Temas</a> </td>);e
print qq(
<td width="32">&nbsp;</td>);
print qq(
<td width="57">&nbsp;</td>);
print qq(
</tr>);
print qq(
</table>);
print qq(
<table width="673" border="0">);
print qq(
<tr>);
print qq(
<td width="315"><a href="http://localhost/cgibin/validusr.cgi?ident=$ident&esmod=$esmod&esadmin=$esadmin&usuario=$usuario">Validar
Usuarios Nuevos</a> </td>);
print qq(
<td width="239"><a href="http://localhost/cgibin/modifusr.cgi?
ident=$ident&esmod=$esmod&esadmin=$esadmin&usuario=$usuario">Suspender/Eliminar
Usuarios</a></td>);
print qq(
<td width="36">&nbsp;</td>);
print qq(
<td width="65">&nbsp;</td>);
print qq(
</tr>);
print qq(
</table>);
print qq(
<table width="673" border="0">);
print qq(
<tr>);
print qq(
<td width="315"><a href="http://localhost/cgibin/validtem.cgi?ident=$ident&esmod=$esmod&esadmin=$esadmin&usuario=$usuario">Validar
Temas</a> </td>);
print qq(
<td width="239"><a href="http://localhost/cgibin/vermens1.cgi?ident=$ident&esmod=$esmod&esadmin=$esadmin&usuario=$usuario">Ver
Mensajes</a></td>);
print qq(
<td width="36">&nbsp;</td>);
print qq(
<td width="65">&nbsp;</td>);

ID
Nombre
Descripcin
Parmetros
Tipo de
funcin

DD12
identif.cgi
Pide datos para identificar a un usuario y lo valida en la tabla
de usuarios
$ident, $admin; $esmod, $usuario
Funcin cliente

Enva al usuario a un formulario, ya con los datos de vuelta busca en la tabla si estn
los datos correctos y es un usuario habilitado
if ($nombre eq "")
{
&printSearchForm();
exit;
}
else
{
$sql="select id_usuario from usuarios where username = '$nombre' and password =
'$passwd' and estado = 1";
$ident
= 0;
$esmod
= 0;
$esadmin = 0;
$dbh = &connectToDB();

18

$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
$ident = $column;
}
}
}
$sql="select esadmin from usuarios where username = '$nombre' and password =
'$passwd' and estado = 1";
$esadmin = 0;
$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
$esadmin = $column;
}
}
}
$sql="select * from temas where id_mod = $ident and estado = 1";
$esmod = 0;
$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
$esmod = $esmod + 1;
}
}
}
if ( $esmod > 0 )
{
$esmod = 1;
}
if ( $ident == 0 )
{
$usuario = "no_ident";
&usuariomalo();
}
else
{
$usuario = $nombre;
&usuariook();
}
exit;
}

ID
Nombre
Descripcin
Parmetros
Tipo de

DD13
mantlist.cgi
Dentro de la consola de administracin esta opcin permite
modificar estados de un tema ( suspender, reactivar ) o
eliminarlo.
$ident, $admin; $esmod, $usuario
Funcin cliente
19

funcin
Crea un formulario con un combobox variable y segn la opcin elegida hace acciones
sobre un tema
if ($tema eq "")
{
&printSearchForm();
exit;
}
else
{
$esmod
$esadmin
$ident
$usuario

=
=
=
=

cookie('esmod');
cookie('esadmin');
cookie('ident');
cookie('usuario');

$dbh = &connectToDB();
$sql="select id_tema from temas where nombre = '$tema'";
$id_tema = 0;
$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
$id_tema = $column;
}
}
}
if ( $accion == 0 )
{
$sql="update temas set estado = 2 where nombre = '$tema'";
$dataObject = executeSQLStatement($sql);
}
if ( $accion == 1 )
{
$sql="update temas set estado = 1 where nombre = '$tema'";
$dataObject = executeSQLStatement($sql);
}
if ( $accion == 2 )
{
$sql="delete from respuestas where id_debate in ( select id_debate from
debates where id_tema = $id_tema )";
$dataObject = executeSQLStatement($sql);
$sql="delete from debates where id_tema = $id_tema";
$dataObject = executeSQLStatement($sql);
$sql="delete from temas where id_tema = $id_tema";
$dataObject = executeSQLStatement($sql);
}
&avisoOK();
exit;
}
imprime combobox con lista de temas
print qq(
<TD class=tdAzul><SPAN class=v2>Consola del Administrador :
Mantener lista de temas </SPAN></TD>);
print qq(
</TR></TBODY></TABLE>);
print qq(
<br>);
print qq(
Temas
<br>
<p>);
print qq(
<select name="tema" size="1" id="tema">);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)

20

{
foreach $column (@$columnReference)
{
print qq( <option value="$column">$column</option>);
}
}
}
print
print
print
print
print
print
print
print
print
print
print
print
print

qq(
</select>);
qq(
<br>);
qq(
</p>);
qq(
<p>Accion<br>);
qq(
<br>);
qq(
<select name="accion" size="1" id="accion">);
qq( <option value=0>Suspender</option>);
qq( <option value=1>Reactivar</option>);
qq( <option value=2>Eliminar</option>);
qq(
</select>);
qq(
</p>);
qq(
<p>);
qq(
<input type="submit" name="requestType" value="Aceptar">);

ID
Nombre
Descripcin
Parmetros
Tipo de funcin

DD14
moddebate.cgi
Muestra los debates por moderar si es que el usuario en curso
es moderador de al menos un tema.
$ident, $admin; $esmod, $usuario
Funcin cliente

Crea arreglos con los datos para validar y los muestra en una formulario para ser
seleccionados via radio buttons
$dbh = &connectToDB();
@tema = ();
$sql = "select titulo from debates where estado = 0";
$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
push(@tema,$column);
}
}
}
@id_tema = ();
$sql = "select id_debate from debates where estado = 0";
$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
push(@id_tema,$column);
}
}
}
$totreg = $#tema + 1;
$i = 0;
for ($i=0;$i<$totreg;$i++)
{

21

print qq(
print qq(
print qq(
checked >Si);
print qq(
print qq(
print qq(
scope="col">$tema[$i]</td>);
print qq(
print qq(
}

ID
Nombre
Descripcin
Parmetros
Tipo de funcin

<tr>);
<td class="tdAzul" scope="col">);
<input name="radio$i" type="radio" value=$id_tema[$i]
<input name="radio$i" type="radio" value=0>No);
</td>);
<td width="475" class="tdAzul Estilo2"
<th width="65" scope="col">&nbsp;</th>);
</tr>);

DD15
moderador.cgi
Muestra menu de opciones para el moderador
$ident, $admin; $esmod, $usuario
Funcin cliente

Este mdulo slo muestra links a otros mdulos


print qq(
<TD class=tdAzul><SPAN class=v2>Consola
</SPAN></TD>);
print qq(
</TR></TBODY></TABLE>);
print qq(
<p>&nbsp;</p>);
print qq(
<p><BR>);
print qq(
</p>);
print qq(
<table width="655" border="0">);
print qq(
<tr>);
print qq(
<td width="317"><div align="center"><a
href="http://localhost/cgi-bin/moddebate.cgi?
ident=$ident&esmod=$esmod&esadmin=$esadmin&usuario=$usuario">Ver
</div></td>);
print qq(
<td width="328"><div align="center"><a
href="http://localhost/cgi-bin/modresp.cgi?
ident=$ident&esmod=$esmod&esadmin=$esadmin&usuario=$usuario">Ver
</div></td>);
print qq(
</tr>);
print qq(
</table>);
print qq(
<table width="655" border="0">);
print qq(
<tr>);
print qq(
<td width="317"><div align="center"><a
href="http://localhost/cgi-bin/vermens2.cgi?
ident=$ident&esmod=$esmod&esadmin=$esadmin&usuario=$usuario">Ver
</div></td>);
print qq(
</tr>);
print qq(
</table>);

ID
Nombre
Descripcin
Parmetros
Tipo de funcin

del Moderador

Nuevos Debates</a>

Nuevas Respuestas</a>

Mensajes</a>

DD16
modifmod.cgi
Opcin al interior del ambiente de administracin que permite
cambiarle el moderador a un tema
$ident, $admin; $esmod, $usuario
Funcin cliente

Arma un formulario con 2 combos variables, lo seleccionado causa las modificaciones en


las tablas involucradas
if ($tema eq "")
{
&printSearchForm();
exit;
}
else

22

{
$esmod
$esadmin
$ident
$usuario

=
=
=
=

cookie('esmod');
cookie('esadmin');
cookie('ident');
cookie('usuario');

$sql="select id_usuario from usuarios where username = '$nombre'";


$id_usuario = 0;
$dbh = &connectToDB();
$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
$id_usuario = $column;
}
}
}
$sql="update temas set id_mod = $id_usuario where nombre = '$tema'";
$dataObject = executeSQLStatement($sql);
&avisoOK();
exit;
}
print qq(
</TR></TBODY></TABLE>);
print qq(
<br>);
print qq(
Temas
<br>
<p>);
print qq(
<select name="tema" size="1" id="tema">);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
print qq( <option value="$column">$column</option>);
}
}
}
print qq(
</select>);
print qq(
<br>);
print qq(
</p>);
print qq(
<p>Usuarios<br>);
print qq(
<br>);
print qq(
<select name="nombre" size="1" id="nombre">);
$sql = "select username from usuarios";
$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
print qq( <option value="$column">$column</option>);
}
}
}
print qq(
</select>);
print qq(
</p>);
print qq(
<p>);
print qq(
<input type="submit" name="requestType" value="Aceptar">);

ID
Nombre
Descripcin

DD17
modifusr.cgi
Opcin al interior del ambiente de administracin que permite
cambiar la situacin de un usuario ( suspender, reactivar,
23

Parmetros
Tipo de
funcin

eliminar )
$ident, $admin; $esmod, $usuario
Funcin cliente

Crea un formulario con combos, luego segn accion elegida hace modificaciones
a la tabla
$esmod
$esadmin
$ident
$usuario

= cookie('esmod');
= cookie('esadmin');
= cookie('ident');
= cookie('usuario');

$dbh = &connectToDB();
$sql="select id_usuario from usuarios where username = '$nombre'";
$id_usuario = 0;
$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
$id_usuario = $column;
}
}
}
if ( $accion == 0 )
{
$sql="update usuarios set estado = 2 where username = '$nombre'";
$dataObject = executeSQLStatement($sql);
}
if ( $accion == 1 )
{
$sql="update usuarios set estado = 1 where username = '$nombre'";
$dataObject = executeSQLStatement($sql);
}
if ( $accion == 2 )
{
$sql="update respuestas set id_usuario = 1 where id_usuario = $id_usuario";
$dataObject = executeSQLStatement($sql);
$sql="update debates set id_usuario = 1 where id_usuario = $id_usuario";
$dataObject = executeSQLStatement($sql);
$sql="delete from usuarios where username = '$nombre'";
$dataObject = executeSQLStatement($sql);
}
&avisoOK();
print qq(
</TR></TBODY></TABLE>);
print qq(
<br>);
print qq(
Usuarios
<br>
<p>);
print qq(
<select name="nombre" size="1" id="nombre">);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
print qq( <option value="$column">$column</option>);
}
}
}
print qq(
</select>);
print qq(
<br>);
print qq(
</p>);
print qq(
<p>Accion<br>);

24

print
print
print
print
print
print
print
print
print

qq(
<br>);
qq(
<select name="accion" size="1" id="accion">);
qq( <option value=0>Suspender</option>);
qq( <option value=1>Reactivar</option>);
qq( <option value=2>Eliminar</option>);
qq(
</select>);
qq(
</p>);
qq(
<p>);
qq(
<input type="submit" name="requestType" value="Aceptar">);

ID
Nombre
Descripcin
Parmetros
Tipo de
funcin

DD18
modresp.cgi
Permite al moderador validar respuestas
$ident, $admin; $esmod, $usuario
Funcin cliente

Arma columnas de datos en arreglos, luego muestra lista con radio button
{
$dbh = &connectToDB();
@tema = ();
$sql = "select texto from respuestas where estado = 0";
$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
push(@tema,$column);
}
}
}
@id_tema = ();
$sql = "select id_respuesta from respuestas where estado = 0";
$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
push(@id_tema,$column);
}
}
}
$totreg = $#tema + 1;
print qq(
<TD class=tdAzul><SPAN class=v2>Consola del Moderador :
Validar Respuestas </SPAN></TD>);
print qq(
</TR></TBODY></TABLE>);
print qq(
<br><table width="672" border="0">);
$i = 0;
for ($i=0;$i<$totreg;$i++)
{
print qq(
print qq(
print qq(
checked >Si);
print qq(
print qq(

<tr>);
<td class="tdAzul" scope="col">);
<input name="radio$i" type="radio" value=$id_tema[$i]
<input name="radio$i" type="radio" value=0>No);
</td>);

25

print qq(
scope="col">$tema[$i]</td>);
print qq(
print qq(
}
print qq(
print qq(

ID
Nombre
Descripcin
Parmetros
Tipo de
funcin

<td width="475" class="tdAzul Estilo2"


<th width="65" scope="col">&nbsp;</th>);
</tr>);

</table>
<br>
<br>
<p>);
<input type="submit" name="requestType" value="Aceptar">);

DD19
nrespuesta.cgi
Permite a un usuario identificado agregar un opinin dentro de
un debate
$ident, $admin; $esmod, $usuario, $id_debate
Funcin cliente

Muestra formulario y sus datos los ingresa a la tabla respuestas


if ($ntema eq "")
{
&printSearchForm();
exit;
}
else
{
$next_id =
$esmod
$esadmin
$ident
$usuario
$id_debate

1;
= cookie('esmod');
= cookie('esadmin');
= cookie('ident');
= cookie('usuario');
= cookie('id_debate');

$sql="select usuario from respuestas";


$dbh = &connectToDB();
$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
#$next_id = $next_id + 1;
if ( $column > $next_id )
{
$next_id = $column;
}
}
}
}
$next_id = $next_id + 1;
$sql="insert into respuestas (id_respuesta, id_debate, texto ,usuario, id_usuario,
fecha, hora, estado ) values($next_id,$id_debate, '$ntema','$usuario', $ident,
'11/11/2003', '11:40', 0)";
$dataObject = executeSQLStatement($sql);
&avisoOK();
exit;
}

ID
Nombre

DD20
nuevotema.cgi

26

Descripcin
Parmetros
Tipo de funcin

Permite a un usuario identificado ingresar un nuevo tema


$ident, $admin; $esmod, $usuario
Funcin cliente

Con un formulario trae datos de nuevo tema, previamente chequea tema repetido y que
hayan aceptado un checkbox.
if ($ntema eq "")
{
&printSearchForm();
exit;
}
else
{
if ( $aceptacond ne 1 )
{
&debeaceptar();
exit;
}
$existe = 0;
$next_id = 1;
$sql="select nombre from temas where nombre = '$ntema'";
$dbh = &connectToDB();
$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
$existe = 1;
}
}
}
$esmod
$esadmin
$ident
$usuario

=
=
=
=

cookie('esmod');
cookie('esadmin');
cookie('ident');
cookie('usuario');

if ( $existe == 1 )
{
&temaexiste();
exit;
}
$sql="select id_tema from temas";
$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
#$next_id = $next_id + 1;
if ( $column > $next_id )
{
$next_id = $column;
}
}
}
}
$next_id = $next_id + 1;
$sql="insert into temas (id_tema, nombre ,estado, id_mod )
values($next_id,'$ntema',0,$ident)";
$dataObject = executeSQLStatement($sql);

27

&avisoOK();
exit;
}

ID
Nombre
Descripcin
Parmetros
Tipo de
funcin

DD21
nusuario.cgi
Permite a cualquier visitante o usuario inscribir a
travs de un formulario un nuevo integrante del sitio
$ident, $admin; $esmod, $usuario
Funcin cliente

Crea un formulario con datos de nuevo usuario, luego una vez llegado los datos hace una
serie de validaciones como evitar campos en blanco o contrasea incorrecta
if ($username eq "")
{
&printSearchForm();
exit;
}
else
{
if ( $aceptacond ne 1 )
{
&debeaceptar();
exit;
}
$existe = 0;
$next_id = 1;
$sql="select username from usuarios where username = '$username'";
$dbh = &connectToDB();
$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
$existe = 1;
}
}
}
$esmod
$esadmin
$ident
$usuario

=
=
=
=

cookie('esmod');
cookie('esadmin');
cookie('ident');
cookie('usuario');

if ( $existe == 1 )
{
&userexiste();
exit;
}
$sql="select id_usuario from usuarios";
$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
#$next_id = $next_id + 1;

28

if ( $column > $next_id )


{
$next_id = $column;
}
}
}
}
$next_id = $next_id + 1;
if ( $passwd1 ne $passwd2 )
{
&passdist();
exit;
}
if ( $Nombrecompleto eq "" )
{
&passdist();
exit;
}
if ( $passwd1 eq "" )
{
&passdist();
exit;
}
if ( $email eq "" )
{
&passdist();
exit;
}
$sql="insert into usuarios (id_usuario, username ,nombrecomp, password, email, sexo,
estado, esadmin ) values($next_id,'$username','$Nombrecompleto','$passwd1','$email',
$sexo,0,0)";
$dataObject = executeSQLStatement($sql);
&avisoOK();
exit;
}

ID
Nombre
Descripcin
Parmetros
Tipo de
funcin

DD22
validtem.cgi
Opcin al interior del ambiente de administracin que permite
validar los nuevos temas incritos por los usuarios
$ident, $admin; $esmod, $usuario
Funcin cliente

Para los temas por validar crea arreglos que permiten crear una matriz de validacin via
radio buttons,los cuales indican que tema se valida y cual se elimina
{
$dbh = &connectToDB();
@tema = ();
$sql = "select nombre from temas where estado = 0";
$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
push(@tema,$column);
}
}
}
@id_tema = ();
$sql = "select id_tema from temas where estado = 0";

29

$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
push(@id_tema,$column);
}
}
}
$totreg = $#tema + 1;
print qq(
<TD class=tdAzul><SPAN class=v2>Consola del Administrador :
Validar Tema </SPAN></TD>);
print qq(
</TR></TBODY></TABLE>);
print qq(
<br><table width="672" border="0">);
$i = 0;
for ($i=0;$i<$totreg;$i++)
{
print qq(
print qq(
print qq(
checked >Si);
print qq(
print qq(
print qq(
scope="col">$tema[$i]</td>);
print qq(
print qq(
}
print qq(
print qq(

ID
Nombre
Descripcin
Parmetros
Tipo de
funcin

<tr>);
<td class="tdAzul" scope="col">);
<input name="radio$i" type="radio" value=$id_tema[$i]
<input name="radio$i" type="radio" value=0>No);
</td>);
<td width="475" class="tdAzul Estilo2"
<th width="65" scope="col">&nbsp;</th>);
</tr>);

</table>
<br>
<br>
<p>);
<input type="submit" name="requestType" value="Aceptar">);

DD23
validusr.cgi
Opcin al interior del ambiente de administracin
que permite validar los nuevos usuarios
$ident, $admin; $esmod, $usuario
Funcin cliente

Crea una matriz de datos con botones de radio button para seleccionar quien se
elimina y quien se acepta.
$dbh = &connectToDB();
@username = ();
$sql = "select username from usuarios where estado = 0";
$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
push(@username,$column);
}
}
}
@id_usuario = ();
$sql = "select id_usuario from usuarios where estado = 0";

30

$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
push(@id_usuario,$column);
}
}
}
$totreg = $#username + 1;
print qq(
<TD class=tdAzul><SPAN class=v2>Consola del Administrador :
Validar usuarios </SPAN></TD>);
print qq(
</TR></TBODY></TABLE>);
print qq(
<br><table width="672" border="0">);
$i = 0;
for ($i=0;$i<$totreg;$i++)
{
print qq(
<tr>);
print qq(
<td class="tdAzul" scope="col">);
print qq(
<input name="radio$i" type="radio"
value=$id_usuario[$i] checked >Si);
print qq(
<input name="radio$i" type="radio" value=0>No);
print qq(
</td>);
print qq(
<td width="475" class="tdAzul Estilo2"
scope="col">$username[$i]</td>);
print qq(
<th width="65" scope="col">&nbsp;</th>);
print qq(
</tr>);
}
print qq(
print qq(

ID
Nombre
Descripcin
Parmetros
Tipo de
funcin

</table>
<br>
<br>
<p>);
<input type="submit" name="requestType" value="Aceptar">);

DD24
Vermens1.cgi
Permite al administrador ver los mensajes que le
han dejado los usuarios
$ident, $admin; $esmod, $usuario
Funcin cliente

Permite armar un listado con los mensajes , mediante radio button se selecciona los
ya leidos y se eliminan de la tabla
$dbh = &connectToDB();
@nombre = ();
$sql = "select nombre from contactar where tipomensaje = 1";
$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
push(@nombre,$column);
}
}
}
print qq(
<TD class=tdAzul><SPAN class=v2>Consola del Administrador :
Ver mensajes </SPAN></TD>);

31

print qq(
print qq(

</TR></TBODY></TABLE>);
<br><table width="672" border="0">);

$i = 0;
for ($i=0;$i<$totreg;$i++)
{
print qq(<tr>);
print qq(<td width="150" class="tdAzul" scope="col">);
print qq(<input name="radio$i" type="radio" value=$id_mensaje[$i]
checked > Borrar);
print qq(<input name="radio$i" type="radio" value=0>No Borrar);
print qq(</td>);
print qq(<td width="83" class="tdAzul Estilo2"
scope="col">$nombre[$i]</td>);
print qq(<td width="115" class="tdAzul Estilo2"
scope="col">$email[$i]</td>);
print qq(<td width="307" class="tdAzul Estilo2"
scope="col">$texto[$i]</td>);
print qq(</tr>);
#print qq(
<tr>);
#print qq(
<td class="tdAzul" scope="col">);
#print qq(
<input name="radio$i" type="radio"
value=$id_mensaje[$i] checked >Borrar);
#print qq(
<input name="radio$i" type="radio" value=0>No
Borrar);
#print qq(
</td>);
#print qq(
<td width="475" class="tdAzul Estilo2"
scope="col">$texto[$i]</td>);
#print qq(
<th width="65" scope="col">&nbsp;</th>);
#print qq(
</tr>);
}

ID
Nombre
Descripcin
Parmetros
Tipo de
funcin

DD25
Vermens2.cgi
Permite al moderador ver los mensajes que le han
dejado los usuarios
$ident, $admin; $esmod, $usuario
Funcin cliente

Permite armar un listado con los mensajes , mediante radio button se selecciona los
ya leidos y se eliminan de la tabla
$ident = cookie('ident');
$dbh
= &connectToDB();
@nombre = ();
$sql = "select nombre from contactar where tipomensaje = 0 and id_usuario = $ident";
$dataObject = executeSQLStatement($sql);
@dbRows = &getDBRows($dataObject);
foreach $rowReference (@dbRows)
{
foreach $columnReference (@$rowReference)
{
foreach $column (@$columnReference)
{
push(@nombre,$column);
}
}
}
print qq(
<TD class=tdAzul><SPAN class=v2>Consola del Moderador : Ver
mensajes </SPAN></TD>);
print qq(
</TR></TBODY></TABLE>);
print qq(
<br><table width="672" border="0">);
$i = 0;
for ($i=0;$i<$totreg;$i++)
{
print qq(<tr>);

32

print qq(<td width="150" class="tdAzul" scope="col">);


print qq(<input name="radio$i" type="radio" value=$id_mensaje[$i]
checked > Borrar);
print qq(<input name="radio$i" type="radio" value=0>No Borrar);
print qq(</td>);
print qq(<td width="83" class="tdAzul Estilo2"
scope="col">$nombre[$i]</td>);
print qq(<td width="115" class="tdAzul Estilo2"
scope="col">$email[$i]</td>);
print qq(<td width="307" class="tdAzul Estilo2"
scope="col">$texto[$i]</td>);
print qq(</tr>);
#print qq(
<tr>);
#print qq(
<td class="tdAzul" scope="col">);
#print qq(
<input name="radio$i" type="radio"
value=$id_mensaje[$i] checked >Borrar);
#print qq(
<input name="radio$i" type="radio" value=0>No
Borrar);
#print qq(
</td>);
#print qq(
<td width="475" class="tdAzul Estilo2"
scope="col">$texto[$i]</td>);
#print qq(
<th width="65" scope="col">&nbsp;</th>);
#print qq(
</tr>);
}

33

APNDICE B: MATRIZ DE TRAZABILIDAD DE SR vs COMPONENTES

34

También podría gustarte