Docuento de Diseño Detallado segun la ESA V 0.1

47
Universidad de Santiago de Chile. Facultad de Ingeniería - Departamento de Ingeniería Informática Ingeniería de Ejecución en Computación e Informática Cátedra de Ingeniería del Software Software para la Administración de un Foro Conversacional Documento de Requerimientos de Usuario (DDD) Escrito de acuerdo a la Norma PSS-05. Estándar de Ingeniería de Software de la ESA ESTADO DEL DOCUMENTO SISTEMA DE ADMINISTRACION DE PROYECTOS VERSION AUTOR FECHA RAZONES DEL CAMBIO 1.0 Documento de Diseño Detallado Integrantes:

Transcript of Docuento de Diseño Detallado segun la ESA V 0.1

Page 1: Docuento de Diseño Detallado segun la ESA V 0.1

Universidad de Santiago de Chile.Facultad de Ingeniería - Departamento de Ingeniería InformáticaIngeniería de Ejecución en Computación e InformáticaCátedra de Ingeniería del Software

Software para la Administraciónde un Foro Conversacional

Documento de Requerimientos de

Usuario (DDD)

Escrito de acuerdo a la Norma PSS-05.Estándar de Ingeniería de Software de la ESA

ESTADO DEL DOCUMENTOSISTEMA DE ADMINISTRACION DE PROYECTOS

VERSION AUTOR FECHA RAZONES DEL CAMBIO1.0 Documento de Diseño Detallado

Integrantes:

Curso: Ingeniería de SoftwareProfesor: Juan Carlos Cockbaine O.Ayudante Paulo Quinsacara

Julio

Page 2: Docuento de Diseño Detallado segun la ESA V 0.1

TABLA DE CONTENIDOS

1. INTRODUCCIÓN

1

1.1 PROPÓSITO

1

1.2 ÁMBITO

1

1.3 DEFINICIONES Y ABREVIATURAS

1

1.4 REFERENCIAS

1

1.5 VISIÓN GENERAL

2

2. ESTÁNDARES DEL PROYECTO CONVENCIONES Y PROCEDIMIENTOS

2

2.1 ESTÁNDARES DE DISEÑO

2

2.2 ESTÁNDARES DE PROGRAMACIÓN

2

2.3 HERRAMIENTAS DE DESARROLLO DE SOFTWARE

2

3. DESCRIPCIÓN DE LOS COMPONENTES

2

4. PLAN DE PRUEBAS

6

Software para la Administración de un Foro de Discusión DDD ii

Page 3: Docuento de Diseño Detallado segun la ESA V 0.1

4.1. Pruebas de verificación y validación de datos

6

4.2. Pruebas de integración

6

APÉNDICE A: LISTADO CÓDIGO FUENTE

8

APÉNDICE B: MATRIZ DE TRAZABILIDAD DE SR VS COMPONENTES

34

Software para la Administración de un Foro de Discusión DDD iii

Page 4: Docuento de Diseño Detallado segun la ESA V 0.1

1. INTRODUCCIÓN

El propósito de este documento, es detallar los primeros módulos definidos, por tratarse de una primera versión.

1.1Propósito

El propósito de este documento, es al final del proyecto detallar todos los módulos definidos en la fase AD, codificarlo y documentarlo.

1.2Ámbito

Este Documento, es una herramienta práctica y necesaria para un desarrollador, acá se describe cada componente (módulos) que usara el software, que será definido en las etapas posteriores a esta versión.

1.3Definiciones y Abreviaturas

SAFODI Producto de software a elaborar

ADDDocumento de Diseño Arquitectónico de la aplicación SAFODI

DDDDocumento de Diseño Detallado de la aplicación

Metodo

1.4Referencias

Textos

Documento desarrollado en la fase URD.Noemí Nuñez, Jorge Pérez y Manuel Silva.

Ingeniería de Software, Un enfoque práctico. Roger Pressman V5.

ESA Software Engineering Standards, ESA PSS-05-00 Issue 2.

