Este documento presenta un prototipo de plataforma tecnológica para la formación de investigadores a distancia. La plataforma implementa un modelo colaborativo propuesto por los directores del trabajo, en el que investigadores en formación pueden estar bajo la dirección de un científico experimentado de forma virtual. El documento incluye seis anexos: fundamentos teóricos, descripción funcional, soporte tecnológico, manual de instalación, manual de usuario y documentación técnica. El anexo de fundamentos teóricos revisa
1. Universidad de Buenos Aires
Facultad de Ingeniería
75.99 Trabajo Profesional
Plataforma para Formación de
Investigadores a Distancia
Director:
Dr. Ramón García-Martínez
Codirectores:
M.Ing. Enrique Fernández
Lic. Darío Rodriguez
Alumnos:
Leonardo D’Onofrio 75381
Fernando Uminsky 74973
2. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’Onofrio - Uminsky Trabajo Profesional
Resumen
Una estrategia posible para la formación de investigadores es constituir núcleos de
investigación integrados por investigadores en formación bajo la dirección de un
científico formado. Las tecnologías de la información y la comunicación han permitido
construir comunidades virtuales integradas por individuos que pueden estar lejos
físicamente pero cerca cognitivamente, emergiendo modelos colaborativos de
formación de investigadores. En este contexto, el presente trabajo implementa un
prototipo de plataforma tecnológica capaz de virtualizar la colaboración y cooperación
que da soporte a uno de dichos modelos recientemente propuesto por los directores del
trabajo.
Abstract
A possible strategy for training of researchers is to provide research cores integrated by
researchers in training under the guidance of a trained scientist. The information and
communication technologies have allowed the construction of virtual communities
made up of individuals who may be far away physically but cognitively close, emerging
collaborative models of research training. In this context, this work implements a
prototype of a technological platform capable to virtualize the collaboration and
cooperation which supports one of the models recently proposed by the directors of this
work.
3. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL3
4. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL4
1. Descripción del trabajo
A continuación se describen brevemente los anexos que componen el presente trabajo.
Anexo 1: Fundamento Teórico
Rodríguez, D., Bertone, R., García-Martínez, R. 2009. Consideraciones sobre el Uso de
Espacios Virtuales en la Formación de Investigadores. Revista de Informática Educativa
y Medios Audiovisuales, 6: 35-42. ISBN 1667-8338.
Anexo 2: Descripción funcional
En esta sección se describen los módulos principales con los que cuenta la plataforma y
su funcionalidad.
Anexo 3: Soporte Tecnológico
En esta sección se presenta la descripción del soporte tecnológico sobre el cual se
construyó la plataforma. El mismo esta conformado por una combinación de diferentes
tecnologías que conforman el estado del arte en lo que se refiere a entornos de
programación orientada a objetos, servidores web, plataformas de streaming media,
manipulación de documentos digitales, etc.
Anexo 4: Manual de Instalación
En este anexo se describen los requerimientos de hardware y software y los pasos
necesarios para instalar la plataforma en un servidor.
Anexo 5: Manual de Usuario
Este anexo incluye el manual que permite al usuario de la plataforma conocer el
funcionamiento de cada una de sus herramientas.
Anexo 6: Documentación Técnica
En esta sección se incluyen los diagramas técnicos y código fuente de la plataforma.
5. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL5
2. Referencias
2.1 Autores
Britos, P. 2008. Procesos de Explotación de Información Basados en Sistemas
Inteligentes. Tesis de Doctorado en Ciencias Informáticas. Facultad de
Informática. Universidad Nacional de La Plata.
Césari, M. 2006. Nivel de Significación Estadística para el Aprendizaje de una Red
Bayesiana. Tesis de Especialidad en Tecnologías de Explotación de
Información. Instituto Tecnológico de Buenos Aires.
Duart, J. y Sangrà, A. 2000. Formación universitaria por medio de la web: un modelo
integrador para el aprendizaje superior. En Aprender en la
Virtualidad de Duart y Sangrà (coordinadores) Gedisa. Barcelona.
ISBN: 84-8429-161-8.
Merlino, H. 2006. Ambiente de Integración de Herramientas para Exploración de
Datos Centrados en la Web. Tesis de Magister en Ingeniería de
Software. Facultad de Informática. Universidad Politécnica de Madrid.
Moreno Aguilar, L., Vargas Solar, G., Sheremetov, L. 2003. Hacia una infraestructura
de componentes para la construcción de ambientes de aprendizaje
colaborativo. XIX Simposio Internacional de Computación en la
Educación. Contextos emergentes en el aprendizaje. SOMECE 2003.
México.http://bibliotecadigital.conevyt.org.mx/colecciones/documento
s/somece/59.pdf. Página vigente al 11/07/09.
Moreno Angarita, M. 1997. Dos Pistas para el Análisis de los Procesos de Formación
de Investigadores en las Universidades Colombianas. Nómadas 7: 38-
48. Instituto de Estudios Sociales Contemporáneos. Facultad de
Ciencias Sociales Humanidades y Artes. Universidad Central.
Colombia. http://www.ucentral.edu.co/NOMADAS/nunme-ante/6-
10/nomadas_07/revista_numero_7_art07_hacia_una_propuestas.pdf.
Página vigente al 11/07/09.
Padrón Guillen, J. 2004. Los 7 Pecados Capitales de la Investigación Universitaria.
Informe de Investigaciones Educativas 18: 69-79. ISSN: 1316-0648.
Pollo-Cattaneo, F., Rodriguez, D., Britos, P., García-Martínez, R. 2009. Propuesta de
Formación de RRHH en Investigación Basada en un Modelo
Colaborativo. Hacia un Cambio de Paradigma. Proceedings of VI
International Conference on Engineering and Computer Education.
Pág. 1262-1266. ISBN 978-85-89549-58-5.
Ponce Rosas R, Landgrave Ibáñez S, González Salinas C, Monroy Caballero C. 2002.
Formación de investigadores en medicina familiar: La tutorización en
investigación y la relación tutor-residente (Primera parte). Archivos
de Medicina Familiar; 4(2): 77-81. ISSN: 1405-9657.
6. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL6
Rivera, B., Osorio, O., Tangarife, D., Arroyave J. 2000. Los Semilleros de Formación
de Jóvenes Investigadores: la Experiencia de ASPA. Documentos en
el Programa de Maestrías. Consorcio para el Desarrollo Sostenible de
la Ecorregión Andina. http://www.condesan.org/ memoria/COL0700.
pdf. Página vigente al 11/07/09.
Rodríguez, D., Bertone, R., García-Martínez, R. 2009. Consideraciones sobre el Uso de
Espacios Virtuales en la Formación de Investigadores. Revista de
Informática Educativa y Medios Audiovisuales, 6: 35-42. ISSN 1667-
8338.
Schulz, G. 2008. Un Ambiente Integrado de Clasificación, Selección y Ponderación de
Reglas Basado en Sistemas Inteligentes. Tesis de Grado en Ingeniería
Informática. Laboratorio de Sistemas Inteligentes. Facultad de
Ingeniería. UBA.
Valerio, G. 2002. Herramientas Tecnológicas para la Administración del
Conocimiento. Transferencia, 57: 19-21. http://www.sistemasde
conocimiento.org/Produccion_intelectual/articulos/herramientas_km.p
df. Página vigente al 11/07/09.IEEE, 2009. IEEE Computer Society
Digital Library. http://www2.computer.org/portal/web/csdl/home.
Página vigente al 11/07/09.
2.2 Sitios Web
ACM, 2009. ACM Digital Library. http://portal.acm.org/dl.cfm. Página vigente al
11/07/09.
Adobe Flex, 2009. Adobe Flex Open Source Framework
http://www.adobe.com/products/flex/ Página vigente al 24/08/2009
Apache MINA, 2009. Apache MINA Project. http://mina.apache.org/ Página vigente al
24/08/2009
Apache Tomcat, 2009. Apache Tomcat. The Apache Software Foundation.
http://tomcat.apache.org/ Página vigente al 24/08/2009.
DOAJ, 2009. Directory of Open Access Journals. http://www.doaj.org/ Página vigente
al 11/07/09.
ExtJS, 2009. Ext JS: Cross-Browser Rich Internet Application Framework.
http://www.extjs.com/products/extjs/ Página vigente al 24/08/2009.
GRISE, 2009. Grupo de Investigación en Ingeniería de Software Empírica. Facultad de
Informática. UPM. http://www.grise.upm.es/ Página vigente al
11/07/09.
Hibernate, 2009. Relational Persistence for Java and .NET https://www.hibernate.org/
Página vigente al 24/08/2009.
7. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL7
Mortbay Jetty, 2009. Jetty WebServer http://www.mortbay.org/jetty/ Página vigente al
24/08/2009
MySQL, 2009. The world’s most popular open source database. http://www.
mysql.com/ Página vigente al 24/08/2009.
ooVoo. 2009. Sitio Oficial para Descarga de ooVoo. http://www.oovoo.
com/?sc_lang=es-es Página vigente al 11/07/09.
Red5, 2009. Open Source Flash Server. http://osflash.org/red5 Página vigente al
24/08/2009
SKYPE, 2009. Sitio Oficial para Descarga de SKYPE. http://www.skype.com/intl/es/
Página vigente al 11/07/09
Spring, 2009. Spring Application Framework http://www.springframework.net/ Página
vigente al 24/08/2009
Sun Java, 2009. Sun Developer Network (SDN). Developer Resources for Java
Technology. http://java.sun.com/ Página vigente al 24/08/2009.
UBA-FI-LSI, 2009. Laboratorio de Sistemas Inteligentes. Facultad de Ingeniería. UBA.
http://laboratorios.fi.uba.ar/lsi/z-hemerotecavirtual.htm Página vigente
al 11/07/09.
Virtual Whiteboard. 2009. Virtual Whiteboard - A Free Online Collaboration Tool.
http://www.virtual-whiteboard.co.uk/home.asp Página vigente al
11/07/2009.
Wikipedia, 2009. InnoDB. http://es.kiwipedia.org/innodb Página vigente al 24/08/2009.
Wikipedia, 2009. Java Server Pages. http://es.wikipedia.org/wiki/JSP Página vigente al
24/08/2009
Wikipedia, 2009. Open Source http://es.wikipedia.org/wiki/Open_source Página vigente
al 24/08/2009
Wikipedia, 2009. Servlets. http://es.wikipedia.org/wiki/Servlets Página vigente al
24/08/2009
Wikipedia, 2009. Tomcat. http://es.wikipedia.org/wiki/Tomcat Página vigente al
24/08/2009
8. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL8
3. Anexo I: Fundamento Teórico
17. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL17
Anexo II: Descripción Funcional
En esta sección se describen los módulos principales con los que cuenta la plataforma
desarrollada y su funcionalidad.
Disponer de un repositorio virtualizado con la producción científica del grupo de
investigación, se constituye en una herramienta de administración del conocimiento de
dicho grupo, deviniendo en una herramienta de aprendizaje y de aseguramiento de la
memoria organizacional que favorece el flujo de conocimiento intragrupo y el trabajo
colaborativo [Valerio, 2002].
A continuación se presentan los módulos de la plataforma que hemos identificado como
prioritarios para mediar los elementos del espacio de trabajo de un grupo de
investigación dedicado a la formación de investigadores:
Repositorio de documentos
El mismo permite almacenar documentos digitales en diferentes formatos y de diferente
tipo (Ej.: documentos de texto, planillas de cálculo, presentaciones, imágenes, archivos
de audio, archivos de video, etc.), clasificados de acuerdo al criterio especificado y
compartirlos entre los miembros del grupo de investigadores. Además provee un
poderoso motor de búsqueda para facilitar la recuperación de los mismos.
Hemeroteca virtual
Mantiene una colección de artículos en su versión completa, ordenados y clasificados de
acuerdo a los criterios del investigador. Además permite enlazar documentos de otros
repositorios (Ej.: bibliotecas, universidades, organizaciones, etc.).
Aula virtual
Este módulo constituye un verdadero espacio de cooperación virtual, donde los
investigadores pueden comunicarse en tiempo real gracias a la funcionalidad de
videoconferencia que permite, utilizando una cámara web y los dispositivos de audio de
una computadora, mantener un canal de audio y video entre múltiples usuarios en
simultáneo lo que constituye un verdadero desafío tecnológico. Para ello se utilizarán
las últimas tecnologías en lo que respecta al streaming de video y VoIP (voz sobre IP).
Pueden además, compartir documentos e intercambiar opiniones e ideas a través de una
pizarra virtual donde todos los usuarios participan y uno actúa como moderador.
La pizarra virtual es un elemento fundamental del espacio áulico ya que simula una
pizarra real donde cada participante del grupo puede “dibujar” y presentar esquemas,
pegar documentos, imágines, textos de todo tipo, etc., y los demás participantes lo verán
en tiempo real. Esto presenta también grandes desafíos desde la implementación
tecnológica en lo que respecta a la sincronización y transmisión de datos entre
programas distribuidos, logrando la performance necesaria para garantizar la calidad de
la experiencia del usuario.
Administración de la Intranet
El módulo de administración permite crear y gestionar, de forma dinámica, grupos de
investigadores, investigadores, usuarios del sistema, perfiles de usuario, permisos,
18. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL18
tablas paramétricas, documentos, proyectos, programar conferencias, y todas las
funciones necesarias para el correcto funcionamiento de la plataforma.
19. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL19
1. Anexo III: Soporte Tecnológico
1.1 Introducción
A continuación se presenta la descripción del soporte tecnológico sobre el cual se
construyó la plataforma. El mismo esta conformado por una combinación de diferentes
tecnologías que conforman el estado del arte en lo que se refiere a entornos de
programación orientada a objetos, servidores web, plataformas de streaming media,
manipulación de documentos digitales, etc.
La tecnología web permite que usuarios distribuidos en todo el planeta accedan a la
aplicación desde una computadora conectada a Internet sin más requerimientos de
software instalado que el de un navegador web. Esto permite también la actualización
de versiones sin la necesidad de distribuirlas e instalarlas.
El código abierto (en inglés open source) es el término con el que se conoce al software
distribuido y desarrollado libremente. A diferencia del software libre, el código abierto
tiene un punto de vista más orientado a los beneficios prácticos de compartir el código
que a las cuestiones morales y/o filosóficas. La idea del código abierto se centra en la
premisa de que al compartir el código, el programa resultante tiende a ser de calidad
superior al software propietario, es una visión técnica [OpenSource, 2009].
El presente trabajo adhiere a la filosofía del código abierto y es por ello que todo el
soporte tecnológico sobre el cual se construyó la plataforma cumple con estas
características.
1.2 Arquitectura del Sistema
1.2.1 Implementación del módulo de Aula Virtual
Este módulo constituye el corazón de la plataforma y por lo tanto se desarrolla en
detalle en las sub-secciones siguientes.
Arquitectura de Servidor
Se utilizó una arquitectura de servidor este basada en Red5, un servidor Flash de código
abierto que nos permite, entre otras cosas, distribuir contenidos multimedia a través del
protocolo RTMP o de su variante sobre HTTP, RTMPT [Red5, 2009]. La elección de
Red5 sobre los otros servidores disponibles para esta plataforma (Adobe Media Server,
Wowza) se debe sobre todo a que se trata de un proyecto de código abierto escrito en
Java lo que permite, por un lado, escribir aplicaciones de servidor en este lenguaje y
además, modificar el código fuente del propio servidor para realizar tareas más
específicas imposibles en las otras opciones disponibles.
Red5 se sostiene en la estructura MINA (Multi-purpose Infrastructure for Network
Applications) de Apache [Apache MINA, 2009] que permite desarrollar aplicaciones de
red altamente escalables basándose en parte en la arquitectura SEDA (Staged Event-
Driven Architecture). SEDA propone descomponer la aplicación de red en un modelo
de etapas conectadas por colas que permite filtrar el tráfico de entrada en cada una de
20. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL20
dichas colas, acondicionando de esta manera el flujo entrante para mejorar el
rendimiento en los picos de tráfico ya que todo puede ser ajustado dinámicamente. Cada
una de estas etapas es una pieza del software independiente que realiza parte del
procesado de la petición pasándolo, en cada caso, a la cola siguiente que corresponda,
todo esto como alternativa a la proliferación de hilos que añaden más sobrecarga y que
no permiten reaccionar tan fácilmente ante un pico en un momento determinado. El ya
anteriormente mencionado MINA es parte del proyecto Apache e intenta aprovechar la
filosofía descrita por SEDA para facilitar la tarea de realizar este tipo de aplicaciones en
Java y la separación entre la gestión de eventos más implementación de protocolos de la
lógica de la aplicación propiamente dicha.
Como se mencionó anteriormente, Red5 utiliza el protocolo RTMP (o RTMPT) para la
distribución de contenidos multimedia. El objetivo de este protocolo es que los clientes
desarrollados con la tecnología Flash (en su momento también de Macromedia)
pudieran enviar y recibir datos en tiempo real asegurando la calidad desde y hacia el
servidor Flash Media Server. Una de las características que esto permite es la
posibilidad de “tunelar” el tráfico para que los datos viajen como si fueran el cuerpo de
mensajes HTTP, de forma que no sean tan fácilmente visibles en dispositivos como
firewalls y gestores de tráfico que son configurados en la frontera de las redes
empresariales y personales para filtrar contenidos de este tipo.
Esta última característica facilita enormemente el uso del servicio de videoconferencia
en ambientes muy restringidos sin, en principio, tener que implementar cambios
importantes en el cliente ni en el servidor.
Red5 utiliza un servidor HTTP y de aplicaciones (servlets) Jetty [Mortbay Jetty, 2009]
administrado por la estructura Spring [Spring, 2009] que pone a disposición del
programador la posibilidad de configurar de diversas maneras (XML, archivos de
propiedades Java, etc) denominadas "ganchos" el comportamiento de diversas
aplicaciones Java. De esta manera es posible codificar en Java una aplicación de
servidor que corra sobre Red5 utilizando la interfaz ofrecida y configurar diversos
parámetros editando varios archivos XML.
Se propone entonces aprovechar las posibilidades que ofrece Red5 para crear una nueva
aplicación de servidor, escrita en Java, que corra sobre Red5 y permita mantener
información sobre la presencia de los clientes conectados, estén o no participando
activamente en alguna conferencia, como así también información sobre las capacidades
de cada cliente, es decir, si puede (y quiere) emitir vídeo y audio (tiene una cámara
conectada). Esta información es ofrecida al resto de los clientes que podrán así elegir en
cada momento los flujos que reciben. La interacción cliente-servidor se realiza mediante
llamadas a métodos remotos desde los clientes aprovechando las capacidades para ello
ofrecidas por Red5, las respuestas del servidor son enviadas como objetos serializados e
interpretadas por el cliente como sea conveniente.
Arquitectura de Cliente
En este caso se utilizó Adobe Flex [Adobe Flex, 2009] como Aplicación Rica de
Internet (RIA), ya que es un marco de desarrollo de código abierto que permite crear
flujos de vídeo y audio desde el navegador de forma muy sencilla, tanto para el
desarrollador como para los usuarios finales.
21. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL21
Se construyó la aplicación cliente mediante Flex con código ActionScript y MXML.
ActionScript es un lenguaje de programación orientado a objetos similar a Java. Lo creó
Macromedia (actualmente Adobe) para generar, una vez compilado, código Flash
ejecutable (que se denomina SWF) por el reproductor de la misma compañía. Este
lenguaje está basado en la cuarta edición de la especificación de ECMAScript y una de
sus principales características es la adopción de otro estándar ECMA para codificar
documentos XML como objetos del mismo lenguaje. El lenguaje MXML sirve para
definir interfaces de usuario avanzadas en formato XML. Una vez que el desarrollador
ha creado la interfaz con MXML el compilador Flex traduce el documento en las clases
ActionScript necesarias para después compilarlo. Por lo tanto la aplicación diferencia la
interfaz de usuario del resto de las reglas y lógica de negocio.
La aplicación cliente es capaz de realizar el control de sesión de los usuarios
comunicándose para ello con el servidor Red5 de manera de intercambiar el estado de
sesión, datos sobre usuarios conectados, las salas disponibles y el modo de presentación
que hay en la sala donde el usuario está conectado.
El cliente también es capaz de controlar los flujos multimedia, esto se logra utilizando
las clases NetStream y NetConnection, que pertenecen a la API que ofrece el marco de
desarrollo Flex. Por encima se utilizan objetos avanzados que permiten controlar
parámetros de los flujos como el volumen del audio, el aspecto de la imagen, etc.
1.2.2 Implementación de los módulos de Hemeroteca Virtual,
Repositorio de Documentos y Administración
La implementación de estos módulos no requiere servidores especiales como ocurre en
el módulo de Aula Virtual con el caso del Media Server Red5, es por ello que los
mismos pueden ser implementados sobre cualquier tecnología web como puede ser
LAMP. A continuación se describe la tecnología de servidor elegida y su justificación.
Arquitectura de Servidor
Por analogía con el módulo de Aula Virtual y aprovechando el servidor web embebido
en Red5 (Apache Tomcat [Apache Tomcat, 2009]) se utilizó la tecnología Java [Sun
Java, 2009].
Tomcat (también llamado Jakarta Tomcat o Apache Tomcat) funciona como un
contenedor de servlets desarrollado bajo el proyecto Jakarta en la Apache Software
Foundation. Tomcat implementa las especificaciones de los servlets y de JavaServer
Pages (JSP) de Sun Microsystems [Wikipedia, 2009].
Los servlets son objetos que corren dentro del contexto de un contenedor de servlets (ej:
Tomcat) y extienden su funcionalidad. La palabra servlet deriva de otra anterior, applet,
que se refería a pequeños programas que se ejecutan en el contexto de un navegador
web. Por contraposición, un servlet es un programa que se ejecuta en un servidor. El uso
más común de los servlets es generar páginas web de forma dinámica a partir de los
parámetros de la petición que envíe el navegador web [Wikipedia, 2009].
22. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL22
JSP puede considerarse como una manera alternativa, y simplificada, de construir
servlets. Es por ello que una página JSP puede hacer todo lo que un servlet puede hacer,
y viceversa. Cada versión de la especificación de JSP está fuertemente vinculada a una
versión en particular de la especificación de servlets. El funcionamiento general de la
tecnología JSP es que el Servidor de Aplicaciones interpreta el código contenido en la
página JSP para construir el código Java del servlet a generar. Este servlet será el que
genere el documento (típicamente HTML) que se presentará en la pantalla del
Navegador del usuario [Wikipedia, 2009].
Con respecto al servidor de base de datos se utilizó MySQL [MySQL, 2009] haciendo
uso de las prestaciones de su motor InnoDB.
InnoDB es una tecnología de almacenamiento de datos de fuente abierta para la base de
datos MySQL, incluida como formato de tabla estándar en todas las distribuciones de
MySQL AB a partir de las versiones 4.0. Su característica principal es que soporta
transacciones de tipo ACID y bloqueo de registros e integridad referencial. InnoDB
ofrece una fiabilidad y consistencia muy superior a MyISAM, la anterior tecnología de
tablas de MySQL [Wikipedia, 2009].
Se utilizó también el framework Hibernate para encapsular el acceso a la base de datos.
Hibernate es una herramienta de Mapeo objeto-relacional para la plataforma Java (y
disponible también para .Net con el nombre de NHibernate) que facilita el mapeo de
atributos entre una base de datos relacional tradicional y el modelo de objetos de una
aplicación, mediante archivos declarativos (XML) que permiten establecer estas
relaciones. Hibernate es software libre, distribuido bajo los términos de la licencia GNU
LGPL [Hibernate, 2009].
Arquitectura de Cliente
Siguiendo con la línea de las RIAs se propone aprovechar las ventajas de la tecnología
AJAX para obtener un look and feel e interacción capaz de satisfacer ampliamente las
expectativas de los usuarios. En particular se utilizó el framework ExtJS.
AJAX, acrónimo de Asynchronous JavaScript And XML (JavaScript asíncrono y
XML), es una técnica de desarrollo web para crear aplicaciones interactivas o RIA
(Rich Internet Applications). Estas aplicaciones se ejecutan en el cliente, es decir, en el
navegador de los usuarios mientras se mantiene la comunicación asíncrona con el
servidor en segundo plano. De esta forma es posible realizar cambios sobre las páginas
sin necesidad de recargarlas, lo que significa aumentar la interactividad, velocidad y
usabilidad en las aplicaciones [Wikipedia, 2009].
ExtJS es un conjunto de bibliotecas JavaScript para construcción de Aplicaciones Ricas
de Internet (RIAs). Provee alta performance independiente del navegador, interfaces con
el usuario personalizables y una API intuitiva y fácil de usar [ExtJS, 2009].
En la figura 4 se presenta un esquema de red que muestra las interconexiones entre las
diferentes componentes del sistema. En la figura 5 se muestra un diagrama conceptual
donde se muestra la interacción entre las diferentes tecnologías que se utilizarán.
23. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL23
Cliente
Cliente Cliente
Servidor de Base de Datos (MySQL)
Servidor Web (Apache) Servidor Multimedia (Red5)
HTTP/RTMP
HTTP/
RTMP
H
TTP/R
TM
P
HTTP
HTTP/
RTMP
O
D
BC
JDBC
Internet
SOAP
Fig.4. Arquitectura de Red
Fig.5. Diagrama Conceptual
24. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL24
2. Anexo IV: Manual de Instalación
2.1 Requerimientos de hardware
A continuación se presenta la configuración de hardware necesaria para instalar el
servidor de la plataforma.
Configuración mínima:
Procesador de 1GHz
Memoria RAM de 1GB
Configuración recomendada:
Procesador de 2GHz ó más con CPU de 2 ó 4 núcleos (32 ó 64Bit)
Memoria RAM de 4GB
2.2 Requerimientos de software
• Java versión mayor o igual a 6
• Base de datos: MySQL
La base de datos debe escuchar y permitir conexiones TCP/IP y el esquema de
caracteres por defecto debe ser UTF8.
Una instalación de MySQL no escucha por defecto conexiones TCP/IP y no utiliza
UTF8 como esquema de caracteres definido por defecto. Usted tiene que cambiar estas
opciones y reiniciar el servidor de base de datos para que los cambios tengan efecto (el
archivo mysql-config se encuentra en my.cnf).
• Servicio OpenOffice iniciado y escuchando en el puerto 8100.
• Obtener el reproductor Flash 10 Beta. El mismo corrige los problemas de CPU
para Streaming Video => http://labs.adobe.com/technologies/flashplayer10/
2.3 Instalación de la Plataforma
1. Descomprimir el contenido del paquete de instalación que se encuentra en el CD
y copiarlo en un disco local del sistema.
2. Ahora usted tiene una carpeta llamada plataforma_version_1
3. Configure las opciones de la base de datos, vaya a:
plataforma_version_1/webapps/openmeetings/conf/hibernate.cfg.xml
Usuario de la base de datos MySQLr: renombre mysql_hibernate.cfg.xml a
hibernate.cfg.xml y altere los siguientes parámetros de configuración en
(mysql_)hibernate.cfg.xml
<property name="connection.username">root</property>
<property name="connection.password"></property>
25. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL25
<property name="connection.url">jdbc:mysql://NOMBRE DEL HOST/BASE
DE DATOS</property>
Si tiene problemas para conectarse con su base de datos, un error común es que
la misma no escuche conexiones TCP/IP, o necesita reemplazar el driver jdbc
con el de su versión de base de datos. Usted debe cambiar donde dice NOMBRE
DEL HOST/BASE DE DATOS por sus correspondientes valores, por ejemplo:
jdbc:mysql://localhost/plataforma
4. Reinicie Red5 (Esta tabla será creada automáticamente por hibérnate, si se
produce algún error con la configuración de su base de datos usted podrá
visualizarlos accediendo al archivo de log de Red5.
5. Abra el instalador desde un navegador web accediendo a la dirección:
http://localhost:5080/openmeetings/install y siga las instrucciones.
Luego de ejecutar el instalador todas las funcionalidades básicas se encuentran
instaladas. Ahora deberá ingresar a la plataforma y verificar todas las opciones.
26. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL26
3. Anexo V: Manual de Usuario
3.1 Introducción
La Plataforma para Formación de Investigadores a Distancia es una herramienta
basada íntegramente en tecnologías web, esto significa que para utilizarla, el usuario
deberá contar con un navegador web con el último plugin disponible de Adobe Flash
instalado.
Teniendo en cuenta que las funciones de videoconferencia requieren de un gran poder
de procesamiento y ancho de banda disponible, la calidad del audio y el video son
altamente sensibles a la capacidad de procesamiento del cliente, la memoria y la
conectividad.
La configuración mínima recomendable para el cliente es una PC con procesador Intel
Pentium 4, 512Mb de memoria RAM y una conexión a Internet de al menos 1Mb.
3.2 Ingreso al sistema
Para ingresar a la plataforma deberá abrir su navegador web e ingresar en la dirección
web indicada (ej: http://fiuba.homeunix.com).
27. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL27
En la pantalla inicial se visualiza el cuadro de diálogo de login donde deberá ingresar su
nombre de usuario y la contraseña correspondiente, luego presionar el botón “Ingresar”.
3.3 Escritorio
Una vez ingresado al sistema, encontrará una pantalla similar al Escritorio de Windows,
desde donde podrá acceder a las diferentes aplicaciones de la Plataforma.
Existen dos formas de acceder a las aplicaciones, la primera es a través de los iconos
ubicados en el escritorio, deberá hacer click sobre el ícono de la aplicación deseada para
abrir la misma.
28. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL28
La segunda forma de acceder a las aplicaciones de la Plataforma es mediante el menú
Inicio que se encuentra en la esquina inferior izquierda de la ventana del navegador.
El menú “Inicio”, al igual que en Windows, despliega la lista de aplicaciones
disponibles en la Plataforma. Deberá hacer click en la opción deseada para acceder a la
misma.
Todas las ventanas de aplicación pueden manipularse como las ventanas de Windows.
Con los botones ubicados en la parte superior derecha de las mismas se pueden
minimizar, maximizar y cerrar. Las ventanas minimizadas se pueden volver a
maximizar seleccionándolas desde la parte inferior del escritorio.
La opción “Cerrar” le permite salir de la Plataforma y volver a la pantalla de ingreso.
3.4 Administración
Desde la opción Administración del menú de Inicio se accede a las aplicaciones de
administración de usuarios y grupos del sistema. Para poder acceder a esta opción, el
usuario deberá contar con permisos de administración (usuario del tipo administrador).
3.4.1 Perfil
Ingresando a la opción Perfil del menú de inicio pueden editar los datos del usuario
actual tales como la contraseña de acceso, el nombre, apellido, el nivel académico y la
institución.
29. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL29
Una vez editado el contenido, presionar el botón “Guardar” para salvarlo o “Cancelar”
para cancelar la modificación.
3.4.2 Usuarios
Ingresando a la opción de administración de usuarios se abrirá el listado de usuarios del
sistema agrupados por institución.
Permite crear un nuevo usuario.
30. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL30
Para crear un nuevo usuario deberá especificar su nombre de usuario, contraseña,
confirmación de contraseña, tipo de usuario del sistema (Administrador, moderador o
participante), nombre y apellido, dirección de email, seleccionar el nivel académico y la
institución.
Permite modificar los datos de un usuario existente.
Permite actualizar el listado de usuarios.
Permite eliminar un usuario del sistema.
31. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL31
3.4.3 Grupos de Investigación
Ingresando a la opción de administración de grupos de investigación se abrirá el listado
de grupos.
Permite crear un nuevo grupo.
Para crear un nuevo grupo deberá especificar la descripción del mismo, seleccionar de
la lista los usuarios que lo integran y agregar comentarios (opcional).
Permite modificar los datos de un grupo existente.
32. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL32
Permite actualizar el listado de grupos.
Permite eliminar un grupo.
3.4.4 Instituciones
Ingresando a la opción de administración de instituciones se abrirá el listado de las
mismas.
Permite crear una nueva institución.
33. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL33
Para crear una nueva institución deberá especificar la descripción de la misma.
Permite modificar los datos de una institución existente.
Permite actualizar el listado de instituciones.
Permite eliminar una institución.
3.4.5 Niveles Académicos
Ingresando a la opción de administración de niveles académicos se abrirá el listado de
los mismos.
34. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL34
Permite crear un nuevo nivel académico.
Para crear un nuevo nivel académico deberá especificar la descripción del mismo.
Permite modificar la descripción de un nivel académico existente.
Permite actualizar el listado de niveles académicos.
Permite eliminar un nivel académico.
3.4.6 Categorías de Hemeroteca
Ingresando a la opción de administración de categorías de hemeroteca se abrirá el
listado de las mismas.
35. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL35
Permite crear una nueva categoría.
Para crear una nueva categoría deberá especificar la descripción de la misma.
Permite modificar los datos de una categoría existente.
Permite actualizar el listado de categorías.
Permite eliminar una categoría.
3.4.7 Categorías de Repositorio
36. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL36
Ingresando a la opción de administración de categorías de repositorio se abrirá el listado
de las mismas.
Permite crear una nueva categoría.
Para crear una nueva categoría deberá especificar la descripción de la misma.
Permite modificar los datos de una categoría existente.
Permite actualizar el listado de categorías.
Permite eliminar una categoría.
37. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL37
3.5 Conferencias
Las salas de conferencia son los espacios áulicos donde se desarrollan las sesiones de
trabajo virtuales, permiten que múltiples usuarios pertenecientes a un grupo de estudio
puedan hablar, chatear e intercambiar ideas en la pizarra virtual y a través del video.
Utilizando la opción “Conferencias” del menú de Inicio o el icono de “Conferencias”
ubicado en el escritorio, se accede al listado de conferencias para las cuales el usuario
tiene permiso de ingreso. Solo se podrá acceder a una conferencia si la misma se
encuentra abierta.
Permite crear una nueva conferencia.
38. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL38
Para crear una nueva conferencia deberá especificar el título de la misma, seleccionar el
grupo al que pertenece, la fecha y hora de inicio, la fecha y hora de finalización,
seleccionar el moderador de una lista, puede opcionalmente escribir comentarios, y
finalmente indica quienes son los usuarios invitados a participar de la misma.
Permite modificar los datos de una conferencia existente.
39. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL39
Permite eliminar una conferencia.
Permite ingresar en la conferencia seleccionada.
Permite actualizar el listado de conferencias.
3.5.1 Ingresando a la Sala de Conferencias
Al seleccionar la conferencia deseada, se abrirá una nueva ventana, esta operación
puede demorar unos instantes.
Una ventana emergente le indicará que seleccione las opciones y los dispositivos de
audio y video.
1. Audio y Video (Para esta opción necesitará una cámara web y un micrófono)
2. Solo Audio (Para esta opción necesitará solamente un micrófono)
3. Solo Video (Para esta opción necesitará solamente una cámara web)
4. Sin Audio/Video (Para esta opción no requiere micrófono ni cámara web)
Seleccionando la opción “No pedir de nuevo”, la configuración quedará almacenada y
no se le volverá a preguntar.
Una vez seleccionados los dispositivos y luego de presionar el botón “OK”, se abrirá
una nueva ventana emergente:
40. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL40
Esta ventana le preguntará si desea permitir que la aplicación acceda a su cámara web y
micrófono. Aquí deberá seleccionar la opción “Permitir”, si selecciona “Denegar” no
podrá ser visto y escuchado en la sesión de videoconferencia.
Una vez seleccionada esta opción usted podrá ser escuchado y visto por los demás
participantes.
3.5.2 Dentro de la Sala de Conferencias
Al ingresar a la Sala de Conferencias visualizará una pantalla similar a la siguiente. En
ella se puede observar la lista de usuarios conectados, la pizarra, la barra de
herramientas, la zona de chat, la barra de propiedades y la o las ventanas de video de los
usuarios conectados, incluyendo la suya. Las ventanas de video se pueden mover
arrastrándolas por la pantalla así como también se puede modificar su tamaño.
Las flechas marcadas con círculos rojos en la imagen superior permiten expandir o
contraer las secciones de Usuarios, Propiedades y Chat. Al contraerlas se visualizará la
pantalla de la imagen siguiente:
41. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL41
3.5.3 La barra de herramientas
La barra de herramientas esta ubicada en la parte superior central de la pizarra y se
utiliza para dibujar o apuntar los objetos que se encuentran en la pizarra.
Limpiar el área de dibujo.
Deshacer la última acción.
Rehacer la última acción.
Seleccionar un objeto.
Puntero.
Insertar texto.
Pintar.
Trazar una línea.
Subrayar.
Dibujar un rectángulo.
Dibujar una elipse.
42. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL42
Dibujar una flecha.
3.5.4 La barra de propiedades
La barra de propiedades se encuentra debajo de la pizarra y permite modificar la
posición, el tamaño y el color de los objetos seleccionados en la pizarra. Esta barra se
puede contraer para optimizar el tamaño de la pizarra.
x: Permite modificar la posición horizontal del objeto seleccionado.
y: Permite modificar la posición vertical del objeto seleccionado.
a: Permite modificar el ancho del objeto seleccionado.
h: Permite modificar el alto del objeto seleccionado.
Permite cambiar el color de la línea.
Permite habilitar o deshabilitar el color de línea y relleno.
Permite cambiar el color de relleno.
La primera fleche permite cambiar el grosor de la línea y la segunda permite
cambiar la transparencia.
Permite poner el texto en itálica y/o negrita.
3.5.5 El área de chat
El área de chat proporciona un canal alternativo de comunicación entre los participantes
de la sesión. Se debe escribir sobre el cuadro de texto inferior y presionar el botón
“enviar” o presionar la tecla “enter” para compartir el texto escrito con los otros
participantes en el cuadro de texto superior de la sección.
3.5.6 La lista de usuarios
En esta sección de la ventana se visualiza la lista de usuarios conectados. También
permite saber quien es el moderador de la sala y quien tiene permiso para dibujar. Desde
esta sección se puede también modificar la configuración de audio y video.
43. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL43
Indica si el usuario es moderador de la sala.
Indica si el usuario tiene permiso para dibujar en la pizarra.
Permite reiniciar la configuración de audio/video.
3.5.7 La ventana de video
La ventana de visualización de video muestra la imagen capturada por la cámara web de
cada usuario conectado. La misma se puede mover arrastrándola desde la parte superior
donde se encuentra el nombre del usuario y modificar su tamaño desde la esquina
inferior derecha.
Permite sincronizar el audio y el video.
Indica si el usuario esta hablando.
Permite silenciar el audio del usuario.
3.6 Hemeroteca
La aplicación de Hemeroteca permite visualizar una colección de artículos, ordenados y
clasificados de acuerdo a los criterios del investigador. Además permite enlazar
documentos de otros repositorios (Ej.: bibliotecas, universidades, organizaciones, etc.).
Utilizando la opción “Hemeroteca” del menú de Inicio o el icono “Hemeroteca” ubicado
en el escritorio, se accede a la aplicación de hemeroteca virtual.
La ventana de la aplicación presenta el listado de la descripción de artículos organizados
por categoría. Haciendo click sobre el título de cada columna se puede ordenar en forma
ascendente o descendente el listado.
44. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL44
Los artículos se presentan agrupados en categorías y presionando los botones (+) y (-)
junto al nombre de cada categoría se pueden expandir o contraer.
Haciendo click en el título de una publicación se abrirá una nueva ventana del
navegador con el contenido de la publicación.
Este botón permite crear una nueva entrada en la hemeroteca.
En la ventana de nuevo link se deberá indicar el título, la dirección url y la categoría.
El botón de modificar permite editar el contenido de un elemento de la lista.
45. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL45
Una vez editado el contenido, presionar el botón “Guardar” para salvarlo o “Cancelar”
para cancelar la modificación.
El botón eliminar permite eliminar la publicación seleccionada del listado.
El botón actualizar permite refrescar la ventana para actualizar su
contenido.
3.7 Repositorio de documentos
La aplicación repositorio de documentos permite visualizar una colección de
documentos almacenados en la base de datos, en diferentes formatos, ordenados y
clasificados de acuerdo a los criterios del investigador.
Utilizando la opción “Repositorio” del menú de Inicio o el icono “Repositorio” ubicado
en el escritorio, se accede a la aplicación de repositorio de documentos.
La ventana de la aplicación presenta un listado de documentos agrupados por categoría.
Haciendo click sobre el título de cada columna se puede ordenar en forma ascendente o
descendente el listado.
Los documentos se presentan agrupados en categorías, presionando los botones (+) y (-)
junto al nombre de cada categoría se pueden expandir o contraer.
Haciendo click en el título de un documento se abrirá una nueva ventana del navegador
con el contenido de la publicación.
46. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL46
Este botón permite subir un nuevo documento al repositorio.
En la ventana de nuevo documento se deberá ingresar el título, seleccionar el archivo
correspondiente para subir, copiar una descripción o el abstract del documento, indicar a
que categoría pertenece, si fue publicado en una revista, página inicial, página final,
ISBN y autor.
47. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL47
El botón de modificar permite editar el contenido de un elemento de la lista.
Una vez editado el contenido, presionar el botón “Guardar” para salvarlo o “Cancelar”
para cancelar la modificación.
El botón eliminar permite eliminar un documento del repositorio.
El botón actualizar permite refrescar la ventana para actualizar su
contenido.
48. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL48
4. Anexo VI: Documentación Técnica
4.1 Diagrama de Entidad – Relación
49. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL49
52. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL52
}
require_once(HOME_DIR . "config.php");
$db = new db($_CFG["db_host"], $_CFG["db_user"], $_CFG["db_pass"], $_CFG["db_name"], false);
if (!$db->db_connect_id) { die("Could not connect to the database."); }
$session = new session();
if (defined("CHECK_LOGIN"))
{
$chk = $session->check( (defined("CHECK_GRANT") ? CHECK_GRANT : null) );
if (!$chk) header("location: index.php");
}
?>
/index.php
<?php
define("SYSTEM_MODULE", "MAIN");
define("HOME_DIR", "./");
require_once(HOME_DIR . "boot.php");
if (!$session->exists())
{
$tpl = new template("login");
$tpl->flush();
}
else
{
$sql = "SELECT conference.conference_id, conference.description, user_group.description AS
user_group, conference.om_room_id
FROM conference
INNER JOIN user_group ON user_group.user_group_id =
conference.user_group_id
WHERE CURRENT_TIMESTAMP BETWEEN conference.from_date AND
conference.to_date
AND (
((SELECT user_type_id FROM user WHERE user_id = " .
$session->get("user_id") . ") = 1)
OR
(conference.user_group_id IN (SELECT user_group_id
FROM rel_user_user_group WHERE user_id = " . $session->get("user_id") . "))
OR
(conference.conference_id IN (SELECT conference_id
FROM conference_guest WHERE conference_guest.user_id = " . $session->get("user_id") . "))
)
ORDER BY conference.description";
$tpl = new template("desktop");
$tpl->set("CONFERENCES", $db->sql_get_rowset($sql));
$tpl->flush();
}
?>
/conference.php
<?php
define("SYSTEM_MODULE", "MAIN");
define("HOME_DIR", "./");
require_once(HOME_DIR . "boot.php");
if (!$session->exists())
{
$tpl = new template("login");
$tpl->flush();
}
else
{
$conference_id = intval($_GET["conferenceid"]);
list($moderator_id, $om_room_id) = $db->sql_get_row("SELECT moderator_id, om_room_id FROM
conference WHERE conference_id = $conference_id", MYSQL_NUM);
$om = new openmeetings(param::get("om_url"), param::get("om_user"),
param::get("om_password"));
$is_mod = ($session->get("user_type_id") == 1 || $session->get("user_id") == $moderator_id);
$om_swf = $om->enter_room($om_room_id, $session->get("login"), $session->get("fname"),
$session->get("lname"), $session->get("email"), $is_mod);
$tpl = new template("conference");
53. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL53
$tpl->set("OM_SWF", $om_swf);
$tpl->flush();
}
?>
/document.php
<?php
define("SYSTEM_MODULE", "MAIN");
define("HOME_DIR", "./");
require_once(HOME_DIR . "boot.php");
$document_id = intval($_GET["id"]);
if (!$session->exists() || !$document_id)
{
$tpl = new template("login");
$tpl->flush();
}
else
{
$original_file_name = $db->sql_get_value("SELECT file_name FROM document WHERE
document_id = $document_id");
$attach_file = param::get("upload_path") . "document" . $document_id;
$attach = new attachment($attach_file);
$attach->download($original_file_name);
}
?>
Librerias
/lib/param.class.php
<?php
class param
{
private static $instance;
protected $vars = array();
public static function load()
{
GLOBAL $db;
if (!isset(self::$instance))
{
$c = __CLASS__;
self::$instance = new $c;
$sql = "SELECT `key`, value FROM parameter ORDER BY `key`";
$vars = $db->sql_get_rowset($sql);
for ($i = 0; $i < count($vars); $i++)
{
self::$instance->vars[$vars[$i]["key"]] = $vars[$i]["value"];
}
}
}
public static function get($key)
{
self::load();
return self::$instance->vars[$key];
}
}
?>
/lib/db.class.php
<?php
define("BEGIN_TRANSACTION", 1);
define("END_TRANSACTION", 2);
class db
{
var $db_connect_id;
var $query_result;
var $row = array();
var $rowset = array();
var $num_queries = 0;
var $in_transaction = 0;
var $pagination = array();
var $error = false;
58. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL58
else if( $this->row[$query_id] )
{
$result = $this->row[$query_id][$field];
}
}
}
return $result;
}
else
{
return false;
}
}
function sql_row_seek($rownum, $query_id = 0)
{
if( !$query_id )
{
$query_id = $this->query_result;
}
return ( $query_id ) ? mysql_data_seek($query_id, $rownum) : false;
}
function sql_next_id()
{
return ( $this->db_connect_id ) ? mysql_insert_id($this->db_connect_id) : false;
}
function sql_free_result($query_id = 0)
{
if( !$query_id )
{
$query_id = $this->query_result;
}
if ( $query_id )
{
unset($this->row[$query_id]);
unset($this->rowset[$query_id]);
@mysql_free_result($query_id);
return true;
}
else
{
return false;
}
}
function sql_get_value($query)
{
$result = $this->sql_query($query);
if (!$result) return false;
if ($this->sql_num_rows() == 0) return false;
$row = $this->sql_fetch_row($result, MYSQL_BOTH);
if (!$row) return false;
$this->sql_free_result();
return $row[0];
}
function sql_get_row($query, $fetch_mode = MYSQL_ASSOC)
{
$result = $this->sql_query($query);
if (!$result) return false;
if ($this->sql_num_rows() == 0) return false;
$row = $this->sql_fetch_row(0, $fetch_mode);
$this->sql_free_result();
return $row;
}
function sql_get_rowset($query, $fetch_mode = MYSQL_ASSOC)
{
$result = $this->sql_query($query);
59. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL59
if (!$result) return false;
$rowset = $this->sql_fetch_rowset(0, $fetch_mode);
$this->sql_free_result();
return $rowset;
}
function sql_error()
{
return $this->error;
}
}
?>
/lib/session.class.php
<?php
class session
{
public function __construct()
{
session_start();
}
public function init($user_name, $password)
{
GLOBAL $db;
$user_name = trim(strtolower($user_name));
$password = trim($password);
if ($user_name == "") { $this->set_flash("login_error", true); return false; }
if (strlen($user_name) < 4 || strlen($user_name) > 15) { $this->set_flash("login_error",
true); return false; }
if (!preg_match("/^[0-9a-z]+$/", $user_name)) { $this->set_flash("login_error", true); return
false; }
if ($password == "") { $this->set_flash("login_error", true); return false; }
if (strlen($password) < 4 || strlen($password) > 15) { $this->set_flash("login_error", true);
return false; }
if (!preg_match("/^[0-9a-z]+$/", strtolower($password))) { $this->set_flash("login_error",
true); return false; }
$query = " SELECT user.user_id
FROM user
WHERE user.login = '" . $db-
>sql_escape_string($user_name) . "'
AND user.password = '" . $db-
>sql_escape_string($password) . "'";
$result = $db->sql_query($query);
if (!$result) { return false; }
if ($db->sql_num_rows() == 1)
{
$row = $db->sql_fetch_row();
$this->init_by_id($row["user_id"]);
return true;
}
else
{
$this->set_flash("login_error", true);
return false;
}
}
public function init_by_id($user_id)
{
GLOBAL $db;
$query = " SELECT user.*
FROM user
WHERE user.user_id = " . $user_id;
$result = $db->sql_query($query);
if (!$result) { print_r($db->sql_error()); session_destroy(); return false; }
$row = $db->sql_fetch_row();
foreach ($row as $key => $value)
60. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL60
{
if (!is_numeric($key))
{
$this->set($key, $value);
}
}
unset($_SESSION["session_flashs"]);
}
public function end()
{
session_destroy();
}
public function check()
{
GLOBAL $db;
$ok = true;
$query = "SELECT * FROM user WHERE login='" . $db->sql_escape_string($this-
>get("user_name")) . "' AND password='" . $db->sql_escape_string($this->get("password")) . "'";
$result = $db->sql_query($query);
if (!$result)
$ok = false;
else
{
$num_rows = $db->sql_num_rows();
if ($num_rows == 0)
$ok = false;
else
$ok = true;
}
if (!$ok)
{
$this->end();
}
return $ok;
}
public function exists()
{
return !!($this->get("user_id"));
}
public function get($key)
{
return $_SESSION["session_vars"][$key];
}
public function set($key, $value)
{
$_SESSION["session_vars"][$key] = $value;
}
public function get_array()
{
$rtn = $_SESSION["session_vars"];
unset($rtn["password"]);
return $rtn;
}
public function get_flash($key)
{
$return = $_SESSION["session_flashs"][$key];
unset($_SESSION["session_flashs"][$key]);
return $return;
}
public function set_flash($key, $value)
{
$_SESSION["session_flashs"][$key] = $value;
}
public function get_flash_array()
{
61. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL61
$rtn = $_SESSION["session_flashs"];
return $rtn;
}
}
?>
/lib/attachment.class.php
<?php
class attachment
{
private $file = "";
public function __construct($attach_file)
{
$this->file = $attach_file;
}
public function get_file()
{
return $this->file;
}
public function exists()
{
return file_exists($this->file);
}
public function upload($source_file)
{
if ($this->exists()) $this->remove();
if (!move_uploaded_file($source_file, $this->file)) return false;
if (!@chmod($this->file, 0666)) return false;
return true;
}
public function download($original_file_name, $forced_content_disposition = "")
{
$file_extension = "." . strtolower(substr(strrchr($original_file_name, "."), 1));
$content_disposition = "attachment";
switch( strtolower($file_extension) )
{
case ".pdf": $type = "application/pdf"; break;
case ".exe": $type = "application/octet-stream"; break;
case ".zip": $type = "application/zip"; break;
case ".doc": $type = "application/msword"; break;
case ".xls": $type = "application/vnd.ms-excel"; break;
case ".ppt": $type = "application/vnd.ms-powerpoint"; break;
case ".gif": $type = "image/gif"; break;
case ".png": $type = "image/png"; break;
case ".jpe": case ".jpeg":
case ".jpg": $type = "image/jpeg"; break;
case ".txt": $type = "text/plain"; break;
case ".htm": case ".html": case ".xml": $type = "text/html"; $content_disposition
= "inline"; break;
default: $type = "application/force-download";
}
if ($forced_content_disposition) $content_disposition = $forced_content_disposition;
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private", false);
header("Content-Type: " . $type);
header("Content-Disposition: " . $content_disposition . "; filename="" .
$original_file_name . "";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . @filesize($this->file));
@readfile("$this->file");
exit();
}
public function remove()
{
if (!@unlink($this->file)) return false;
return true;
}
62. PLATAFORMA PARA FORMACIÓN DE INVESTIGADORES A DISTANCIA
D’ONOFRIO - UMINSKY Pág. TRABAJO PROFESIONAL62
}
?>
/lib/escape.class.php
<?php
class escape
{
private static function unhtmlentities($string)
{
$trans_tbl = get_html_translation_table(HTML_ENTITIES);
$trans_tbl = array_flip($trans_tbl);
return strtr($string, $trans_tbl);
}
public static function post2html($str, $allow_html = false)
{
if (!$allow_html)
return trim(htmlentities(stripslashes($str), ENT_QUOTES));
else
return trim(stripslashes($str));
}
public static function post2db($str)
{
return self::unhtmlentities(str_replace("'", "''", trim($str)));
}
public static function db2html($str, $multi_line = false, $allow_html = false)
{
if (!$allow_html)
$str = htmlentities($str, ENT_QUOTES);
if ($multi_line)
{
$str = str_replace("rn", "<br />", $str);
$str = str_replace("n", "<br />", $str);
}
return $str;
}
}
?>
/lib/template.class.php
<?php
class template
{
private $file;
private $vars;
private $buffer;
private $filled = false;
public function __construct($file)
{
$this->file = HOME_DIR . "tpl/$file.tpl.php";
}
public function set($var_name, $var_value)
{
if (is_object($var_value) && (get_class($var_value) == "template" || is_subclass_of($var_value, "template")))
{
$this->vars[$var_name] = $var_value->fill($this);
}
else
{
$this->vars[$var_name] = $var_value;
}
}
public function set_bulk($var_list)
{
foreach ($var_list as $var_name => $var_value)
$this->set($var_name, $var_value);
}
public function fill($parent = null)
{
if ($this->filled) return $this->buffer;
if (is_object($parent))
{