Apuntes de clase de Ingeniería de Software,Profesor Juan Carlos Cockbaine, Universidad de Santiago de Chile.

Page 5: Docuento de Diseño Detallado segun la ESA V 0.1

1.5Visión General

La fase Diseño Detallado (DD), pretende ahondar más el nivel de abstracción, de manera de especificar con mayor detalle los módulos que participan en el desarrollo del producto de software SAFODI

2. ESTÁNDARES DEL PROYECTO CONVENCIONES Y PROCEDIMIENTOS

2.1Estándares de Diseño

Este proyecto ha sido desarrollado en base al paradigma de proceso incremental estudiado en cátedra, y a través de los distintos documentos como el libro: Ingeniería de Software, Un enfoque práctico, del autor Roger Pressman V5, ESA Software Engineering Standards, ESA PSS-05-00 Issue 2 y Apuntes de clase de Ingeniería de Software, Profesor Juan Carlos Cockbaine, Universidad de Santiago de Chile.

El método utilizado, el análisis estructurado, se esta organizando a través de la función a procedimientos, este se basa en la descomposición de un programa en sub-programas, la unidad fundamental de este tipo de descomposición 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 Análisis estructurado se concentra en especificar y descomponer la funcionalidad del sistema total.

2.2Estándares de Programación

Se está realizando una programación mediante módulos, como en el diagrama modular y se están definiendo los parámetros para su posterior utilización.

2.3Herramientas de desarrollo de Software

El lenguaje de programación que se usara será Perl.

3. DESCRIPCIÓN DE LOS COMPONENTES

Descripción de componentes

ID DD1Nombre inicio.cgiDescripción Módulo de inicio del sitioParámetros ningunoTipo de función Función cliente

2

Page 6: Docuento de Diseño Detallado segun la ESA V 0.1

ID DD2Nombre semaforo.cgiDescripción Menú principal del sitioParámetros $ident, $admin; $esmod, $usuarioTipo de función Función cliente

ID DD3Nombre mapaconv.cgiDescripción Muestra el mapa conversacionalParámetros $ident, $admin; $esmod, $usuarioTipo de función Función cliente

ID DD4Nombre politicas.cgiDescripción Muestra políticas del sitioParámetros $ident, $admin; $esmod, $usuarioTipo de función Función cliente

ID DD5Nombre mapadelsitio.cgiDescripción Muestra el mapa del sitioParámetros $ident, $admin; $esmod, $usuarioTipo de función Función cliente

ID DD6Nombre contadm.cgiDescripción Muestra políticas del sitioParámetros $ident, $admin; $esmod, $usuarioTipo de función Función cliente

ID DD7Nombre debates.cgiDescripción Arma pantalla con debates de un tema seleccionado al inicio del sitioParámetros $ident, $admin; $esmod, $usuario, $id_temaTipo de función Función cliente

ID DD8Nombre ndebate.cgiDescripción Crea página para inscribir un nuevo debateParámetros $ident, $admin; $esmod, $usuarioTipo de función Función cliente

ID DD9Nombre mailmod.cgiDescripción Permite mandar un mensaje al moderador de un temaParámetros $ident, $admin; $esmod, $usuarioTipo de función Función cliente

ID DD10Nombre respuesta.cgi

3

Page 7: Docuento de Diseño Detallado segun la ESA V 0.1

Descripción Arma pantalla con respuestas de un debate seleccionado en la lista de debates de un tema

Parámetros $ident, $admin; $esmod, $usuario, $id_debateTipo de función Función cliente

ID DD11Nombre administrador.cgiDescripción Despliega un menú con opciones de administración del sitioParámetros $ident, $admin; $esmod, $usuarioTipo de función Función cliente

ID DD12Nombre identif.cgiDescripción Pide datos para identificar a un usuario y lo valida en la tabla de

usuariosParámetros $ident, $admin; $esmod, $usuarioTipo de función Función cliente

ID DD13Nombre mantlist.cgiDescripción Dentro de la consola de administración esta opción permite modificar

estados de un tema ( suspender, reactivar ) o eliminarlo. Parámetros $ident, $admin; $esmod, $usuarioTipo de función Función cliente

ID DD14Nombre moddebate.cgiDescripción Muestra los debates por moderar si es que el usuario en curso es

moderador de al menos un tema.Parámetros $ident, $admin; $esmod, $usuarioTipo de función Función cliente

ID DD15Nombre moderador.cgiDescripción Muestra menu de opciones para el moderadorParámetros $ident, $admin; $esmod, $usuarioTipo de función Función cliente

ID DD16Nombre modifmod.cgiDescripción Opción al interior del ambiente de administración que permite

cambiarle el moderador a un tema Parámetros $ident, $admin; $esmod, $usuarioTipo de función Función cliente

ID DD17Nombre modifusr.cgiDescripción Opción al interior del ambiente de administración que permite cambiar

la situación de un usuario ( suspender, reactivar, eliminar )Parámetros $ident, $admin; $esmod, $usuario

4

Page 8: Docuento de Diseño Detallado segun la ESA V 0.1

Tipo de función Función cliente

ID DD18Nombre modresp.cgiDescripción Permite al moderador validar respuestasParámetros $ident, $admin; $esmod, $usuarioTipo de función Función cliente

ID DD19Nombre nrespuesta.cgiDescripción Permite a un usuario identificado agregar un opinión dentro de un

debate Parámetros $ident, $admin; $esmod, $usuario, $id_debateTipo de función Función cliente

ID DD20Nombre nuevotema.cgiDescripción Permite a un usuario identificado ingresar un nuevo temaParámetros $ident, $admin; $esmod, $usuarioTipo de función Función cliente

ID DD21Nombre nusuario.cgiDescripción Permite a cualquier visitante o usuario inscribir a través de un

formulario un nuevo integrante del sitioParámetros $ident, $admin; $esmod, $usuarioTipo de función Función cliente

ID DD22Nombre validtem.cgiDescripción Opción al interior del ambiente de administración que permite validar

los nuevos temas incritos por los usuariosParámetros $ident, $admin; $esmod, $usuarioTipo de función Función cliente

ID DD23Nombre validuser.cgiDescripción Opción al interior del ambiente de administración que permite validar

los nuevos usuariosParámetros $ident, $admin; $esmod, $usuarioTipo de función Función cliente

ID DD24Nombre Vermens1.cgiDescripción Permite al administrador ver los mensajes que le han dejado los

usuariosParámetros $ident, $admin; $esmod, $usuarioTipo de función Función cliente

ID DD25

5

Page 9: Docuento de Diseño Detallado segun la ESA V 0.1

Nombre Vermens2.cgiDescripción Permite al moderador ver los mensajes que le han dejado los usuariosParámetros $ident, $admin; $esmod, $usuarioTipo de función Función cliente

4. PLAN DE PRUEBAS

Las pruebas de software son un elemento crítico para la garantía de calidad del software y representan una revisión final de las especificaciones, diseño y codificación. Conociendo la función específica para la que fue diseñado el software, se crean pruebas que demuestren la operatividad de cada función, es decir, que la operación interna se ajusta a la perfección con las especificaciones y requerimientos para lo que fue diseñada.

El objetivo de esta etapa fue encontrar errores, para ello, solamente se utilizó el método de la “caja negra” verificando el dominio de entrada y salida del software para descubrir errores de funcionalidad, comportamiento y desempeño. En esta etapa se hicieron revisiones en forma más general, recorriendo la funcionalidad del sitio web. La razón de lo anterior se debe a que el esquema interno de los módulos es lineal, además, por falta de tiempo no se hicieron más pruebas de ‘caja blanca’.

Para realizar la estrategia de prueba antes mencionada, se debió poblar la base de datos del foro, llenando datos de carácter 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 verificación y validación de datos5. Pruebas de integración6. Pruebas de sistema

4.1. Pruebas de verificación y validación de datosEste tipo de pruebas tiene por función realizar la verificación y validación.

Por verificación, se entiende el conjunto de actividades que asegure que el software desarrollado realice correctamente una función específica.

La validación, se refiere a un conjunto de actividades que aseguren que el software construido se ajusta a los requisitos del cliente.

4.2. Pruebas de integraciónEstas corresponden a una técnica sistemática para construir la estructura de un programa mientras que se intentaba detectar errores asociados con la interacción entre los módulos

6

Page 10: Docuento de Diseño Detallado segun la ESA V 0.1

que componen el sistema, para ello, se realizaron pruebas cada vez que se integra un nuevo módulo.

Dentro de las pruebas realizadas se experimentó con diferentes usuarios, pues la forma de enfrentarse a la interacción con una aplicación cambia de una persona a otra, pudiendo así aumentar la probabilidad de encontrar un error de programación.

Nro. Verificador Prueba Resultado1 Noemí Nuñez Ingresar Tema Tema ingresado a la base de

datos2 Manuel Silva Eliminar Tema Se pudo verificar que al eliminar

un tema el sistema es capaz de eliminar todos los registros que están afectos por su dominancia

3 Jorge Pérez Ingreso a consola de administrador

Se pudo comprobar que sólo 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.

4 Noemí Nuñez Ingreso de un debate Se ingresó un debate, quedando este oculto al visitante de la página, estado del cual no saldrá hasta que el moderador valide dicho debate.

5 Manuel Silva Ingreso de una opinión Se ingresó una opinión, quedando este oculto al visitante de la página, estado del cual no saldrá hasta que el moderador valide dicha opinión.

6 Noemí Nuñez Envío de mail al administrador

Se envió mail al administrador, quedando disponible en los mensajes para leer del administrador

7 Jorge Pérez Envío de mail al moderador de un tema

Se envió mail al moderador, quedando disponible en los mensajes para leer de dicho moderador

8 Manuel Silva Moderar debates Se aprobaron y rechazaron algunos debates publicados por los usuarios

9 Noemí Nuñez Moderar opiniones Se aprobaron y rechazaron algunas opiniones publicadas por los usuarios

10 Manuel Silva Cambiar moderador a un tema

Se ingresó como administrador y desde la herramienta de cambiar moderador se cambió a uno.

11 Noemí Nuñez Suspender usuario Se suspendió usuario comprobando que no tuvo acceso a publicar

7

Page 11: Docuento de Diseño Detallado segun la ESA V 0.1

DDD

APÉNDICE A: LISTADO CÓDIGO FUENTE

LISTADO CÓDIGO FUENTE

8

Page 12: Docuento de Diseño Detallado segun la ESA V 0.1

ID DD1Nombre inicio.cgiDescripción Módulo de inicio del sitioParámetros ningunoTipo de función Función cliente

#!C:\perl\bin\perl.exe -w use CGI;

$ident = 0;$esmod = 0;$esadmin = 0;$usuario = "no_ident";

ID DD2Nombre semaforo.cgiDescripción Menú principal del sitioParámetros $ident, $admin; $esmod, $usuarioTipo de función Función cliente

Módulo semáforo.cgi, es el programa principal que arranca a los demás, está puesto completamente, aunque los otros módulos sólo se explicarán 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 parámetros y se integran al programa.

$x = new CGI;$trasp = $x->param('esmod');$esmod = 0;$esmod = $esmod+$trasp;$trasp = $x->param('esadmin');$esadmin = 0;$esadmin = $esadmin+$trasp;$trasp = $x->param('ident');$ident = 0;$ident = $ident+$trasp;$usuario = $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";

9

Page 13: Docuento de Diseño Detallado segun la ESA V 0.1

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

aquí arriba se ejecuta una consulta que lista los nombres de los temas de conversación.

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=Español 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">Identificación</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>);

10

Page 14: Docuento de Diseño Detallado segun la ESA V 0.1

Si las variables globales hacen ver que el usuario es moderador o administrador según las variables globales entonces despliega código html adicional para que lo imprima en el navegador del cliente.

if ($esadmin eq 1){print qq( <a

href="http://localhost/cgi-bin/administrador.cgi?ident=$ident&esmod=$esmod&esadmin=$esadmin&usuario=$usuario">Administrador</a><br>\n);

}if ($esmod eq 1)

{print qq( <a

href="http://localhost/cgi-bin/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 sólo si el visitante es usuario identificado

if ($ident eq 0)

11

Page 15: Docuento de Diseño Detallado segun la ESA V 0.1

{print qq(<TD class=tdtitulo align=middle width=120><div align="center">Nuevo Tema</a>

</div></TD>\n);}

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();}

12

Page 16: Docuento de Diseño Detallado segun la ESA V 0.1

ID DD3Nombre mapaconv.cgiDescripción Muestra el mapa conversacionalParámetros $ident, $admin; $esmod, $usuarioTipo de función

Función cliente

Rutina no implementada aún. Por ahora muestra una imagen de lo que sería el applet del mapa conversacional.

ID DD4Nombre politicas.cgiDescripción Muestra políticas del sitioParámetros $ident, $admin; $esmod, $usuarioTipo de función

Función cliente

Página plana sin consultas, sólo muestra de manera fija las políticas del sitio.

ID DD5Nombre mapadelsitio.cgiDescripción Muestra el mapa del sitioParámetros $ident, $admin; $esmod, $usuarioTipo de función

Función cliente

Página fija con una imagen jpg del mapa del sitio.

ID DD6Nombre contadm.cgiDescripción Muestra políticas del sitioParámetros $ident, $admin; $esmod, $usuarioTipo de función

Función cliente

Este código primero envía 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 = cookie('esmod');$esadmin = cookie('esadmin');$ident = cookie('ident');$usuario = cookie('usuario');

$sql="select id_mensaje from contactar";$dbh = &connectToDB();

13

Page 17: Docuento de Diseño Detallado segun la ESA V 0.1

$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',1,0,$next_id)";

$dataObject = executeSQLStatement($sql);&avisoOK();exit;}

ID DD7Nombre debates.cgiDescripción Arma pantalla con debates de un tema seleccionado al inicio

del sitioParámetros $ident, $admin; $esmod, $usuario, $id_temaTipo de función

Función 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);}

}}

14

Page 18: Docuento de Diseño Detallado segun la ESA V 0.1

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

href="http://localhost/cgi-bin/respuesta.cgi?ident=$ident&esmod=$esmod&esadmin=$esadmin&usuario=$usuario&id_debate=$iddebate[$i]">$titulo[$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 DD8Nombre ndebate.cgiDescripción Crea página para inscribir un nuevo debateParámetros $ident, $admin; $esmod, $usuarioTipo de función

Función cliente

Este código primero envía 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 = 1;$esmod = cookie('esmod');$esadmin = cookie('esadmin');$ident = cookie('ident');$usuario = cookie('usuario');$idtema = 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();

15

Page 19: Docuento de Diseño Detallado segun la ESA V 0.1

exit;}

ID DD9Nombre mailmod.cgiDescripción Permite mandar un mensaje al moderador de un temaParámetros $ident, $admin; $esmod, $usuarioTipo de función Función cliente

Este código primero envía 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 = cookie('esmod');$esadmin = cookie('esadmin');$ident = cookie('ident');$usuario = 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

Page 20: Docuento de Diseño Detallado segun la ESA V 0.1

}

ID DD10Nombre respuesta.cgiDescripción Arma pantalla con respuestas de un debate seleccionado en la

lista de debates de un tema Parámetros $ident, $admin; $esmod, $usuario, $id_debateTipo de función

Función 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 DD11Nombre administrador.cgiDescripción Despliega un menú con opciones de administración

del sitioParámetros $ident, $admin; $esmod, $usuarioTipo de Función cliente

17

Page 21: Docuento de Diseño Detallado segun la ESA V 0.1

función

Página sencilla, sólo trae links para otras páginas

print qq( <table width="673" border="0">);print qq( <tr>);print qq( <td width="316"><a href="http://localhost/cgi-bin/modifmod.cgi?ident=$ident&esmod=$esmod&esadmin=$esadmin&usuario=$usuario">Modificar Moderador</a> </td>);print qq( <td width="250"><a href="http://localhost/cgi-bin/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/cgi-bin/validusr.cgi?ident=$ident&esmod=$esmod&esadmin=$esadmin&usuario=$usuario">Validar Usuarios Nuevos</a> </td>);print qq( <td width="239"><a href="http://localhost/cgi-bin/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/cgi-bin/validtem.cgi?ident=$ident&esmod=$esmod&esadmin=$esadmin&usuario=$usuario">Validar Temas</a> </td>);print qq( <td width="239"><a href="http://localhost/cgi-bin/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 DD12Nombre identif.cgiDescripción Pide datos para identificar a un usuario y lo valida en la tabla

de usuariosParámetros $ident, $admin; $esmod, $usuarioTipo de función

Función cliente

Envía al usuario a un formulario, ya con los datos de vuelta busca en la tabla si están 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;

18

Page 22: Docuento de Diseño Detallado segun la ESA V 0.1

$esadmin = 0;$dbh = &connectToDB();$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 DD13Nombre mantlist.cgiDescripción Dentro de la consola de administración esta opción permite

modificar estados de un tema ( suspender, reactivar ) o eliminarlo.

19

Page 23: Docuento de Diseño Detallado segun la ESA V 0.1

Parámetros $ident, $admin; $esmod, $usuarioTipo de función

Función cliente

Crea un formulario con un combobox variable y según la opción elegida hace acciones sobre un tema

if ($tema eq ""){&printSearchForm();

exit;}

else{$esmod = cookie('esmod');$esadmin = cookie('esadmin');$ident = cookie('ident');$usuario = 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">);

20

Page 24: Docuento de Diseño Detallado segun la ESA V 0.1

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>);

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

ID DD14Nombre moddebate.cgiDescripción Muestra los debates por moderar si es que el usuario en curso

es moderador de al menos un tema.Parámetros $ident, $admin; $esmod, $usuarioTipo de función Función 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;

21

Page 25: Docuento de Diseño Detallado segun la ESA V 0.1

$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_tema[$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">$tema[$i]</td>);print qq( <th width="65" scope="col">&nbsp;</th>);print qq( </tr>);

}

ID DD15Nombre moderador.cgiDescripción Muestra menu de opciones para el moderadorParámetros $ident, $admin; $esmod, $usuarioTipo de función Función cliente

Este módulo sólo muestra links a otros módulos

print qq( <TD class=tdAzul><SPAN class=v2>Consola del Moderador </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 Nuevos Debates</a> </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 Nuevas Respuestas</a> </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 Mensajes</a> </div></td>);print qq( </tr>);print qq( </table>);

ID DD16Nombre modifmod.cgiDescripción Opción al interior del ambiente de administración que permite

cambiarle el moderador a un tema Parámetros $ident, $admin; $esmod, $usuarioTipo de función Función cliente

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

if ($tema eq ""){&printSearchForm();

exit;

22

Page 26: Docuento de Diseño Detallado segun la ESA V 0.1

}else

{$esmod = cookie('esmod');$esadmin = cookie('esadmin');$ident = cookie('ident');$usuario = 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 DD17Nombre modifusr.cgiDescripción Opción al interior del ambiente de administración que permite

23

Page 27: Docuento de Diseño Detallado segun la ESA V 0.1

cambiar la situación de un usuario ( suspender, reactivar, eliminar )

Parámetros $ident, $admin; $esmod, $usuarioTipo de función

Función cliente

Crea un formulario con combos, luego según accion elegida hace modificaciones a la tabla

$esmod = cookie('esmod');$esadmin = cookie('esadmin');$ident = cookie('ident');$usuario = 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>);

24

Page 28: Docuento de Diseño Detallado segun la ESA V 0.1

print qq( </p>);print qq( <p>Accion<br>);

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

ID DD18Nombre modresp.cgiDescripción Permite al moderador validar respuestasParámetros $ident, $admin; $esmod, $usuarioTipo de función

Función 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( <tr>); print qq( <td class="tdAzul" scope="col">);

print qq( <input name="radio$i" type="radio" value=$id_tema[$i] checked >Si); print qq( <input name="radio$i" type="radio" value=0>No);

25

Page 29: Docuento de Diseño Detallado segun la ESA V 0.1

print qq( </td>);print qq( <td width="475" class="tdAzul Estilo2"

scope="col">$tema[$i]</td>);print qq( <th width="65" scope="col">&nbsp;</th>);print qq( </tr>);

}

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

ID DD19Nombre nrespuesta.cgiDescripción Permite a un usuario identificado agregar un opinión dentro de

un debate Parámetros $ident, $admin; $esmod, $usuario, $id_debateTipo de función

Función cliente

Muestra formulario y sus datos los ingresa a la tabla respuestas

if ($ntema eq ""){&printSearchForm();

exit;}

else{$next_id = 1;$esmod = cookie('esmod');$esadmin = cookie('esadmin');$ident = cookie('ident');$usuario = cookie('usuario');$id_debate = 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 DD20Nombre nuevotema.cgi

26

Page 30: Docuento de Diseño Detallado segun la ESA V 0.1

Descripción Permite a un usuario identificado ingresar un nuevo temaParámetros $ident, $admin; $esmod, $usuarioTipo de función Función 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 = cookie('esmod');$esadmin = cookie('esadmin');$ident = cookie('ident');$usuario = 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

Page 31: Docuento de Diseño Detallado segun la ESA V 0.1

&avisoOK();exit;}

ID DD21Nombre nusuario.cgiDescripción Permite a cualquier visitante o usuario inscribir a

través de un formulario un nuevo integrante del sitioParámetros $ident, $admin; $esmod, $usuarioTipo de función

Función 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 contraseña 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 = cookie('esmod');$esadmin = cookie('esadmin');$ident = cookie('ident');$usuario = 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;if ( $column > $next_id )

28

Page 32: Docuento de Diseño Detallado segun la ESA V 0.1

{$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 DD22Nombre validtem.cgiDescripción Opción al interior del ambiente de administración que permite

validar los nuevos temas incritos por los usuariosParámetros $ident, $admin; $esmod, $usuarioTipo de función

Función cliente

Para los temas por validar crea arreglos que permiten crear una matriz de validación 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";$dataObject = executeSQLStatement($sql);@dbRows = &getDBRows($dataObject);

29

Page 33: Docuento de Diseño Detallado segun la ESA V 0.1

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( <tr>); print qq( <td class="tdAzul" scope="col">);

print qq( <input name="radio$i" type="radio" value=$id_tema[$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">$tema[$i]</td>);print qq( <th width="65" scope="col">&nbsp;</th>);print qq( </tr>);

}

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

ID DD23Nombre validusr.cgiDescripción Opción al interior del ambiente de administración

que permite validar los nuevos usuariosParámetros $ident, $admin; $esmod, $usuarioTipo de función

Función 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";$dataObject = executeSQLStatement($sql);@dbRows = &getDBRows($dataObject);foreach $rowReference (@dbRows)

30

Page 34: Docuento de Diseño Detallado segun la ESA V 0.1

{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( </table> <br> <br> <p>);print qq( <input type="submit" name="requestType" value="Aceptar">);

ID DD24Nombre Vermens1.cgiDescripción Permite al administrador ver los mensajes que le

han dejado los usuariosParámetros $ident, $admin; $esmod, $usuarioTipo de función

Función 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>);print qq( </TR></TBODY></TABLE>);

print qq( <br><table width="672" border="0">);

$i = 0;

31

Page 35: Docuento de Diseño Detallado segun la ESA V 0.1

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 DD25Nombre Vermens2.cgiDescripción Permite al moderador ver los mensajes que le han

dejado los usuariosParámetros $ident, $admin; $esmod, $usuarioTipo de función

Función 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>); 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);

32

Page 36: Docuento de Diseño Detallado segun la ESA V 0.1

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>);

}

APÉNDICE B: MATRIZ DE TRAZABILIDAD DE SR vs COMPONENTES

33