Tesis Completa-136-2007.pdf

Anuncio
UNIVERSIDAD DE GUAYAQUIL
Facultad de Ciencias Matemáticas y Física
Carrera de Ingeniería en Sistemas
Computacionales
“PORTAL DE VENTA DE INFORMACION
PERSONAL BAJO SUSCRIPCION”
PROYECTO DE GRADO
Previo a la Obtención del Título de:
INGENIERO EN SISTEMAS COMPUTACIONALES
Autores:
Diana Cecilia Alava Espinoza
Freddy Walter Cevallos Tomalá
Carlos Alberto Orrala Holguín
GUAYAQUIL – ECUADOR
Año: 2007
II
AGRADECIMIENTO
Agradecemos a Dios por la salud y la fortaleza
para concluir con éxito una etapa más de nuestras
vidas, a todas las personas que han contribuido de
alguna manera
la realización del proyecto y a
nuestros padres por estar siempre guiándonos en
nuestra vida.
III
DEDICATORIA
Dedicamos este trabajo a Dios por estar siempre a
nuestro lado en todo momento.
A nuestros padres y hermanos por todo el cariño,
la confianza, y el amor brindado en este tiempo de
esfuerzo y sacrificio.
IV
TRIBUNAL DE GRADUACIÓN
Presidente del Tribunal
Primer Vocal
Segundo Vocal
Secretario
V
DECLARACIÓN EXPRESA
“La autoría de la tesis de grado corresponde exclusivamente al suscrito(s),
perteneciendo a la Universidad de Guayaquil los derechos que generen la
aplicación de la misma”.
(Reglamento de Graduación de la Carrera de Ingeniería en sistemas
Computacionales, Art. 26)
VI
RESUMEN
Aquidescarga.com es un portal lo suficientemente vendedor, dedicado a la
“Venta de Información”; bajo un modelo de negocio establecido es decir por
suscripción, brindando de esta manera beneficios que merman los problemas de
la población cibernautica; que con frecuencia usa la herramienta tecnológica,
para obtener servicios de publicación y descarga oportuna.
Nuestro sitio Web puede ser visitado desde cualquier parte del mundo, gracias a
las herramientas multiplataformas que permiten la visualización del sitio en los
diferentes navegadores como Internet Explore 7.0 y Mozilla.
Pero para poder ser miembro activo de nuestro portal, deberá registrase con
datos personales básicos que no atente su integridad financiera.
Al ser miembro de aquidescarga el usuario tendrá opciones como.

Suscripción: Las cual puede ser mensual, trimestral, semestral, etc.

Publicación: Deben ser archivos menores de 4MG, en formato PDF.

Búsqueda: Pueden ser hechas a los títulos o al resumen breve por
categoría.

Descargar: Añadir al carro de compra lo que desea bajar.
VII

Pago

Estado de Cuenta: Donde podrá ver un resumen de órdenes pendientes,
: Serán hechos a través de un simulador con tarjeta de crédito
descargas permitidas (3 posibilidades de descarga por archivo), últimos
archivos publicados, ganancias, total de descargas a sus archivos por
otros usuarios etc.

Opciones: Aquí el usuario podrá modificar clave, datos personales,
entidad financiera (pagos), e información referente a archivos publicados.
Cabe destacar que la nuestra aplicación es confiable puesto que contamos con
un certificado digital avalizado
por XXXXXXXXXXXXXXXX la cual es una
empresa seria y junto al algoritmo de encriptación de clave brindamos seguridad
a nuestros usuarios.
VIII
INDICE GENERAL
AGRADECIMIENTO ............................................................................................. II
DEDICATORIA .................................................................................................... III
TRIBUNAL DE GRADUACIÓN .......................................................................... IV
DECLARACIÓN EXPRESA ................................................................................ V
RESUMEN .......................................................................................................... VI
INDICE GENERAL ........................................................................................... VIII
ÍNDICE DE GRÁFICOS .................................................................................... XVI
ÍNDICE DE TABLAS ........................................................................................ XIX
ABREVIATURA ................................................................................................. XX
CAPITULO 1 ....................................................................................................... 21
1.1 Descripción del Problema identificado ................................................... 22
1.2 Solución que brinda nuestro proyecto.................................................... 23
1.3 Misión .................................................................................................... 24
1.4 Visión ..................................................................................................... 24
1.5 Objetivo General .................................................................................... 24
1.6 Alcances ................................................................................................ 26
IX
1.7 Arquitectura para la Aplicación Web. ..................................................... 30
1.7.1 Capa de servicios de presentación: ............................................... 31
1.7.2 Capa de servicios de Lógica de Negocio ...................................... 31
1.7.3 Capa de servicios de datos ........................................................... 32
1.8 Modelo de Desarrollo ............................................................................ 33
1.9 Metodología Orientada a Objeto ............................................................ 36
1.10 Recursos Tecnológicos........................................................................ 36
1.10.1 Recursos para el Desarrollo del Portal Web ................................ 36
1.10.2 Recursos para la Implementación del Portal Web........................ 37
1.11 Cronograma ........................................................................................ 39
CAPITULO 2 ....................................................................................................... 40
Análisis .............................................................................................................. 40
2.1.- Levantamiento de Información ............................................................ 40
2.1.1 A quien dirigimos nuestro proyecto ................................................ 41
2.1.2 Visitas............................................................................................. 41
2.1.3 Registro de Usuario........................................................................ 42
2.1.4 Manejo de Claves........................................................................... 42
2.1.5 Formato Permitido .......................................................................... 43
2.1.6 Acuerdo del Portal para publicar contenidos ................................ 44
2.1.7 Manejo del Contenido .................................................................... 45
X
2.1.8 Penalizaciones para el caso de contenidos perjudiciales para
nuestro portal .......................................................................................... 46
2.1.9 Políticas de mantenimiento de contenido ....................................... 46
2.1.10 Tablas de Valores por el contenido levantado ............................. 47
2.1.11 Formas y políticas de pagos para Usuario-proveedor .................. 48
2.1.12 Forma de cobro para las descargas ............................................. 48
2.2 Políticas de Privacidad........................................................................... 49
2.2.1 Recolección de Datos Generales ................................................... 49
2.2.2 Seguridad ....................................................................................... 49
2.2.3 Menores de Edad ........................................................................... 50
2.2.4 Cambios ......................................................................................... 50
2.2.5 Otros Términos............................................................................... 50
2.2.6 Clave Personal ............................................................................... 51
2.3 Consola Administrativa .......................................................................... 51
2.3.2 Control de contenido ...................................................................... 52
2.3.3 Reporte de Pago de Usuario-proveedor......................................... 52
2.3.4 Actualización de pagos a los Usuarios-proveedores ...................... 52
2.3.5 Mantenimiento ................................................................................ 52
2.4 Diagrama de Casos de Uso ................................................................... 54
2.4.1 Registro de Usuario........................................................................ 54
XI
2.4.2 Orden Suscripción. ......................................................................... 55
2.4.3 Servicios del Portal......................................................................... 57
2.4.4 Consola Administrativa ................................................................... 60
2.5 Diagramas de Secuencia ....................................................................... 62
2.5.1 Registro Usuario............................................................................. 62
2.5.2 Orden Suscriptor ............................................................................ 63
2.5.3 Servicios del Portal......................................................................... 65
2.5.4 Consola de Administrador .............................................................. 68
2.6 Diagramas de Estado ............................................................................ 70
2.6.1 Registro Usuario............................................................................. 70
2.6.2 Activación de Cuenta ..................................................................... 71
2.6.3 Servicios del Portal......................................................................... 72
2.6.4 Consola Administrativa ................................................................... 74
2.7 Diagrama de Clases .............................................................................. 76
2.7.1 Portal Web ..................................................................................... 76
2.7.2 Simulación de Pagos...................................................................... 78
CAPITULO 3 ....................................................................................................... 80
DISEÑO .............................................................................................................. 80
3.1 Diseño de la Interfaz .............................................................................. 80
3.1.1 Pagina Principal del portal .............................................................. 81
XII
3.1.4 Mi cuenta ........................................................................................ 85
3.1.6 Publicación ..................................................................................... 91
3.1.7 Descargas ...................................................................................... 93
3.1.8 TOP ................................................................................................ 97
3.1.9 Categoría ....................................................................................... 99
3.1.10 Búsqueda ................................................................................... 100
3.2 Mapa del sitio Aquidescarga ................................................................ 101
3.3 Mapa de Navegación de Aquidescarga .............................................. 102
3.4 Consola Administrativa ....................................................................... 103
3.4 .1 Cuenta ......................................................................................... 103
3.4 .2 Mantenimiento de Contenido ...................................................... 104
3.4 .3 Mantenimientos ........................................................................... 105
3.4 .4 Mapa del Sitio ............................................................................ 106
3.4 .5 Navegación de Administración ................................................... 107
CAPITULO 4 ..................................................................................................... 108
CODIFICACION ................................................................................................ 108
4.1 Introducción ......................................................................................... 108
4.2 Definición de Estándares ..................................................................... 109
4.3 Base de Datos ..................................................................................... 109
4.3.1 Tablas .......................................................................................... 109
XIII
4.3.3 Tipos ............................................................................................ 117
4.4 Variables .............................................................................................. 117
4.5 Carpetas .............................................................................................. 118
4.6 Paginas principales .............................................................................. 120
4.6.1 PantillaHtml.Class. ....................................................................... 120
4.6.2 PantillaAdminHtml ........................................................................ 122
4.6.3 BarraMenu.Class.......................................................................... 123
4.6.4 CuadroHtml .................................................................................. 123
4.6.5 Funciones ..................................................................................... 123
4.6.6 Lib Inc........................................................................................... 124
4.6.7 VinculoUrl.Class ........................................................................... 124
4.6.8 Configuraciones ........................................................................... 124
4.7 Módulos ............................................................................................... 125
4.7.1 Subir Archivos .............................................................................. 125
4.7.2 Carrito de Compra ........................................................................ 125
4.7.3 Búsquedas ................................................................................... 126
4.7.4 Descargas ................................................................................... 126
CAPITULO 5 ..................................................................................................... 128
Pruebas ............................................................................................................ 128
5.1 Métricas que pudimos probar con los usuarios ................................... 129
XIV
5.1.1 Satisfacción del Cliente ................................................................ 129
5.1.2 Desempeño del sitio ..................................................................... 130
5.1.3 Tiempo promedio de permanencia en el sistema ......................... 131
CAPÍTULO 6 ..................................................................................................... 132
Recomendaciones y Conclusiones del Proyecto ........................................ 132
6.1.- Recomendaciones ........................................................................ 132
6.1.1.- Interfaz ....................................................................................... 133
6.1.2.- Hardware ................................................................................... 134
6.1.3.- Software ..................................................................................... 134
6.1.4.- Seguridades ............................................................................... 135
6.1.5.- Respaldos del Portal .................................................................. 136
6.1.6.- Conclusiones ............................................................................. 136
GLOSARIO DE TERMINOS ............................................................................. 139
GLOSARIO DE TERMINOS ............................................................................. 140
ANEXOS ........................................................................................................... 141
BIBLIOGRAFIA ................................................................................................ 147
Libros consultados: ........................................................................................ 147
XV
Paginas Web consultadas:............................................................................. 147
XVI
ÍNDICE DE GRÁFICOS
Gráfico No.1 .1 Modelo de Desarrollo Espiral............................................................................... 35
Gráfico No.1.2 Cronograma de Actividades Resumido ................................................................ 39
Gráfico No.2.3 Diagrama de casos de uso ................................................................................... 54
Registro de Usuario ....................................................................................................................... 54
Gráfico No.2.4 Diagrama de casos de uso ................................................................................... 55
Orden Suscripción .......................................................................................................................... 55
Gráfico No.2.6 Diagrama de casos de uso .................................................................................... 60
Consola Administrativa .................................................................................................................. 60
Gráfico No.2.7 Diagrama de secuencia ........................................................................................ 62
Registro de Usuario ....................................................................................................................... 62
Gráfico No. 2.8 Diagrama de secuencia ....................................................................................... 63
Orden Suscriptor ............................................................................................................................ 63
Gráfico No.2.9 Diagrama de secuencia ........................................................................................ 65
Servicios de Portal ......................................................................................................................... 65
Consola Administrativa .................................................................................................................. 68
Gráfico No.2.11 Diagrama de estado ........................................................................................... 70
Registro Usuario ............................................................................................................................ 70
Gráfico No.2.12 Diagrama de estado ........................................................................................... 71
Activación de Cuenta ..................................................................................................................... 71
Servicios del Portal ........................................................................................................................ 72
Gráfico No.2.14 Diagrama de estado ........................................................................................... 74
Consola Administrativa .................................................................................................................. 74
Gráfico No.2.15 Diagrama de Clases Portal Web ........................................................................ 76
XVII
Gráfico No.2.15a Diagrama de Clases Portal Web ...................................................................... 77
Gráfico No. 2.16 Diagrama de Clases ........................................................................................... 78
Simulador de Pagos ....................................................................................................................... 78
Gráfico No.3.17 Página Principal ................................................................................................... 81
Gráfico No.3.18 Registro de Usuario ............................................................................................ 83
Gráfico No.3.19 Mi Cuenta............................................................................................................ 85
3.1.5 Orden Suscripción. ................................................................................................................ 87
Gráfico No. 3. 20 Orden Suscripción ............................................................................................ 87
Gráfico No. 3.21 Ingreso de Datos Financieros ............................................................................ 89
Gráfico No. 3.22 Publicación.......................................................................................................... 91
Gráfico No. 3.23 Ítems a Descargar .............................................................................................. 93
Gráfico No. 3.24 Ingreso de Datos Financieros ........................................................................... 95
Gráfico No. 3.25 TOP .................................................................................................................... 97
Gráfico No. 3.26 Categorías .......................................................................................................... 99
Gráfico No. 3.28 Mapa de Navegación Aquidescarga ............................................................... 102
Gráfico No. 3.29 Iniciar Sesión del Administrador ....................................................................... 103
Gráfico No. 3.30 Control de Contenidos ...................................................................................... 104
Gráfico No. 3.31 Mantenimientos de Idioma............................................................................... 105
Gráfico No. 3.32 Mapa del Sitio Administrador ........................................................................... 106
Gráfico No. 3.33 Mapa de Navegación del Administrador ........................................................... 107
Gráfico No. 4.34 Definición de campo TBCA............................................................................. 112
Gráfico No. 4.35 Definición de campo TBCA............................................................................. 113
Gráfico No. 4.36 Definición de campo TBPV ............................................................................. 114
Gráfico No. 4.37 Definición de campo TBPV ............................................................................ 115
Gráfico No. 4.38 Definición de campo TBPP ............................................................................. 116
XVIII
Gráfico No. 4.39 Plantilla del Portal ............................................................................................. 120
Gráfico No. 4. 40 Barra Menú ...................................................................................................... 120
Gráfico No. 4.41 Barra Menú Administrador ................................................................................ 122
XIX
ÍNDICE DE TABLAS
Tabla No. 4.1 Definición de tabla TBCA ........................................................ 109
Tabla No. 4.2 Definición de tabla TBPV ......................................................... 110
Tabla No. 4.3 Definición de tabla TBPP ......................................................... 111
XX
ABREVIATURA
DER.-
Diagrama de Entidad de Relación.
UML.-
Lenguaje Unificado de Modelado
HTML.-
Lenguaje de Marcas de Hipertexto
ISO.-
Organización Internacional para la Estandarización
MB.-
Megabytes
PDF
Formato de Documento Portable
PHP.-
Hypertext Pre-processor
CAPITULO 1
Ámbito
Hoy en día la mayor parte de los portales Web
nos permiten acceder a diferente tipo de
información, que muchas veces puede ser por
necesidad para el navegante y en otras
ocasiones solo por entretenimiento, es por
esta razón que hoy en día las organizaciones
y personas han encontrado en este medio la
manera de darse a conocer a nivel mundial.
22
Y así poder ganar mercado de manera local y mucho mejor
de forma
internacional.
Porque la mayoría de los navegantes de Internet asisten a esta gran red en
busca de información que satisfaga sus necesidades culturales, informativas,
transaccionales, entretenimientos, aprendizajes etc.
1.1 Descripción del Problema identificado
Actualmente en el país hemos visto un gran incremento de establecimientos
que permite el acceso a Internet y por ende todo se vuelve más fácil al momento
de manejar las herramientas de búsquedas que nos ofrece el Internet.
Pero a pesar de contar con herramientas de búsquedas en esta gran red, aun
existen dificultades dado que la búsqueda de información mucha de las veces
es demasiado general.
Y en otras ocasiones puede existir gran cantidad de información valiosa para
algunos pero para otros sigue siendo una información que no cumple con la
necesidad requerida dificultándose así su entendimiento y uso.
Sin descuidar el tiempo que toma el recurso humano para obtener lo que busca.
Puesto que no todo lo que esta publicado en Internet cumple las expectativas de
los navegantes y si se encuentra primero debió haber navegado por largo
tiempo visitado un sin numero de paginas y recién hay encontró lo que buscaba.
23
1.2 Solución que brinda nuestro proyecto
En vista de estas necesidades nuestra propuesta es hacer un portal lo
suficientemente vendedor, dedicado a la “Venta de Información”; bajo un modelo
de negocio establecido es decir por suscripción, brindando de esta manera
beneficios que merman los problemas de la población cibernautica; que con
frecuencia usa esta herramienta tecnológica, para obtener servicios de
publicación y descarga oportuna.
Nuestro proyecto se basará en la venta de información por suscripción, donde el
paso para poder ser miembro activo de nuestro portal, será registrarse con
datos personales básicos que no comprometan su integridad financiera.
Manejaremos dos tipos de usuario por una parte los que suben contenidos
quienes para efectos del proyecto serán conocidos como Usuario-Proveedor y
los que descargan contenidos los llamaremos usuarios.
Cabe destacar que el proceso de Orden-Suscripción será necesario y
obligatorio para las personas que requieren publicar contenidos, no así para
aquellos usuario que solo navegan en busca de información.
24
Debemos tomar en cuenta que todo contenido publicado en nuestro Portal Web
tendrá un precio fijado por el usuario-proveedor que subió ese contenido.
1.3 Misión
Ser un centro de difusión que brinde la oportunidad de distribuir contenidos
entre los navegantes y usuarios de nuestro portal, a un valor representativo para
quien lo suba.
1.4 Visión
Darnos a conocer como un portal que se dedica a la venta de información
importante, donde todo contenido deberá de cumplir con los términos y
condiciones del portal garantizando así un sitio seguro y de esta manera lograr
que nuevas personas se registren y gocen de los beneficios que brinda nuestro
sitio Web.
1.5 Objetivo General
Crear un portal Web que permita a los navegantes del Internet registrarse para
poder realizar publicaciones de contenidos y de ésta manera tanto él como otros
usuarios registrados pueda realizar la respectiva búsqueda y posterior descarga
de la información publicada en el portal.
25
Para ello se implementará un método de pago que será usado en la suscripción
previa a la publicación y en la descarga de contenidos.
1.5.1 Objetivos Específicos
1 Permitir que los navegantes de Internet accedan a nuestro portal Web
y de esta manera conozcan los servicios de Publicación y Descarga
de contenidos disponibles.
2 Brindar seguridad en la encriptación de los datos manejados en el
portal, tanto para el registro de usuarios, como para las transacciones
financieras realizadas por los usuarios que utilizan los servicios de
nuestro portal Web.
3 Autorizar la respectiva descarga de contenido luego de que halla
efectuado la transacción financiera.
4 Permitir que el usuario-proveedor elija dentro de la categoría existente
dónde colocar su contenido, para así poder manejar un mejor control
de los archivos.
5 Brindar un informe de sus movimientos para que tenga un mejor
control de los contenidos.
6 Mantener un control de todas las transacciones efectuadas por los
usuarios dentro de nuestro portal.
26
1.6 Alcances
Nuestra aplicación Web será desarrollada bajo el lenguaje de programación en
PHP, HTML, JScript; los cuales soportan múltiples plataformas para que así los
navegantes puedan acceder a nuestro sitio desde los diferentes browser.
Las respectivas pruebas de funciónabilidad serán efectuadas en los siguientes
navegadores: Internet Explorer, Mozilla, Netscape Navigator, Safari.
Para el registro de usuario manejaremos un breve formulario, donde se
receptaran los datos personales básicos del usuario como:
Nombre, Apellidos, Correo electrónico, Nombre de usuario (Alias), Contraseña
etc.
El método de pago consistirá en llenar otro formulario breve, que receptara:
Nombre, apellidos, tarjeta, número de tarjeta, código de tarjeta, fecha de
expiración, país, ciudad, dirección, e-mail, teléfono.
Aseguraremos la integridad de la contraseña por medio del algoritmo de
encriptación MD5 de 128 bits para que nadie pueda descifrarla.
Comprobaremos la validez del numero de la tarjeta de crédito, mediante el
Algoritmo ISO 2894, pero este algoritmo no puede detectar si la tarjeta sigue
siendo válida (no ha sido anulada, ha caducado, etc.) para esto nosotros
revisaremos las posibles validaciones.
27
El algoritmo ISO 2894 trababa multiplicando cada numero de la tarjeta por dos,
si es menor que nueve no se hace nada caso contrario le restamos nueve, luego
sumamos todos los resultados y si el número que nos devuelve la suma es
múltiplo de 10 y a la vez menor o igual a 150, es un número de tarjeta válido.
Utilizaremos un certificado en nuestro portal Web para proporcionar la confianza
necesaria a los usuarios y ellos a su vez puedan realizar transacciones
financieras seguras en el sitio.
Ver Anexo No. 1 Certificado
Nuestro portal brindara una lista de opciones al usuario en la que podrá elegirá
la categoría en donde va a subir el contenido que desee publicar.
Listado de las Categorías existen en el Portal:
1 Redes
2 Linux
3 Servidores
4 Economía y negocios
5 Medicina y ciencia
6 Salud y dieta
7 Cocina y gastronomía
28
8 Programación
9 Ofimática
10 Informática.
11 Poesía
12 Cómics
Para que el contenido pueda ser subido a nuestro portal debe pesar menos de
4MB y para que sea publicado de forma inmediata debe pesar menos de 2MG
caso contrario primero será evaluado por el Administrador.
Quien verificara que el contenido a publicar, cumpla con los términos y
condiciones establecido dentro del portal.
El tiempo estimado para que el administrador del sitio pueda evaluar el
contenido a publicar será dentro de las 48 horas siguientes.
De la misma forma el Administrador podrá rechazar cualquier producto
publicado si este no cumple con los términos y condiciones, es decir que todo
archivo que pese menos de 2MG también será monitorizado por el
Administración.
Enfocamos el servicio de publicación de contenidos a los usuarios del Internet
que posean información digital, tales como manuales, folletos, tutoriales, libros.
29
Para brindar un mejor servicio de todo contenido publicado en el portal, el
usuario-proveedor determinara el costo del contenido, cuyo valor será
incrementado en un 20% por los servicios de descargar.
Se manejara un estado de cuenta donde el usuario podrá visualizar:
1 Ordenes pendientes de pago
2 Descargas permitidas (5 días hábiles ó 3 descargas)
3 Últimos contenidos publicados
4 Sus últimas ganancias
5 Las descargas realizadas en el mes
6 El numero de recibo proporcionado por la entidad financiera para poder
cobrar por las descargas efectuadas a sus contenidos en el presente mes.
El
servicio de descarga sólo estará disponible para aquellas personas que
tengan capacidad legal para contratar. Por lo tanto, aquellos que no cumplan
con esta condición deberán abstenerse de suministrar información personal para
ser incluida en nuestras bases de datos. Sin embargo, pueden hacerlo a través
de los padres o tutores.
30
Manejaremos transacciones financieras
1 En el caso que el usuario desee publicar contenidos.
2 Y para cuando deseen realizar descargas
El proceso para realizar las transacciones financieras en nuestro portal Web
será mediante un mecanismo de simulación que efectuara las validaciones
básicas, para realizar la compra o el pago de suscripción.
La Consola Administrativa será administrada por una persona capacitada, quien
se encargara de monitorizar todos los archivos subidos a nuestro portal, así
mismo será quien realice los mantenimientos a las tablas autorizadas, y llevara
los distintos reportes que genera el portal para una mejor gestión y desarrollo de
nuestro sitio.
1.7 Arquitectura para la Aplicación Web.
Nuestro
Portal
Web
será
implementado
en
una
Arquitectura
de
Presentación/Lógica de Negocio/Almacén de dato, mas conocida como tres
capa.
31
1.7.1 Capa de servicios de presentación:
En esta capa manejaremos los archivos que componen nuestro proyecto,
de una forma ordenada mediante la utilización de carpetas o directorios,
para un mejor mantenimiento (Técnico) a nuestro Portal.
Las carpetas o directorios contendrán:
1 Código PHP
2 Pagina Principal (Plantilla)
3 Paginas Secundarias
4 Gráficos
5 Animaciones
6 Tmp
7 Jscript
Gracias al esquema multiplataformas el usuario podrá acceder a nuestra
aplicación desde los principales navegadores tales como Internet Explorer
para Microsoft y Mozilla para Linux.
1.7.2 Capa de servicios de Lógica de Negocio
Manejaremos transacciones a un nivel medio que guardar la integridad de
nuestro portal.
32
Enumeraremos alguna de las transacciones que existirán en nuestra
aplicación:
1 Realizaremos procesos para el ingreso de la información Básica de
los usuarios.
2 Realizaremos
procesos
para
el
ingreso
de
la
información
correspondiente a la orden-suscripción de los usuarios para la
publicación de los recursos.
3 Realizaremos procesos para la subida de contenidos que van hacer
publicado en el Portal
4 Realizaremos procesos para el Movimiento de las descargas
realizadas
5 Realizaremos procesos para los pagos realizados a los usuariosproveedores que han publicado contenidos.
6 Realizaremos procesos para la información de los cobros realizados a
los usuarios que han descargado contenidos.
1.7.3 Capa de servicios de datos
De acuerdo a los antecedentes, nuestro Portal Web manejar una Base de
Datos
MYSQL
la cual contendrá todas las tablas relacionadas
de
33
acuerdo a las necesidades de nuestro proyecto, en estas tablas
guardaremos los siguientes registros:
1 Información básica de los usuarios
2 Información correspondiente a la orden-suscripción de los usuarios
para la publicación de los recursos.
3 Información del contenido que va hacer publicado en el Portal
4 Movimiento de las descargas realizadas
5 Información de los pagos realizados a los usuarios-proveedores que
han publicado contenidos.
6 Información de los cobros realizados a los usuarios que han
descargado contenidos.
7
1.8 Modelo de Desarrollo
Para el desarrollo de nuestro portal Web y la consola administrativa
trabajaremos con el Modelo del ciclo de vida espiral por ser un modelo de
proceso evolutivo confiable y recomendado.
Las características mas destacadas encontramos:
1 Es un modelo evolutivo que combina el modelo clásico con el diseño de
prototipos.
34
2 Incluye la etapa de análisis de riesgos.
3 Es ideal para crear productos con diferentes versiones mejoradas como se
hace con el software moderno de microcomputadoras.
4 La ingeniería puede desarrollarse a través del ciclo de vida clásico o el de
construcción de prototipos.
El modelo en espiral se divide en un número de actividades estructurales.
Generalmente, existen entre tres y seis regiones de tareas de las cuales
destacamos:
1 Comunicación con el cliente: esta tarea es de vital importancia, es la base de
todo nuestro proyecto puesto que aquí se sabrá el requerimiento de parte
del usuario estableciendo así comunicación entre el desarrollador y el cliente.
2 Planificación: Con esta tarea se definen los recursos tantos informáticos y
humanos, el tiempo y otras informaciones relacionadas con el proyecto.
3 Análisis de riesgos: Con esta tarea se evalúa los riesgos técnicos y otras
informaciones relacionadas con el proyecto.
4 Ingeniería: Se toma en cuenta todo lo que hará falta o se requerirá para
construcción de nuestro proyecto.
5 Construcción y adaptación: las tareas requeridas para construir, probar,
instalar la aplicación administrativa y el portal elaborado.
35
6 Evaluación el cliente: las tareas requeridas para obtener la reacción del
cliente según la evaluación de las representaciones del software creadas
durante la etapa de ingeniería e implementación durante la etapa de
instalación.
Gráfico No.1 .1 Modelo de Desarrollo Espiral
Cuando se comience con la construcción de nuestro proyecto nos guiaremos
alrededor de la espiral en la dirección de las agujas del reloj, comenzando por el
centro. El primer ciclo de la espiral producirá el desarrollo de una especificación
de productos; los pasos siguientes en la espiral serán para desarrollar un
prototipo y progresivamente versiones mas sofisticadas. Cada paso de la región
de planificación producirá ajustes en nuestro proyecto.
36
1.9 Metodología Orientada a Objeto
Luego de analizar varias metodologías decidimos usar para el desarrollo de
Nuestro Portal Web y Consola Administrativa el
lenguaje Unificado de
Modelado UML Orientado a Objeto.
1.10 Recursos Tecnológicos
1.10.1 Recursos para el Desarrollo del Portal Web
Para el desarrollo Portal se va a necesitar los siguientes recursos:
Hardware
3 Computadores con las siguientes características:
Hardware: Procesador P4 3.2 GHZ
Mainboard: Intel Pentium
Memoria: 512 GB RAM
Disco Duro: 80 GB
Monitores: Pantalla CDR
Software
Sistemas Operativos
Windows Xp
Windows 2003 Server
Linux Fedora
37
Herramientas de Desarrollo
Apache
PHP
MYSQL
Dreamweaver
1.10.2 Recursos para la Implementación del Portal Web

Hosting con las siguientes características:
+===================================+
| New Account Info
|
+===================================+
| Domain: aquidescarga.com
|
| Ip: 75.126.144.181 (n)
|
| HasCgi: y
|
| UserName: Aquiles
|
| PassWord: *****
|
| CpanelMod: x
|
| HomeRoot: /home
|
| Quota: 10000 Meg
|
| NameServer: ns1.websoftec.net
|
| Contact Email: [email protected]|
| Package: websoft_Pymes
|
| Php 5
|
| Mysql 5
|
| Apache
|
+===================================+

Certificado Digital
Ver Anexo No. 1 Certificado
38

Administración del Sitio por https: aquidescarga.com/cpanel, para
una mejor apreciación del tema ver Tomo II Capitulo 2 Manual de
Usuario.

Presupuesto de funcionamiento de la aplicación Aquidescarga
podrá ser visualizado.
Anexo No.3 Presupuesto
1.10.3 Recurso Humano
Para la elaboración del sitio se tomara en cuenta estos roles:
1 Jefe de Proyecto
Srta. Diana Alava
2 Desarrolladores
Sr. Carlos Orrala
Sr. Freddy Cevallos
Jefe del Proyecto.- Es la persona encargada de dirigir la elaboración del
portal Web y la consola administrativa, será la persona quien tendrá la
responsabilidad de cumplir que el proyecto se lo realice de la mejor
manera para así cumplir con todas las expectativas.
Desarrolladores.- Son las personas encargadas de la parte de
implementación, diseño de pantallas, diseño grafico, codificación, edición,
39
escritor de textos para nuestro portal, así como los encargados de realizar
los manuales tantos técnicos como de usuario.
Cabe destacar que por factor tiempo la persona que esta como jefe de
proyecto tendrá que realizar algunas de las tareas de desarrollador.
1.11 Cronograma
Cronograma Resumido de Actividades (Parte 1)
Portal de Venta de Informacion Personal
Nombre de Tarea
Elección del Proyecto Web
Duracion Dias
Comienzo
Fin
1.00
19/04/2007
20/04/2007
Ajustes del Enfoque del Proyecto
32.00
20/04/2007
22/05/2007
Etapa de Análisis del Portal
28.00
22/05/2007
19/06/2007
Etapa de Diseño del Portal
20.00
19/06/2007
09/07/2007
Primera Sustentación
1.00
09/07/2007
09/07/2007
Etapa de Programación
71.00
15/07/2007
24/09/2007
Segunda Sustentación
1.00
24/09/2007
25/09/2007
Etapa de Programación
57.00
25/09/2007
21/11/2007
6.00
21/11/2007
27/11/2007
18.00
27/11/2007
15/12/2007
1.00
15/12/2007
15/12/2007
Etapa de Implementación
Etapa de Prueba
Entrega del proyecto
Gráfico No.1.2 Cronograma de Actividades Resumido
Adjuntamos cronograma resumido de actividades para la elaboración de nuestro
proyecto.
Para una mejor apreciación de las actividades favor dirigirse a los anexos,
donde se encuentra detallado nuestro cronograma de actividades.
Ver Anexo No. 2 Cronograma.
CAPITULO 2
Análisis
2.1.- Levantamiento de Información
AQUIDESCARGA es un lugar donde todas las
personas pueden vender y comprar muchos
tipos de información: como folletos, manuales
técnicos,
artículos
importantes,
libros,
fotografías, códigos fuentes, etc. que serán
monitorizados y categorizados para una mejor
búsqueda.
41
Nuestro finalidad es la de distribuir contenido de forma segura que muchas
veces es difícil de conseguir en portales gratuitos.
2.1.1 A quien dirigimos nuestro proyecto
AQUIDESCARGA brindará el servicio a todos los navegadores de
Internet, con mayor énfasis a:
Los
Estudiantes
Universitarios,
Profesionales,
Compañías,
Investigadores, Escritores, Mentalitas, Analistas, Diseñadores que por lo
general son quienes constantemente realizan, proyectos universitarios,
temas de
tesis, códigos fuentes,
libros,
análisis de
proyectos,
investigaciones, pruebas, novelas, fotos etc.
2.1.2 Visitas
Las Visitas pueden ser hechas por cualquier persona que gusta del
Internet.
Pero para poder publicar un contenido en nuestro sitio primero deberá
conocer sobre los términos y condiciones en el Acuerdo del Portal.
Y para descargar contenidos deberá tener una tarjeta de crédito valida
que le permita realizar la compra.
42
2.1.3 Registro de Usuario
AQUIDESCARGA ofrecerá un Formulario de Registro, que solicitara
datos básicos del usuario.
El navegante
debe elegir un
ID de Usuario y una Clave durante el
proceso de registro, además deberá aceptar los términos y condiciones
del sitio para poder terminar el proceso de registro.
El usuario recibirá a su correo personal un e-mail de confirmación el cual
contendrá un link que le permitirá activar la cuenta.
2.1.4 Manejo de Claves
Los datos del usuario deben ser correctos y más que todo se recomienda
que la cuenta de correo ingresada para el registro sea de Gmail o Yahoo,
puesto que en las pruebas preliminares de envió de corres, no llegan a
los servidores de Hotmail y Latinmail.
Para que de esta manera podamos enviarle el e-mail de confirmación.
Todo usuario dispondrá de un alias y clave personal que le permitirá
publicar
o descargar contenido. Esta clave debe mantenerla bajo
absoluta confidencialidad y en ningún caso, deberá revelarla o compartirla
con otras personas.
43
El usuario será el único responsable de todos los actos que tenga lugar
su sesión.
Si por cualquier razón un usuario creyera que alguien puede conocer su
clave, deberá modificarla inmediatamente.
Para las claves que se utilicen dentro de nuestro portal, estas deben de
cumplir con un formato definido por el Administrador del sitio, las cuales
pueden ser modificadas dentro de las opciones que tiene dicha persona.
La clave esta formada por 3 distintos tipos de caracteres, los cuales son
una combinación de letras (a-z), números (0-9) y símbolos especiales
(.*/_) que en su total deben sumar 7 caracteres como mínimo.
2.1.5 Formato Permitido
Todo Contenido que vaya a ser publicado en AQUIDESCARGA deberá
ser propio del usuario y recibiremos contenidos solo en el siguiente
formato:
PDF (Formato de Documento Portátil) por ser un formato de
almacenamiento de documentos.
Debido a que es una extensión multiplataforma, y puede ser visualizado
por los principales sistemas operativos (Windows, Unix/Linux), sin que se
modifiquen ni el aspecto ni la estructura del documento original.
44
AQUIDESCARGA se reserva el derecho de negarse a publicar contenido
que violen los términos y condiciones establecidos en el Acuerdo del
Portal.
Si la publicación de un contenido tuviere datos personales al momento
de ser levantado en nuestro Portal Web, dichos datos será vendido junto
con el contenido.
2.1.6 Acuerdo del Portal para publicar contenidos

El usuario deberá realizar la transacción financiera correspondiente a
la orden-suscripción, para que sus contenidos estén publicados todo
el tiempo.

Manejaremos 5 días de gracias para que pague la suscripción, es
decir que todo contenido dejara de estar publicado al sexto día;

Todo contenido que sea publicado en nuestro portal va a tener una
numeración para llevar un control de los mismos;

El usuario deberá describir un pequeño fragmento del contenido, que
será publicado junto con el titulo, este requerimiento es importantes y
obligatorio.
45

No debe contener material que sea ilegal, obsceno, difamatorio,
pornográfico, indecente, lascivo, hostigante, amenazante, perjudicial,
invasor de derechos de privacidad o publicidad, abusivo, incitante, o
que fuera objetable de otro modo;

No de incluir código malicioso como virus, caballos de Troya, gusanos,
bombas de tiempo, mensajes de cancelación (cancelbots), o cualquier
otra rutina de programación que pudiera dañar, interferir, interceptar
en forma subrepticia, o expropiar un sistema, programa, datos, o
información personal (incluyendo Datos Personales);

Receta, fórmula que hagan daño a otra persona;

AQUIDESCARGA a pesar de estas reglas no garantiza la precisión,
integridad o calidad del contenido ya que las faltas ortográficas,
errores semánticos entre otros errores gramaticales no corregimos.
2.1.7 Manejo del Contenido
AQUIDESCARGA permitirá a todo usuario-proveedor publicar contenido
de acuerdo a los términos y condiciones del portal, si la información pesa
menos de
2MB será publicado automáticamente caso contrario será
puesto a consideración del administrador, quien como parte de nuestro
46
sitio Web se reserva el derecho de inactivar cualquier material que crea
inapropiado, ilegal, ofensivo, obscenos, pornográficos, etc.
2.1.8 Penalizaciones para el caso de contenidos perjudiciales para
nuestro portal
Como ya se conoce todo contenido superior de 2MB será evaluado por el
administrador del sitio, es decir que él tendrá todo el derecho de no
publicar
o rechazar información que sobrepase nuestros Términos y
Condiciones.
2.1.9 Políticas de mantenimiento de contenido
Todo Contenido podrá estar Publicado en Nuestro Portal, si su dueño
paga por una de las tarifas como por ejemplo la tarifa básica:
Fecha Inicio (Orden suscripción) 15-06-2007
Fecha Fin
Días de Gracias
Fecha Fin Con días de gracias
15-07-2007
5 días
20-07-2007
47
Manejaremos 5 días de gracia para que el usuario-proveedor realice la
transacción financiera correspondiente al siguiente mes, caso contrario el
material publicado será deshabilitado del portal hasta que realice la
transacción correspondiente.
2.1.10 Tablas de Valores por el contenido levantado
El Usuario-proveedor determinara el valor de su contenido donde
AQUIDESCARGA comisionara el 20% más del producto.
Ejemplo: Producto cuesta USD $ 10.00
Usuario-proveedor Recibirá
US$ 10.00
Portal Web Recibirá
US$
2.00
------------------------Total que pagara el Usuario
US$ 12.00
Para el usuario será transparente el valor a pagar puesto que a el no le
interesa cuanto cobra el usuario-proveedor o cuanto gana la pagina.
Entonces queda claro que el Usuario-proveedor ganara el 100% de su
contenido y nosotros como portal Web ganaremos el 20 % más
contenido por el servicio de descarga.
del
48
2.1.11 Formas y políticas de pagos para Usuario-proveedor
Los valores por contenidos vendidos aparecerán en su estado de cuenta.
Para efecto de nuestro proyecto el Usuario-proveedor recibir sus pagos
mediante giros por Western Unión
En forma específica, antes de un plazo de 31 días luego de la finalización
de un mes, AQUIDESCARGA realizará un esfuerzo de buena fe para
pagar, utilizando la información de contacto en nuestros registros.
Si a un usuario-proveedor le adeudáramos menos de $20 por ventas de
contenidos dentro de un mes establecido, nos reservamos el derecho, a
nuestro criterio, de trasladar sus ingresos al mes siguiente hasta alcanzar
la suma de $20.
Es su responsabilidad actualizar su información de contacto si la misma
fuera modificada.
2.1.12 Forma de cobro para las descargas
Para poder hacer descargas de contenido en el sitio, el usuario deberá
realizar una transacción financiera por medio de una de tarjeta de crédito
válida y solamente cuando el sistema de cobros haya determinado el
correcto debito a la cuenta que este siendo utilizada se permitirá concluir
con el proceso de descarga.
49
2.2 Políticas de Privacidad
2.2.1 Recolección de Datos Generales
AQUIDESCARGA se compromete a proteger la privacidad de los
usuarios y de sus websites.
AQUIDESCARGA no se involucra en la práctica de venta o intercambio
de datos personales con terceros para fines promociónales.
AQUIDESCARGA solicita información personal como, por ejemplo,
nombre, dirección, correo electrónico, contraseña, país e idioma.
AQUIDESCARGA podrá entrar en contacto con usted para obtener
información adicional necesaria para realizar los pagos.
AQUIDESCARGA no proporcionará a terceros la información recibida sin
autorización del usuario, excepto cuando sea necesaria para procesar o
cubrir un pedido, caso en el que podrán ser divulgadas a bancos,
instituciones financieras o compañías de tarjeta de crédito.
2.2.2 Seguridad
AQUIDESCARGA usará la tecnología de encriptación cuando recolecte
datos sensibles y claves personales como, por ejemplo, información
sobre tarjeta de crédito. Para este caso usaremos medidas de seguridad
disponibles como es el MD5 junto con un Certificado los cuales nos
50
permitirán garantizar la información sobre tarjeta de crédito, así como la
información personal presentada como parte del proceso de compra.
Ver Anexo No. 1 Certificado
2.2.3 Menores de Edad
No podrá ser sometida información al presente Sitio por parte de menores
de edad (conforme definición de la legislación local), sin el consentimiento
de los padres o adulto responsable. Tampoco se permite que menores de
edad efectúen compras o se involucren en otros actos legales en el
presente Portal sin el referido consentimiento.
2.2.4 Cambios
AQUIDESCARGA se reserva el derecho de cambiar las Políticas de
Privacidad en cualquier momento por lo que se recomienda visitar las
políticas dentro del portal.
2.2.5 Otros Términos
El uso de este Portal está sujeto a los términos y condiciones
presentados en las secciones "Acuerdo del Portal". Al acceder y utilizar el
51
Portal, usted acepta los términos y condiciones vigentes al momento de
hacerlo, incluyendo esta Política de Privacidad.
2.2.6 Clave Personal
Los usuarios dispondrán de una clave personal. Con ella podrán comprar,
vender. Esta clave debe mantenerla bajo absoluta confidencialidad y, en
ningún caso, deberás revelarla o compartirla con otras personas.
2.3 Consola Administrativa
La consola administrativa será manejada por un Administrador quien:

Evaluara todo contenido que se suba al portal

Realizara los pagos a los usuarios-proveedores

Tendrá acceso a los reportes

Efectuará mantenimientos a las tablas autorizadas por la organización
2.3.1 Como ingresar a la consola administrativa
Para el ingreso a la consola se digitara:
Login
: admin
Password: administrador
52
2.3.2 Control de contenido
La consola administrativa permitirá al Administrador verificar que no exista
código malicioso o contenidos obscenos en los archivos publicados como en
los archivos pendientes de los usuarios. Si llegara a encontrar contenido de
ese tipo tendrá toda la autoridad para poder rechazarlo y quitarlo del portal
2.3.3 Reporte de Pago de Usuario-proveedor
Se visualizar un reporte del total de descargas mensuales de los usuariosproveedores que han publicado su contenido en nuestro portal.
2.3.4 Actualización de pagos a los Usuarios-proveedores
En esta opción realizara los pagos a los Usuario-proveedor por el total de las
descargas a la fecha de corte.
2.3.5 Mantenimiento
Esta sección permitirá realizar los correspondientes mantenimientos a las
tablas: país, idioma, tarifa, p. visualización, motivo rechazo, categoría,
documento y entidad.
53
Solo podrán realizarse modificaciones más no anulaciones de campo que
estén siendo usados por algún registro existente.
Los campos que no están siendo ocupados por ningún registro podrán ser
puestos en esta inactivo y no serán mostrados en el portal.
54
2.4 Diagrama de Casos de Uso
2.4.1 Registro de Usuario
Visitar Pagina
*
*
*
«uses»
Portal Web
Registrar en el
Portal
«extends»
Confirmar por
correo
«extends»
Guardar Datos
*
«extends»
«uses»
«extends»
Activar Cuenta
Llenar formulario
Validar Datos
Navegante Web
Gráfico No.2.3 Diagrama de casos de uso
Registro de Usuario
Descripción del Caso de Uso - Registro de Usuario
Toda persona deberá ingresar sus datos personales tales como:
nombres, apellidos, alias, correo electrónico, contraseña, idioma, país,
ciudad y teléfono; para poder crear una cuenta en nuestro Portal, estos
datos serán validados; una ves que sea correctos se procederá a
guardados en nuestra base de datos y le enviaremos un mail de
confirmación para que pueda activar su cuenta.
55
2.4.2 Orden Suscripción.
«uses»
Logonear
Registro Usuario
«uses»
Validar Contraseña
«uses»
Portal Web
«uses»
Orden Suscripcion
Confirmación de
Pago
«uses»
Validar
Información Existente
«uses»
«uses»
Simulador de Pago
Usuario
Guardar Datos de
Pagos
«extends»
LLena Formalario
Ingresar Datos
Financieros
Gráfico No.2.4 Diagrama de casos de uso
Orden Suscripción
Descripción del Caso de Uso - Orden Suscripción
Una vez que el usuario se encuentra registrado y haya activado su cuenta
podrá escoger la orden de suscripción que mejor le convenga para poder
publicar sus contenidos.
Esta orden de suscripción deberá ser pagada por medio de una tarjeta de
crédito valida.
56
Para el pago de tarjetas de crédito manejares un pequeño simulador de
pagos el cual verificara
nombre, apellido, número de tarjeta, nombre
tarjeta, código, fecha de vencimiento, país, dirección, teléfono, e-mail.
Para efectos del proyecto solo validaremos número de tarjeta, código y
fecha de vencimiento.
57
2.4.3 Servicios del Portal
Registro Usuario
Portal Web
Validar Contraseña
«extends»
Administrador Portal
«uses»
Usuario
Contenidos Mayores
de 2MG
Logonear
«extends»
«extends»
«uses»
«uses»
Publicar
Informacion
«extends»
Contenidos
Pendientes
«extends»
«uses»
Verificar Estado
de Cuenta
«extends»
«extends»
Enviar Contenido
al Portal
«extends»
Contenidos Menores
de 2MG
«uses»
Suscripcion Activa
«extends»
Presentar
Información
Guardar Registro
Compra
«extends»
«uses»
Existir información
Simulador Pago
Descargar
Informacion
«extends»
Confirmación de
Pago
«extends»
Efectivizar pago
«extends»
Guardar Registro
Compra
«extends»
Envio de
Autorizacion de Pago
«extends»
Confirmacion de
fondos
Gráfico No.2.5 Diagrama de casos de uso Servicios del Portal
58
Descripción del Caso de Uso - Servicios del Portal
Todo usuario registrado podrá gozar de los beneficios que brinda nuestro
portal.
Publicar contenido.- Una ves que el usuario tenga una suscripción
activa podrá cargar archivos en nuestro portal, estos archivos deberán
ser subidos de acuerdo a la categoría que mejor se parezca, para que
de esta manera los que quieran buscar información se les sea mas fácil
su localización.
De igual manera es recomendable que el usuario escriba un pequeño
resumen de la información a subir para que así los navegantes puedan
hacer la búsqueda de forma rápida.
Mi canasta.- Le permitirá ver un detalle de los productos comprados.
Código Descripción
Cantidad
Valor
Total.
Además la canasta tiene la opción de eliminar algún archivo que ya no
desee comprar.
Estado de Cuenta.- Aquí el usuario podrá visualizar:

Ordenes de compras pendientes
59

Archivos que tiene para descarga

Los cinco últimos contenidos publicados

Ganancias del mes

Ganancias de meses anteriores

Numero de Transacción para cobrar por las descargas del mes
60
2.4.4 Consola Administrativa
Usuario
Portal Web
«uses»
Logonear
«uses»
Validar Contraseña
Recepcion
Contenidos
«extends»
«uses»
«uses»
«uses»
Contenido
Aprobado
Evaluar Contenido
Publica Contenido
«uses»
«uses»
Contenido NO
Aprobado
«uses»
«uses»
«extends»
Ver Estado de
Cuenta por Suscriptor
«extends»
Guardar Registro
Compra
«uses»
Actualizar Pagos a
Suscriptores
Registrar Pago
Mantenimientos
Gráfico No.2.6 Diagrama de casos de uso
Consola Administrativa
Publicar Contenidos
61
Descripción del Caso de Uso - Consola Administrativa
La consola administrativa será manejada por un Administrador autorizado
que tendrá la función de:

Evaluar todo contenido publicado o pendiente por publicar.

Visualizar los estados de cuentas por usuario

Actualizar los Estados de Cuentas de los usuarios-proveedores

Dar mantenimientos a las tablas autorizadas por la Organización
62
2.5 Diagramas de Secuencia
2.5.1 Registro Usuario
Gráfico No.2.7 Diagrama de secuencia
Registro de Usuario
Descripción del Diagrama de Secuencia - Registro Usuario
El navegante visita nuestra pagina y solicita registrarse, entonces el portal
le visualiza un formulario para que digite sus datos personales, los cuales
serán guardados en nuestra base de datos y le enviaremos un mail de
confirmación a su correo personal.
El navegante ingresara a su correo personal y confirmara el correo
enviado por el portal, dando clic en la dirección enviada para que
automáticamente se active su cuenta.
63
2.5.2 Orden Suscriptor
Usuario
Simulador de Pago
Portal Web
Visita Portal
Levanta Página
Página Principal
Ingreso de Usuario y Contraseña
Valida Información
Inicio de Sesión o Advertencia
Solicita Suscribirse para poder Publicar
Levanta Formato
Presenta Formulario
Ingresa Datos al Formulario
Envia Datos del Formulario
Envia Confirmación del Dato
Envia Confirmación del Dato
Valida Datos
Registra Datos y Registra Transacción
Suscrpción Activa para Publicar
Gráfico No. 2.8 Diagrama de secuencia
Orden Suscriptor
Descripción del Diagrama de Secuencia - Suscripción Activa para
Publicar
El usuario visita el portal e ingresa su ID de usuario y contraseña, el portal
valida esta información al ser incorrecta envía una advertencia y si es
correcta inicia la sesión del usuario.
Luego el usuario solicita la suscripción para publicar, el portal le presenta
un formulario para realizar la transacción una ves que esta información
esta completa el portal la envía al Simulador de Pagos quien verifica la
valides de los datos y de la transacción.
64
El Simulador de Pagos le envía una confirmación al Portal y este activa la
suscripción si la confirmación fue efectiva sino envía una advertencia al
usuario.
65
2.5.3 Servicios del Portal
Suscripto
Portal we
Administrador
Pago
Visita Portal
Levanta Página
Página Principal
Ingreso de Usuario y Contraseña
Inicio de Sesión o Advertencia
Valida Información
Opción: Publicar Contenido
Valida Suscripción Mensual
Envia mensaje y/o
Interface para envio de Contenido
Selecciona el Contenido a Subir
Envia Contenido al Portal
Registra el Contenido
Mayor a 2MB
Menor a 2MB
Evaluar Contenido
Publica Contenido
Publica Contenido
Contenido Aprobado
Contenido Negado
No Publica
Opción: Verificar estado de cuenta
Levanta Interface de Estado de Cuenta
Presenta Estado de Cuenta
Portal Registra Descargas - Publicaciones
Opcion: Descargar Contenido
Presenta Menu de Contenidos
Levanta Menu de Descargas
Selecciona de Contenido a Descargar
Envia Solicitud de Descarga
Presenta Formulario para realizar pago
Levanta Interface para el Pago
Selecciona forma de pago
Envia datos para el cobro
Mensaje de la Transacción
Descargando Contenido
Envia datos del cobro
Confirmación del Debito
Guarda Registro de Compra
Gráfico No.2.9 Diagrama de secuencia
Servicios de Portal
Valida Datos y/o Registra Debito
66
Descripción del Diagrama de Secuencia - Servicios del Portal
El usuario visita el portal e ingresa su ID de usuario y contraseña, el portal
valida esta información al ser incorrecta envía una advertencia y si es
correcta inicia la sesión del usuario
El usuario podrá dentro de su sesión:
Publicar.- una ves que tenga suscripción activa el usuario podrá subir
contenidos.
Si el contenido recibido supera los 4MB será puesto como contenido
pendiente caso contrario será publicado automáticamente pero en ambos
casos será evaluado por el Administrador para poder ser publicado o
rechazos.
Estado de Cuenta.- EL usuario podrá ver su cuenta y así sabrá que
contenido ha sido descargado en el Portal.
Carrito de Compra.- El usuario seleccionara que contenido desea
descargar en el Portal.
El portal le presenta un formulario para realizar la transacción una ves
que esta información esta completa el portal la envía al Simulador de
Pagos quien verifica la valides de los datos y la transacción.
67
El Simulador de Pagos le envía una confirmación al Portal y este registra
la compra y procede la descarga
envía una advertencia al usuario.
si la confirmación fue efectiva sino
68
2.5.4 Consola del Administrador
Administrador
Servidor del Portal
Solicita Consola
Presenta Consola Administrativa
Levanta Consola Administrativa
Ingreso de Usuario y Contraseña
Inicio de Sesión o Advertencia
Valida Información
Opción: Evaluar Contenido
Visualiza Contenidos Recientes
Levantar Interface de Contenidos Recientes
Evalua Contenidos Recientes
No cumple con los Terminos y Condiciones
Si cumple con los Terminos y Condiciones
Autoriza la Publicación de Contenidos
Opcion:
Publica Contenido
Solicita Información de descarga por Suscriptor
Registro de Descargas
Visualiza la informacion de descarga por Suscriptor
Opcion:
Levanta Reporte
Actualizar Pagos
Visualiza Actualizacion de Pagos
Levanta Interface de Actualización de Pago
Ingresa a los Suscriptores el pago
Estados de Cuentas Actualizadas
Opcion:
Registra el Pago
Mantenimientos
Realiza Mantenimientos Autorizados
Levantar Interface de Mantenimientos
Actualiza Tablas
Vizualización de Tablas
Gráfico No.2.10 Diagrama de secuencia
Consola Administrativa
69
Descripción del Diagrama de Secuencia - Consola del Administrador
El Administrador ingresara su ID de Administrador y contraseña, el portal
validara esta información al ser incorrecta envía una advertencia y si es
correcta inicia la sesión del administrador quien se encargara de:
Revisar los contenidos que es encuentren pendientes para publicar, así
mismo revisará los publicados por si no han faltado a los términos y
condiciones del portal.
Visualizar los estados de cuentas por usuario para ver a quienes se les
pagara por descargas realizadas a sus contenidos en el cada mes.
Actualizar
mensuales.
los estados de cuentas correspondientes a los pagos
70
2.6 Diagramas de Estado
2.6.1 Registro Usuario
[Ingresar a
Nuestro Portal]
[Llenar Formulario]
Ingresando Datos Para Registrarse
Visualizacion Políticas y Condiciones del Portal
[Aceptar Políticas]
[Comprar Datos / Datos Incorrectos]
[Enviar e-mail para confirmación]
Recibir
Información
[Comparar Datos / Datos Correctos]
Validando Datos
Gráfico No.2.11 Diagrama de estado
Registro Usuario
Descripción de Diagrama de Estado - Registro Usuario
El navegante para pertenecer a nuestro Portal Web deberá registrarse,
donde primero conocerá de nuestras políticas y condiciones las misma
que aceptara para
poder seguir con el proceso, si la información es
correcta será guardada en la base da datos si es incorrecta tendrá que
volver a digitar datos validos.
71
2.6.2 Activación de Cuenta
[Ingresar al
Correo Personal]
[Abrir Correo]
Recibiendo Correo de Confirmación
Direccionando a nuestro Portal Web
[Aceptar Políticas]
[Enviar e-mail para confirmación]
Activando Cuenta
Gráfico No.2.12 Diagrama de estado
Activación de Cuenta
Descripción de Diagrama de Estado – Activación de Cuenta
El usuario recibirá un e-mail de confirmación a su correo personal, al
momento que el de clic en la dirección adjunta en el correo,
automáticamente se activará la cuenta.
72
2.6.3 Servicios del Portal
[Ingresar a
Nuestro Portal]
[Ingresar Usuario
y Contraseña]
[Comparar Usuario
Usuario Correcto]
Ingresando Datos
Validando Usuario
Seleccionado Opción
[Comparar Usuario
Usuario Incorrecto]
[Descargar Contenido]
[Publicar Contenido]
[Evaluar Suscripcion]
Validando Suscripción
[Ingresar # Tarjeta]
Ingresa Datos Financieros
SIMULADOR DE PAGOS
[Comprarar Datos
Datos Financieros Incorrectos]
[Suscripción Valida]
[Comparar Datos
Datos Financieros [Ver
Correctos]
Estado
de Cuenta]
[Suscripción Valida]
Seleccionar Contenido a Subir
Activando Suscripción
[Enviar Contenido]
Guardar Contenido
[Visualizar Registro
de la Compra]
Seleccionar Contenido
Bajando Contenido Seleccionado
[Visualizar
Valor a Pagar]
[Visualizar
Estado de Cuenta]
Generando Estado de Cuenta
[Descargar]
Guardando Registro de la Compra
Aceptando Valor de Compra
[Comparar Datos
Datos Financieros Correctos]
[Realizar Pago
de la compra]
[Ingresar # Tarjeta]
Ingresando Datos Financieros
SIMULADOR DE PAGOS
[Comparar Datos
Datos Financieros Incorrectos]
Gráfico No.2.13 Diagrama de estado Servicios del Portal
73
Descripción del Diagrama de Estado - Servicios del Portal
El usuario para acceder a los servicios del portal deberá ingresar su alias
y contraseña, una vez validado los datos podrá seleccionar que desea
hacer:
Si va por la opción de publicar contenidos al portal, deberá primero
realizar la transacción financiera de la suscripción.
Una vez validada esta suscripción el usuario podrá elegir que subir al
portal.
Si elige descargar contenidos del portal primero deberá seleccionar que
desea bajar y luego realizará la transacción financiera correspondiente
para efectuar la descarga.
Todo
usuario podrá ver su estado de cuenta, el cual presentará un
listado de ordenes pendientes, contenidos por descargas,
últimos
publicados, ganancias del meses, ganancias de meses anteriores,
numero de transacción para realizar el cobro por las descargas.
74
2.6.4 Consola Administrativa
[Ingresar Usuario
y Contraseña]
[Ingresar a
Consola Administrativa]
Ingresando Datos
[Comparar Administrador
Usuario Correcto]
Validando Administrador
Seleccionado Opción
[Comparar Administrador
Usuario Incorrecto]
[Mantenimientos]
[Ver Estado de Cuenta
por Suscriptor]
[Controlar Contenido]
[Elegir Contenido]
Validando Contenido
Evaluar Contenido
[Reprobar Contenido]
[Aprobar Contenido]
Guardando Doc. para Publicar
[Publicar]
[Generar
Reporte]
Visualizar E/C por usuario
Guardando Doc. Rechazado
[Controlar
Pagos]
[Proceso
Concluido]
[Visualizar Reporte
Estado de Cuenta
[Visualizar Reporte
por Usuario]
de los pagos a los
usuarios-proveedores]
Presentando Reporte de E/C por usuario
[Vizualizar
Mantenimientos]
Registrando Pagos a las cuentas de los usuarios
Ejecutar los Mantenimientos
[Seleccionar Usuario a Pagar ]
Visualizando Usuarios
Gráfico No.2.14 Diagrama de estado Consola Administrativa
75
Descripción de Diagrama de Estado - Consola Administrativa
La consola administrativa será manejada por un usuario autorizado que
tendrá la función de:

Evaluar todo contenido que va a ser publicado en nuestro portal y
guardar un registro donde determinara que se publica y que no se
publica.

Visualizar los estados de cuentas por usuario para ver a quienes se
les acreditara por descargas realizadas a sus contenidos en el mes.

Actualizar los Estados de Cuentas correspondiente a los pagos
mensuales.

Realizar los mantenimientos requeridos por la Organización.
76
2.7 Diagrama de Clases
2.7.1 Portal Web
Gráfico No.2.15 Diagrama de Clases Portal Web
77
Gráfico No.2.15a Diagrama de Clases Portal Web
78
Descripción del diagrama de clase – Porta Web.
Luego de haber desarrollado nuestros diagramas de casos de uso y los
diagramas de secuencia pudimos determinar los distintos tipos de tablas:
Tbca Tablas del Control de Administración
Tbpv Tablas del Portal de Venta
Tbpp Tablas del Portal de Pagos
2.7.2 Simulación de Pagos
Gráfico No. 2.16 Diagrama de Clases
Simulador de Pagos
79
Descripción del diagrama de clase – Simulación de Pagos
Manejaremos un simulador de pagos, que controlara la valides del
numero de la tarjeta de crédito a través del Algoritmo ISO 2894, adicional
a esto validaremos la fecha de vencimiento y la clave de seguridad.
Para nuestro proyecto la clave de seguridad deberá coincidir con los tres
últimos dígitos de la tarjeta.
El Simulador de Pagos solo maneja dos tablas:
Tbpp Tablas de Portal de Pagos
1 Datos financieros
2 Movimientos Financieros.
CAPITULO 3
DISEÑO
3.1 Diseño de la Interfaz
Luego de dar clic en www.aquidescarga.com se
cargara nuestro Portal, el cual ofrecerá un
lugar seguro, serio y agradable para personas
de todas las edades y tendencias."
81
3.1.1 Pagina Principal del portal
Gráfico No.3.17 Página Principal
82
Esta es la plantilla principal de nuestro sitio en la cual se puede apreciar
los distintos servicios que aquí se ofrecen como:
Una barra menú que le permitirá desplazarse a la opción que busca, a
sus laterales tendrá secciones como:
1 TOP
2 Últimos Publicados
3 Categorías,
4 Búsquedas
5 Iniciar sesión.
En el centro de la plantilla encontraremos las ofertas del mes, el link
para visualizar todas las categorías,
y las seis categorías mas
descargadas.
Y en la parte inferior de la página encontraremos los link que rigen el
portal.
83
3.1.2 Registro de Usuario
Gráfico No.3.18 Registro de Usuario
84
Esta sección permite el registro de nuevos usuarios al portal, quienes
deberán ingresar datos personales como: nombre, apellido, contraseña,
e-mail, idioma, país, ciudad, teléfono; cabe destacar que la cuenta de email debe de existir puesto que mediante este medio se van a realizar
diferentes notificaciones del portal hacia el usuario. Con la cuenta activa
se podrá realizar publicaciones y descargas del contenido.
85
3.1.4 Mi cuenta
Gráfico No.3.19 Mi Cuenta
86
Esta sección del portal es la que permite al usuario visualizar el contenido
que ha publicado, el número de descargas pendientes, ordenes
pendientes, las ganancias obtenidas, etc.
87
3.1.5 Orden Suscripción.
Gráfico No. 3. 20 Orden Suscripción
88
Esta sección se encarga de mostrarle al usuario una tabla con las
diferentes suscripciones para que el elija la que mejor le convenga y de
esta manera tenga activada una suscripción para poder publicar.
89
Ingreso de Datos Financieros
Gráfico No. 3.21 Ingreso de Datos Financieros
90
Luego de haber aceptados que tarifa suscripción prefiere, se procederá a
ingresar los datos para efectuar el pago, estos datos serán enviados al
simulador de pagos quien nos enviará una autorización para permitir
publicar.
91
3.1.6 Publicación
Gráfico No. 3.22 Publicación
92
Uno de los servicios principales del portal es la publicación de contenido
aquí el usuario podrá subir un contenido de tipo PDF, junto con su titulo,
valor y descripción breve.
Mientras que el contenido resumen será un documento opcional para
subir, este documento contendrá un pequeño resumen del contenido
principal el cual podrá ser visualizado de forma libre por quien desea
comprar dicho contenido.
Todo contenido que pesare menos de 2MB será publicado de inmediato
pero de igual manera será evaluado por el administrador para evitar
violación a los términos y condiciones del portal.
Y todos los archivos que estén entre mayores de 2MB y menores de
4MB serán guardados con estado pendiente hasta que el Administrador
los revise y autorice su publicación.
93
3.1.7 Descargas
Gráfico No. 3.23 Ítems a Descargar
94
Esta sección del portal es la que permite realizar la descarga de
contenidos a
usuarios registrados.
Para poder descargar contenido
deberá ir agregando al carro de compra el contenido que desea
descargar, al final se presentara el detalle del carro de compra para su
respetiva verificación o aceptación.
95
Ingreso de Datos Financieros
Gráfico No. 3.24 Ingreso de Datos Financieros
96
Luego de haber aceptados los ítems del carro de compra, se procederá a
ingresar los datos para efectuar el pago, estos datos serán enviados al
simulador de pagos
permitir la descarga.
quien nos enviara una autorización para poder
97
3.1.8 TOP
Gráfico No. 3.25 TOP
98
Esta sección muestra los contenidos que han tenido mayor número de
descarga a la fecha actual este TOP puede aumenta o disminuir su
presentación dependiente la opción que determine el Administrador del
portal
99
3.1.9 Categoría
Gráfico No. 3.26 Categorías
100
Esta sección muestra todas las categorías existentes en el portal, aquí el
usuario escoge cual desea ver y da clic para que pueda luego visualizar
solo los contenidos de esa categoría.
3.1.10 Búsqueda
Esta sección permitirá al usuario escribir una referencia de lo que busca,
esta referencia será comparada con el resumen breve y el título del
contenido, si existe alguna coincidencia será mostrada dicho contenido al
usuario.
101
3.2 Mapa del sitio Aquidescarga
PAGINA
PRINCIPAL
PUBLICAR
SESION O
CUENTA
DESCAR
GAR
TOP
CATEGO
RIAS
ULTIMOS
PUBLICADOS
PRINCIPAL
QUIENES
SOMOS
SELECCIONA
R CATEGORIA
MOSTRAR
ESTADOS:
CARGAR
PAGOS
DESCARGAR
SELECCIO
NAR
CONTENI
DO
TOP DE LOS
CONTENIDOS
MÁS
VENDIDOS
MOSTRAR
CATEGO
RIAS
EXISTEN
TES
MOSTRAR
CONTENIDO
DE LAS
ÚLTIMAS
PUBLICACION
ES
INICIAR
SESION
ACERCA
DE
NOSOTROS
FORMULARIO
AÑADIR
CONTENIDOS
ACTUALIZA
CION DATOS
PERSONALES
VERIFICAR
DATOS
FINACIE
ROS
VER MAS
INFORMA
CIÓN DE UN
CONTENIDO
VER MÁS
INFORMA
CIÓN DE
UN
CONTENID
O
VER MAS
INFORMA
CIÓN DE UN
CONTENIDO
CATEGO
RIAS
AVISO
LEGAL
MODIFICAR
CLAVE
EJECUCION
DE PAGO
TOP
POLITICAS
DE PRIVASI
DAD
REGISTRO
MODIFICAR
ENTIDAD
BUSQUEDA
MODIFICAR
ARCHIVO
FORMULA
RIO DE
COMENTA
RIOS
Gráfico No. 3.27 Mapa de Aquidescarga
102
3.3 Mapa de Navegación de Aquidescarga
Gráfico No. 3.28 Mapa de Navegación Aquidescarga
103
3.4 Consola Administrativa
Con esta consola administrativa podremos tener control de nuestro portal tanto
en el contenido como en las estadísticas que generen, que serán mostrados en
reportes. Adicionalmente podrá registrar los pagos realizados.
3.4 .1 Cuenta
Gráfico No. 3.29 Iniciar Sesión del Administrador
104
Esta opción permitirá al administrador ingresar su usuario y password
para
autenticarse;
así
darle
las
opciones
necesarias
administración del portal.
3.4 .2 Mantenimiento de Contenido
Gráfico No. 3.30 Control de Contenidos
para
la
105
El control de contenido va a permitir al administrador tener la facultad de
aprobar o denegar el contenido que va a ser publicado en el portal,
siempre que cumpla con el acuerdo del sitio.
3.4 .3 Mantenimientos
Gráfico No. 3.31 Mantenimientos de Idioma
106
Se
efectuaran
mantenimientos a
las
tablas
autorizadas por la
organización, solo podrán ser puestas en estado inactivo cuando no estén
siendo usadas por ningún registro en la base.
3.4 .4 Mapa del Sitio
PAGINA
PRINCIPAL
LOGONEAR
CPNTROL DE
CONTENIDOS
CONTROL POR
CATEGORIA
CONTENIDOS
PUBLICADOS
REPORTE
DE
DESCARGA
RS POR
SUSCRIPTO
R
PAGOS
MANTENI
MIENTOS
MANTENI
MIENTO
PAIS
MANTENI
MIENTO
TARJETA
MANTENI
MIENTO
PAR
VISUALIZA
CION
MANTENI
MIENTO
ENTIDAD
FINANCIER
A
MANTENI
MIENTO
CATEGORIA
CONTENIDOS
PENDIENTES
MANTENI
MIENTO
IDIOMA
MANTENI
MIENTO
MOTIVO
RECHAZO
Gráfico No. 3.32 Mapa del Sitio Administrador
MANTENI
MIENTO
DOCUMENT
O
107
3.4 .5 Navegación de Administración
MAPA DE NAVEGACION
Gráfico No. 3.33 Mapa de Navegación del Administrador
CAPITULO 4
CODIFICACION
4.1 Introducción
En esta etapa se mostrara la manera como
se
debería
configura
un
servidor
Web,
adecuada a las necesidades de nuestro portal,
el cual incluirá instalaciones, configuración, y
posteriormente los estándares utilizados tanto
en el código fuente como en la base de datos.
109
4.2 Definición de Estándares
Un sitio basado en estándares es compatible con todos los navegadores
actuales, y lo será con versiones futuras.
Un sitio basado en estándares es más fácil de mantener y actualizar, el
código es más simple, de esta forma se elimina la dependencia de un solo
desarrollador.
Para lo cual Aquidescarga
maneja los siguientes estándares en su
desarrollo:
4.3 Base de Datos
Creación de la Base de Datos.
La Base de Datos esta creada en MySql Server Versión 5.0.27 basada en el
Modelo Entidad Relación (DER) y conformada por tres grupos de tablas.
4.3.1 Tablas
Están tablas se definen de las siguiente manera
tbca
SIGLAS
DEFINICION
tb
Tabla
c
control
a
administracion
Tabla No. 4.1 Definición de tabla TBCA
110
Las tbca pertenecen al grupo de tablas que tienen que ver con la
administración de nuestro sitio Web, las misma que administran dos
aplicaciones, una para los usuario de portal y otra para el
administrador de contenidos.
Las tbca solo podrán ser modificadas con relación a su ubicación por
parte del programador al momento del desarrollo, mas no tienen
opción de mantenimientos.
tbpv
SIGLAS
DEFINICION
tb
Tabla
p
portal
v
venta
Tabla No. 4.2 Definición de tabla TBPV
Las tbpv son todas las tablas que tiene que ver con la funcionabilidad
del giro del negocio.
Aquí existirán tablas que para poder realizar pruebas en el proyecto
deben ser llenadas por los programadores como son: año, mes,
idioma, país, entidad, categorías, motivo _ rechazo, tarifa etc.
El resto de tablas que tiene esta misma nomenclatura serán llenas al
momento que se realicen los receptivos procesos.
111
tbca
SIGLAS
DEFINICION
tb
Tabla
p
portal
p
pago
Tabla No. 4. 3 Definición de tabla TBPP
Las tbpp corresponden al simulador de pagos que para efectos de
nuestro proyecto solo serán dos tablas.
La tbpp_datos_financieros
se encargara de captura
los datos
financieros del usuario y así mismo realizar las validaciones
correspondientes a nuestros alcances.
Luego
de
la
validación
los
datos
serán
guardados
en
la
tbpp_mov_financiero quien simular un número de autorización que
será enviado al portal para poder concluir la transacción financiera.
Y de esta manera puedan realizar la compra.
La nomenclatura seguida de tbpv_xxxxx corresponde a la acción que
se va a ejecutar en nuestro portal.
Ejemplo:
tbpv_tarifa_suscritor
112
tarifa _ suscriptor: esta tabla registrara datos al momento que un
usuario elija que suscripción desea para poder publicar contenidos en
el portal.
4.3.2 Campos
De la misma manera que tenemos tres grupos de tablas, también
tenemos tres grupos de campos.
Para las tbca todo campo empezara con la letra c seguido de dos
letras que si se hace referencia a una solo palabra entonces son las
dos primeras letras de la palabra, si se hace referencia a dos palabras
entonces las dos letras estarán formadas por la primera letra de cada
palabra.
Ejemplo:
A)
Gráfico No. 4.34 Definición de campo TBCA
La tabla tbca_ubic_opcion esta compuesta por dos palabras después
de la palabra estándar tbca.
113
Entonces para
mantener un estándar determinamos que las tres
letras deben estar formada por:
c
corresponde a las tablas de Control de Administración
u
corresponde a la primera letra de la palabra ubic
o
corresponde a la primera letra de la palabra opción
_
corresponde a la separación
xxxxx
corresponde a campo que se hará referencia Ej.:
(código)
B)
Gráfico No. 4.35 Definición de campo TBCA
La tabla tbca_aplicacion esta compuesta por una palabra después de
la palabra estándar tbca.
Entonces para
mantener un estándar determinamos que las tres
letras deben estar formada por:
c
corresponde a las tablas de Control de Administración
a
corresponde a la primera letra de la palabra aplicación
p
corresponde a la segunda letra de la palabra aplicación
_
corresponde a la separación
114
xxxxx
corresponde a campo que se hará referencia Ej.:
(código)
Para las tbpv todo campo empezara con la letra w seguido de dos
letras que si se hace referencia a una solo palabra entonces son las
dos primeras letras de la palabra, si se hace referencia a dos palabras
entonces las dos letras estarán formadas por la primera letra de cada
palabra.
Ejemplo:
A)
Gráfico No. 4.36 Definición de campo TBPV
La tabla tbpv_detalle_descarga esta compuesta por dos palabras
después de la palabra estándar tbpv.
Entonces para
mantener un estándar determinamos que las tres
letras deben estar formada por:
w
corresponde a las tablas de Portal de Venta
d
corresponde a la primera letra de la palabra detalle
d
corresponde a la primera letra de la palabra descarga
115
_
corresponde a la separación
xxxxx
corresponde a campo que se hará referencia Ej.:
(código)
B)
Gráfico No. 4.37 Definición de campo TBPV
La tabla tbpv_descarga esta compuesta por una palabra después de la
palabra estándar tbca.
Entonces para
mantener un estándar determinamos que las tres
letras deben estar formada por:
w
corresponde a las tablas de Portal de Venta
d
corresponde a la primera letra de la palabra descarga
e
corresponde a la segunda letra de la palabra descarga
_
corresponde a la separación
xxxxx
corresponde a campo que se hará referencia Ej.:
(código)
Para las tbpp todo campo empezara con la letra p seguido de dos
letras que si se hace referencia a una solo palabra entonces son las
116
dos primeras letras de la palabra, si se hace referencia a dos palabras
entonces las dos letras estarán formadas por la primera letra de cada
palabra.
Ejemplo:
A)
Gráfico No. 4.38 Definición de campo TBPP
La tabla tbpp_datos_financiero esta compuesta por dos palabras
después de la palabra estándar tbpv.
Entonces para
mantener un estándar determinamos que las tres
letras deben estar formada por:
p
corresponde a las tablas de Portal de Venta
d
corresponde a la primera letra de la palabra datos
f
corresponde a la primera letra de la palabra financiero
_
corresponde a la separación
xxxxx
corresponde
(código)
a campo que se hará referencia Ej.:
117
4.3.3 Tipos
Los tipos de datos usados en las tablas están determinados de
acuerdo a las necesidades de cada una.
4.4 Variables
Estas clases son instanciadas en las páginas php con los siguientes
estándares:
Si vamos a instancia a la clase cls_xxxx la variable que recibe esta instancia
se debe de escribir de la siguiente manera: $myxxxx
Si vamos a instancia a la clase cls_tranxxxx la variable que recibe esta
instancia se debe de escribir de la siguiente manera:$mytranxxxx.
Si vamos a instancia a la clase cls_sqlxxxx la variable que recibe esta
instancia se debe de escribir de la siguiente manera: $mysqlxxxx
De esta manera podemos llevar un control de los variables instanciadas tanto
en las páginas php como es las respectivas clases.
Para asignar las url usamos la variable $url en todo nuestro proyecto.
Ejemplo:
$url= "<a href=".config_live_site."/orden.php>Realizar_Compra</a>";
Para desplayar una imagen usamos la variable $imagen en todo el proyecto
Ejemplo:
$imagen = "<img src='img/cart.png' width='15' height='15' border='0'>";
118
Además usamos las variables $array y $ok para crear un objete de tipo array
y un bandera de tipo entero que nos permiten hacer consulta y luego
podemos preguntar por estar variables.
En el caso de la variable $ok si es 1 o es 2
En el caso de la variable $array podemos retornar un arreglo y podemos
presentarlo con la misma variable.
Ejemplo:
$mytranentidad->consulta_entidad($this->array,$this->ok);
Para mostrar los cuadros usamos variable $mybox que se encarga de
agregar todos los campos a presentar en una pantalla.
Si necesitamos usar variables adiciones las colocamos al inicio de casa clase
php y la usamos de forma independiente y se las define: var_xxxxxx, pero
esto es muy poco.
Para mensaje cortos
que no son invocados con frecuencia se declaran
antes de ser utilizados y se referirá a una variable: $mensajex.
4.5 Carpetas
Para una mejor organización de los archivos tenemos dentro del
Aquidescarga un grupo de carpetas que realizan funciones especificas que a
continuación detallaremos lo que contiene cada una de estas carpetas
119
Img.- Contiene todas las imágenes de nuestro portal principalmente las
imágenes que corresponde a cada categoría, además aloja a todos los
pequeños iconos que usamos para los botones y las url.
Jscript.- Contiene todo el código java que nos
permite
hacer las
validaciones requeridas en nuestro portal.
Las mantenemos separas de las demás porque estas se ejecutan en el
cliente.
Tmp.- Contiene subcarpetas por categorías creadas en el portal y además
contienes dentro de estas subcarpetas otras dos subcarpetas mas donde se
guarda el archivo principal y el archivo resumen
aquidescarga\tmp\Redes\archivo
Archivo Principal
aquidescarga\tmp\Redes\resumen
Archivo Resumen (opcional)
Lib.- Contiene la carpeta Clases y las paginas php más importantes de
nuestro proyecto mas adelante hablaremos de cada una de estas páginas.
Clases
Nuestro portal Web esta orientado a objetos es por tal razón que manejamos
una carpeta donde se encuentran todas nuestras clases y cada clase esta
compuesta de tres archivos.
1. Las cls_xxx
corresponden a la creación de los objetos con sus
respectivos tipos de datos.
2. Las cls_transxxx corresponden a las transacciones que se ejecutan en
nuestro portal.
120
3. Las cls_sqlxxx
corresponden a la ejecución de sentencias SQL que
requiere nuestro portal.
Ejemplo:
cls_categoria
cls_transcategoria
cls_sqlcategoria
4.6 Paginas principales
4.6.1 PantillaHtml.Class.
Corresponde a la Plantilla principal de nuestro proyecto esta
compuesto por un cuerpo Html que llama a las siguientes funciones:
Gráfico No. 4.39 Plantilla del Portal
BarraMenu.- Esta función presenta el menú de opciones con que
cuenta el portal, para una mejor navegabilidad de los usuarios.
Gráfico No. 4. 40 Barra Menú
121
SeccionSuperiorMostrarHtml: Esta función se encarga de mostrar el
Inicio de Sección para que de una manera el usuario tenga o un
acceso más rápido a su cuenta.
SeccionIzquierdaMostrarHtml: Esta función en cambio se encarga de
mostrar de forma separada los vínculos a:
1. Los TOP contenidos mas vendidos en nuestro portal
2. Los Últimos Publicados para que así conozcan de lo nuevo que
contiene el portal.
3. Una búsqueda a los títulos y a los resúmenes breves de
los
contenidos subidos en nuestro portal independientemente de la
categoría que pertenezca.
4. Mostrara link a las categorías que tengan mas contenidos subidos,
de esta manera el usuario sabrá que categoría es la mas visitas.
SeccionCentroMostrarHtml.- Esta función es la importante de nuestra
aplicación por que aquí
se ejecutaran todas las peticiones (subir
archivos y descarga archivos), transacciones, consultas, comentarios,
mantenimientos y demás funciónabilidad de nuestro proyecto.
Es decir aquí es donde se reflejara todo lo que hace nuestra
aplicación.
SeccionInferiorMostrarHtml.- Esta función se encarga de presenta los
link acerca de nosotros, como de las políticas de privacidad y los
acuerdos de portal.
122
Estas páginas deberán ser leídas detenidamente por los navegantes
de Internet, por que toda infracción que se comenta no será
responsabilidad de nuestra organización.
Por que al esta en un ambiente Web nuestro negocio se vuelve un
actividad de buena fe entre los usuarios que publican y nosotros.
4.6.2 PantillaAdminHtml
Corresponde a la Plantilla del Administrador y esta compuesta las
siguientes funciones:
BarraMenu.- Esta función presenta el menú de opciones con que
cuenta el Administrado de nuestro proyecto.
Gráfico No. 4.41 Barra Menú Administrador
SeccionSuperiorMostrarHtml: Esta función se encarga de mostrar el
link de Inicio de Sección para el Administrado.
SeccionIzquierdaMostrarHtml: Esta función en cambio se encarga de
mostrar de forma separada los vínculos a:
1. Mantenimientos de las tablas que pueden modificar datos e
inactivar registros.
123
2. Reportes de las pagos y reportes de las cuentas de los
suscriptores.
SeccionSuperiorCentroMostrarHtml:
Esta
función
permitirá
dependiendo de la petición poder hacer búsquedas de algo mas
especifico como crea nuevos registros.
SeccionCentroMostrarHtml.- Esta función se encargara de presenta
toda petición hecha en los link de SeccionIzquierdoMostrarHtml.
4.6.3 BarraMenu.Class
La clase barra menú se encarga de consultar si el parámetro que
recibe en la variable opción es para presentar el Portal Web o el
Portal del Administrador.
4.6.4 CuadroHtml
CuadroHtml ('Aquidescarga','100%',"ZG",0,0, "",0,1,1);
CuadroHtml($titulo="",$ancho=0,$estilo="",$border=0,$bicolor=0,
$pie="",$prepie=0,$preSub=0,$ocultar=0)
4.6.5 Funciones
Esta función se encarga de crea la sesión para el carrito de compra.
124
4.6.6 Lib Inc
Esta pagina php incluirá todas las clases de nuestra aplicación,
convirtiéndose de esta manera en una librería.
Para que de esta manera evites llamar de forma independiente en
cada clase:
Include ("./lib/lib.inc.php");
4.6.7 VinculoUrl.Class
Es una clase que permite la creación de links que van hacer
displayado en la página que sea invocada, recibiendo los respectivos
parámentos como son:
$etiqueta.- Es el nombre que se va a visualizar en el vinculo
$pagina.- Es la dirección donde va a irse una ves que sea activado el
link.
$cssClass.- Definirá el estilo que va a tener el vinculo
$extra.- Será usado como un parámetro extra.
4.6.8 Configuraciones
Aquí de definen las constantes que serán usadas en toda nuestra
aplicación, para que de esta se disminuya el uso de variables locales
Ejemplo: define ('config_moneda', 'Dolar');
125
4.7 Módulos
4.7.1 Subir Archivos
El modulo de subir archivos tendrá acceso una vez que el usuario
haya ordenado una suscripción.
Este modulo
presentara un
formulario donde podrá
elegir que
categoría desea subir además deberá ingresar el titulo que quiere que
se presente en el portal, el valor asignado por su venta, un breve
resumen del contenido a publicar y añadirá el archivo principal y el
archivo resumen este ultimo puede ser de manera opcional.
Si cumple con las validaciones respectivas el archivo será subido al
portal sin ningún problema.
4.7.2 Carrito de Compra
Este modulo esta validado primero de que sea un usuario registrado el
que quiera comprar es por tal razón que si no esta logoniado y da clic
en el botón de carro de comprar esta acción lo enviara a logoniarse
para poder comprar.
El Carrito de compra añadirá todo artículo que el usuario desee
comprar y le permitirá ver un resumen de todo lo que ha incluido.
Teniendo la opción de eliminar algún articulo que ya no desee.
126
Una vez que se haya decido por la compra el portal lo enviara al
simulador de pagos quien solicitara todos los datos necesarios para
poder efectuar la transacción.
4.7.3 Búsquedas
El modulo de búsqueda esta programado para que las consulta sean
hechas a la tabla tbpv_producto_publicado de acuerdo a la opción que
escoja el usuario, para efectos de presenta tenemos tres alternativas
de búsqueda:
1. Busca todos los contenidos existentes
2. Busca tanto por el titulo o por el resumen breve en todos los
contenidos existentes
3. Busca tanto por el titulo o por el resumen breve en una categoría
determinada.
4.7.4 Descargas
Luego de realizar las respectivas búsquedas de información el usuario
deberá dar clic en el botón AÑADIR AL CARRO de esta manera todo
contenido que selección será sumado en la Canasta.
Una que halla decidido su comprar deberá realizar la respectiva
transacción financiera por medio de una tarjeta de crédito validad.
127
Esperaremos la autorización del banco para que el usuario pueda
realizar la respectiva descargar.
Todo contenido podrá ser descargado tres veces o en un máximo de
cinco días.
Damos esta opción para poder garantizar la descarga completa del
archivo es vista de que no conocemos las circunstancias en donde se
encuentre bajando el archivo.
128
CAPITULO 5
Pruebas
De
acuerdo
a
las
presentaciones
frecuentes de los avances del proyecto al
profesor para su evaluación.
Fue necesario realizarle pruebas para
saber si funciona de acuerdo con las
especificaciones y en la forma en que los
usuarios esperan que lo haga.
129
Estas pruebas consistieron en probar la funcionabilidad del sistema como si
estuviera realizando sus operaciones cotidianas para lo cual fue desarrollado se
ingresaron conjunto de datos (entradas) para su procesamiento y después se
examinan sus salidas o resultados.
En varias ocasiones dejamos que personas ajenas utilicen el sistema para
detectar errores no encontrados en el proceso de desarrollo.
Adicionalmente a las pruebas también tomamos en cuenta un grupo de
métricas:
Y determinamos que las métricas no son tan fáciles para los sitios de contenido
que miden su éxito en ventas, en relación a los sitios que ofrecen contenidos
gratuitos (visitas a sitio más de una vez, durante un período de tiempo
específico) para satisfacer sus necesidades.
5.1 Métricas que pudimos probar con los usuarios
5.1.1 Satisfacción del Cliente
En el transcurso de la programación de nuestra aplicación nos dimos
cuenta que teníamos un procedimiento repetido (registro de la tarjeta de
crédito) lo cual podía molestar al usuario o a la ves tendía a confundirlo
por tal razón luego de hacer pruebas con personas ajenas al proyecto en
la etapa de desarrollo, nos guiamos con otras paginas de Internet para el
130
registro de tarjeta de crédito y de esta manera pudimos darle un mejor
proceso a esta operación.
Ahora el usuario solo deberá ingresar los datos de la tarjeta que crédito
una vez que se allá decido por la compra.
Otra prueba analizada fue al momento de la segunda sustentación donde
el jurado indico que para una mejor atención al usuario deberíamos
direccionarlo al login para poder realizar una compra y no espera que
este dando clic en todo el portal sin saber en que momento podía
concluir su compra.
5.1.2 Desempeño del sitio
Con respecto a la navegabilidad del sitio planteamos varias opciones para
encontrar de una manera mas rápida lo que se buscar y así evitar que
los usuarios se impacientes.
Es por tal razón que ahora tenemos tres opciones de búsquedas, al inicio
solo teníamos planteada una opción (buscar por titulo), pero en vista de
que esta opción estaba limitando al usuarios, analizamos que campo
podía ayudarnos para una mejor búsqueda y resolvimos que también la
búsqueda sea por el resumen breve ya que es ahí donde se debe poner
una esencia del documento para que este pueda ser vendido.
131
5.1.3 Tiempo promedio de permanencia en el sistema
El tiempo estimado para que un usuario publique un contenido es nuestro
portal es muy corto por que casi todas las opciones son de escoger, él
solo debe se hacer clic y esta lista su orden de suscripción.
Donde si tendrá que demorarse un poco será al momento de subir un
contenido ¿porque? Es aquí donde el debe de poner lo mejor de
contenido en un breve resumen o en su defecto adjuntar también el
archivo resumen por que será de estas dos manera que el podrá darse a
canecer para así poder vender su contenido, ya que si no describe lo que
esta subiendo y mucho menos adjunta el archivo resumen, entonces no
podrá esperar vender algo que no se conoces.
De igual manera para quien quiera descargarse un contenido primero
deberá tomarse su tiempo leyendo el resumen breve y revisando los
archivos resumen para estar seguro de lo que busca.
“Es difícil hacer pruebas al sistema y no encontrar ningún error, ya que los
errores nos ayudan a mejorar nuestros sistemas, si no tuviéramos errores
realmente no sabríamos si todo esta bien o de lo contrario que todo este mal”
CAPÍTULO 6
Recomendaciones y
Conclusiones del Proyecto
6.1.- Recomendaciones
Debido a la naturaleza del proyecto y
considerando las características del mismo,
debemos tomar en cuenta tanto el manual de
usuario, y para el manual técnico suministrado
en este proyecto.
133
6.1.1 Interfaz
Nuestro portal aquidescarga.com puede ser visitado mediante varios
navegadores tales como Internet Explorer, Mozilla, Netscape Navigator,
Safari, y a través de las pruebas determinamos y recomendamos el uso
de Internet Explorer y Mozilla, ya que en ellos se ha podido apreciar los
mejores resultados, en la funcionabilidad del portal y la satisfacción del
usuario.
También se recomienda que las computadoras utilizadas para acceder a
nuestro portal tengan habilitadas las dll o aplicaciones necesarias para la
visualización del producto final (Documento en formato PDF).
La recomendación referente a la cuenta de correo que el usuario utilizará
para el registro en nuestro portal, es que dicha cuenta sea
preferentemente de Gmail o Yahoo, puesto que en las pruebas
preliminares de envío de correo, se verifico que otras cuentas de correo
tarda por lo menos 24 horas para que éste llega a la bandeja de entrada
del usuario.
134
6.1.2.- Hardware
Entre las recomendaciones que hacemos en cuanto a hardware para
nuestro proyecto se encuentran:
Que para el alojamiento del portal se considere un Hosting que nos
proporcione una buena capacidad de almacenamiento y procesamiento
ya que esto es un punto vital para un buen funcionamiento, no es
recomendable que se instale un servidor Web para la puesta en marcha
del proyecto dado que por costos en hardware y los servicios referentes
al Internet no seria rentable, ni seguro.
Para efectos académicos nuestro portal esta ubicado en un hosting que
ofrece 10000 MB de capacidad de almacenamiento en disco, siendo
esta una buena capacidad tomando en cuenta que inicialmente es para
efectos académicos, pero dicha capacidad debería ser mayor si hablamos
de una implementación real y comercial.
6.1.3.- Software
Para la parte de software, la principal recomendación es contar con el
programa adecuado (Adobe Reader) para poder visualizar los archivos en
formato PDF que presenta nuestro portal.
135
En lo referente a la descarga de archivos se recomienda el uso de
programas externos para acelerar el proceso de descarga, mucho más si
se trata de archivos de gran tamaño.
En cuanto a factor financiero, una buena opción es la de realizar los
cobros mediante alguna empresa que tenga experiencia en el medio,
siendo una de éstas PayPal o en su defecto alguna otra entidad que
brinde el servicio.
6.1.4.- Seguridades
En lo que respecta a las seguridades del proyecto, se recomienda la
implementación de un certificado digital para proporciónale al usuario la
confianza necesaria al momento de realizar las respectivas transacciones
dentro de nuestro portal.
Otro punto importante para garantizar la transparencia y seriedad del
portal es la contratación de una o varias entidades auditoras de sistemas
externas, que pueden verificar y confirmar que las transacciones
realizadas en el portal sean las que se reflejen en el Estado de Cuenta
de cada uno de nuestros Usuarios.
136
6.1.5.- Respaldos del Portal
Se sugiere que se realice el respectivo respaldo tanto de la base da datos
como del portal, ya que este puede irse modificando y mejorando con el
tiempo.
Se recomienda que para la contratación del servicio de hosting, éste
cuente con ambas opciones en su panel de control (cpanel), y que el
administrador responsable del portal realice el respaldo periódicamente y
que sean distribuidas por lo menos en dos computadores y que estos
cuenten con sus respectivas seguridades.
6.1.6.- Conclusiones
El desarrollo del proyecto aquidescarga.com está basado en una lógica
de negocio que permite a las personas utilizar nuestro portal como un
medio de Venta de Información, donde se pueda publicar contenidos que
otras personas necesiten descargar y así los primeros puedan obtener
beneficios económicos.
Por esta razón hemos utilizado una arquitectura cliente servidor que nos
permite resguardar la integridad de la información, debido al alto nivel de
137
transacciones que se realizan en la aplicación; junto con el certificado y el
algoritmo MD5 brindamos seguridad y confianza a nuestros usuarios.
Complementando esta seguridad, recomendamos la contratación de una
empresa auditora de sistemas externa que certifique la credibilidad sitio.
Por ser un proyecto tipo académico nos vimos en la necesidad de utilizar
herramientas gratis como son el lenguaje PHP5, MYSQL5, APACHE 2.0,
y de esta manera nos ahorramos dinero en cuanto a licencias y se nos
facilito la subida de código a los diferentes hosting puestos que estos
funciona con herramientas gratis.
Tomando en cuenta que el código php se ejecuta en el servidor, tuvimos
que utilizar validaciones basadas en Jscript
puestos que estas si se
ejecutan en las maquinas clientes, ahorrando así tiempo en los procesos.
Dado que nuestra aplicación WEB maneja archivos de tamaño
considerable,
decidimos
contratar
los
servicios
de
un
hosting
especializado que brinde una buena capacidad en disco para el
almacenamiento de información, por que los servidores propios en el
138
Ecuador actualmente son muy caros en su mantenimiento y los servicios
de Internet son poco confiables.
139
GLOSARIO DE TERMINOS
Apache
Software libre de codigo abierto para multiplataformas
Arquitectura
Conjunto de patrones y abstracciones coherentes
Base de Datos
Guarda los datos del sistema
Backup
Respaldo de información del sistema
Campos
Atributo de una tabla
Codigo Fuentes
Lenguaje mediante el cual fue programado el sistema.
Conexion
Comunicación entre varias maquinas.
Codigo Malicioso
Sentencias de programación, que tiene un fin malicioso
Cookies
Fragmento de información que se almacena en el disco duro del
visitante de una página web a través de su navegador
Descarga
Copiar a través de una red (Internet) un elemento que se
encuentra ubicado físicamente en otro ordenador
Modelo de red que describe la distribución de los datos
almacenados en un sistema de forma abstracta
Se trata de una medida de seguridad que es usada para
almacenar o transferir información delicada
Reglas predefinidas para realizar la implementacion de un
proyecto.
Parte física de una PC.
Diagrama
Encriptacion
Estandares
Hardware
140
GLOSARIO DE TERMINOS
Interfaz
Medio grafico de comunicación entre la PC y el usuario.
Jscript
Lenguaje de programación interpretado, o sea, no requiere
compilación.
Multiplataforma
Se puede trabajar sobre diferentes sistemas operativos sin que
afecte su desempeño
Password
Contraseña de acceso a la aplicacion.
Plantilla
Página pre-desarrollada que es empleada para crear nuevas
páginas con el mismo diseño
Políticas de
Seguridad
Conjunto de normas y reglas para mantener seguro un sistema.
Publicacion
Es el ultimo paso de la elaboracion de un proyecto Web
Simulador
Los simuladores reproducen sensaciones que en realidad
no están sucediendo.
Software
Programas en ejecución.
Servidor.
Equipo de computo, el cual esta recibiendo constante
peticiones de clientes para proveerle de algún servicio
141
ANEXOS
142
Certificado Emitido por Equifax Secure eBusiness
Anexo No. 1 Certificado
Este es nuestro Certificado Digital que garantiza la seguridad de Aquidescarga.com
143
Cronograma de actividades del desarrollo del proyecto.
Cronograma de Actividades (Parte 1)
Portal de Venta de Informacion Personal
Nombre de Tarea
Elección del Proyecto Web
Ajustes del Enfoque del Proyecto
Identificación del Tema
Definir la problemática del tema
Buscar soluciones a la problemática
Determinación de Objetivos
Determinación de Objetivos Específicos
Determinación de Alcances
Determinación de Misión, Visión
Determinación de Arquitectura a usa
Determinación de Metodologías
Recurso de Hardware
Recurso Humano
Recurso de Software
Cronograma de Actividades
Duracion
1
Comienzo
Fin
19/04/2007 19/04/2007
4
4
4
1
2
3
1
3
2
2
2
2
1
20/04/2007
24/04/2007
28/04/2007
02/05/2007
03/05/2007
05/05/2007
08/05/2007
09/05/2007
12/05/2007
14/05/2007
16/05/2007
18/05/2007
20/05/2007
24/04/2007
28/04/2007
02/05/2007
03/05/2007
05/05/2007
08/05/2007
09/05/2007
12/05/2007
14/05/2007
16/05/2007
18/05/2007
20/05/2007
22/05/2007
3
22/05/2007
25/05/2007
4
25/05/2007
29/05/2007
4
29/05/2007
02/06/2007
4
02/06/2007
06/06/2007
3
06/06/2007
09/06/2007
3
09/06/2007
12/06/2007
4
12/06/2007
16/06/2007
3
16/06/2007
19/06/2007
Etapa de Análisis del Portal
Identificación de los Requerimientos del
Negocio
Diagramas de Casos de Uso de la información
del proyecto
Diagramas de Secuencias de la información del
proyecto
Diagramas de Estados de la información del
proyecto
Descripción de los diagrama s de casos de usos
de la información de nuestro proyecto
Diagrama de Entidad Relación de nuestro
proyecto
Diagrama de Clases de la información de
nuestro proyecto
Descripción de los diagramas de clases de la
información de nuestro proyecto
Anexo No. 2a Cronograma de Actividades
144
Cronograma de Actividades (Parte 2)
de Venta de Informacion Personal
Duracion
Nombre de Tarea
Comienzo
Portal
Fin
Etapa de Diseño del Portal
3
Segmentación de la pagina de diseño
3
Definición de la pagina principal de nuestro proyecto
2
Definición de paginas secundarias
2
Definición de pagina principal y secundaria del Administrador
2
Mapa del Sitio
3
Mapeo de Navegación
3
Definición de Colores a usar en la pagina
1
Elaboración de logotipo
1
Primera Sustentación
Instalaciones de Herramientas a usar
1
Diseño y contracción de pantallas principal
2
Diseño y construcción de pantallas secundarias
2
Diseño y construcción de la Base de Datos
2
Codificación de enlace con la Base de Datos
20
Construcción de las clases a usar
5
Codificación programática de las pantallas
29
Pruebas de conectividad
5
Pruebas evaluativas del portal
5
Segunda Sustentación
1
Análisis de observaciones
5
Codificación de pantallas
30
Modificaciones de Tablas
3
Eleccion de Imágenes
1
pruebas gratis en internet
7
7
correccion de codigos
documentacion del codigo
4
19/06/2007
22/06/2007
25/06/2007
27/06/2007
29/06/2007
01/07/2007
04/07/2007
07/07/2007
09/07/2007
22/06/2007
25/06/2007
27/06/2007
29/06/2007
01/07/2007
04/07/2007
07/07/2007
08/07/2007
09/07/2007
15/07/2007
17/07/2007
17/07/2007
19/07/2007
19/07/2007
21/07/2007
21/07/2007
10/08/2007
10/08/2007
15/08/2007
15/08/2007
13/09/2007
13/09/2007
18/09/2007
18/09/2007
23/09/2007
23/09/2007
24/09/2007
24/09/2007
25/09/2007
25/09/2007
30/09/2007
01/10/2007
30/10/2007
30/10/2007
02/11/2007
02/11/2007
03/11/200
03/11/2007
10/11/2007
10/11/2007
17/11/2007
17/11/2007
21/11/2007
Anexo No. 2b Cronograma de Actividades
145
Cronograma de Actividades (Parte 3)
Portal de Venta de Informacion Personal
Duracion
Nombre de Tarea
Comienzo
Fin
Etapa de Implementación
Compra de Hosting e Instalación de Certificado
Subida de Proyecto al Hosting
5
21/11/2007
26/11/2007
1
26/11/2007
27/11/2007
5
27/11/2007
02/12/2007
5
03/12/2007
08/12/2007
4
08/12/2007
15/12/2007
1
15/12/2007
15/12/2007
Etapa de Prueba
Monitoreo de funcionabilidad
Corrección de Errores
Nuevos Monitores
Entrega del proyecto
Anexo No. 2c Cronograma de Actividades
146
Cuadro Probabilística de Descargas y Ganancias en el Ecuador
Cuadro estadísticos de Probabilidades
de Descargas en el Ecuador
2.00
Mes
Diciembre
Enero
Febrero
Marzo
Abrir
Mayo
Junio
Julio
Agosto
Septiembre
Octubre
Noviembre
Población Ecuatoriana
13,000,000.00
13,000,000.00
13,000,000.00
13,000,000.00
13,000,000.00
13,000,000.00
13,000,000.00
13,000,000.00
13,000,000.00
13,000,000.00
13,000,000.00
13,000,000.00
Población Local
11,700,000.00
11,700,000.00
11,700,000.00
11,700,000.00
11,700,000.00
11,700,000.00
11,700,000.00
11,700,000.00
11,700,000.00
11,700,000.00
11,700,000.00
11,700,000.00
Acceso al Internet
234,000.00
234,000.00
234,000.00
234,000.00
234,000.00
234,000.00
234,000.00
234,000.00
234,000.00
234,000.00
234,000.00
234,000.00
Probabilidad de personas en el Ecuador que descarguen información 2%
Anexo No. 3a Presupuesto
Porcentaje
0.10%
0.09%
0.12%
0.13%
0.10%
0.09%
0.10%
0.09%
0.11%
0.08%
0.12%
0.10%
Descargas
234.00
210.60
280.80
304.20
234.00
210.60
234.00
210.60
257.40
187.20
280.80
234.00
Ingreso Promedio
$ 3,276.00
$ 4,212.00
$ 1,404.00
$ 6,084.00
$ 1,872.00
$ 2,106.00
$ 3,510.00
$ 1,053.00
$ 2,574.00
$ 5,616.00
$ 4,212.00
$ 4,212.00
Ganancia 20%
$
$
$
$ 1,
$
$
$
$
$
$ 1,
$
$
147
BIBLIOGRAFIA
Libros consultados:
1.- Ingeniería de Software por Pressman
Paginas Web consultadas:
1.- www.google.com
2.- www.lawebdelprogramador.com
3.- www.sourceforge.net
4.- www.webnova.com.ar
5.- www.xyberneticos.com
6.- www.php.net
7.- www.cristalab.com
8.- www.programacionweb.net
9.- www.webtaller.com
10.- www.designdisease.com
11.- www.webestilos.com
UNIVERSIDAD DE GUAYAQUIL
Facultad de Ciencias Matemáticas y Física
Carrera de Ingeniería en Sistemas
Computacionales
“PORTAL DE VENTA DE INFORMACION
PERSONAL BAJO SUSCRIPCION”
PROYECTO DE GRADO
Previo a la Obtención del Titulo de:
INGENIERO EN SISTEMAS COMPUTACIONALES
Autores:
Diana Cecilia Alava Espinoza
Freddy Walter Cevallos Tomalá
Carlos Alberto Orrala Holguín
GUAYAQUIL – ECUADOR
Año: 2007
II
AGRADECIMIENTO
Agradecemos a Dios por la salud y la fortaleza
para concluir con éxito una etapa más de
nuestras vidas, a todas las personas que han
contribuido de alguna manera la realización del
proyecto y a nuestros padres por estar siempre
guiándonos en nuestra vida.
III
DEDICATORIA
Dedicamos este trabajo a Dios por estar
siempre a nuestro lado en todo momento.
A nuestros padres y hermanos por todo el
cariño, la confianza, y el amor brindado en este
tiempo de esfuerzo y sacrificio.
IV
TRIBUNAL DE GRADUACION
Presidente del Tribunal
Primer Vocal
Segundo Vocal
Secretario
V
DECLARACIÓN EXPRESA
“La autoría de la tesis de grado corresponde exclusivamente al suscrito(s),
perteneciendo a la Universidad de Guayaquil los derechos que generen la
aplicación de la misma”.
(Reglamento de Graduación de la Carrera de Ingeniería en sistemas
Computacionales, Art. 26)
VI
INDICE GENERAL
AGRADECIMIENTO ....................................................................................... II
DEDICATORIA .............................................................................................. III
TRIBUNAL DE GRADUACION ..................................................................... IV
DECLARACIÓN EXPRESA ........................................................................... V
INDICE GENERAL ........................................................................................ VI
ÍNDICE DE GRÁFICOS .................................................................................. X
ÍNDICE DE TABLAS ..................................................................................XVII
CAPITULO I.................................................................................................XIX
1.1 Diagrama de Casos de Uso .................................................................. 20
1.1.1 REGISTRO DE USUARIO ....................................................................... 20
1.1.1.1 Descripción del Caso de Uso - Registro de Usuario .................. 21
1.1.2 ORDEN SUSCRIPCIÓN. ......................................................................... 21
1.1.1.3 Descripción del Caso de Uso - Orden Suscripción .................... 21
1.1.3 SERVICIOS DEL PORTAL ....................................................................... 23
1.1.3.1 Descripción del Caso de Uso - Servicios del Portal .................. 23
1.1.4 CONSOLA ADMINISTRATIVA .................................................................. 25
1.2 Diagramas de Estado ........................................................................... 26
1.2.1 REGISTRO USUARIO ............................................................................ 26
1.2.1.1 Descripción de Diagrama de Estado - Registro Usuario ............ 26
1.2.2 ACTIVACIÓN DE CUENTA ...................................................................... 27
1.2.2.1 Descripción de Diagrama de Estado – Activación de Cuenta .... 27
VII
1.2.3 SERVICIOS DEL PORTAL ....................................................................... 28
1.2.3.1 Descripción del Diagrama de Estado - Servicios del Portal ....... 29
1.2.4 CONSOLA ADMINISTRATIVA .................................................................. 30
1.2.5 Descripción de Diagrama de Estado - Consola Administrativa ..... 30
1.3 Diccionario de datos. ............................................................................ 31
1.3.1 TABLAS CONTROL DE APLICACIONES. ................................................... 31
1.3.2 TABLAS PORTAL DE PAGO ................................................................... 34
1.3.3 TABLAS PORTAL DE VENTA ................................................................... 36
1.4 Páginas y Clase del Proyecto .............................................................. 44
1.4.1 DB_MYSQL.CLASS .............................................................................. 44
1.4.2 BARRAMENU.CLASS ............................................................................ 46
1.4.3 CUADROHTML.CLASS. ......................................................................... 47
1.4.4 FUNCIONES.PHP.................................................................................. 50
1.4.5 VINCULOURL.CLASS. ........................................................................... 51
1.4.6 PLANTILLAHTML.CLASS.PHP ................................................................. 52
1.4.7 PLANTILLADIALOGOHTML.CLASS. PHP................................................... 68
1.4.8 CLS_SUSCRIPTOR. PHP ........................................................................ 69
1.4.9 CLS_SQLSUSCRIPTOR.PHP ................................................................... 72
1.4.10 CLS_TRANSSUSCRIPTOR .................................................................... 77
1.4.11 CLS_PRODUCTO_PUBLICADO.PHP ....................................................... 81
1.4.12 CLS_SQLPRODUCTO_PUBLICADO ........................................................ 84
1.4.13 CLS_TRANSPRODUCTO_PUBLICADO .................................................... 98
VIII
1.4.14 CLS_GESTOR .................................................................................. 103
1.4.15 CLS_SQLGESTOR ............................................................................ 105
1.4.16 CLS_TRANSGESTOR ........................................................................ 115
1.4.17 DESCARGAR.PHP ............................................................................ 117
1.4.18 DOWNLOAD.PHP ............................................................................. 118
1.4.19 ADMINCONTROLCONTENIDO.PHP ...................................................... 120
1.4.20 ADMIN_CONT_UPDATE.PHP.............................................................. 124
1.4.21 ADMINCONTENIDO_VIEW .PHP ........................................................... 128
1.4.22 ADMINVIEW .PHP .............................................................................. 129
1.4.23 CARGAR_ARCHIVO.PHP ................................................................... 130
CAPITULO 2................................................................................................. 37
2.1 Instalación del servidor Web para Linux. ......................................... 137
2.1.1 PASOS PARA LA INSTALACIÓN DE XAMPP EN LINUX. .............................. 137
2.1.2 INSTALACIÓN DE MYSQL TOOLS FOR 5.0 PARA LINUX.......................... 139
2.1.3 INSTALACIÓN DE LA BASE DE DATOS “W EB”......................................... 139
2.1.4 CREACIÓN DEL USUARIO PARA CONECTARSE A LA BASE DE DATOS DE
AQUIDESCARGA.COM .................................................................................. 141
2.1.5 INSTALACIÓN DEL PORTAL AQUIDESCARGA.COM DENTRO DE NUESTRO
SERVIDOR W EB EN LINUX. .......................................................................... 143
2.2 Instalación del servidor Web para Windows. ................................... 144
2.1.1 PASOS PARA LA INSTALACIÓN DE EASYPHP. ....................................... 144
2.1.2 USO DE EASYPHP. ........................................................................... 151
IX
2.1.3 INSTALACIÓN DE MYSQL TOOLS FOR 5.0 PARA W INDOWS. .................. 153
2.1.4 INSTALACIÓN DE LA BASE DE DATOS DE AQUIDESCARGA ...................... 157
2.1.5 CREACIÓN DEL USUARIO PARA CONECTARSE A LA BASE DE DATOS DE
AQUIDESCARGA
......................................................................................... 158
2.1.6 INSTALACIÓN DEL PORTAL W EB EN W INDOWS...................................... 158
2.1.7 OBTENCIÓN DEL DOMINIO PARA AQUIDESCARGA.COM .......................... 159
2.1.8 OBTENCIÓN DEL HOSTING PARA AQUIDESCARGA.COM .......................... 164
2.3 Funcionalidad del proyecto aquidescarga ....................................... 170
2.3.1 PAGINA DE INICIO DEL PORTAL. ........................................................... 170
2.3.2 PANTALLA DE REGISTRO DE USUARIOS. ............................................... 171
2.3.3 PANTALLA MI CUENTA........................................................................ 173
2.3.4 PANTALLA PAGO DE SUSCRIPCIÓN. ..................................................... 174
2.3.5 PANTALLA DE SIMULADOR DE PAGO.................................................... 175
2.3.6 PANTALLA DE SUBIR ARCHIVOS. ......................................................... 176
2.3.7 PANTALLA DE CONFIRMACIÓN. ........................................................... 177
2.3.8 PANTALLA PARA REALIZAR LA COMPRA. ............................................... 178
X
ÍNDICE DE GRÁFICOS
Gráfico No.1.1 Diagrama de casos de uso............................................... 20
Registro de Usuario .................................................................................... 20
Gráfico No.1.2 Diagrama de casos de uso Orden Suscripción .............. 21
Gráfico No.1.3.............................................................................................. 23
Diagrama de casos de uso Servicios del Portal....................................... 23
Gráfico No.1.4.............................................................................................. 25
Diagrama de casos de uso ......................................................................... 25
Consola Administrativa .............................................................................. 25
Gráfico No.1.5.............................................................................................. 26
Diagrama de estado Registro Usuario ...................................................... 26
Gráfico No.1.6.............................................................................................. 27
Diagrama de estado Activación de Cuenta.............................................. 27
Gráfico No.1.7.............................................................................................. 28
Diagrama de estado Servicios del Portal .................................................. 28
Gráfico No.1.8.............................................................................................. 30
Diagrama de estado Consola Administrativa ........................................... 30
Gráfico No. 1.9a. Clase DB_mysql ............................................................. 45
Gráfico No.1.10a Clase BarraMenu ........................................................... 46
Gráfico No.1.10b Clase BarraMenu ........................................................... 47
Gráfico No. 1.11a Clase Cuadrohtml ......................................................... 47
Gráfico No.1.11b Clase Cuadro html ......................................................... 48
XI
Gráfico No.1.11c Clase Cuadro html ......................................................... 49
Gráfico No.1.11d Clase CuadroHtml ........................................................ 50
Gráfico No.1.12a. funciones.php ............................................................... 51
Gráfico No.1.13a. Clase VinculoUrl.class ................................................. 51
Gráfico No.1.13b Clase VinculoUrl.class .................................................. 52
Gráfico No.1.14a. Clase PlantillaHtml.class ............................................ 54
Gráfico No.1.14b Clase PlantillaHtml.class .............................................. 55
Gráfico No.1.14c Clase PlantillaHtml.class .............................................. 56
Gráfico No.1.14d Clase PlantillaHtml.class .............................................. 57
Gráfico No.1.14e Clase PlantillaHtml.class .............................................. 58
Gráfico No.1.14f Clase PlantillaHtml.class ............................................... 59
Gráfico No.1.14g. Clase PlantillaHtml.class ............................................. 60
Gráfico No.1.14h. Clase PlantillaHtml.class ............................................. 61
Gráfico No.1.14i. Clase PlantillaHtml.class .............................................. 62
Gráfico No.1.14j. Clase PlantillaHtml.class .............................................. 63
Gráfico No.1.14k. Clase PlantillaHtml.class.............................................. 64
Gráfico No.1.14l. Clase PlantillaHtml.class .............................................. 65
Gráfico No.1.14m. Clase PlantillaHtml.class ............................................ 66
Gráfico No.1.14n. Clase PlantillaHtml.class ............................................. 67
Gráfico No.1.15a. Clase PlantillaDialogoHtml.class. ............................... 68
Gráfico No.1.16a. Clase cls_suscriptor ..................................................... 69
Gráfico No.1.16b. Clase cls_suscriptor .................................................... 70
XII
Gráfico No.1.16c. Clase cls_suscriptor ..................................................... 71
Gráfico No.1.17a. Clase cls_sqlsuscriptor................................................ 72
Gráfico No.1.17b. Clase cls_sqlsuscriptor ............................................... 73
Gráfico No.1.17c. Clase cls_sqlsuscriptor................................................ 74
Gráfico No.1.17d. Clase cls_sqlsuscriptor ............................................... 75
Gráfico No.1.17e. Clase cls_sqlsuscriptor................................................ 76
Gráfico No.1.18a. Clase cls_transsuscriptor ............................................ 77
Gráfico No.1.18b Clase cls_transsuscriptor ............................................. 78
Gráfico No.1.18c. Clase cls_transsuscriptor ............................................ 79
Gráfico No.1.18d. Clase cls_transsuscriptor ............................................ 80
Gráfico No.1.19a. Clase cls_Producto_publicado.................................... 81
Gráfico No.1.9b. Clase cls_Producto_publicado.php .............................. 82
Gráfico No.1.19c. Clase cls_Producto_publicado. ................................... 83
Gráfico No.1.20a. Clase cls_sqlProducto_publicado .............................. 84
Gráfico No.1.20b. Clase cls_sqlProducto_publicado .............................. 85
Gráfico No.1.20c. Clase cls_sqlProducto_publicado .............................. 86
Gráfico No.1.20d. Clase cls_sqlProducto_publicado .............................. 87
Gráfico No.1.20e. Clase cls_sqlProducto_publicado .............................. 88
Gráfico No.1.20f. Clase cls_sqlProducto_publicado ............................... 89
Gráfico No.1.20g. Clase cls_sqlProducto_publicado .............................. 90
Gráfico No.1.20h. Clase cls_sqlProducto_publicado .............................. 91
Gráfico No.1.20i. Clase cls_sqlProducto_publicado ............................... 92
XIII
Gráfico No.1.20j. Clase cls_sqlProducto_publicado ............................... 93
Gráfico No.1.20k. Clase cls_sqlProducto_publicado .............................. 94
Gráfico No.1.20l. Clase cls_sqlProducto_publicado ............................... 95
Gráfico No.1.20m. Clase cls_sqlProducto_publicado ............................. 96
Gráfico No.1.20n. Clase cls_sqlProducto_publicado .............................. 97
Gráfico No.1.21a. Clase cls_transProducto_publicado ........................... 98
Gráfico No.1.21b. Clase cls_transProducto_publicado ........................... 99
Gráfico No.1.21c. Clase cls_transProducto_publicado ......................... 100
Gráfico No.1.21d. Clase cls_transProducto_publicado ......................... 101
Gráfico No.1.21e. Clase cls_transProducto_publicado ......................... 102
Gráfico No.1.22a. Clase cls_gestor ......................................................... 103
Gráfico No.1.22b. Clase cls_gestor ......................................................... 104
Gráfico No.1.23a. Clase cls_sqlgestor .................................................... 105
Gráfico No.1.23b. Clase cls_sqlgestor .................................................... 106
Gráfico No.1.23c. Clase cls_sqlgestor .................................................... 107
Gráfico No.1.23d. Clase cls_sqlgestor .................................................... 108
Gráfico No.1.23e. Clase cls_sqlgestor .................................................... 109
Gráfico No.1.23f. Clase cls_sqlgestor ..................................................... 110
Gráfico No.1.23g. Clase cls_sqlgestor .................................................... 111
Gráfico No.1.23h. Clase cls_sqlgestor .................................................... 112
Gráfico No.1.23i. Clase cls_sqlgestor ..................................................... 113
Gráfico No.1.23j. Clase cls_sqlgestor ..................................................... 114
XIV
Gráfico No.1.24a. Clase cls_transgestor ................................................ 115
Gráfico No.1.24b. Clase cls_transgestor ................................................ 116
Gráfico No.1.25a. descargar.php ............................................................. 117
Gráfico No.1.25b. descargar.php ............................................................. 118
Gráfico No.1.26a. Download.php ............................................................. 118
Gráfico No.1.26b. Download.php ............................................................. 119
Gráfico No.1.27a. admincontrolcontenidos.php ................................... 120
Gráfico No.1.27b. admincontrolcontenidos.php .................................... 121
Gráfico No.1.27c. admincontrolcontenidos.php .................................... 122
Gráfico No.1.27d. admincontrolcontenidos.php .................................... 123
Gráfico No.1.28a. admin_cont_update.php ............................................ 124
Gráfico No.1.28b admin_cont_update.php ............................................. 125
Gráfico No.1.28c. admin_cont_update.php ............................................ 126
Gráfico No.1.28d. admin_cont_update.php ............................................ 127
Gráfico No.1.29a. admincontenido_view.php ......................................... 128
Gráfico No.1.30ª. adminview.php ............................................................ 129
Gráfico No.1.31a. cargar_archivo.php ................................................... 130
Gráfico No.1.31b. cargar_archivo.php ................................................... 131
Gráfico No.1.31c. cargar_archivo.php ................................................... 132
Gráfico No.1.31d. cargar_archivo.php ................................................... 133
Gráfico No.1.31e. cargar_archivo.php ................................................... 134
Gráfico No.1.31f. cargar_archivo.php .................................................... 135
XV
Gráfico No.2.1. Instalación de Xampp ..................................................... 138
Gráfico No.2.2. Interfaz de PhpMyAdmin. ............................................... 140
Gráfico No.2.3. Importación de la base Web. ......................................... 140
Gráfico No.2.4. Tablas de la base Web ................................................... 141
Gráfico No.2.5. Creación de usuario en la base ..................................... 142
Gráfico No.2.6. Privilegios para el usuario en la base “Web”. .............. 142
Gráfico No.2.7 Pantalla inicial de Aquidescarga .................................... 143
Gráfico No.2.8. Selección de idioma para EasyPHP. ............................. 145
Gráfico No.2.9. Instalación de EasyPHP (Paso 2) .................................. 145
Gráfico No.2.10. Instalación de EasyPHP (Paso 2) ................................ 146
Gráfico No.2.11. Instalación de EasyPHP (Paso 3) ................................ 147
Gráfico No.2.12. Instalación de EasyPHP (Paso 4) ................................ 147
Gráfico No.2.13. Instalación de EasyPHP (Paso 5) ................................ 148
Gráfico No.2.14. Instalación de EasyPHP (Paso 6) ................................ 149
Gráfico No.2.15. Instalación de EasyPHP (Paso 7) ................................ 149
Gráfico No.2.16. Instalación de EasyPHP (Paso 8) ................................ 150
Gráfico No.2.17. Instalación de EasyPHP (Paso 9) ................................ 150
Gráfico No.2.18. Menú Inicio, Programas con EasyPHP ...................... 151
Gráfico No.2.19. Icono de EasyPHP en la barra de tareas. ................... 152
Gráfico No.2.20. Menú contextual de EasyPHP en la barra de tareas. . 152
Gráfico No.2.21. Configuracion de EasyPHP.......................................... 153
Gráfico No.2.22. Instalación de MySQL Tools (Paso 1). ........................ 154
XVI
Gráfico No.2.23. Instalación de MySQL Tools (Paso 2). ........................ 154
Gráfico No.2.24. Instalación de MySQL Tools (Paso 3). ........................ 155
Gráfico No.2.25. Instalación de MySQL Tools (Paso 4). ........................ 155
Gráfico No.2.26. Instalación de MySQL Tools (Paso 5). ........................ 156
Gráfico No.2.27. Instalación de MySQL Tools (Paso 6). ........................ 156
Gráfico No.2.28. Instalación de MySQL Tools (Paso 7). ........................ 157
Gráfico No.2.29. Obtención del dominio (Paso 1). ................................. 159
Gráfico No.2.30. Obtención del dominio (Paso 2). ................................. 160
Gráfico No.2.31. Obtención del dominio (Paso 3). ................................. 160
Gráfico No.2.32. Obtención del dominio (Paso 4). ................................. 161
Gráfico No.2.33. Obtención del dominio (Paso 5). ................................. 162
Gráfico No.2.34. Obtención del dominio (Paso 6). ................................. 163
Gráfico No.2.35. Obtención del dominio (Paso 7). ................................. 163
Gráfico No.2.36. Obtención del hosting (Paso 1). .................................. 164
Gráfico No.2.37. Obtención del hosting (Paso 2). .................................. 165
Gráfico No.2.38. Obtención del hosting (Paso 3). .................................. 166
Gráfico No.2.39. Obtención del hosting (Paso 4). .................................. 167
Gráfico No.2.40. Obtención del hosting (Paso 4). .................................. 167
Gráfico No.2.41. Obtención del hosting (Paso 5). .................................. 168
Gráfico No.2.42. Obtención del hosting (Paso 6). .................................. 169
XVII
ÍNDICE DE TABLAS
Tabla No.1.1. tbca_aplicacion ................................................................... 32
Tabla No.1.2. tbca_documento ................................................................. 32
Tabla No.1.3. tbca_opciones ..................................................................... 32
Tabla No.1.4. tbca_Subopciones .............................................................. 33
Tabla No.1.5. tbca_ubicacion .................................................................... 33
Tabla No.1.6. tbca_usuario....................................................................... 33
Tabla No.1.7. tbcab_ubic_opcion ............................................................. 34
Tabla No.1.8. tbpc_acumular_valores ...................................................... 34
Tabla No.1.9. Tabla: tbca_usuario ............................................................ 35
Tabla No.1.10. tbpp_mov_finaciero ........................................................... 35
Tabla No.1.11. tbpc_acumular_valores .................................................... 36
Tabla No.1.12. t bpv_categoria .................................................................. 36
Tabla No.1.13. tbpv_descarga.................................................................... 37
Tabla No.1.14. tbpv_idioma ........................................................................ 37
Tabla No.1.15. tbpv_detalle_descarga ...................................................... 38
Tabla No.1.16. tbpv_comentarios .............................................................. 38
Tabla No.1.17 tbpv_entidad....................................................................... 39
Tabla No.1.18. tbpv_mes ........................................................................... 39
Tabla No.1.19. tbpv_estado_producto ...................................................... 39
Tabla No.1.20. tbpv_pais .......................................................................... 40
Tabla No.1.21. tbpv_par_vizualizacion ..................................................... 40
XVIII
Tabla No.1.22. tbpv_politica ...................................................................... 40
Tabla No.1.23. tbpv_producto_descargado .............................................. 41
Tabla No.1.24. tbpv_estado_producto ..................................................... 41
Tabla No.1.25 tbpv_tarifa........................................................................... 41
Tabla No.1.26. tbpv_producto_suscriptor ............................................... 42
Tabla No.1.27. tbpv_suscriptor .................................................................. 42
Tabla No.1.28 tbpv_producto_publicado .................................................. 43
CAPITULO I
Manual Técnico
En esta parte del proyecto se da una
detallada
explicación
acerca
del
funcionamiento del proyecto incluyendo
todos
los
subprocesos
procesos
que
estén
principales
asociados
y
a
nuestro portal.
Se explica cómo los procesos están
asociados unos con otros, para que su
20
modificación se pueda realizar de la manera más fácil, además de la
configuración de la base de datos, de un modo sencillo, de tal forma que si
se desea usar otro tipo de base de datos aparte de la proporcionada, se lo
realice de un modo sencillo y práctico.
El diseño de clases implementado respeta el esquema básico que se usa el
lenguaje de programación. La modificación del código original queda bajo
responsabilidad del administrador del programa. Para su uso posterior.
1.1 Diagrama de Casos de Uso
1.1.1 Registro de Usuario
Visitar Pagina
*
*
*
«uses»
Portal Web
Registrar en el
Portal
«extends»
Confirmar por
correo
«extends»
Guardar Datos
*
«extends»
«uses»
«extends»
Activar Cuenta
Llenar formulario
Validar Datos
Navegante Web
Gráfico No.1.1 Diagrama de casos de uso
Registro de Usuario
20
21
1.1.1.1 Descripción del Caso de Uso - Registro de Usuario
Toda persona deberá ingresar sus datos personales tales como:
nombres, apellidos, alias, correo electrónico, contraseña,
idioma, país, ciudad y teléfono; para poder crear una cuenta
en nuestro Portal, estos datos serán validados; una ves que sea
correctos se procederá a guardados en nuestra base de datos y
le enviaremos un mail de confirmación para que pueda activar
su cuenta.
1.1.2 Orden Suscripción.
«uses»
Logonear
Registro Usuario
«uses»
Validar Contraseña
«uses»
Portal Web
«uses»
Orden Suscripcion
Confirmación de
Pago
«uses»
«uses»
Validar
Información Existente
«uses»
Simulador de Pago
Usuario
Guardar Datos de
Pagos
«extends»
LLena Formalario
Ingresar Datos
Financieros
Gráfico No.1.2 Diagrama de casos de uso Orden Suscripción
1.1.1.3 Descripción del Caso de Uso - Orden Suscripción
Una vez que el usuario se encuentra registrado y haya activado
22
su cuenta podrá escoger la orden de suscripción que mejor le
convenga para poder publicar sus contenidos.
Esta orden de suscripción deberá ser pagada por medio de una
tarjeta de crédito valida.
Para el pago de tarjetas de crédito manejares un pequeño
simulador de pagos el cual verificara nombre, apellido, número
de tarjeta, nombre tarjeta, código, fecha de vencimiento, país,
dirección, teléfono, e-mail.
Para efectos del proyecto solo validaremos número de tarjeta,
código y fecha de vencimiento.
23
1.1.3 Servicios del Portal
Registro Usuario
Portal Web
Validar Contraseña
«extends»
Administrador Portal
«uses»
Usuario
Contenidos Mayores
de 2MG
Logonear
«extends»
«extends»
«uses»
«uses»
«extends»
Publicar
Informacion
Contenidos
Pendientes
«extends»
«uses»
Verificar Estado
de Cuenta
«extends»
«extends»
Enviar Contenido
al Portal
«extends»
Contenidos Menores
de 2MG
«uses»
Suscripcion Activa
«extends»
Presentar
Información
Guardar Registro
Compra
«extends»
«uses»
Existir información
Simulador Pago
Descargar
Informacion
«extends»
Confirmación de
Pago
«extends»
Efectivizar pago
«extends»
«extends»
Guardar Registro
Compra
Envio de
Autorizacion de Pago
«extends»
Confirmacion de
fondos
Gráfico No.1.3
Diagrama de casos de uso Servicios del Portal
1.1.3.1 Descripción del Caso de Uso - Servicios del Portal
Todo usuario registrado podrá gozar de los beneficios que
brinda nuestro portal.
Publicar contenido.- Una vez que el usuario tenga una
suscripción activa
podrá cargar archivos en nuestro portal,
24
estos archivos deberán ser subidos de acuerdo a la categoría,
para que de esta manera los que quieran buscar información les
sea mas fácil su localización.
De igual manera es recomendable que el usuario escriba un
pequeño resumen de la información a subir para que así los
navegantes puedan hacer la búsqueda de forma rápida.
Mi canasta.- Le permitirá ver un
detalle de los productos
comprados.
Código Descripción
Cantidad
Valor
Total.
Además la canasta tiene la opción de eliminar algún archivo que
ya no desee comprar.
Estado de Cuenta.- Aquí el usuario podrá visualizar:

Ordenes de compras pendientes

Archivos que tiene para descarga

Los cinco últimos contenidos publicados

Ganancias del mes

Ganancias de meses anteriores

Numero de Transacción para cobrar por las descargas
del mes
25
1.1.4 Consola Administrativa
Usuario
Portal Web
«uses»
Logonear
«uses»
Validar Contraseña
Recepcion
Contenidos
«extends»
«uses»
«uses»
Contenido
Aprobado
«uses»
Evaluar Contenido
Publica Contenido
«uses»
«uses»
Contenido NO
Aprobado
«uses»
«uses»
«extends»
Ver Estado de
Cuenta por Suscriptor
«extends»
Guardar Registro
Compra
«uses»
Actualizar Pagos a
Suscriptores
Registrar Pago
Mantenimientos
Gráfico No.1.4
Diagrama de casos de uso
Consola Administrativa
Publicar Contenidos
26
1.2 Diagramas de Estado
1.2.1 Registro Usuario
[Ingresar a
Nuestro Portal]
[Llenar Formulario]
Ingresando Datos Para Registrarse
Visualizacion Políticas y Condiciones del Portal
[Aceptar Políticas]
[Comprar Datos / Datos Incorrectos]
[Enviar e-mail para confirmación]
[Comparar Datos / Datos Correctos]
Recibir
Información
Validando Datos
Gráfico No.1.5
Diagrama de estado Registro Usuario
1.2.1.1 Descripción de Diagrama de Estado - Registro Usuario
El navegante para pertenecer a nuestro Portal Web deberá registrarse,
donde primero conocerá de nuestras políticas y condiciones las misma
que aceptara para poder seguir con el proceso, si la información es
correcta será guardada en la base da datos si es incorrecta tendrá que
volver a digitar datos validos.
27
1.2.2 Activación de Cuenta
[Ingresar al
Correo Personal]
[Abrir Correo]
Recibiendo Correo de Confirmación
Direccionando a nuestro Portal Web
[Aceptar Políticas]
[Enviar e-mail para confirmación]
Activando Cuenta
Gráfico No.1.6
Diagrama de estado Activación de Cuenta
1.2.2.1 Descripción de Diagrama de Estado – Activación de
Cuenta
El usuario recibirá un e-mail de confirmación a su correo
personal, al momento que el de clic en la dirección adjunta en el
correo, automáticamente se activará la cuenta.
28
1.2.3 Servicios del Portal
[Ingresar a
Nuestro Portal]
[Ingresar Usuario
y Contraseña]
[Comparar Usuario
Usuario Correcto]
Ingresando Datos
Validando Usuario
Seleccionado Opción
[Comparar Usuario
Usuario Incorrecto]
[Descargar Contenido]
[Publicar Contenido]
[Evaluar Suscripcion]
Validando Suscripción
[Ingresar # Tarjeta]
Ingresa Datos Financieros
SIMULADOR DE PAGOS
[Comprarar Datos
Datos Financieros Incorrectos]
[Suscripción Valida]
[Comparar Datos
Datos Financieros [Ver
Correctos]
Estado
de Cuenta]
[Suscripción Valida]
Seleccionar Contenido a Subir
Activando Suscripción
[Enviar Contenido]
Guardar Contenido
[Visualizar Registro
de la Compra]
Seleccionar Contenido
Bajando Contenido Seleccionado
[Visualizar
Valor a Pagar]
[Visualizar
Estado de Cuenta]
Generando Estado de Cuenta
[Descargar]
Guardando Registro de la Compra
Aceptando Valor de Compra
[Comparar Datos
Datos Financieros Correctos]
[Realizar Pago
de la compra]
[Ingresar # Tarjeta]
Ingresando Datos Financieros
SIMULADOR DE PAGOS
[Comparar Datos
Datos Financieros Incorrectos]
Gráfico No.1.7
Diagrama de estado Servicios del Portal
29
1.2.3.1 Descripción del Diagrama de Estado - Servicios del
Portal
El usuario para acceder a los servicios del portal deberá
ingresar
su alias y contraseña, una vez validado los datos
podrá seleccionar que desea hacer:
Si va por la opción de publicar contenidos al portal, deberá
primero realizar la transacción financiera de la suscripción.
Una vez validada esta suscripción el usuario podrá elegir que
subir al portal.
Si elige descargar contenidos del portal primero deberá
seleccionar que desea bajar y luego realizará la transacción
financiera correspondiente para efectuar la descarga.
Todo usuario podrá ver su estado de cuenta, el cual presentará
un listado de ordenes pendientes, contenidos por descargas,
últimos publicados, ganancias del meses, ganancias de meses
anteriores, numero de transacción para realizar el cobro por las
descargas.
30
1.2.4 Consola Administrativa
[Ingresar Usuario
y Contraseña]
[Ingresar a
Consola Administrativa]
Ingresando Datos
[Comparar Administrador
Usuario Correcto]
Validando Administrador
Seleccionado Opción
[Comparar Administrador
Usuario Incorrecto]
[Mantenimientos]
[Ver Estado de Cuenta
por Suscriptor]
[Controlar Contenido]
[Elegir Contenido]
Validando Contenido
Evaluar Contenido
[Reprobar Contenido]
[Aprobar Contenido]
Guardando Doc. para Publicar
[Publicar]
Guardando Doc. Rechazado
[Controlar
Pagos]
[Proceso
Concluido]
[Visualizar Reporte
Estado de Cuenta
por Usuario] [Visualizar Reporte
de los pagos a los
usuarios-proveedores]
[Generar
Reporte]
Presentando Reporte de E/C por usuario
Visualizar E/C por usuario
[Vizualizar
Mantenimientos]
Registrando Pagos a las cuentas de los usuarios
Ejecutar los Mantenimientos
[Seleccionar Usuario a Pagar ]
Visualizando Usuarios
Gráfico No.1.8
Diagrama de estado Consola Administrativa
1.2.5 Descripción de Diagrama de Estado - Consola
Administrativa
La consola administrativa será manejada por un usuario autorizado
que tendrá la función de:
31

Evaluar todo contenido que va a ser publicado en nuestro portal
y guardar un registro donde determinara que se publica y que
no se publica.

Visualizar los estados de cuentas por usuario para ver a
quienes se les acreditara
por
descargas realizadas a sus
contenidos en el mes.

Actualizar los Estados de Cuentas correspondiente a los pagos
mensuales.

Realizar los mantenimientos requeridos por la Organización.
1.3 Diccionario de datos.
Para el desarrollo de nuestra base de datos vamos a utilizar el Modelo
conocido como entidad relación (DER), y nuestra base de datos está
compuesta por la siguiente clasificación:
1.3.1 Tablas Control de Aplicaciones.
Estas tablas son utilizadas para la generación del sitio tanto para el
portal mostrado a los navegantes y el portal de administración.
32
Venta de Información Por suscripción
Tabla: tbca_aplicacion
Observación: Tabla donde se guarda el nombre de aplicación web es decir si es del portal o consola
de administracion
Descripción
Clave
Ref Campo
Tipo de dato
SI
NO
cap_clave
Int
Primary Key , autoincremental
NO
NO
cap_descripcion
Varchar
Descripción de la tabla
NO
NO
cap_estado
Char
Estado puede ser A o I
Tabla No.1.1. tbca_aplicacion
Venta de Información Por suscripción
Tabla: tbca_documento
Observación: En esta tabla se registra
Ref Campo
Tipo de dato
Descripción
SI
NO cdo_clave
int
Primary Key, autoincremental
NO
NO cdo_contenido
text
Contenido del documento
NO
NO cdo_estado
varchar
Estado puede ser A o I
NO
NO cdo_titulo
varchar
Titulo del documento
NO
NO cdo_politica
varchar
Bandera si es politica o no
Clave
Tabla No.1.2. tbca_documento
Venta de Información Por suscripción
Tabla: tbca_opciones
Observación: Tabla que contiene el nombre de la opcion que presta o las aplicaciones
Descripción
Clave Ref Campo
Tipo de dato
SI
NO cop_clave
int
Primary Key de la tabla
SI
SI
int
FORENG Key de la tabla tbca_aplicacion
NO
NO cop_estado
varchar
Estado puede ser A o I
NO
NO cop_descripcion
varchar
Nombre breve
cop_apliacion
Tabla No.1.3. tbca_opciones
33
Venta de Información Por suscripción
Tabla: tbca_subopciones
Observación: Tabla que contiene las subopciones que tiene las opciones
Descripción
Clave Ref Campo
Tipo de dato
SI
NO cso_clave
int
Primary Key de la tabla
SI
SI
int
Foreng Key de la tabla tbca_opciones
NO
NO cso_descripcion
varchar
Sombre del Link
NO
NO cos_link
varchar
Direccionamiento del link
NO
NO cos_estado
varchar
Estado puede ser A o I
NO
NO cos_nemonico
varchar
Sufijos de las subopciones
cso_opcion
Tabla No.1.4. tbca_Subopciones
Venta de Información Por suscripción
Tabla: tbca_ubicacion
Observación: Tabla que contiene el nombre de las ubicaciones
Clave
Ref
Campo
Tipo de dato
Descripción
SI
NO
cub_clave
Int
Primary Key de la tabla
NO
NO
cub_descripcion
varchar
Nombre breve
NO
NO
cub_estado
varchar
Estado puede ser A o I
Tabla No.1.5. tbca_ubicacion
Venta de Información Por suscripción
Tabla: tbca_usuario
Observación: Tabla que contiene los registros de los usuarios que administran el portal
Descripción
Clave
Ref
Campo
Tipo de dato
SI
NO
cub_clave
Int
Primary Key de la tabla
NO
NO
cub_descripcion
varchar
Nombre breve
NO
NO
cub_estado
varchar
Estado puede ser A o I
Tabla No.1.6. tbca_usuario
34
Venta de Información Por suscripción
Tabla: tbcab_ubic_opcion
Observación: Tabla que la relacion de las opciones con la ubicación
Clave
Ref
Campo
Tipo de dato
Descripción
SI
NO
cuo_ubicacion
int
Primary Key de la tabla
SI
NO
cuo_opcion
int
Primary Key de la tabla
Tabla No.1.7. tbcab_ubic_opcion
Venta de Información Por suscripción
Tabla: tbpc_acumular_valores
Observación: Tabla que contiene los registros de los usuarios que administran el portal
Descripción
Clave Ref Campo
Tipo de dato
SI
NO wac_anio
int
Primary Key de la tabla
SI
NO wac_mes
int
Primary Key de la tabla
NO
NO wac_neto
float
Valor neto de pago
NO
NO wac_comision
float
Valor de la comision obtenida para el portal
NO
NO wac_fecha
datetime
Fecha de la transaccion
NO
NO wac_alias
varchar
Usuario dueño del contenido
NO
NO wac_acumulado
varchar
Bandera
NO
NO wac_pagado
varchar
Bandera de efectivizacion
NO
NO wac_estado
varchar
Estado puede ser A o I
Tabla No.1.8. tbpc_acumular_valores
1.3.2 Tablas Portal de Pago
Tablas que tienen que ver con el Simulador de Pagos. Gracias a estas
tablas se realiza la simulación de los pagos realizados en web.
35
Venta de Información Por suscripción
Tabla: tbpp_datos_financiero
Observación: Tabla de registros de datos dueños de tarjeta pertenece a la simulación de pago
SI
NO pdf_tipo_cuenta
int
SI
NO pdf_nombre
varchar
SI
NO pdf_apellido
varchar
SI
NO pdf_num_tarjeta
varchar
Descripción
Primary Key,Tipo de cuenta Puede
ser 1 0 2
Primary Key, Nombre del dueño de
tarjeta
Primary Key, Apellido del dueño de
tarjeta
Primary Key, Numero de tarjeta
NO
NO pdf_mes
int
mes de caducidad
NO
NO pdf_anio
int
año de caducidad
NO
NO pdf_pais
int
país de procedencia
NO
NO pdf_ciudad
varchar
ciudad de procedencia
NO
NO pdf_mail
varchar
email del dueño para referencia
NO
NO pdf_telefono
varchar
teléfono de referencia
NO
NO pdf_direccion
varchar
dirección
NO
NO pdf_contrasena
varchar
contraseña de tarjeta (encriptado)
Clave
Ref
Campo
Tipo de dato
Tabla No.1.9. Tabla: tbca_usuario
Venta de Información Por suscripción
Tabla: tbpp_mov_finaciero
Observación: Se registra los movimientos de pagos realizados por el simulador
Descripción
Clave Ref Campo
Tipo de dato
SI
NO pmf_clave
int
Primary Key de la tabla
NO
NO pmf_factura
int
Factura o Orden de descarga
NO
NO pmf_tipo_tarjeta
int
tipo de tarjeta puede ser 1o 2
NO
NO pmf_valor
decimal
Valor de pago
NO
NO pmf_fecha
datetime
Fecha de cancelacion
NO
NO pmf_tipo_fact
varchar
Tipo de documento
NO
NO pmf_num_tarjeta
varchar
Numero de la tarjeta
NO
NO pmf_emisor
varchar
Nombre de la pagina de procedencia
NO
NO pmf_codigo
Varchar
Codigo
Tabla No.1.10. tbpp_mov_finaciero
36
1.3.3 Tablas Portal de venta
En esta sección se encuentran las tablas que conforman el proyecto
Aquídescarga.com. Las cuales son de vital importancia al sitio.
Venta de Información Por suscripción
Tabla: tbpv_anio
Observación: Registro de los años
Clave Ref Campo
Tipo de dato
SI
NO
NO
NO
NO wan_fecha_inicio
NO wan_fecha_fin
NO
NO wan_estado
wan_anio
int
datetime
datetime
varchar
Descripción
Primary Key de la tabla, año
fiscal
fecha de inicio
fecha de final
Estado puede ser A o I
Tabla No.1.11. tbpc_acumular_valores
Venta de Información Por suscripción
Tabla: tbpv_categoria
Observación: Datos correspondientes a la categoria
Ref
Campo
Tipo de dato
Descripción
SI
NO
wcp_codigo
int
Primary Key de la tabla
NO
NO
wcp_retencion
int
Porcentaje de ganacia no usado en la actualidad
NO
NO
wcp_inicial
varchar
Iniciales de la categoria
NO
NO
wcp_descripcion
varchar
Descripción de la categoria
NO
NO
wcp_archivo
varchar
Nombre del archivo de imagen
NO
NO
wcp_contenido
varchar
Breve descripción
NO
NO
wcp_estado
varchar
Estado puede ser A o I
Clave
Tabla No.1.12. t bpv_categoria
37
Venta de Información Por suscripción
Tabla: tbpv_descarga
Observación: Cabecera de descargas Datos principales de la orden de descarga
Ref
Campo
Tipo de dato
Descripción
SI
NO
wde_numero
float
Primary Key de la tabla
NO
NO
wde_total_neto
int
Total Neto de la descarga
NO
NO
wde_total_comision
int
Total de las comisiones
NO
NO
wde_total
int
Total suma de Neto y Comision
NO
NO
wde_fecha
datetime
Fecha de orden
NO
NO
wde_fecha_efectivo
datetime
fecha de efectivo
NO
NO
wde_tipo_tarjeta
int
tipo de tarjeta
NO
NO
wde_num_tarjeta
varchar
numero de tarjeta
NO
NO
wde_estado
varchar
Estado puede ser A o I
NO
NO
wde_num_pago
varchar
numero de autorizacion
NO
NO
wde_nombre_apellido
varchar
nombre y apellido del dueño de la tarjeta
NO
NO
wde_vencimiento
varchar
fecha de vencimiento
NO
NO
wde_ban_efec
varchar
bandera de efectivización
NO
NO
wde_alias_comprador
varchar
Alias del suscriptor que realiza la compra
Clave
Tabla No.1.13. tbpv_descarga
Venta de Información Por suscripción
Tabla: tbpv_idioma
Observación: Idiomas existentes.
Clave
SI
NO
NO
Ref Campo
NO
wid_codigo
NO wid_descripcion
NO wid_estado
varchar
Descripción
Primary Key de la tabla,
autoincremental
Descripción
varchar
Estado puede ser A o I
Tipo de dato
int
Tabla No.1.14. tbpv_idioma
38
Venta de Información Por suscripción
Tabla: tbpv_detalle_descarga
Observación: detalle de descargas
Clave
Ref
Campo
Tipo de dato
Descripción
SI
NO wdd_numero
float
Primary Key de la tabla
SI
NO wdd_secuencia
int
Primary Key de la tabla
NO
SI
float
Producto, foreng key
NO
NO wdd_valor_comision
int
Valor de comision
NO
NO wdd_porc_com
int
porcentaje de comision
NO
NO wdd_fecha
datetime
fecha de orden
NO
NO wdd_valor_total
int
NO
NO wdd_cantidad
int
NO
NO wdd_fecha_efectivo
datetime
valor
cantidad de articulos siempre es
1
fecha de efectivizacion de pago
NO
NO wdd_valor_neto
int
valor neto
NO
NO wdd_tipo_tarjeta
int
tipo de tarjeta de credito
NO
NO wdd_f_caducidad
varchar
fecha de caducidad de tarjeta
NO
NO wdd_num_tarjeta
varchar
numero de tarjeta
NO
NO wdd_ban_efec
varchar
bandera de efectivizacion
NO
NO wdd_estado
varchar
Estado puede ser A o I
NO
NO wdd_num_pago
varchar
numero de autorizacion
NO
NO wdd_nombre_apellido
varchar
nombre del dueño de tarjeta
NO
NO wdd_alias_bajado
varchar
alias del dueño de contenido
NO
NO wdd_alias_compra
varchar
alias del compra de contenido
wdd_cod_producto
Tabla No.1.15. tbpv_detalle_descarga
Venta de Información Por suscripción
Tabla: tbpv_comentarios
Observación: Registro de comentarios enviados por los visitantes.
Ref
Campo
Tipo de dato
Descripción
SI
NO
wcm_clave
int
Primary Key de la tabla, autosecuencia
NO
NO
wcm_contenido
text
Contenido del documento este puede ser html
NO
NO
wcm_leido
varchar
Iniciales de la categoria
NO
NO
wcm_nombre
varchar
Descripción de la categoria
NO
NO
wcm_email
varchar
email del visitante
NO
NO
wcm_titulo
varchar
Titulo del comentario
Clave
Tabla No.1.16. tbpv_comentarios
39
Venta de Información Por suscripción
Tabla: tbpv_entidad
Observación: Registro de los años
Ref
Campo
Tipo de dato
Descripción
SI
NO
wen_codigo
int
Primary Key de la tabla, autoincremental
NO
NO
wen_descripcion
varchar
Descripción
NO
NO
wen_estado
varchar
Estado puede ser A o I
Clave
Tabla No.1.17 tbpv_entidad
Venta de Información Por suscripción
Tabla: tbpv_mes
Observación: Meses existente en el año
Tipo de dato
Descripción
int
Primary Key de la tabla, autoincremental
NO
Ref Campo
NO wms_mes
NO wms_nombre
varchar
Descripción
NO
NO wms_estado
varchar
Estado puede ser A o I
Clave
SI
Tabla No.1.18. tbpv_mes
Venta de Información Por suscripción
Tabla: tbpv_estado_producto
Observación: Estados del producto Ej: Pendiente
Ref
Campo
Tipo de dato
Descripción
SI
NO
wep_codigo
int
Primary Key de la tabla, autoincremental
NO
NO
wep_descripcion
varchar
Descripción
NO
NO
wep_estado
varchar
Estado puede ser A o I
Clave
Tabla No.1.19. tbpv_estado_producto
40
Venta de Información Por suscripción
Tabla: tbpv_pais
Observación: Paises existentes del mundo
Ref
Campo
Tipo de dato
Descripción
SI
NO
wpa_codigo
Int
Primary Key de la tabla, autoincremental
NO
NO
wpa_descripcion
Varchar
Descripción
NO
NO
wpa_estado
Varchar
Estado puede ser A o I
Clave
Tabla No.1.20. tbpv_pais
Venta de Información Por suscripción
Tabla: tbpv_par_vizualizacion
Observación: Top de presentacion de consultas
Clave
Ref
Campo
Tipo de dato
Descripción
SI
NO
cpv_clave
Int
Primary Key de la tabla, autoincremental
NO
NO
cpv_top
Int
El hasta de vizualizacion
NO
NO
cpv_estado
Varchar
Estado puede ser A o I
NO
NO
cpv_descripcion
Varchar
Nombre del Top
NO
NO
cpv_nemonico
Varchar
Iniciales
Tabla No.1.21. tbpv_par_vizualizacion
Venta de Información Por suscripción
Tabla: tbpv_politica
Observación: Politicas de contraseñas.
Tipo de dato
Descripción
Int
Primary Key de la tabla, autoincremental
NO
Ref Campo
NO wpo_codigo
NO wpo_letras
Int
Limites de letras
NO
NO wpo_numeros
Int
Limites de Numeros
NO
NO wpo_simbolos
Int
Limites de simbolos
NO
NO wpo_cant_min
Int
minimo de digito
NO
NO wpo_cant_max
Int
maximo de digitos
Clave
SI
Tabla No.1.22. tbpv_politica
41
Venta de Información Por suscripción
Tabla: tbpv_producto_descargado
Observación: Politicas de contraseñas.
Clave
SI
Ref
Campo
Tipo de dato
Descripción
NO
wpd_clave
Float
Primary Key de la tabla
SI
NO
wpd_producto
Float
Primary Key de la tabla
NO
NO
wpd_contador
Int
Contador de descarga
NO
NO
wpd_contador_maximo
Int
Limites de veces de descargas
NO
NO
wpd_fecha_descarga
Datetime
fecha de descargas
NO
NO
wpd_fecha_maxima
Datetime
fecha limite de descargas
NO
NO
wpd_alias_compra
Varchar
alias del usuario que compra
NO
NO
wpd_ban_realizado
Varchar
bandera de realizado o efectuado
Tabla No.1.23. tbpv_producto_descargado
Venta de Información Por suscripción
Tabla: tbpv_estado_producto
Observación: Estados del producto Ej: Pendiente
Tipo de dato
Descripción
int
Primary Key de la tabla, autoincremental
NO
Ref Campo
NO wtt_codigo
NO wtt_descripcion
varchar
Descripción
NO
NO wtt_estado
varchar
Estado puede ser A o I
Clave
SI
Tabla No.1.24. tbpv_estado_producto
Venta de Información Por suscripción
Tabla: tbpv_tarifa
Observación: Tarifa existentes que brindan el portal
Campo
Tipo de dato
Descripción
wta_codigo
int
Primarey Key
NO
wta_valor
int
costo de tarifa
NO
NO
wta_duracion
float
duracion de tarifa(meses)
NO
NO
wta_descripcion
varchar
descripcion de la tarifa
NO
NO
wta_estado
varchar
Estado puede ser A o I
Clave
SI
Ref
NO
NO
Tabla No.1.25 tbpv_tarifa
42
Venta de Información Por suscripción
Tabla: tbpv_producto_suscriptor
Observación: Tabla que contiene las descargas por producto y dueno de contenido.
Descripción
Clave
Ref Campo
Tipo de dato
SI
NO
wps_clave
float
Primary Key de la tabla
SI
NO
wps_anio
int
Primary Key de la tabla
SI
NO
wps_mes
int
Primary Key de la tabla
NO
NO
wps_contador
float
Total de descargas
NO
NO
wps_neto
float
neto a recibir
NO
NO
wps_valor_comision
float
valor de la comision
NO
NO
wps_valor_total
float
valor total
NO
NO
wps_ban_realizado
varchar
bandera de realizado
NO
NO
wps_alias_publicado
varchar
alias del publicante
NO
NO
wps_cont_cifrado
varchar
contado cifrado(No utilizado)
Tabla No.1.26. tbpv_producto_suscriptor
Venta de Información Por suscripción
Tabla: tbpv_suscriptor
Observación: Registros de suscriptores inscritos a nuetro portal (Datos de Registro)
Descripción
Clave
Ref Campo
Tipo de dato
NO
NO
wsu_alias
varchar
Usuario, Primarey Key
NO
SI
wsu_pais
int
pais
NO
SI
wsu_idioma
int
Idioma
NO
NO
wsu_entidad
int
Entidad de pago
NO
NO
wsu_nombre
varchar
Nombre del suscriptor
NO
NO
wsu_contrasena
varchar
contraseña encriptada md5
NO
NO
wsu_estado
varchar
Estado puede ser A o I
NO
NO
wsu_apellido
varchar
Apellido del suscriptor
SI
NO
wsu_email
varchar
email del suscriptor
Tabla No.1.27. tbpv_suscriptor
43
Venta de Información Por suscripción
Tabla: tbpv_producto_publicado
Observación: Tabla los contenidos que se publican
Campo
Tipo de dato
Descripción
NO
wpp_clave
float
Primary Key de la tabla
NO
NO
wpp_precio
int
Precio del contenido
NO
SI
wpp_categoria
int
Categoria
NO
SI
wpp_fecha_publicacion
datetime
Fecha de publicacion
NO
NO
wpp_numero_descarga
int
Numero de descarga de contenido
NO
NO
wpp_precio_publico
int
Precio al publica
NO
NO
wpp_estado
int
Estado puede ser A o I
NO
NO
wpp_tipo_motivo
int
no utilizado
NO
NO
wpp_archivo
text
contenido de archivo (no utilizado)
NO
NO
wpp_archivo_resumen
text
resumen(no utilizado)
NO
NO
wpp_tm_archivo
decimal
Tamaño de archivo principal
NO
NO
wpp_tm_resumen
decimal
Tamaño de archivo resumen
NO
NO
wpp_porcentaje
float
porcentaje de ganancia por articulo
NO
NO
wpp_nombre_resumen
varchar
nombre del contenido de resumen
NO
NO
wpp_oferta
varchar
bandera que indica si se encuentra en oferta
NO
NO
wpp_direccion_resumen
varchar
direccion fisica del resumen
NO
NO
wpp_tipo_archivo
varchar
tipo del archivo principal de contenido
NO
NO
wpp_tipo_resumen
varchar
tipo del archivo resumen de contenido
NO
NO
wpp_nombre_archivo
varchar
nombre del contenido principal
NO
NO
wpp_resumen
varchar
nombre del contenido principal
NO
NO
wpp_alias
varchar
alias del suscriptor dueño
NO
NO
wpp_direccion
varchar
direccion fisica del contenido principal
NO
NO
wpp_descripcion
varchar
breve descripcion del tema
NO
NO
wpp_codigo
varchar
codigo generado x la categoria y el id del
contenido
Clave
SI
Ref
Tabla No.1.28 tbpv_producto_publicado
44
1.4 Páginas y Clase del Proyecto
Por cada pagina se ira explicando el uso de la misma, de una manera
detallada de las paginas que presenta los procesos principales.
La mayoría de las páginas heredan de las clases que se encuentran en la
carpeta lib. Gracias a las propiedades heredadas de las plantillas ayudan
para tener una programación más ordenada y fácil de comprender.
La función de Preproceso recepta los parámetros enviados por otras páginas
o si misma en dichos parámetros llegan acciones que se ejecutan al instante.
Función SeccionCentroMostrarHtml esta función realiza la presentación en el
centro de las páginas para la visualización del contenido.
1.4.1 DB_mysql.class
Clase que realiza la conexión con la base de datos en nuestro caso
con la base llamada web en mySql, accediendo con el servidor,
usuario y pasword como parámetros en el constructor. Si no se envían
parámetros toma los que contienen por default.
Ubicación: /lib/clase/funciones/ DB_mysql.php
45
<?php class DB_mysql
{
/* variables de conexión */
var $BaseDatos;
var $Servidor;
var $Usuario;
var $Clave;
/* identificador de conexión y consulta */
var $Conexion_ID = 0;
var $Consulta_ID = 0;
/* número de error y texto error */
var $Errno = 0;
var $Error = "";
/* Método Constructor: Cada vez que creemos una variable de esta clase, se
ejecutará esta función */
function __construct($bd="web",$host="localhost",$user="root",$pass="")
{
$this->BaseDatos=$bd;
$this->Servidor=$host;
$this->Usuario=$user;
$this->Clave=$pass;
$this->conectar($this->BaseDatos,$this->Servidor,$this->Usuario,$this->Clave);
}
/*Conexión a la base de datos*/
function conectar($bd="web",$host="localhost",$user="root",$pass="")
//function conectar($bd, $host, $user, $pass)
{
if ($bd != "") $this->BaseDatos = $bd;
if ($host != "") $this->Servidor = $host;
if ($user != "") $this->Usuario = $user;
if ($pass != "") $this->Clave = $pass;
// Conectamos al servidor
//echo $this->Servidor;
$this->Conexion_ID = mysql_connect($this->Servidor, $this->Usuario, $this>Clave);
if (!$this->Conexion_ID)
{
$this->Error = "Ha fallado la conexión.";
die('error: '.$this->Error);
return 0;
}
if (!@mysql_select_db($this->BaseDatos, $this->Conexion_ID))
{
$this->Error = "Imposible abrir ".$this->BaseDatos ;
die('error: '.$this->Error);
return 0;
}
/* Si hemos tenido éxito conectando devuelve el identificador de la
conexión, sino devuelve 0 */
return $this->Conexion_ID;
}
// cierra la conexion
public function __sleep()
{
mysql_close($this->Conexion_ID);
}
}?>
Gráfico No. 1.9a. Clase DB_mysql
46
1.4.2 BarraMenu.class
Clase que genera la barra de menu de nuestro portal. Realiza una
consulta a la base de datos dependiendo que parámetros sea enviado
genera el menú superior tanto para el portal y el administrador del
portal
Ubicacion: /lib/BarraMenu.class.php
<?php
class BarraMenu {
var $botones;
var $array;
var $ok;
function BarraMenu($opcion=1)
{
/*
* Funcion que genera el menu de opciones
* Dinamicamente
*/
$this->botones=array(); // inicializa como array
$this->array=array(); // incializa como array
$this->ok=0;
$mytransubopciones= new cls_tranSubopciones(); // crea un objeto
/*
* llama a la funcion consulta_opcion
*/
$mytransubopciones->consulta_opcion($opcion,$this->array,$this->ok);
if ($this->ok==1)// busqueda exitosa
{
$i=0;
while($i<count($this->array))
{
/*
* crea un vinculo creando un objeto VinculoUrl
*/
$myvinculo = new VinculoUrl($this->array[$i]->getDescripcion(), config_live_site.$this>array[$i]->getlinks());
$this->botones[$myvinculo->etiqueta] = $myvinculo; // asigna
$i++;
}
}
}
Gráfico No.1.10a Clase BarraMenu
47
function Mostrar()
{
/*
* Presenta el menu generado
* crea un tabla
*/
echo "<table width=\"80%\" height=\"20\" border=\"0\" align=\"center\" cellpadding=\"0\"
cellspacing=\"12\"><tr>";
foreach($this->botones as $id => $item) // ciclo repetitivo
{
echo "<td class=\"layout_barramenuboton\">";
$item->Mostrar();
echo "</td>";
}
echo "</tr></table>"; // cierra la tabla
}
?>
}
Gráfico No.1.10b Clase BarraMenu
1.4.3 CuadroHtml.class.
Clase que genera y va añadiendo celdas a las tablas, estas tablas
pueden ser simples, de búsqueda o zebras.
Ubicacion: /lib/ CuadroHtml.class.php
<?php
class CuadroHtml{
/**
* Clase que genera los diferentes cuadros
**/
var $Titulo; // titulo
var $Celdas; // celdas
var $maxCol; // maximo de columna
var $maxFil; // maximo de fila
var $ancho; // ancho
var $cssEstilo; // estilo de la clase
var $Border; // borde si o no
var $bicolor; // generacion bi color si no
var $pie; // strin de presentacion en pie
var $preSub; // bandera de presentacion
var $oculta; // ban de ocultar
var $ocultar;
var $prepie; // bandera de presenta pie
Gráfico No. 1.11a Clase Cuadrohtml
48
function CuadroHtml($titulo="",$ancho=0,$estilo="",$border=0,$bicolor=0, $pie="",$prepie=0,$preSub=0,$ocultar=0){
/*
* Constructor de la clase
* recibe los parametros que se utilizan
*/
$this->Titulo=$titulo;
$this->Celdas=array();
$this->maxFil=0;
$this->maxCol=0;
$this->ancho = $ancho;
$this->Border = $border;
$this->cssEstilo = "layout_cuadro" . $estilo;
$this->Border=$border;
$this->bicolor=$bicolor;
$this->pie=$pie;
$this->preSub=$preSub;
$this->oculta=" style = 'border-bottom:thin none; border-top:thin none; border-left: thin none; border-right:thin none'";
$this->ocultar=$ocultar;
$this->prepie=$prepie;
}
function Agregar($columna,$fila, $valor){
/*
* Funcion que agrega el items en las filas y columnas
*/
if ($columna > $this->maxCol) $this->maxCol = $columna;
if ($fila > $this->maxFil) $this->maxFil = $fila;
$this->Celdas[$columna][$fila] = $valor;
}
function Vaciar(){
/*
* Funcion que presenta el cuadro completo
*
*/
$cssEstiloFondo = $this->cssEstilo . "fondo";
$cssEstiloTitulo = $this->cssEstilo . "titulo";
$cssEstiloSubtitulo = $this->cssEstilo . "subtitulo";
$cssEstiloItem = $this->cssEstilo . "item";
$cssEstiloItems = $this->cssEstilo . "items";
$cssEstiloPie = $this->cssEstilo . "pie";
$cssAncho = " style=\"width: " . $this->ancho . "px;\"";
$tituloPadding = $this->maxCol+1;
$text="<div class=\"$cssEstiloFondo\" $cssAncho >";
$text.="<table border ='".$this->Border;
$text.="' cellspacing='0' cellpadding='$2' width=100% >";
if ($this->Titulo!="")
if ($this->preSub==0)
{
$text.="<tr class=\"$cssEstiloTitulo\"><td colspan=\"$tituloPadding\">" . $this->Titulo . "</td></tr>";
}
else
{
$text.="<tr class=\"$cssEstiloTitulo\"><td colspan=\"$tituloPadding\">  </td></tr>";
$text.="<tr class=\"$cssEstiloTitulo\"><td colspan=\"$tituloPadding\">" . $this->Titulo . "</td></tr>";
}
Gráfico No.1.11b Clase Cuadro html
49
for($fila=0;$fila<=$this->maxFil;$fila++){
$text.="<tr>";
for($columna=0;$columna<=$this->maxCol;$columna++){
if ($this->preSub<>0) //si pressub !=0
{
if ($fila==0)
{
$text.="<td";
if ($this->ocultar==1)
{ $text.=$this->oculta;
}
$text.= " ><p class=\"$cssEstiloSubtitulo\">";
}
}
if ($this->preSub==0)
{
if ($fila==0)
{
$text.="<td";
if ($this->ocultar==1)
{ $text.=$this->oculta;
}
$text.= " ><p class=\"$cssEstiloItem\">";
}
}
if ($this->bicolor==1)
{
if ($fila>0)
{
if(($fila%2)!=0)
{
$text.="<td";
if ($this->ocultar===1)
{
$text.=$this->oculta;
}
$text.=" ><p class=\"$cssEstiloItem\">";
}
else
{ $text.="<td";
if ($this->ocultar===1)
{ $text.=$this->oculta;}
$text.=" ><p class=\"$cssEstiloItems\">";
}
}
}
if ($this->bicolor==0)
{
if ($fila>0)
{
$text.="<td>";
if ($this->ocultar==1)
{
$text.=$this->oculta;
}
$text.=" ><p class=\"$cssEstiloItem\">";
}
}
if (isset($this->Celdas[$columna][$fila]))
$text.= $this->Celdas[$columna][$fila];
$text.="</p></td>";
}
Gráfico No.1.11c Clase Cuadro html
50
$text.="</tr>";
}
if ($this->prepie==1)
{
$text.="<tr class=\"$cssEstiloPie\"><td colspan=\"$tituloPadding\" align=\"center\">".$this>pie."</td></tr>";
}
$text.= "</table>";
$text.= "</div>";
return $text;
}
function MostrarHtml(){
echo $this->Vaciar();
}
}
?>
Gráfico No.1.11d Clase CuadroHtml
1.4.4 Funciones.php
Function fnRnd
Esta función realiza un calculo aleatorio de numero.recibe los rangos
de generación
Function Seccion_Star
Esta función genera la sesión tanto para el usuario como para la
canastade compra.
51
<?php
/*
* Funciones auxiliares
*/
function fnRnd($min,$max)
{
/*
* Funcion que genera randon
*/
srand((double)microtime()*1000000);// funcion aleatoria
$randvalor=rand($min,$max);
return $randvalor;
}
function Seccion_Star()
{
/*
* Funcion que genera session
*/
session_start();// inicio de seccion
if (!isset($_SESSION['usuario']))
{
$_SESSION["canasta"]=NULL;
$_SESSION["seguro"]=fnRnd(1000,9999);// llamada de funcion aleatoria
}
}
?>
Ubicación: /lib/ funciones.php
Gráfico No.1.12a. funciones.php
1.4.5 VinculoUrl.class.
Clase que genera los links para las páginas web
Ubicación: /lib/ VinculoUrl.class.php
<?php class VinculoUrl{
/*
* clase que genera los links
*/
var $etiqueta;
var $pagina;
var $parametros;
var $cssClass;
var $extra;
function VinculoUrl($etiqueta,$pagina,$cssClass='',$extra=''){
/*
* constructor de las clases
*/
Gráfico No.1.13a. Clase VinculoUrl.class
52
$this->etiqueta=$etiqueta;
$this->pagina=$pagina;
$this->parametros=array();// asignacion de array
$this->cssClass=$cssClass;
$this->extra = $extra;
}
function Agregar($param,$valor){
/*
* funcion que agrega links
*/
$this->parametros[$param]=$valor; // asignacion
}
function Vaciar(){
/*
* Funcion que presenta los links
*/
$texto ="";
$pagina = $this->pagina;
$etiqueta = $this->etiqueta;
$cssClass = $this->cssClass;
$extra = $this->extra;
$cssCode ="";
$url="$pagina";
foreach($this->parametros as $id => $item){
$url.=$id . "=" . $item . "&";
}
if ($cssClass!='')
$cssCode = " class=\"$cssClass\" ";
$texto = "<a href=\"$url\" $cssCode $extra >$etiqueta</a>";
return $texto;
}
/*
* Funcion que presenta los links
*/
function Mostrar(){
echo $this->Vaciar();
}
}
?>
Gráfico No.1.13b Clase VinculoUrl.class
1.4.6 PlantillaHtml.class.php
Clase que genera la plantilla principal de nuestro proyecto de la cual
es heredada de diferentes paginas. Esta dividida en 4 sectores como
53
lo son:
Parte superior donde se encuentra ubicado la imagen de publicidad de
nuestro portal.
La parte de la barra de menú donde se presentan las opciones que
tiene acceso los navegantes.
Presentación de bienvenida del usuario se presenta la opción que nos
indica que si se encuentra iniciada una opción o le da el mensaje para
hacerlo
Lado Izquierdo donde se presentan las subopciones o submenús que
presenta nuestro portal como lo son el ingreso de usuario, el menú de
acceso, visualización previa de la canasta y el top de descargas.
Lado derecho se presentan opciones como la búsqueda de contenido,
las
categorías
mas
descargados,
recientemente.
Ubicación: /lib/ PlantillaHtml.class.php
los
contenidos
publicados
54
<?php
// incluye librerias
include_once("funciones.php");
class PlantillaHtml
{
/*
* Plantilla principal de nuestro portal
*/
var $Titulo;
var $MostrarSeccionDerecha=true;
var $array;
var $ok;
var $izquierdo;
var $aplicacion;
// constructor
function PlantillaHtml($titulopagina)
{
$this->Titulo= $titulopagina; // titulo
$this->PreProcesoSystema(); // llama PreProcesoSystema()
$this->PreProceso(); // llama PreProceso()
}
function MostrarHtml()
{
/*
*divicion de las celdas para la presentacion del pagina
* Codigo realizado en html pero llama a funciones php
*/
?>
<html>
<head>
<title>AquiDescarga :: <?php echo $this->Titulo ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="layout.css" rel="stylesheet" type="text/css">
</head>
<body class="pagina">
<table border="0" align="center" cellpadding="0" cellspacing="0" width="800">
<tr>
<td align="right" valign="middle">
<div class="layout_pagina"><!--corresponde al marco de nuestro proyecto-->
<div class="layout_titulo"><!--corresponde al dintel de nuestro proyecto-->
<div class="layout_barramenu"><!--corresponde a la barra
principal de la pagina-->
<?php
$miBarraMenu = new BarraMenu();
$miBarraMenu->Mostrar();
?>
</div>
</div>
<div class="layout_cuerpo">
<table width="790" border="0" cellpadding="0" cellspacing="0">
<tr align="right" valign="top">
<td height="46" colspan="3" valign="bottom"><p
class="layout_cuerpousername"><span class="layout_cuerpousername">
// llama SeccionSuperiorMostrarHtml
<?php $this->SeccionSuperiorMostrarHtml();?>
</span></p>
Gráfico No.1.14a. Clase PlantillaHtml.class
55
</td>
</tr>
<tr>
<td width='160' align="left" valign="top" >
// llama SeccionIzquierdaMostrarHtml
<?php $this->SeccionIzquierdaMostrarHtml(); ?></td>
<td align="center" valign="top" class="layout_cuerpocentro2" >
<?php $this->SeccionCentroMostrarHtml(); ?>
</td>
<?php if ($this->MostrarSeccionDerecha===true){ ?>
<td width="165" align="center" valign="top">
// llama SeccionDerechaMostrarHtml
<?php $this->SeccionDerechaMostrarHtml();
?>
</td>
<?php } else { ?>
<td width="12" align="center" valign="top">
</td>
<?php } ?>
</tr>
<tr>
<td colspan="3" class="layout_cuerpobotton">
// llama seccioninferiormostrar
<?php $this->seccioninferiormostrar();?>
<BR>www.AquiDescarga.com
<br>
Derechos Reservados (c) 2007
</td>
</tr>
</table>
</div>
</div>
</td></tr></table>
</body>
</html>
<?php
}//fin funcion MostrarHtml
Gráfico No.1.14b Clase PlantillaHtml.class
56
function SeccionIzquierdaMostrarHtml()
{
/*
* Muestra en la parte de izquierda
* el numero de Movimientos que ha realizado
* en el carro de compra.
* Top five
* Lo ultimo publicado
*/
$this->array=array();
$this->ok=0;
//*************************************CUADRO CANASTA******************
if(isset($_SESSION['usuario']))
{
if(isset($_SESSION["canasta"]))
{
$canasta=$_SESSION["canasta"];
}
else
{ $canasta=NULL;}
require_once("configuration.php");
$mybox = new CuadroHtml('Mi Canasta','150',3,0,0, "",0,0,1);
/*
* arma la tabla del titulo del submenu
*/
?>
<table border ='0' cellspacing='0' width=100>
<TBODY>
<TR>
<td >
<IMG src="img/subtitulo.jpg" width="145" height="24" border=0>
</TD>
</TR></TBODY></TABLE>
<?php
?>
<TABLE cellSpacing=0 cellPadding=0 width="146"
border=0>
<TBODY>
<TR class=menu_option
onmouseover="this.className='menu_option_over'"
style="CURSOR: pointer; PADDING-TOP: 2px"
onclick="document.location='<?php echo config_live_site."canasta_view.php";?>'"
onmouseout="this.className='menu_option'">
<TD width=10 height=20></TD>
<TD class=linksec height=20>.: Mi Canasta</TD>
</TR>
</TBODY>
</TABLE>
<?php
if($canasta<>NULL)
{
$total=0;
$items=0;
foreach($canasta as $item => $valor )
{
$this->ok=0;
$myproducto =new cls_producto_publicado();
$mytransproducto =new cls_transproducto_publicado();
$myproducto->setClave($item);
$mytransproducto->consulta_producto($myproducto,$this->ok);
Gráfico No.1.14c Clase PlantillaHtml.class
57
if ($this->ok==1)
{
$pvp=$myproducto>getPrecio_publico();
$subtotal = ($pvp*$valor);
$total = $total + $subtotal;
$items = $items+$valor;
}
}
/*
* Arma la opcion del sub menu
*/
?>
<TABLE cellSpacing=0 cellPadding=0 width="146"
border=0>
<TBODY>
<TR class=menu_option
onmouseover="this.className='menu_option_over'"
style="CURSOR: pointer; PADDING-TOP: 2px"
onmouseout="this.className='menu_option'">
<TD width=10 height=20> </TD>
<TD class=linksec height=20> <div align="center"><?php echo "Contenido [".$items."]";
?></div> </TD>
</TR>
</TBODY>
</TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="146"
border=0>
<TBODY>
<TR class=menu_option
onmouseover="this.className='menu_option_over'"
style="CURSOR: pointer; PADDING-TOP: 2px"
onmouseout="this.className='menu_option'">
<TD width=10 height=20></TD>
<TD class=linksec height=20> <div align="center"><?php echo " Total: <FONT
color=red>".config_signo." ".number_format($total, 2, '.', ',')."</font>"; ?></div> </TD>
</TR>
</TBODY>
</TABLE>
<?php
}
else
{
?>
<TABLE cellSpacing=0 cellPadding=0 width="146"
border=0>
<TBODY>
<TR class=menu_option
onmouseover="this.className='menu_option_over'"
style="CURSOR: pointer; PADDING-TOP: 2px"
onmouseout="this.className='menu_option'">
<TD width=10 height=20><?php echo '&nbsp'; ?></TD>
<TD class=linksec height=20> </TD>
Gráfico No.1.14d Clase PlantillaHtml.class
58
</TR>
</TBODY>
</TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="146"
border=0>
<TBODY>
<TR class=menu_option
onmouseover="this.className='menu_option_over'"
style="CURSOR: pointer; PADDING-TOP: 2px"
onmouseout="this.className='menu_option'">
<TD width=10 height=20></TD>
<TD class=linksec height=20>Vacio </TD>
</TR>
</TBODY>
</TABLE>
<?php
}
if ($canasta==NULL)
{
?>
<TABLE cellSpacing=0 cellPadding=0 width="146"
border=0>
<TBODY>
<TR class=menu_option
onmouseover="this.className='menu_option_over'"
style="CURSOR: pointer; PADDING-TOP: 2px"
onmouseout="this.className='menu_option'">
<TD width=10 height=20><?php echo '&nbsp'; ?></TD>
<TD class=linksec height=20> </TD>
</TR>
</TBODY>
</TABLE>
<?php
}
else
{
?>
<TABLE cellSpacing=0 cellPadding=0 width="146"
border=0>
<TBODY>
<TR class=menu_option
onmouseover="this.className='menu_option_over'"
style="CURSOR: pointer; PADDING-TOP: 2px"
onclick="document.location='<?php echo
config_live_site."orden.php?opcion=2&user=".$_SESSION['usuario'];?>'"
onmouseout="this.className='menu_option'">
<TD width=10 height=20></TD>
<TD class=linksec height=20>.: Realizar Pago</TD>
</TR>
</TBODY>
</TABLE>
<?php
}
echo "<br>";
}
/*
*
Items de presentacion
*/
Gráfico No.1.14e Clase PlantillaHtml.class
59
$this->array=array();
$arrays=array();
$this->izquierdo=2;
$this->aplicacion=1;
$this->ok=0;
$oks=0;
$Mitranopciones= new cls_tranopciones();
$Mitranopciones->consulta_margen($this->izquierdo,$this->aplicacion,$this->array,$this->ok);
if ($this->ok==1)
{
$i=0;
while($i<count($this->array))
{
/*Estas tabla corresponde al cuadro_titulo de las subopciones
de nuestro portal que se encuentra en nuestra plantillahtml*/
?>
<table border ='0' cellspacing='0' width=100>
<TBODY>
<TR>
<td >
<IMG src="img/subtitulo.jpg" width="145" height="24" border=0>
</TD>
</TR></TBODY></TABLE>
<?php
$j++;
}
if(isset($_SESSION['usuario']))
{
?>
<TABLE cellSpacing=0 cellPadding=0 width="146"
border=0>
<TBODY>
<TR class=menu_option
onmouseover="this.className='menu_option_over'"
style="CURSOR: pointer; PADDING-TOP: 2px"
onclick="document.location='<?php echo
config_live_site."orden_suscripcion.php";?>'"
onmouseout="this.className='menu_option'">
<TD width=10 height=20></TD>
<TD class=linksec height=20>.:Pago Suscripcion</TD>
</TR>
</TBODY>
</TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="146"
border=0>
<TBODY>
<TR>
<TD bgColor=#ffffff
height=1></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="146"
border=0>
<TBODY>
<TR class=menu_option
onmouseover="this.className='menu_option_over'"
style="CURSOR: pointer; PADDING-TOP: 2px"
onclick="document.location='<?php echo
config_live_site."cargar_archivos.php";?>'"
Gráfico No.1.14f Clase PlantillaHtml.class
60
onmouseout="this.className='menu_option'">
<TD width=10 height=20></TD>
<TD class=linksec height=20>.:Subir Archivo</TD>
</TR>
</TBODY>
</TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="146"
border=0>
<TBODY>
<TR>
<TD bgColor=#ffffff
height=1></TD></TR></TBODY></TABLE>
<?php
}
}
echo "<br>";
$arrays=array();
$i++;
}
}
//********************************************************************************************
if(!isset($_SESSION['usuario']))
{
echo "<SCRIPT Language=Javascript SRC='jscript/md5.js'></SCRIPT>";
echo "<form action='".config_live_site."login.php'method=\"get\" enctype=\"application/x-www-form-urlencoded\"
>";
?>
<table border ='0' cellspacing='0' width=100>
<TBODY>
<TR>
<td >
<IMG src="img/subtitulo.jpg" width="145" height="24" border=0>
</TD>
</TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="146"
border=0>
<TBODY>
<TR class=menu_option
onmouseover="this.className='menu_option_over'"
style="CURSOR: pointer; PADDING-TOP: 2px"
onmouseout="this.className='menu_option'">
<TD width=10 height=20></TD>
<TD class=linksec height=20>.: Usuario</TD>
</TR>
</TBODY>
</TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="146"
border=0>
<TBODY>
<TR class=menu_option
onmouseover="this.className='menu_option_over'"
style="CURSOR: pointer; PADDING-TOP: 2px"
onmouseout="this.className='menu_option'">
<TD width=10 height=20></TD>
<TD class=linksec height=20><?php echo "<input type=\"text\" id=\"username\" name=\"username\"
class='layout_peq' size=\"22\" maxlength=\"45\">"; ?>
</TD>
</TR>
</TBODY>
</TABLE>
Gráfico No.1.14g. Clase PlantillaHtml.class
61
<TABLE cellSpacing=0 cellPadding=0 width="146"
border=0>
<TBODY>
<TR class=menu_option
onmouseover="this.className='menu_option_over'"
style="CURSOR: pointer; PADDING-TOP: 2px"
onmouseout="this.className='menu_option'">
<TD width=10 height=20></TD>
<TD class=linksec height=20>.: Contraseña </TD>
</TR>
</TBODY>
</TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="146"
border=0>
<TBODY>
<TR class=menu_option
onmouseover="this.className='menu_option_over'"
style="CURSOR: pointer; PADDING-TOP: 2px"
onmouseout="this.className='menu_option'">
<TD width=10 height=20></TD>
<TD class=linksec height=20><?php echo "<input type=\"password\" id=\"password\" class='layout_peq'
name=\"password\" size=\"22\" maxlength=\"45\" onKeyUp=md5password.value=(hex_md5(password.value)) >"; ?></TD>
</TR>
</TBODY>
</TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="146"
border=0>
<TBODY>
<TR class=menu_option
onmouseover="this.className='menu_option_over'"
style="CURSOR: pointer; PADDING-TOP: 2px"
onmouseout="this.className='menu_option'">
<TD width=10 height=20></TD>
<TD class=linksec height=20><?php echo "       <input
type=\"submit\" name=\"Submit\" value=\"Ingresar\" class='layout_peq' >";?></TD>
</TR>
</TBODY>
</TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="146"
border=0>
<TBODY>
<TR class=menu_option
onmouseover="this.className='menu_option_over'"
style="CURSOR: pointer; PADDING-TOP: 2px"
onclick="document.location='<?php echo config_live_site."formulario_registro.php";?>'"
onmouseout="this.className='menu_option'">
<TD width=10 height=20></TD>
<TD class=linksec height=20> <FONT color=blue>.: Registrate AQUI </FONT></TD>
</TR>
</TBODY>
</TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="146"
border=0>
<TBODY>
<TR>
<TD bgColor=#ffffff height=1></TD></TR></TBODY></TABLE>
<?php
echo "<input type=\"hidden\" id=\"md5password\" class='layout_peq' name=\"md5password\" size=\"10\" >";
echo "</form>";
}
Gráfico No.1.14h. Clase PlantillaHtml.class
62
//*************************************CUADRO TOP *****************************************
if ($this->Titulo!='Top')
{
$mytranstop5= new cls_transproducto_publicado(); // crea un objeto
cls_transproducto_publicado
$mytranstop5->consulta_vectorTOP5($this->array,$this->ok);// consulta
If ($this->ok==1)
{
$i=0;
$x=0;
?>
<table border ='0' cellspacing='0' width=100>
<TBODY>
<TR>
<td >
<IMG src="img/subtitulo.jpg" width="145"
height="24" border=0>
</TD>
</TR></TBODY></TABLE>
<?php
while($i<count($this->array))
{
?>
<TABLE cellSpacing=0 cellPadding=0 width="146"
border=0>
<TBODY>
<TR class=menu_option2
onmouseover="this.className='menu_option_over2'"
style="CURSOR: pointer; PADDING-TOP: 2px"
onclick="document.location='<?php echo
config_live_site."categoria_cont.php?id_cont=".$this->array[$i]->getClave()."&";?>'"
onmouseout="this.className='menu_option2'">
<TD width=10 height=20></TD>
<TD class=linksec2 height=20>.:<?php echo $this>array[$i]->getDescripcion();?></TD>
</TR>
</TBODY>
</TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="146"
border=0>
<TBODY>
<TR>
<TD bgColor=#ffffff
height=1></TD></TR></TBODY></TABLE>
<?php
$i++;
}
}
else
{
$mybox = new CuadroHtml('TOP',150,"3",1);
$mybox->Agregar(0,0,"No existe Top ");
$mybox->MostrarHTML();
}
}
}
Gráfico No.1.14i. Clase PlantillaHtml.class
63
function SeccionDerechaMostrarHtml()
{
//**************************************BUSQUEDA
****************************************************
echo "<form name='buscar' action='".config_live_site."respuesta_bus.php' method='GET' enctype='multipart/formdata'>";
$this->array=array();
$this->ok=0;
$i=0;
$mytranscategoria= new cls_transcategoria(); // crea un objeto cls_transcategoria
$mytranscategoria->consulta_categoria($this->array,$this->ok); // llama a consulta_categoria
if($this->ok==1)
{
$var_cadena="<select name='categoria' id='categoria' class='layout_peq' > ";
$var_cadena.="<option value='0'> Todos </option>";
?>
<table border ='0' cellspacing='0' width=100>// crea tabla
<TBODY>
<TR>
<td >
<IMG src="img/subtitulo.jpg" width="145" height="24" border=0>
</TD>
</TR></TBODY></TABLE>
<?php
while ($i<count($this->array))
{
$var_cadena.="<option value='".$this->array[$i]->getCodigo()."'> <font
color=\"#005E00\" size=\"-6\"> ".$this->array[$i]->getDescripcion()."</font></option>";
$i++;
}
$var_cadena.="</font></select>";
}
?>
<TABLE cellSpacing=0 cellPadding=0 width="146"
border=0>
<TBODY>
<TR class=menu_option
onmouseover="this.className='menu_option_over'"
style="CURSOR: pointer; PADDING-TOP: 2px"
onmouseout="this.className='menu_option'">
<TD width=10 height=20></TD>
<TD class=linksec height=20>.: Categoria </TD>
</TR>
</TBODY>
</TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="146"
border=0>
<TBODY>
<TR class=menu_option
onmouseover="this.className='menu_option_over'"
style="CURSOR: pointer; PADDING-TOP: 2px"
onmouseout="this.className='menu_option'">
<TD width=10 height=20></TD>
<TD class=linksec height=20><?php echo $var_cadena;?></TD>
</TR>
</TBODY>
</TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="146" // crea tabla de separacion
border=0>
<TBODY>
<TR class=menu_option
Gráfico No.1.14j. Clase PlantillaHtml.class
64
onmouseover="this.className='menu_option_over'"
style="CURSOR: pointer; PADDING-TOP: 2px"
onmouseout="this.className='menu_option'">
<TD width=10 height=20></TD>
<TD class=linksec height=20>.: Titulo </TD>
</TR>
</TBODY>
</TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="146"
border=0>
<TBODY>
<TR class=menu_option
onmouseover="this.className='menu_option_over'"
style="CURSOR: pointer; PADDING-TOP: 2px"
onmouseout="this.className='menu_option'">
<TD width=10 height=20></TD>
<TD class=linksec height=20><?php $cad2="<input type='text' id='titulo' name='titulo' size='26'
class='layout_peq'>"; echo $cad2;?></TD>
</TR>
</TBODY>
</TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="146"
border=0>
<TBODY>
<TR class=menu_option
onmouseover="this.className='menu_option_over'"
style="CURSOR: pointer; PADDING-TOP: 2px"
onmouseout="this.className='menu_option'">
<TD width=10 height=20></TD>
<TD class=linksec height=20><?php $var_cadena="      <input
type='submit' value ='Buscar' class='layout_peq'>"; echo $var_cadena;?></TD>
</TR>
</TBODY>
</TABLE>
<?php
echo "</form>";
/*
* Muestra las categorias mas solicitadas
* Muestra la busqueda de productos
*/
//******************************************************CATEGORIAS***********************************
$this->ok=0;
$this->array=array(); // encera array
$mytranscategoria= new cls_transcategoria(); // crea objeto cls_transcategoria(
$mytranscategoria->consultar_solicitado($this->array,$this->ok); llama consultar_solicitado
if($this->ok===1)
{
$mybox = new CuadroHtml('CATEGORIAS',150,"3",0);
$i=0;
?>
<table border ='0' cellspacing='0' width=100>// crea tabla
<TBODY>
<TR>
<td >
<IMG src="img/subtitulo.jpg" width="145" height="24" border=0>
</TD>
</TR></TBODY></TABLE>
<?php
while($i<count($this->array))
Gráfico No.1.14k. Clase PlantillaHtml.class
65
{
?>
<TABLE cellSpacing=0 cellPadding=0 width="146"
border=0>
<TBODY>
<TR class=menu_option
onmouseover="this.className='menu_option_over'"
style="CURSOR: pointer; PADDING-TOP: 2px"
onclick="document.location='<?php echo config_live_site."categoria_det.php?categoria=".$this>array[$i]->getCodigo()."&";?>'"
onmouseout="this.className='menu_option'">
<TD width=10 height=20></TD>
<TD class=linksec height=20>.:<?php echo $this->array[$i]->getDescripcion();?></TD>
</TR>
</TBODY>
</TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="146"
border=0> // tabla de linea
<TBODY>
<TR>
<TD bgColor=#ffffff height=1></TD></TR></TBODY></TABLE>
<?php
$i++;
}
}
else
{
$mybox = new CuadroHtml('CATEGORIAS',150,"3",0);
$mybox->Agregar(0,0,"No existen categorias");
$mybox->MostrarHTML();
}
echo "<br>";
//**************************************CUADRO ULTIMOS PRODUCTOS
PUBLICADOS**************************
$this->array=array();
$this->ok=0;
$mytransproducto= new cls_transproducto_publicado(); // crea objeto transproducto_publicado
$mytransproducto->consulta_vector($this->array,$this->ok);// llama consulta_vector
if($this->ok==1)
{
$i=0;
$x=0;
?>
<table border ='0' cellspacing='0' width=100>
<TBODY>
<TR>
<td >
<IMG src="img/subtitulo.jpg" width="145" height="24" border=0>
</TD>
</TR></TBODY></TABLE>
<?php
<TABLE cellSpacing=0 cellPadding=0 width="146"
border=0>
<TBODY>
<TR class=menu_option2
onmouseover="this.className='menu_option_over2'"
style="CURSOR: pointer; PADDING-TOP: 2px"
Gráfico No.1.14l. Clase PlantillaHtml.class
66
</TBODY>
</TABLE>
<a onclick="document.location='<?php echo config_live_site."categoria_cont.php?id_cont=".$this>array[$i]->getClave()."&";?>'"
onmouseout="this.className='menu_option2'">
<TD width=10 height=20></TD>
<TD class=linksec2 height=20>.:<?php echo $this->array[$i]->getDescripcion();?></TD>
</TR>
<TABLE cellSpacing=0 cellPadding=0 width="146"
border=0>
<TBODY>
<TR>
<TD bgColor=#ffffff height=1></TD></TR></TBODY></TABLE>
<?php
$i++;
}// fin de while
}
else
{
$mybox = new CuadroHtml('ULTIMOS PRODUCTOS PUBLICADOS ',150,"3",1);
$mybox->Agregar(0,0,"No existe ultimos productos publicados");
$mybox->MostrarHTML();
}
}//fin de function SeccionDerechaMostrarHtm
//FUNCIONES COMUNES
function PreProcesoSystema()
{
// inicia las sesiones
Seccion_Star();
}
function SeccionSuperiorMostrarHtml()
{
///SI EL USUARIO HA INICIADO SESION MUESTRA LA INFO Y EL VINCULO DE CERRAR SESION
$valor=0;
if (isset($_SESSION['usuario']))
{
$usuario = $_SESSION['usuario'];
$mensaje = "Bienvenido Usuario <b>$usuario</b>,";
$myvinculo = new VinculoUrl('Cerrar Sesion',config_live_site.'logout.php');
$valor=1;
}
Else
{
$myvinculo = new VinculoUrl('Iniciar Sesion',config_live_site.'login.php');
$mensaje = "No ha iniciado sesion, ";
$valor=0;
}
echo $mensaje;
$myvinculo->Mostrar();
if ($valor==1)
{
echo " | ";
$miVinculoOpciones = new
VinculoUrl('Opciones',config_live_site.'opciones.php?user='.$usuario);
$miVinculoOpciones->Mostrar();
}
}//fin de function SeccionSuperiorMostrarHtml
Gráfico No.1.14m. Clase PlantillaHtml.class
67
function MostrarError()
{
$CodigoError=0;
$MensajeError="";
if (isset($_GET['error']))
$CodigoError=$_GET['error'];
if ($CodigoError===0) return;
///Aqui se puede poner una include y una funcion que recupere los errores por Codigo, miestras tanto
pongo un switch
switch ($CodigoError){
case "error_login":
$MensajeError="No se ha podido ingresar con este usuario y password, por
favor intente de nuevo";
break;
case "no":
$MensajeError="No se se pudo ganar la Copa";
break;
case "error_captcha":
$MensajeError="Error de captcha";
break;
}
$mybox = new CuadroHtml('Error',200,'error');
$mybox->Agregar(0,0,$MensajeError);
$mybox->MostrarHTML();
}//fin de function MostrarError
function seccioninferiormostrar()
{
$this->array=array();
$this->ok=0;
$mytransdocumento = new cls_transdocumento(); // crea un objeto new cls_transdocumento
$mytransdocumento->consultar_politicas($this->ok,$this->array );
// llama la presentacion de documentos de categoria politicas
$i=0;
$var_cadena='';
while($i<count($this->array))
{
$url="<a
href='".config_live_site."documento.php?clave=".$this->array[$i]->getClave()."'>".$this->array[$i]->getTitulo()."</a>";
$var_cadena.=$url." | ";
$i++;
}
echo $var_cadena;
}
function SeccionSuperiorCentroMostrarHtml()
{}
//FUNCION Para Heredar
function SeccionCentroMostrarHtml(){}
function PreProceso(){}
}//fin de class PlantillaHtml
?>
Gráfico No.1.14n. Clase PlantillaHtml.class
68
1.4.7 PlantillaDialogoHtml.class. php
Clase que genera la plantilla de las ventanas emergentes, que es
utilizada en los mantenimientos en la consola de administración.
Ubicación: /lib/ PlantillaDialogoHtml.php
<?php
class PlantillaDialogoHtml
{
/*
* Plantilla del cuadro de dialogo
* sirve para las ventanas de mantenimientos que esisten en
* la parte de administracion
*/
var $Titulo;
function PlantillaDialogoHtml($titulopagina)
{
$this->Titulo= $titulopagina;
$this->PreProceso();
}
function MostrarHtml()
{
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="layout.css" rel="stylesheet" type="text/css">
<title>AquiDescarga :: <?php echo $this->Titulo; ?></title><!-- titulo de la pagina -->
</head>
<body>
<table width="380" height="38" border="0">><!-- creacion de tabla-->
<tr>
<td width="374" align="center" valign="top" class="layout_cuerpocentro2">
<?php $this->SeccionCentroMostrarHtml(); ?></td> <!--llama a la funcion -->
</tr>
</table>
</body>
</html>
<?php
}//fin funcion MostrarHtml
//FUNCION Para Heredar
function SeccionCentroMostrarHtml(){}
function PreProceso(){}
}
?>
Gráfico No.1.15a. Clase PlantillaDialogoHtml.class.
69
1.4.8 cls_suscriptor. php
Clase en la cual contiene las variables del suscriptor con sus
respectivos métodos de visualización y asignación.
Ubicación: /lib/clases/ clases/suscriptor/cls_suscriptor.php
<?php class cls_suscriptor{
/*
* clase que contiene las variables
* y atributos de dichas variables.
* en esta clase sera instanciada
* a lo largo del proyecto en diferentes
* oprtunidades
*/
/*
* declaracion de variables.
*/
public static $alias;
public static $email;
public static $nombre;
public static $contrasena;
public static $pais;
public static $idioma;
public static $estado;
public static $apellido;
public static $entidad;
/*
* funcion que retorna valor
*/
public function getAlias()
{
return $this->alias;
}
/*
* asignacion de valores a las variable de clase
*/
function setAlias($set_alias="")
{
$this->alias=$set_alias;
}
/*
* funcion que retorna valor
*/
public function getEmail()
{
return $this->email;
}
/*
* asignacion de valores a las variable de clase
*/
function setEmail($set_email="")
{
$this->email=$set_email;
}
Gráfico No.1.16a. Clase cls_suscriptor
70
/*
* funcion que retorna valor
*/
public function getNombre()
{
return $this->nombre;
}
/*
* asignacion de valores a las variable de clase
*/
function setNombre($set_nombre="")
{
$this->nombre=$set_nombre;
}
/*
* funcion que retorna valor
*/
public function getContrasena()
{
return $this->contrasena;
}
/*
* asignacion de valores a las variable de clase
*/
function setContrasena($set_contrasena="")
{
$this->contrasena=$set_contrasena;
}
/*
* funcion que retorna valor
*/
public function getPais()
{
return $this->pais;}
public function getEntidad()
{
return $this->entidad;
}
/*
* asignacion de valores a las variable de clase
*/
function setEntidad($set_entidad=0)
{
$this->entidad = $set_entidad;
}
/*
* asignacion de valores a las variable de clase
*/
function setPais($set_pais=0)
{
$this->pais=$set_pais;
}
/*
* funcion que retorna valor
*/
Gráfico No.1.16b. Clase cls_suscriptor
71
public function getIdioma()
{
return $this->idioma;
}
/*
* asignacion de valores a las variable de clase
*/
function setIdioma($set_idioma=0)
{
$this->idioma = $set_idioma;
}
/*
* funcion que retorna valor
*/
public function getEstado()
{
return $this->estado;
}
/*
* asignacion de valores a las variable de clase
*/
function setEstado($set_estado="A")
{
$this->estado = $set_estado;
}
/*
* funcion que retorna valor
*/
public function getApellido()
{
return $this->apellido;
}
/*
* funcion que retorna valor
*/
function setApellido($set_apellido="")
{
$this->apellido = $set_apellido;
}
/*
* funcion que retorna valor
*/
public function getEntidad()
{
return $this->entidad;
}
/*
* asignacion de valores a las variable de clase
*/
function setEntidad($set_entidad=0)
{
$this->entidad = $set_entidad;
}
}?>
Gráfico No.1.16c. Clase cls_suscriptor
72
1.4.9 cls_sqlsuscriptor.php
Clase que contiene los métodos de sentencias para realizar el acceso
de la base de datos.
Ubicación: /lib/clases/ clases/suscriptor/cls_sqlsuscriptor.php
<?php class cls_sqlsuscriptor
{
/*
* clase que realiza todas las transacciones
* en la base de mysql
* es decir aqui se generan las
* sentencias en lenguaje sql que afectan
* a la base de datos
*/
var $link;
function __construct(DB_mysql $DB_mysql)
{
// se asigna la conexion de la base
$this->link=$DB_mysql;
}
function insertar(cls_suscriptor $cls_suscriptor_)//ok
{
/*
* funcion que recibe un objeto para luego
* el contenidos de dicho objeto sea ingresado
* a la data
*/
$ssql="insert into
tbpv_suscriptor(wsu_alias,wsu_email,wsu_nombre,wsu_contrasena,wsu_pais,wsu_idioma,wsu_estado,w
su_apellido) values (";
$ssql.= "'".$cls_suscriptor_->getAlias()."'";
$ssql.= ",'".$cls_suscriptor_->getEmail()."'";
$ssql.= ",'".$cls_suscriptor_->getNombre()."'";
$ssql.= ",'".$cls_suscriptor_->getContrasena()."'";
$ssql.= ", ".$cls_suscriptor_->getPais();
$ssql.= ", ".$cls_suscriptor_->getIdioma();
$ssql.= ",'".$cls_suscriptor_->getEstado()."'";
$ssql.= ",'".$cls_suscriptor_->getApellido()."');";
if (!@mysql_query($ssql))// ejecutar la sentencia
{
die('Could not connect: '.mysql_error());
return 0;
}
return 1; // retorna 1 si es correcto
}
Gráfico No.1.17a. Clase cls_sqlsuscriptor
73
function validar_exite( $clave)
{
/* verifica si el usuario existe en determinado
* pais*/
$ssql="select * from tbpv_suscriptor, tbpv_pais where ";
$ssql.=" wsu_pais=wpa_codigo ";
$ssql.=" and wpa_codigo =".$clave;
$rs=mysql_query($ssql);// ejecuta la sentencia
if (!$rs)
{
return 0;
}
else
{
if (mysql_num_rows($rs)>0)
{
return 1;// verdadero
}
else
{
return 0; // falso
}
}
}
function validar_exite_idioma( $clave)//ok
{
/* verifica si se esta usando determinado idoma*/
$ssql="select * from tbpv_suscriptor, tbpv_idioma where ";
$ssql.=" wsu_idioma=wid_codigo ";
$ssql.=" and wid_codigo =".$clave;
$rs=mysql_query($ssql);
if (!$rs)
{
return 0;
}
else
{if (mysql_num_rows($rs)>0)
{
return 1; // verdadero
}
else
{
return 0; // falso
}}
}
function modificar(cls_suscriptor $cls_suscriptor_)
{
/* Funcion que recibe un objeto con dichos valores que contegan este objeto
* seran modificado en la base de datos /
$ssql="Update tbpv_suscriptor";
$ssql.= " set wsu_email ='".$cls_suscriptor_->getEmail()."'";
$ssql.= " , wsu_nombre ='".$cls_suscriptor_->getNombre()."'";
$ssql.= " , wsu_contrasena ='".$cls_suscriptor_->getContrasena()."'";
$ssql.= " , wsu_pais =".$cls_suscriptor_->getPais();
$ssql.= " , wsu_idioma =".$cls_suscriptor_->getIdioma();
$ssql.= " , wsu_apellido ='".$cls_suscriptor_->getApellido()."'";
$ssql.= " , wsu_estado ='".$cls_suscriptor_->getEstado()."'";
$ssql.= " where wsu_alias = '".$cls_suscriptor_->getAlias()."'";
if (!@mysql_query($ssql))// ejecuta la sentencia
{
die('Could not connect: '.mysql_error());
return 0;// falso
}
return 1; // verdadero
}
Gráfico No.1.17b. Clase cls_sqlsuscriptor
74
function eliminar(cls_suscriptor $cls_suscriptor_)
{
/*
* funcion que elimina determinado registro
*/
$ssql ="Delete from tbpv_suscriptor";
$ssql.=" where wsu_alias = '".$cls_suscriptor_->getAlias()."'";
if (!@mysql_query($ssql))
{
die('Could not connect: '.mysql_error());
return 0;
}
return 1;
}
function consulta_u(cls_suscriptor &$cls_suscriptor_, &$ok)
{
/*
* funcion que recibe un objeto los datos nesesarios
* para luego completar sus datos mediante la consulta de determinado
* registro.
*/
$ssql="Select * from tbpv_suscriptor";
$ssql.=" where wsu_alias = '".$cls_suscriptor_->getAlias()."'";
$rs=mysql_query($ssql);// ejecutar sentencia
if (!$rs)
{
die('Could not connect: '.mysql_error());// error
return 0;
}
else
{
if (mysql_num_rows($rs)<>0)
{
while($row=mysql_fetch_array($rs,MYSQL_ASSOC))
{
// asignacion de atributos
$cls_suscriptor_->setEmail($row["wsu_email"]);
$cls_suscriptor_->setNombre($row["wsu_nombre"]);
$cls_suscriptor_>setContrasena($row["wsu_contrasena"]);
$cls_suscriptor_->setPais($row['wsu_pais']);
$cls_suscriptor_->setIdioma($row['wsu_idioma']);
$cls_suscriptor_->setEstado($row['wsu_estado']);
$cls_suscriptor_->setApellido($row['wsu_apellido']);
}
mysql_free_result($rs);
$ok=1;// verdadero
}
else
{
$ok=0; // falso
}
}
}
function consulta_u_activos(cls_suscriptor &$cls_suscriptor_, &$ok)
{
/*
* consulta de registros activos
*/
$ssql="Select * from tbpv_suscriptor";
$ssql.=" where wsu_alias = '".$cls_suscriptor_->getAlias()."'";
$ssql.=" and wsu_estado='A'";
$rs=mysql_query($ssql);// ejecutar sentencias
if (!$rs)
{
die('Could not connect: '.mysql_error());
return 0;
}
Gráfico No.1.17c. Clase cls_sqlsuscriptor
75
else
{
if (mysql_num_rows($rs)<>0)
{
while($row=mysql_fetch_array($rs,MYSQL_ASSOC))
{
// asignacion de datos recupardos de la data
$cls_suscriptor_->setEmail($row["wsu_email"]);
$cls_suscriptor_->setNombre($row["wsu_nombre"]);
$cls_suscriptor_>setContrasena($row["wsu_contrasena"]);
$cls_suscriptor_->setPais($row['wsu_pais']);
$cls_suscriptor_->setIdioma($row['wsu_idioma']);
$cls_suscriptor_->setEstado($row['wsu_estado']);
$cls_suscriptor_->setApellido($row['wsu_apellido']);
}
mysql_free_result($rs);
$ok=1;
}
else
{
$ok=0;
}
}
}
function existe_registro(cls_suscriptor $cls_suscriptor_)
{
/*
*funcion que verifica la existencia del dato en esta tabla
*/
$valor=0;
$ssql ="SELECT count(wsu_alias) as existe FROM tbpv_suscriptor ";
$ssql.=" where wsu_alias = '".$cls_suscriptor_->getAlias()."'";
$rs=mysql_query($ssql);// ejecucion
if (!$rs)
{
die('Could not connect:'.mysql_error());
}
else
{
if(mysql_num_rows($rs)>0)
{
while ($row = mysql_fetch_array($rs))
{
$valor=$row['existe'];// asigna resultado
}
mysql_free_result($rs);
}
}
return $valor;
}
function existe_usuario_clave(cls_suscriptor $cls_suscriptor_)
{
/*
* sentencia que verifica la existencia de alias y su respectiva
* contraseña.
*/
$valor=0;
$ssql = "SELECT count(wsu_alias) as existe FROM tbpv_suscriptor ";
$ssql.= " where wsu_alias = '".$cls_suscriptor_->getAlias()."'";
$ssql.= " and wsu_contrasena='".md5($cls_suscriptor_->getContrasena())."'";
Gráfico No.1.17d. Clase cls_sqlsuscriptor
76
$rs=mysql_query($ssql);
if (!$rs)
{
die('Could not connect:'.mysql_error());
}
else
{
if(mysql_num_rows($rs)>0)
{
while ($row = mysql_fetch_array($rs))
{
$valor=$row['existe'];// asignacion de resultado
}
mysql_free_result($rs);
}
}
return $valor;
}
function actualizar_entidad(cls_suscriptor $cls_suscriptor_,&$ok)//ok
{
/*
* funcion que verifica si a dicho suscriptor
* se le ha cancelado su suscripcion.
*/
$ssql="Select * from tbpv_tarifa_suscriptor";
$ssql.=" where wtu_alias = '".$cls_suscriptor_->getAlias()."'";
$ssql.=" and wtu_fecha_fin >= Curdate()";
$rs=mysql_query($ssql);
if(mysql_num_rows($rs)>0)
{
/*
* actualizacion del suscriptor
*/
$ssql="Update tbpv_suscriptor";
$ssql.=" set wsu_entidad=".$cls_suscriptor_->getEntidad();
$ssql.=" where wsu_alias='".$cls_suscriptor_->getAlias()."'";
if (!@mysql_query($ssql))
{
die('Could not connect:'.mysql_error());
}
$ok=0;
}
else{
$ok=1;}
}
}?>
Gráfico No.1.17e. Clase cls_sqlsuscriptor
77
1.4.10 cls_transsuscriptor
Clase que contiene los métodos que llaman a procedimientos o
funciones de
Ubicación: /lib/clases/ clases/suscriptor/cls_transsuscriptor.php
<?php class cls_transsuscriptor
{
/*
* clase que contiene los metodos que llaman los metodos
* de la clase sqlsuscriptor.
*/
function __construct()
{
}
function insertar_p(cls_suscriptor $cls_suscriptor_)
{
$link=new DB_mysql();
// crea un objeto tipo DB_mysql
$mysqlsuscriptor= new cls_sqlsuscriptor($link);// crea un objeto tipo
cls_sqlsuscriptor
/*
* llama al metodo para insertar
*/
$res=$mysqlsuscriptor->insertar($cls_suscriptor_);
if ($res=1)
{
$link->__sleep();// cierra conexion
return 1; // verdadero
}
else
{
$link->__sleep();// cierra conexion
return 0;// falso
}
}
function eliminar_p(cls_suscriptor $cls_suscriptor_)
{
$link=new DB_mysql(); // crea un objeto tipo DB_mysql
$mysqlsuscriptor= new cls_sqlsuscriptor($link); // crea un objeto tipo
cls_sqlsuscriptor
/*
* llama al metodo para eliminar registro
*/
$res=$mysqlsuscriptor->eliminar($cls_suscriptor_);
if ($res=1)
{
$link->__sleep();// cierra conexion
return 1;
}
else
{
$link->__sleep();// cierra conexion
return 0;
}
}
Gráfico No.1.18a. Clase cls_transsuscriptor
78
function consulta_u(cls_suscriptor &$cls_suscriptor_, &$ok)
{
/*
* llama a metodos de cls_sqlsuscriptor
*/
$link=new DB_mysql();
// crea un objeto tipo DB_mysql
$mysqlsuscriptor= new cls_sqlsuscriptor($link);// crea un objeto tipo
cls_sqlsuscriptor
$mysqlsuscriptor->consulta_u($cls_suscriptor_,$ok);// llama a metodo
$link->__sleep();// cierra conexion
}
function consulta_u_activos(cls_suscriptor &$cls_suscriptor_, &$ok)
{
/*
* llama a metodos de cls_sqlsuscriptor
*/
$link=new DB_mysql();
// crea un objeto tipo DB_mysql
$mysqlsuscriptor= new cls_sqlsuscriptor($link); // crea un objeto tipo
cls_sqlsuscriptor
$mysqlsuscriptor->consulta_u_activos($cls_suscriptor_,$ok);// llama a metodo
$link->__sleep();// cierra conexion
}
function consulta_vector(&$array,&$ok)
///ok
{
/*
* llama a metodos de cls_sqlsuscriptor
*/
$link=new DB_mysql();
$mysqlsuscriptor= new cls_sqlsuscriptor($link);
$mysqlsuscriptor->consulta_vector($array,$ok);// llama a metodo
$link->__sleep();// cierra conexion
}
function insertar(&$array)
{
/*
* llama a metodos de cls_sqlsuscriptor
*/
$link=new DB_mysql(); // crea un objeto tipo DB_mysql
$mysqlsuscriptor= new cls_sqlsuscriptor($link);// crea un objeto tipo
cls_sqlsuscriptor
$res=$mysqlsuscriptor->insertar($cls_suscriptor_);// llama a metodo
if ($res=1)
{
$link->__sleep();// cierra conexion
return 1;
}
else
{
$link->__sleep();// cierra conexion
return 0;
}
}
Gráfico No.1.18b Clase cls_transsuscriptor
79
function existe(cls_suscriptor $cls_suscriptor_)
{
/*
* llama a metodos de cls_sqlsuscriptor
*/
$res=0;// encerar
$link=new DB_mysql();// crea un objeto tipo DB_mysql
$mysqlsuscriptor= new cls_sqlsuscriptor($link);// crea un objeto tipo
cls_sqlsuscriptor
$res=$mysqlsuscriptor->existe_registro($cls_suscriptor_);// llama a metodo
$link->__sleep();// cierra conexion
return $res;// retorna valor
}
function validar_exite($clave)
{
/*
* llama a metodos de cls_sqlsuscriptor
*/
$link=new DB_mysql();
$mysqlsuscriptor= new cls_sqlsuscriptor($link);
$res=$mysqlsuscriptor->validar_exite($clave);
if ($res==1)
{
$link->__sleep();// cierra conexion
return 1;
}
else
{
$link->__sleep();// cierra conexion
return 0;
}
}
function validar_exite_idioma($clave)//ok
{
/*
* llama a metodos de cls_sqlsuscriptor
*/
$link=new DB_mysql();
// crea un objeto tipo DB_mysql
$mysqlsuscriptor= new cls_sqlsuscriptor($link);// crea un objeto tipo
cls_sqlsuscriptor
$res=$mysqlsuscriptor->validar_exite_idioma($clave);// llama a metodo
if ($res==1)
{
$link->__sleep();// cierra conexion
return 1;
}
else
{
$link->__sleep();// cierra conexion
return 0;
}
}
Gráfico No.1.18c. Clase cls_transsuscriptor
80
function existe_usuario_clave(cls_suscriptor $cls_suscriptor_)
{
/*
* llama a metodos de cls_sqlsuscriptor
*/
$res=0;
$link=new DB_mysql(); // crea un objeto tipo DB_mysql
$mysqlsuscriptor= new cls_sqlsuscriptor($link);// crea un objeto
tipo cls_sqlsuscriptor
$res=$mysqlsuscriptor->existe_usuario_clave($cls_suscriptor_);//
llama a metodo
$link->__sleep();// cierra conexion
return $res;// retorna
}
function modificar_clave(cls_suscriptor $cls_suscriptor_)
{
/*
* llama a metodos de cls_sqlsuscriptor
*/
$link=new DB_mysql();
// crea un objeto tipo DB_mysql
$mysqlsuscriptor= new cls_sqlsuscriptor($link);// crea un objeto
tipo cls_sqlsuscriptor
$res=$mysqlsuscriptor->modificar_clave($cls_suscriptor_);// llama a
metodo
if ($res==1)
{
$link->__sleep();// cierra conexion
return 1;
}
else
{
$link->__sleep();// cierra conexion
return 0;
}
}
Gráfico No.1.18d. Clase cls_transsuscriptor
81
1.4.11 cls_producto_publicado.php
Clase en la cual contiene las variables de producto_publicado con sus
respectivos métodos de visualización y asignación.
Ubicación: /lib/clases/
clases/producto_publicado/cls_producto_publicado.php
<?php class cls_producto_publicado
{
/*
* variables y atributos de clase
* sufijo get= retorno de dichos valores
* sufigo set= reseccion de valores para la variable
* de clase
*/
public static $clave;
public static $codigo;
public static $descripcion;
public static $precio;
public static $categoria;
public static $fecha_publicacion;
public static $direccion;
public static $direccion_resumen;
public static $numero_descarga;
public static $precio_publico;
public static $estado;
public static $alias;
public static $tipo_motivo;
public static $resumen;
public static $archivo;
public static $archivo_resumen;
public static $tamanio;
public static $tamanio1;
public static $tipo_archivo;
public static $tipo_resumen;
public static $nombre_archivo;
public static $nombre_resumen;
public static $porcentaje;
public static $oferta;
public static $num_descarga;
public function getClave()
{
return $this->clave;
}
function setClave($set_clave=0)
{
$this->clave=$set_clave;
}
public function getCodigo()
{
return $this->codigo;
}
Gráfico No.1.19a. Clase cls_Producto_publicado
82
function setCodigo($set_codigo)
{
$this->codigo = $set_codigo;
}
public function getDescripcion()
{
return $this->descripcion;
}
function setDescripcion($set_descripcion="")
{
$this->descripcion= $set_descripcion;
}
public function getPrecio()
{
return $this->precio;
}
function setPrecio($set_precio=0)
{
$this->precio = $set_precio;
}
public function getCategoria()
{
return $this->categoria;
}
function setCategoria($set_categoria=0)
{
$this->categoria = $set_categoria;
}
public function getFecha_publicacion()
{
return $this->fecha_publicacion;
}
function setFecha_publicacion($set_fecha_publicacion=0)
{
$this->fecha_publicacion=$set_fecha_publicacion;
}
public function getDireccion()
{
return $this->direccion;
}
function setDireccion($set_direccion="")
{
$this->direccion=$set_direccion;
}
public function getDireccion_resumen()
{
return $this->direccion_resumen;
}
function setDireccion_resumen($set_direccion_resumen="")
{
$this->direccion_resumen=$set_direccion_resumen;
}
public function getNumero_descarga()
{
return $this->numero_descarga;
}
Gráfico No.1.9b. Clase cls_Producto_publicado.php
83
function setNumero_descarga($set_numero_descarga=0)
{
$this->numero_descarga=$set_numero_descarga;
}
public function getPrecio_publico()
{
return $this->precio_publico;
}
function setPrecio_publico($set_precio_publico=0)
{
$this->precio_publico=$set_precio_publico;
}
public function getEstado()
{
return $this->estado;
}
function setEstado($set_estado="A")
{
$this->estado=$set_estado;
}
public function getAlias()
{
return $this->alias;
}
function getTipo_motivo()
{
return $this->tipo_motivo;
}
function setTipo_motivo($set_tipo_motivo="")
{
$this->tipo_motivo=$set_tipo_motivo;
}
//Por motivo de espacio no se coloco el resto de codigo.
Gráfico No.1.19c. Clase cls_Producto_publicado.
84
1.4.12 cls_sqlproducto_publicado
Ubicación: /lib/clases/
clases/producto_publicado/cls_sqlproducto_publicado.php
<?php
class cls_sqlproducto_publicado
{
/*
* clase que contiene las sentecias
* de acceso a la data.
*/
var $link;
// constructor
function __construct(DB_mysql $DB_mysql)
{
$this->link=$DB_mysql;
}
//funcion que modifica los datos del contenido por el administrador
function admin_modificar(cls_producto_publicado $myproducto)
{
$ssql=" Update tbpv_producto_publicado";
$ssql.= " set wpp_estado=".$myproducto->getEstado();
$ssql.= ", wpp_resumen='".$myproducto->getResumen()."'";
$ssql.= ", wpp_oferta='".$myproducto->getOferta()."'";
$ssql.= ", wpp_porcentaje=".$myproducto->getPorcentaje();
$ssql.= " where wpp_clave =".$myproducto->getClave();
if (!@mysql_query($ssql))
{
die('Could not connect: '.mysql_error());
return 0;
}
return 1;
}
// modifica los datos por el suscriptor
function admin_modificar_usuario(cls_producto_publicado $myproducto)//ok
{
$ssql=" Update tbpv_producto_publicado";
$ssql.= " set wpp_resumen='".$myproducto->getResumen()."'";
$ssql.= ", wpp_precio=".$myproducto->getPrecio();
$ssql.= ", wpp_precio_publico=".$myproducto->getPrecio_publico();
$ssql.= " where wpp_clave =".$myproducto->getClave();
if (!@mysql_query($ssql))
{
die('Could not connect: '.mysql_error());
return 0;
}
return 1;
}
Gráfico No.1.20a. Clase cls_sqlProducto_publicado
85
/*
*valida los productos para el suscriptor
*/
function validar_producto_sql($usuario,$archivo)
{
$ssql =" select * from tbpv_producto_publicado, tbpv_tarifa_suscriptor";
$ssql.=" where wpp_alias = wtu_alias and wpp_alias='".$usuario."'";
$ssql.=" and wtu_fecha_inicial <= CURDATE()";
$ssql.=" and wtu_fecha_fin > CURDATE()";
$ssql.=" and wpp_nombre_archivo='".$archivo."'";
$rs=mysql_query($ssql);
if (!$rs)
{
return 0;
}
else
{
if (mysql_num_rows($rs)>0)
{
return 1;
}
else
{
return 0;
}
}
}
/* valida si existe una clave del producto*/
function validar_exite($clave)
{
$ssql=" select * from tbpv_producto_publicado, tbpv_motivo_rechazo
$ssql.=" wtr_codigo = wpp_tipo_motivo";
$ssql.=" and wtr_codigo =".$clave;
$rs=mysql_query($ssql);
if (!$rs)
{
return 0;
}
else
{
if (mysql_num_rows($rs)>0)
{
return 1;//verdadero
}
else
{
return 0;//false
}
}
}
function insertar( cls_producto_publicado &$myproducto)
{
/*
* funcion que recibe un objeto para luego
* el contenidos de dicho objeto sea ingresado
* a la data
*/
////////////GUARDAR ARCHIVO EN PRODUCTOS PUBLICADOS ///////////////////////////
// calcula el codigo que le corresponde
$var_codigo;
$var_secuencia;
$ok=0;
Gráfico No.1.20b. Clase cls_sqlProducto_publicado
where ";
86
$ssql=" Select max(wpp_clave) + 1 as secuencia ";
$ssql.=" from tbpv_producto_publicado ";
$rs=mysql_query($ssql);
if (!$rs)
{
$var_secuencia=1;
die('Mensaje'. mysql_error());
}
else
{
if(mysql_num_rows($rs)>0)
{
while($row=mysql_fetch_array($rs,MYSQL_ASSOC))
{
if($row["secuencia"] == NULL)
{
$var_secuencia=1;
}
else
{$var_secuencia=$row["secuencia"];}// asignacion de secuencia
}
}
}
$myproducto->setClave($var_secuencia);
// realiza la insersion
$ssql="insert into tbpv_producto_publicado ";
$ssql.= " ( wpp_clave, wpp_codigo , wpp_descripcion
, wpp_precio
, wpp_categoria ";
$ssql.= " , wpp_fecha_publicacion, wpp_direccion
, wpp_direccion_resumen
, wpp_numero_descarga , wpp_precio_publico";
$ssql.= " , wpp_estado
, wpp_alias
, wpp_tipo_motivo
, wpp_resumen";
$ssql.= " , wpp_tm_archivo
, wpp_tm_resumen ";
$ssql.= " , wpp_tipo_archivo
, wpp_tipo_resumen
, wpp_nombre_archivo ,
wpp_nombre_resumen ";
$ssql.= ") values (";
$ssql.= $var_secuencia;
$var_codigo=str_repeat('0',5-strlen($myproducto->getCategoria()));
$var_codigo.=$myproducto->getCategoria().str_repeat('0',6strlen($var_secuencia));
$var_codigo.=$var_secuencia;
$ssql.=",'".$var_codigo;
$ssql.= "' ,'".$myproducto->getDescripcion()."'";
$ssql.= " , ".$myproducto->getPrecio();
;
$ssql.= " , ".$myproducto->getCategoria();
$ssql.= " ,".$myproducto->getFecha_publicacion();
$ssql.= " ,'".$myproducto->getDireccion()."'";
$ssql.= " ,'".$myproducto->getDireccion_resumen()."'";
$ssql.= " , ".$myproducto->getNumero_descarga();
$ssql.= " , ".$myproducto->getPrecio_publico();
$ssql.= " ,".$myproducto->getEstado()."";
$ssql.= " ,'".$myproducto->getAlias()."'";
$ssql.= " , ".$myproducto->getTipo_motivo();
$ssql.= " , '".$myproducto->getResumen()."'";
$ssql.= " , ".$myproducto->getTamanio();
$ssql.= " , ".$myproducto->getTamanio1();
$ssql.= " , '".$myproducto->getTipo_archivo()."'";
$ssql.= " , '".$myproducto->getTipo_resumen()."'";
$ssql.= " , '".$myproducto->getNombre_archivo()."'";
$ssql.= " , '".$myproducto->getNombre_resumen()."'";
$ssql.= "
); ";
if (!@mysql_query($ssql))
{
die('Could not connect: '.mysql_error());
return 0;
}
Gráfico No.1.20c. Clase cls_sqlProducto_publicado
87
else
{
//si la actualizacion en la base fue correcta se cambia de nombre al
archivo por el
// conformado del codigo
rename($myproducto->getDireccion().$myproducto>getNombre_archivo(),$myproducto->getDireccion().$var_codigo.".pdf");
if($myproducto->getTamanio1()<>0)
{
rename($myproducto->getDireccion_resumen().$myproducto>getNombre_resumen(),$myproducto->getDireccion_resumen().$var_codigo.".pdf");
}
return 1;
}
}
function modificar(cls_producto_publicado $myproducto)
{
/*
* Funcion que recibe un objeto con dichos valores que contegan este objeto
* seran modificado en la base de datos
*/
$ssql="Update tbpv_producto_publicado";
$ssql= $ssql."set wpp_codigo='".$myproducto->getCodigo()."'";
$ssql= $ssql." , wpp_descripcion='".$myproducto->getDescripcion()."'";
$ssql= $ssql." , wpp_precio=".$myproducto->getPrecio();
$ssql= $ssql." , wpp_categoria=".$myproducto->getCategoria();
$ssql= $ssql." , wpp_fecha_publicacion='".$myproducto>getFecha_publicacion()."'";
$ssql= $ssql." , wpp_direccion='".$myproducto->getDireccion()."'";
$ssql= $ssql." , wpp_numero_descarga=".$myproducto->getNumero_descarga();
$ssql= $ssql." , wpp_precio_publico=".$myproducto->getPrecio_publico();
$ssql= $ssql." , wpp_estado='".$myproducto->getEstado()."'";
$ssql= $ssql." , wpp_alias='".$myproducto->getAlias()."'";
$ssql= $ssql." where wpp_clave ='".$myproducto->getClave()."'";
if (!@mysql_query($ssql))
{
die('Could not connect: '.mysql_error());
return 0;
}
return 1;
}
function eliminar(cls_producto_publicado $myproducto)
{
/*
* llama al metodo para eliminar registro
*/
$ssql="Delete from tbpv_producto_publicado";
$ssql= $ssql." where wpp_clave ='".$myproducto->getClave()."'";
if (!@mysql_query($ssql))
{
die('Could not connect: '.mysql_error());
return 0;
}
return 1;
}
Gráfico No.1.20d. Clase cls_sqlProducto_publicado
88
function validar_id($id)//ok
{
/*
* valida la existencia del id del producto
*/
$ssql="select * from tbpv_producto_publicado ";
$ssql= $ssql." where wpp_clave = ".$id.";";
$rs=mysql_query($ssql);
if (!$rs)
{
return 0;
}
else
{
if (mysql_num_rows($rs)>0)
{ return 1;}
else
{return 0;}
}
}
function consulta_producto(cls_producto_publicado &$producto, &$ok)
{
/*
* Metodo que recibe una variable tipo clase y una bandera
* Consulta a la tabla tbpv_producto_publicado el precio de un producto de acuerdo a la
clave
* recibida en la variable tipo clase
*/
$ssql= " select * from tbpv_producto_publicado ";
$ssql.= " where wpp_clave = ".$producto->getClave().";";
$rs = mysql_query($ssql);
if(!$rs)
{
die('Could not connect:'.mysql_error());
}
else
{
if(mysql_num_rows($rs)>0)
{
$row = mysql_fetch_array($rs, MYSQL_ASSOC);
$producto->setCodigo($row["wpp_codigo"]);
$producto->setDescripcion($row["wpp_descripcion"]);
$producto->setPrecio($row["wpp_precio"]);
$producto->setCategoria($row["wpp_categoria"]);
$producto>setFecha_publicacion($row["wpp_fecha_publicacion"]);
$producto->setDireccion($row["wpp_direccion"]);
$producto->setNumero_descarga($row["wpp_numero_descarga"]);
$producto->setPrecio_publico($row["wpp_precio_publico"]);
$producto->setEstado($row["wpp_estado"]);
$producto->setAlias($row["wpp_alias"]);
$producto->setTipo_motivo($row["wpp_tipo_motivo"]);
$producto->setResumen($row["wpp_resumen"]);
$producto->setTamanio1($row["wpp_tm_resumen"]);
$producto->setTamanio($row["wpp_tm_archivo"]);
$producto->setPorcentaje($row["wpp_porcentaje"]);
$producto->setOferta($row["wpp_oferta"]);
$producto->setNombre_archivo($row["wpp_nombre_archivo"]);
$producto->setNombre_resumen($row["wpp_nombre_resumen"]);
$ok=1;
}
else
$ok=0;
}
}//fin de function consulta_producto
Gráfico No.1.20e. Clase cls_sqlProducto_publicado
89
function consulta_vector(&$array,&$ok)//ok
{
/*
* CONSULTA DE LO ULTIMO PUBLICADOS EN EL PORTAL
* Metodo que recibe una variable tipo array y una bandera
* Realiza:
* Consulta a la tabla tbpv_par_vizualizacion el tamaño maximo de registro para presen* ta en el cuadro de lo ultimo publicado.
* Consulta a la tabla tbpv_producto_publicado los ultimos producto publicados.
*/
$top=0;
$ssql="Select cpv_top from tbpv_par_vizualizacion";
$ssql= $ssql." where cpv_clave=3 ";
$rs=mysql_query($ssql);
if (!$rs)
{
die('Could not connect:'.mysql_error());
}
else
{
if(mysql_num_rows($rs)>0)
{
while ($row = mysql_fetch_array($rs, MYSQL_ASSOC))
{
$top=$row['cpv_top'];
}
}
}
$i=0;
$ssql= " select * from tbpv_producto_publicado";
$ssql.= " INNER JOIN tbpv_tarifa_suscriptor tbpv_tarifa_suscriptor";
$ssql.= " ON tbpv_producto_publicado.wpp_alias =
tbpv_tarifa_suscriptor.wtu_alias";
$ssql.= " WHERE(tbpv_tarifa_suscriptor.wtu_fecha_fin >=curdate())";
$ssql.= " AND (tbpv_tarifa_suscriptor.wtu_estado ='A')";
$ssql.= " AND (tbpv_producto_publicado.wpp_estado= 2)";
$ssql.= " order by wpp_fecha_publicacion desc LIMIT 0,$top";
$rs = mysql_query($ssql);
if(!$rs)
{
die('Could not connect:'.mysql_error());
}
else
{
if(mysql_num_rows($rs)>0)
{
while ($row = mysql_fetch_array($rs, MYSQL_ASSOC))
{
$myproducto = new cls_producto_publicado();
$myproducto->setClave($row["wpp_clave"]);
$myproducto->setCodigo($row["wpp_codigo"]);
$myproducto->setDescripcion($row["wpp_descripcion"]);
$myproducto->setPrecio($row["wpp_precio"]);
$myproducto->setCategoria($row["wpp_categoria"]);
$myproducto>setFecha_publicacion($row["wpp_fecha_publicacion"]);
$myproducto->setDireccion($row["wpp_direccion"]);
$myproducto->setNumero_descarga($row["wpp_numero_descarga"]);
Gráfico No.1.20f. Clase cls_sqlProducto_publicado
90
$myproducto->setPrecio_publico($row["wpp_precio_publico"]);
$myproducto->setEstado($row["wpp_estado"]);
$myproducto->setAlias($row["wpp_alias"]);
$myproducto->setTipo_motivo($row["wpp_tipo_motivo"]);
$myproducto->setResumen($row["wpp_resumen"]);
$array[$i]=($myproducto);
$i++;
}//fin del While
mysql_free_result($rs);
$ok=1;
}// fin del if
else
$ok=0;
}//fin del else
}//fin de function consulta_vector
function Cons_Prod_Cate(&$categorias, &$array, &$ok)//ok
{
/*
* recupera los producto que corresponde a una categoria
* especifica
*/
$i=0;
//echo $categorias."<br>";
$ssql="select * from tbpv_producto_publicado ";
$ssql= $ssql." where wpp_categoria = ".$categorias.";";
$rs=mysql_query($ssql);
if (!$rs)
{
die('Could not connect:'.mysql_error());
}
else
{
if (mysql_num_rows($rs)>0)
{
while ($row = mysql_fetch_array($rs, MYSQL_ASSOC))
{
$myproducto = new cls_producto_publicado();
$myproducto->setClave($row["wpp_clave"]);
$myproducto->setCodigo($row["wpp_codigo"]);
$myproducto->setDescripcion($row["wpp_descripcion"]);
$myproducto->setPrecio($row["wpp_precio"]);
$myproducto->setCategoria($row["wpp_categoria"]);
$myproducto>setFecha_publicacion($row["wpp_fecha_publicacion"]);
$myproducto->setDireccion($row["wpp_direccion"]);
$myproducto->setNumero_descarga($row["wpp_numero_descarga"]);
$myproducto->setPrecio_publico($row["wpp_precio_publico"]);
$myproducto->setEstado($row["wpp_estado"]);
$myproducto->setAlias($row["wpp_alias"]);
$myproducto->setTipo_motivo($row["wpp_tipo_motivo"]);
$myproducto->setResumen($row["wpp_resumen"]);
$myproducto->setTamanio1($row["wpp_tm_resumen"]);
$array[$i]=($myproducto);// asignacion a array de valores.
$i++;
}
mysql_free_result($rs);
$ok=1;
}
else
{$ok=0;}
}
}
Gráfico No.1.20g. Clase cls_sqlProducto_publicado
91
function total_registro(&$categorias,&$titulo,&$estado)
{
/*
* Metodo que recibe dos variables
* Consulta a la tabla tbpv_producto_publicado los productos de acuerdo a la categoria
* seleccionada.
* Consulta a la tabla tbpv_producto_publicado y muestra el total de registros
*/
$ssql = "select * from tbpv_producto_publicado ";
$ssql.= " INNER JOIN tbpv_tarifa_suscriptor tbpv_tarifa_suscriptor";
$ssql.= " ON tbpv_producto_publicado.wpp_alias =
tbpv_tarifa_suscriptor.wtu_alias";
$ssql.= " WHERE(tbpv_tarifa_suscriptor.wtu_fecha_fin >=curdate())";
$ssql.= " AND (tbpv_tarifa_suscriptor.wtu_estado ='A')";
$ssql.= " AND (tbpv_producto_publicado.wpp_estado=".$estado.")";
//echo $ssql;
if ($categorias<>0)
{
$ssql.= " and wpp_categoria = ".$categorias;
$ssql.= " and wpp_descripcion like '%$titulo%'";
}
else
{
$ssql.=" and wpp_descripcion like '%$titulo%'";
}
//$ssql.=" and wpp_estado=2";
$oRs= mysql_query($ssql);
if(!$oRs)
{
//die('Could not connect: '.mysql_error());
return 0;
}
else
{
$total_records = mysql_num_rows($oRs);
return $total_records;
}
}
function
Cons_Prod_Cate_Titulo(&$categorias,&$titulo,&$array,&$ok,&$pages,&$cantidad,&$estado)//ok
{
/*
* Metodo que recibe dos variables
* Consulta a la tabla tbpv_producto_publicado los productos de acuerdo a la categoria
* seleccionada.
* Consulta a la tabla tbpv_producto_publicado todos los productos
* que tiene estado activo
*/
$inicial = $pages * $cantidad;
$i=0;
$ssql="select * from tbpv_producto_publicado ";
$ssql.= " INNER JOIN tbpv_tarifa_suscriptor tbpv_tarifa_suscriptor";
$ssql.= " ON tbpv_producto_publicado.wpp_alias =
tbpv_tarifa_suscriptor.wtu_alias";
$ssql.= " WHERE(tbpv_tarifa_suscriptor.wtu_fecha_fin >=curdate())";
$ssql.= " AND (tbpv_tarifa_suscriptor.wtu_estado ='A')";
$ssql.= " AND (tbpv_producto_publicado.wpp_estado=".$estado.")";
if ($categorias<>0)
{
$ssql.= " and wpp_categoria = ".$categorias ;
$ssql.= " and (wpp_descripcion like '%".$titulo."%' ";
$ssql.= " or wpp_resumen like '%".$titulo."%') ";
}
Gráfico No.1.20h. Clase cls_sqlProducto_publicado
92
else
{
$ssql.= " and (wpp_descripcion like '%".$titulo."%' ";
$ssql.= " or wpp_resumen like '%".$titulo."%') ";
}
$ssql.= " limit ";
$ssql.=$inicial.",".$cantidad;
$rs=mysql_query($ssql);
if (!$rs)
{ die('Could not connect:'.mysql_error());}
else
{
if (mysql_num_rows($rs)>0)
{
while ($row = mysql_fetch_array($rs, MYSQL_ASSOC))
{
$myproducto = new cls_producto_publicado();
$myproducto->setClave($row["wpp_clave"]);
$myproducto->setCodigo($row["wpp_codigo"]);
$myproducto->setDescripcion($row["wpp_descripcion"]);
$myproducto->setPrecio($row["wpp_precio"]);
$myproducto->setCategoria($row["wpp_categoria"]);
$myproducto>setFecha_publicacion($row["wpp_fecha_publicacion"]);
$myproducto->setDireccion($row["wpp_direccion"]);
$myproducto->setNumero_descarga($row["wpp_numero_descarga"]);
$myproducto->setPrecio_publico($row["wpp_precio_publico"]);
$myproducto->setEstado($row["wpp_estado"]);
$myproducto->setAlias($row["wpp_alias"]);
$myproducto->setOferta($row["wpp_oferta"]);
$myproducto->setTipo_motivo($row["wpp_tipo_motivo"]);
$myproducto->setResumen($row["wpp_resumen"]);
$myproducto->setTamanio1($row["wpp_tm_resumen"]);
$array[$i]=($myproducto);
$i++;
}
mysql_free_result($rs);
$ok=1;
}
else
{$ok=0;}
}
}
function total_registro_usuario(&$categorias,&$titulo,&$usuario)
{
/*
* Medoto que muestra los contenidos de un usuario especifico
* Metodo que recibe dos variables
* Consulta a la tabla tbpv_producto_publicado los productos de acuerdo a la categoria
* seleccionada.
* Consulta a la tabla tbpv_producto_publicado y muestra el total de registros
*/
$ssql = "select * from tbpv_producto_publicado ";
$ssql.= " INNER JOIN tbpv_tarifa_suscriptor tbpv_tarifa_suscriptor";
$ssql.= " ON tbpv_producto_publicado.wpp_alias =
tbpv_tarifa_suscriptor.wtu_alias";
$ssql.= " WHERE(tbpv_tarifa_suscriptor.wtu_fecha_fin >=curdate())";
$ssql.= " AND (tbpv_tarifa_suscriptor.wtu_estado ='A')";
$ssql.= " AND (tbpv_producto_publicado.wpp_estado= 2)";
$ssql.= " AND (tbpv_prodcuto_publicado.wpp_alias='".$usuario."')";
if ($categorias<>0)
{
$ssql= $ssql." and wpp_categoria = ".$categorias;
$ssql.=" and wpp_descripcion like '%$titulo%'";
}
Gráfico No.1.20i. Clase cls_sqlProducto_publicado
93
else
{
$ssql.=" and wpp_descripcion like '%$titulo%'";
}
//$ssql.=" and wpp_estado=2";
$oRs= mysql_query($ssql);
if(!$oRs)
{
//die('Could not connect: '.mysql_error());
return 0;
}
else
{
$total_records = mysql_num_rows($oRs);
return $total_records;
}
}
function
Cons_Prod_Cate_Titulo_Usuario(&$categorias,&$titulo,&$array,&$ok,&$pages,&$cantidad,&$usuario)
{
/*
* Metodo que recibe dos variables
* Consulta a la tabla tbpv_producto_publicado los productos de acuerdo a la categoria
* seleccionada.
* Consulta a la tabla tbpv_producto_publicado todos los productos
* que tiene estado activo
*/
$inicial = $pages * $cantidad;
$i=0;
$ssql="select * from tbpv_producto_publicado ";
$ssql.= " INNER JOIN tbpv_tarifa_suscriptor tbpv_tarifa_suscriptor";
$ssql.= " ON tbpv_producto_publicado.wpp_alias =
tbpv_tarifa_suscriptor.wtu_alias";
$ssql.= " WHERE(tbpv_tarifa_suscriptor.wtu_fecha_fin >=curdate())";
$ssql.= " AND wtu_estado='A'";
$ssql.= " AND wpp_estado=2";
$ssql.= " AND wpp_alias='".$usuario."'";
if ($categorias<>0)
{
$ssql.= " and wpp_categoria = ".$categorias;
$ssql.= " and (wpp_descripcion like '%".$titulo."%'";
$ssql.= " or wpp_resumen like '%".$titulo."%')";
}
else
{
$ssql.= " and (wpp_descripcion like '%".$titulo."%' ";
$ssql.= " or wpp_resumen like '%".$titulo."%') ";
}
$ssql.= " limit ";
$ssql.=$inicial.",".$cantidad;
$rs=mysql_query($ssql);
if (!$rs)
{
die('Could not connect:'.mysql_error());
}
else
{
if (mysql_num_rows($rs)>0)
{
while ($row = mysql_fetch_array($rs, MYSQL_ASSOC))
{
$myproducto = new cls_producto_publicado();
$myproducto->setClave($row["wpp_clave"]);
$myproducto->setCodigo($row["wpp_codigo"]);
$myproducto->setDescripcion($row["wpp_descripcion"]);
$myproducto->setPrecio($row["wpp_precio"]);
Gráfico No.1.20j. Clase cls_sqlProducto_publicado
94
$myproducto->setCategoria($row["wpp_categoria"]);
$myproducto>setFecha_publicacion($row["wpp_fecha_publicacion"]);
$myproducto->setDireccion($row["wpp_direccion"]);
$myproducto->setNumero_descarga($row["wpp_numero_descarga"]);
$myproducto->setPrecio_publico($row["wpp_precio_publico"]);
$myproducto->setEstado($row["wpp_estado"]);
$myproducto->setAlias($row["wpp_alias"]);
$myproducto->setTipo_motivo($row["wpp_tipo_motivo"]);
$myproducto->setResumen($row["wpp_resumen"]);
$myproducto->setTamanio1($row["wpp_tm_resumen"]);
$array[$i]=($myproducto);
$i++;
}
mysql_free_result($rs);
$ok=1;
}
else
{$ok=0;}
}
}
function consulta_vectorTOP5(&$array,&$ok)//OK
{
/*
* Metodo que recibe una variable tipo array y una bandera
* Realiza:
* Consulta a la tabla tbpv_par_vizualizacion el tamaño maximo de registro para presen* ta en el cuadro del Top.
* Consulta a las tablas tbpv_producto_publicado y tbpv_tarifa_suscriptor los producto
* que tiene una suscripcion activa y ademas los que tienen mayor numero de descargas.
*/
$top=0;
$ssql="Select cpv_top from tbpv_par_vizualizacion";
$ssql= $ssql." where cpv_clave=1 ";
$rs=mysql_query($ssql);
if (!$rs)
{
die('Could not connect:'.mysql_error());
}
else
{
if(mysql_num_rows($rs)>0)
{
while ($row = mysql_fetch_array($rs, MYSQL_ASSOC))
{
$top=$row['cpv_top'];
}
}
}
$i=0;
$ssql= " SELECT tbpv_producto_publicado.*";
$ssql.= " FROM tbpv_producto_publicado";
$ssql.= " INNER JOIN tbpv_tarifa_suscriptor tbpv_tarifa_suscriptor";
$ssql.= " ON tbpv_producto_publicado.wpp_alias =
tbpv_tarifa_suscriptor.wtu_alias";
$ssql.= " WHERE(tbpv_tarifa_suscriptor.wtu_fecha_fin >=curdate())";
$ssql.= " AND (tbpv_tarifa_suscriptor.wtu_estado ='A')";
$ssql.= " AND (tbpv_producto_publicado.wpp_estado= 2)";
$ssql.= " ORDER BY tbpv_producto_publicado.wpp_numero_descarga";
$ssql.= " desc LIMIT 0,$top";
Gráfico No.1.20k. Clase cls_sqlProducto_publicado
95
$rs=mysql_query($ssql);
if (!$rs)
{
die('Could not connect:'.mysql_error());
}
else
{
if(mysql_num_rows($rs)>0)
{
while ($row = mysql_fetch_array($rs, MYSQL_ASSOC))
{
$myproducto = new cls_producto_publicado();
$myproducto->setClave($row["wpp_clave"]);
$myproducto->setCodigo($row["wpp_codigo"]);
$myproducto->setDescripcion($row["wpp_descripcion"]);
$myproducto->setPrecio($row["wpp_precio"]);
$myproducto->setCategoria($row["wpp_categoria"]);
$myproducto>setFecha_publicacion($row["wpp_fecha_publicacion"]);
$myproducto->setDireccion($row["wpp_direccion"]);
$myproducto>setNumero_descarga($row["wpp_numero_descarga"]);
$myproducto>setPrecio_publico($row["wpp_precio_publico"]);
$myproducto->setEstado($row["wpp_estado"]);
$myproducto->setAlias($row["wpp_alias"]);
$myproducto->setOferta($row["wpp_oferta"]);
$myproducto->setTamanio1($row["wpp_tm_resumen"]);
$myproducto->setTipo_motivo($row["wpp_tipo_motivo"]);
$myproducto->setResumen($row["wpp_resumen"]);
$array[$i]=($myproducto);
$i++;
}
mysql_free_result($rs);
$ok=1;
}
else
{
$ok=0;
}
}//fin del else
}//fin de function consulta_vectorTOP5
function consulta_oferta(&$array,&$ok)//OK
{
/*
* Metodo que recibe una variable tipo array y una bandera
* Realiza:
* Consulta las ofertas que se han realizado
*/
$top=0;
$ssql="Select cpv_top from tbpv_par_vizualizacion";
$ssql= $ssql." where cpv_clave=1 ";
$rs=mysql_query($ssql);
if (!$rs)
{
die('Could not connect:'.mysql_error());
}
else
{
if(mysql_num_rows($rs)>0)
{
while ($row = mysql_fetch_array($rs, MYSQL_ASSOC))
{
$top=$row['cpv_top'];
}
}
}
Gráfico No.1.20l. Clase cls_sqlProducto_publicado
96
$i=0;
$ssql= " SELECT tbpv_producto_publicado.*";
$ssql.= " FROM tbpv_producto_publicado";
$ssql.= " INNER JOIN tbpv_tarifa_suscriptor tbpv_tarifa_suscriptor";
$ssql.= " ON tbpv_producto_publicado.wpp_alias =
tbpv_tarifa_suscriptor.wtu_alias";
$ssql.= " WHERE(tbpv_tarifa_suscriptor.wtu_fecha_fin >=curdate())";
$ssql.= " AND (tbpv_tarifa_suscriptor.wtu_estado ='A')";
$ssql.= " AND (tbpv_producto_publicado.wpp_estado= 2)";
$ssql.= " AND (tbpv_producto_publicado.wpp_oferta='A')";
$ssql.= " ORDER BY tbpv_producto_publicado.wpp_numero_descarga";
$ssql.= " desc LIMIT 0,$top";
$rs=mysql_query($ssql);
if (!$rs)
{
die('Could not connect:'.mysql_error());
}
else
{
if(mysql_num_rows($rs)>0)
{
while ($row = mysql_fetch_array($rs, MYSQL_ASSOC))
{
$myproducto = new cls_producto_publicado();
$myproducto->setClave($row["wpp_clave"]);
$myproducto->setCodigo($row["wpp_codigo"]);
$myproducto->setDescripcion($row["wpp_descripcion"]);
$myproducto->setPrecio($row["wpp_precio"]);
$myproducto->setCategoria($row["wpp_categoria"]);
$myproducto>setFecha_publicacion($row["wpp_fecha_publicacion"]);
$myproducto->setDireccion($row["wpp_direccion"]);
$myproducto>setNumero_descarga($row["wpp_numero_descarga"]);
$myproducto>setPrecio_publico($row["wpp_precio_publico"]);
$myproducto->setEstado($row["wpp_estado"]);
$myproducto->setAlias($row["wpp_alias"]);
$myproducto->setTamanio1($row["wpp_tm_resumen"]);
$myproducto->setTipo_motivo($row["wpp_tipo_motivo"]);
$myproducto->setResumen($row["wpp_resumen"]);
$array[$i]=($myproducto);
$i++;
}
mysql_free_result($rs);
$ok=1;
}
else
{
$ok=0;
}
}//fin del else
}
function consulta_vector_ult_user( $usuario)
{
$i=0;
$ssql="Select * from tbpv_producto_publicado";
$ssql= $ssql." where wpp_alias='".$usuario."'";
$ssql= $ssql." and wpp_fecha_publicacion < CURDATE()";
$ssql= $ssql." order by wpp_fecha_publicacion asc limit 0,2";
$rs=mysql_query($ssql);
if (!$rs)
{
die('Could not connect:'.mysql_error());
}
else
{
Gráfico No. Clase cls_sqlProducto_publicado.php
Gráfico No.1.20m. Clase cls_sqlProducto_publicado
97
while ($row = mysql_fetch_array($rs, MYSQL_ASSOC))
{
$myproducto = new cls_producto_publicado();
$myproducto->setClave($row["wpp_clave"]);
$myproducto->setCodigo($row["wpp_codigo"]);
$myproducto->setDescripcion($row["wpp_descripcion"]);
$myproducto->setPrecio($row["wpp_precio"]);
$myproducto->setCategoria($row["wpp_categoria"]);
$myproducto>setFecha_publicacion($row["wpp_fecha_publicacion"]);
$myproducto->setDireccion($row["wpp_direccion"]);
$myproducto->setNumero_descarga($row["wpp_numero_descarga"]);
$myproducto->setPrecio_publico($row["wpp_precio_publico"]);
$myproducto->setEstado($row["wpp_estado"]);
$myproducto->setAlias($row["wpp_alias"]);
$myproducto->setTipo_motivo($row["wpp_tipo_motivo"]);
$myproducto->setResumen($row["wpp_resumen"]);
$array[$i]=($myproducto);
$i++;}
mysql_free_result($rs);
return $array;}
}
//////////////ULTIMOS PUBLICADOS DEL SUSCRIPTOR/////////////////////////
function consulta_vector_suscriptor(&$usuario,&$array,&$ok)
{
/* Metodo que recibe Realiza: Consulta a la tabla tbpv_producto_publicado los ultimos
cinco productos publicados de acuerdo al alias recibido*/
$i=0;
$ssql= " select * from tbpv_producto_publicado, tbpv_suscriptor";
$ssql.= " where wpp_alias = wsu_alias and wsu_alias='".$usuario."'";
$ssql.= " order by wpp_fecha_publicacion desc LIMIT 0,5 ";
$rs=mysql_query($ssql);
if (!$rs)
{ die('Could not connect:'.mysql_error());}
else
{ if(mysql_num_rows($rs)>0)
{
while ($row = mysql_fetch_array($rs, MYSQL_ASSOC))
{
$myproducto = new cls_producto_publicado();
$myproducto->setClave($row["wpp_clave"]);
$myproducto->setCodigo($row["wpp_codigo"]);
$myproducto->setDescripcion($row["wpp_descripcion"]);
$myproducto->setPrecio($row["wpp_precio"]);
$myproducto->setCategoria($row["wpp_categoria"]);
$myproducto>setFecha_publicacion($row["wpp_fecha_publicacion"]);
$myproducto->setDireccion($row["wpp_direccion"]);
$myproducto>setNumero_descarga($row["wpp_numero_descarga"]);
$myproducto>setPrecio_publico($row["wpp_precio_publico"]);
$myproducto->setEstado($row["wpp_estado"]);
$myproducto->setAlias($row["wpp_alias"]);
$myproducto->setTipo_motivo($row["wpp_tipo_motivo"]);
$myproducto->setResumen($row["wpp_resumen"]);
$array[$i]=($myproducto);
$i++;
}
mysql_free_result($rs);
$ok=1;}
else
{$ok=0; }
}
}//fin de function consulta_vector_suscriptor
}
?>
Gráfico No.1.20n. Clase cls_sqlProducto_publicado
98
1.4.13 cls_transproducto_publicado
Ubicación: /lib/clases/
clases/producto_publicado/cls_transproducto_publicado.php
<?php
class cls_transproducto_publicado
{
/*
* metodos de clases que llaman a procedimientos
* de cls_sqlproducto_publicado
*/
function __construct()
{}
function admin_modificar(cls_producto_publicado $cls_producto_publicado_)
{
/*
* llama a procedimiento de sqlproducto_publicado.
*/
$link=new DB_mysql();
// crea un objeto tipo DB_mysql
$sqlproducto_publicado = new cls_sqlproducto_publicado($link);// crea un
objeto tipo cls_producto_publicado
$res=$sqlproducto_publicado->admin_modificar($cls_producto_publicado_);
if ($res=1)
{
$link->__sleep();
return 1;
}
else
{
$link->__sleep();
return 0;
}
}
function admin_modificar_usuario(cls_producto_publicado $cls_producto_publicado_)
{
/*
* permite realizar la actualizacion de datos llamando a
* metodo admin_modificar_usuario solo a suscriptores
*/
$link=new DB_mysql();
// crea un objeto tipo DB_mysql
$sqlproducto_publicado = new cls_sqlproducto_publicado($link);// crea un objeto tipo cls_producto_publicado
$res=$sqlproducto_publicado->admin_modificar_usuario($cls_producto_publicado_);// llama a metodo
if ($res=1)
{
$link->__sleep();// cierra conexion
return 1; }
else
{
$link->__sleep();// cierra conexion
return 0; }
}
function validar_producto($usuario, $archivo)
{
/*
* valida a contenido de determido usuario
*/
$link=new DB_mysql(); // crea un objeto tipo DB_mysql
$sqlproducto_publicado= new cls_sqlproducto_publicado($link);// crea un objeto tipo cls_producto_publicado
$res=$sqlproducto_publicado->validar_producto_sql($usuario, $archivo);// llama a metodo
if ($res==1)
{
$link->__sleep();// cierra conexion
return 1;
}
Gráfico No.1.21a. Clase cls_transProducto_publicado
99
else
{
$link->__sleep();// cierra conexion
return 0;
}
}
function validar_exite($clave)
{
/* valida si exite*/
$link=new DB_mysql(); // crea un objeto tipo DB_mysql
$sqlproducto_publicado= new cls_sqlproducto_publicado($link);// crea un objeto tipo cls_producto_publicado
$res=$sqlproducto_publicado->validar_exite($clave);// llama a metodo
if ($res==1)
{
$link->__sleep();// cierra conexion
return 1;
}
else
{
$link->__sleep();// cierra conexion
return 0;
}
}
function validar_exite_($clave)
{
$link=new DB_mysql();
$sqlproducto_publicado= new cls_sqlproducto_publicado($link);
$res=$sqlproducto_publicado->validar_exite_($clave);
if ($res==1)
{
$link->__sleep();
return 1;
}
else
{
$link->__sleep();
return 0;
}
}
function insertar_t(cls_producto_publicado &$cls_producto_publicado_)
{
/* llama al metodo insertar de cls_sqlproducto_publicado*/
$link=new DB_mysql();
$sqlproducto_publicado = new cls_sqlproducto_publicado($link);
$res=$sqlproducto_publicado->insertar($cls_producto_publicado_);
if ($res=1)
{
$link->__sleep();
return 1;
}
else
{
$link->__sleep();
return 0;
}
}
Gráfico No.1.21b. Clase cls_transProducto_publicado
100
function modificar_t(cls_producto_publicado $cls_producto_publicado_)
{
/* llama al metodo modificar de cls_sqlproducto_publicado*/
$link=new DB_mysql();
$sqlproducto_publicado = new cls_sqlproducto_publicado($link);
$res=$sqlproducto_publicado->modificar($cls_producto_publicado_);
if ($res=1)
{
$link->__sleep();
return 1;
}
else
{
$link->__sleep();
return 0;
}
}
function validar_id($id)
{
/*
* valida el id del producto
*/
$link=new DB_mysql();
$sqlproducto_publicado = new cls_sqlproducto_publicado($link);
$res=$sqlproducto_publicado->validar_id($id);
if ($res=1)
{
$link->__sleep();
return 1;
}
else
{
$link->__sleep();
return 0; }
}
function consulta_producto(cls_producto_publicado &$producto, &$ok)
{
/*
* funcion que recibe una variable tipo clase y una bandera
* Crea un metodo de clae tipo cls_sqlproduto_publicado
* E invoca al metodo de tipo cls_sqlproducto_publicado
*/
$link=new DB_mysql();
$sqlproducto_publicado=new cls_sqlproducto_publicado($link);
$sqlproducto_publicado->consulta_producto($producto,$ok);
$link->__sleep();
}
function consulta_u_t(cls_producto_publicado $cls_producto_publicado_)
{
$link=new DB_mysql();
$sqlproducto_publicado = new cls_sqlproducto_publicado($link);
$cls_producto_publicado= new cls_producto_publicado();
$cls_producto_publicado=$sqlproducto_publicado->consulta_u($cls_producto_publicado_);
if ($cls_producto_publicado->getClave()!=0)
{
$link->__sleep();
return $cls_producto_publicado;
}
Gráfico No.1.21c. Clase cls_transProducto_publicado
101
else
{
$link->__sleep();
return $cls_producto_publicado;
}
}
function consulta_vector(&$array,&$ok)
{
/*
* funcion que recibe una variable tipo arreglo y una bandera
* Crea un metodo de clae tipo cls_sqlproduto_publicado
* E invoca al metodo de tipo cls_sqlproducto_publicado
*/
$link=new DB_mysql();
$sqlproducto_publicado=new cls_sqlproducto_publicado($link);
$sqlproducto_publicado->consulta_vector($array,$ok);
$link->__sleep();
}
function Cons_Prod_Cate(&$categorias,&$array,&$ok)//ok
{
$link=new DB_mysql();
$sqlproducto_publicado=new cls_sqlproducto_publicado($link);
$sqlproducto_publicado->Cons_Prod_Cate($categorias,$array,$ok);
$link->__sleep();
}
function total_registro(&$categorias,&$titulo,&$estado)
{
/*
* funcion que recibe dos variable
* Crea un metodo de clae tipo cls_sqlproduto_publicado
* E invoca al metodo de tipo cls_sqlproducto_publicado
*/
$link=new DB_mysql();
$sqlproducto_publicado=new cls_sqlproducto_publicado($link);
$cont =$sqlproducto_publicado->total_registro($categorias,$titulo,$estado);
$link->__sleep();
return $cont;
}
function Cons_Prod_Cate_Titulo(&$categorias,&$titulo,&$array,&$ok,&$pages,&$cantidad,&$estado)
{
/*
* funcion que recibe variables
* Crea un metodo de clae tipo cls_sqlproduto_publicado
* E invoca al metodo de tipo cls_sqlproducto_publicado
*/
$link=new DB_mysql();
$sqlproducto_publicado=new cls_sqlproducto_publicado($link);
$sqlproducto_publicado-> Cons_Prod_Cate_Titulo($categorias,$titulo,$array,$ok,$pages,$cantidad,$estado);
$link->__sleep();
}
function total_registro_usuario(&$categorias,&$titulo,&$usuario)
{
/*
* funcion que recibe dos variable
* Crea un metodo de clae tipo cls_sqlproduto_publicado
* E invoca al metodo de tipo cls_sqlproducto_publicado
* para presentar las contendos de un usuario espedifico
*/
$link=new DB_mysql();
$sqlproducto_publicado=new cls_sqlproducto_publicado($link);
$cont =$sqlproducto_publicado->total_registro($categorias,$titulo,$usuario);
$link->__sleep();
return $cont;}
Gráfico No.1.21d. Clase cls_transProducto_publicado
102
function Cons_Prod_Cate_Titulo_Usuario(&$categorias,&$titulo,&$array,&$ok,&$pages,&$cantidad,&$usuario)
{
/*
* funcion que recibe variables
* Crea un metodo de clae tipo cls_sqlproduto_publicado
* E invoca al metodo de tipo cls_sqlproducto_publicado
*/
$link=new DB_mysql();
$sqlproducto_publicado=new cls_sqlproducto_publicado($link);
$sqlproducto_publicado->
Cons_Prod_Cate_Titulo_Usuario($categorias,$titulo,$array,$ok,$pages,$cantidad,$usuario);
$link->__sleep();
}
function consulta_vectorTOP5(&$array, &$ok)
{
/*
* funcion que recibe una variable tipo arreglo y una bandera
* Crea un metodo de clae tipo cls_sqlproduto_publicado
* E invoca al metodo de tipo cls_sqlproducto_publicado
*/
$link=new DB_mysql();
$sqlproducto_publicado = new cls_sqlproducto_publicado($link);
$sqlproducto_publicado->consulta_vectorTOP5($array, $ok);
$link->__sleep();
}
function consulta_oferta(&$array, &$ok)
{
/*
* funcion que recibe una variable tipo arreglo y una bandera
* Crea un metodo de clae tipo cls_sqlproduto_publicado
* E invoca al metodo de tipo cls_sqlproducto_publicado
*/
$link=new DB_mysql();
$sqlproducto_publicado = new cls_sqlproducto_publicado($link);
$sqlproducto_publicado->consulta_oferta($array, $ok);
$link->__sleep();
}
function consulta_vector_ult_user( $usuario)
{
$link=new DB_mysql();
$sqlproducto_publicado = new cls_sqlproducto_publicado($link);
$array =$sqlproducto_publicado->consulta_vector_ult_user();
$link->__sleep();
return $array;
}
function consulta_vector_suscriptor( &$usuario, &$array, &$ok)
{
/*
* funcion que recibe una variable tipo clase y una bandera
* Crea un metodo de clae tipo cls_sqlproduto_publicado
* E invoca al metodo de tipo cls_sqlproducto_publicado
*/
$link=new DB_mysql();
$sqlproducto_publicado = new cls_sqlproducto_publicado($link);
$sqlproducto_publicado->consulta_vector_suscriptor($usuario, $array, $ok);
$link->__sleep();
}
}
?>
Gráfico No.1.21e. Clase cls_transProducto_publicado
103
1.4.14 cls_gestor
Ubicación: /lib/clases/ clases/gestor/cls_gestor.php
<?php class cls_gestor_pagos{
/*
* declaracion de variables de las clases
*/
public static $num_factura;
public static $valor_factura;
public static $tipo;
public static $pais;
public static $nombre;
public static $apellido;
public static $tipo_tarjeta;
public static $num_tarjeta;
public static $password;
public static $anio;
public static $mes;
public static $ciudad;
public static $direccion;
public static $email;
public static $telefono;
public static $autorizacion;
public static $emisor;
public static $fecha;
/*
* funciones que tienen sufijos get
* retorno de valor de variables declase
*/
public
function getNum_factura()
{
return $this->num_factura;
}
/*
* funciones que tienen sufijos set
* metodo que asigna valores
* a las variables de clase
*/
function setNum_factura($num_factura)
{
$this->num_factura = $num_factura;
}
public function getValor_factura()
{
return $this->valor_factura;
}
function setValor_factura($valor_factura)
{
$this->valor_factura = $valor_factura;
}
public function getTipo()
{
return $this->tipo;
}
function setTipo($tipo)
{
$this->tipo = $tipo;
}
Gráfico No.1.22a. Clase cls_gestor
104
public function getPais()
{
return $this->pais;
}
function setPais($pais)
{
$this->pais = $pais;
}
public function getNombre()
{
return $this->nombre;
}
function setNombre($nombre)
{
$this->nombre = $nombre;
}
public function getApellido()
{
return $this->apellido;
}
function setApellido($apellido)
{
$this->apellido = $apellido;
}
public function getTipo_tarjeta()
{
return $this->tipo_tarjeta;
}
function setTipo_tarjeta($tipo_tarjeta)
{
$this->tipo_tarjeta = $tipo_tarjeta;
}
public function getNum_tarjeta()
{
return $this->num_tarjeta;
}
function setNum_tarjeta($num_tarjeta)
{
$this->num_tarjeta = $num_tarjeta;
}
public function getPassword()
{
return $this->password;
}
// el resto de variables se encuentran sobre entendidadas
Gráfico No.1.22b. Clase cls_gestor
105
1.4.15 cls_sqlgestor
Ubicación: /lib/clases/ clases/gestor/cls_sqlgetor.php
<?php class cls_sqlgestor
{
var $link;
function __construct(DB_mysql $DB_mysql)
{
$this->link=$DB_mysql;
}
function gestionar_cancelacion(cls_gestor_pagos &$mygestor, &$ok)
{
/*
* Funcion que actualiza los campos referentes a los pagos de las
* descargas.
*/
/*
* inserta en la tabla tbpv_descarga
*/
$ssql=" update tbpv_descarga set";
$ssql.=" wde_ban_efec='".config_si;
$ssql.="' , wde_fecha_efectivo=".$mygestor->getFecha();
$ssql.=" , wde_num_pago =".$mygestor->getAutorizacion();
$ssql.=" , wde_nombre_apellido='".$mygestor->getNombre().' '.$mygestor->getApellido();
$ssql.="' ,wde_vencimiento='".$mygestor->getAnio().'-'.$mygestor->getMes();
$ssql.="' ,wde_num_tarjeta='".$mygestor->getNum_tarjeta();
$ssql.="' ,wde_tipo_tarjeta=".$mygestor->getTipo_tarjeta();
$ssql.=" where wde_numero=".$mygestor->getNum_factura();
$ssql.=" and wde_ban_efec = '".config_no;
$ssql.="' and wde_estado='".config_estado_act."'";
if (!@mysql_query($ssql))
{
die('Error en update descarga: '.mysql_error());
$ok=0;
return 0;
}
/*
* Actualiza la bandera de efectivacion
* de la tabla tbpv_detalle_descarga
*/
$ssql=" update tbpv_detalle_descarga set ";
$ssql.=" wdd_ban_efec='".config_si;
$ssql.="' , wdd_fecha_efectivo=".$mygestor->getFecha();
$ssql.=" , wdd_num_pago ='".$mygestor->getAutorizacion() ;
$ssql.="' , wdd_nombre_apellido ='".$mygestor->getNombre().' '.$mygestor->getApellido() ;
$ssql.="' , wdd_f_caducidad ='".$mygestor->getAnio().'-'.$mygestor->getMes();
$ssql.="' , wdd_num_tarjeta='".$mygestor->getNum_tarjeta();
$ssql.="' , wdd_tipo_tarjeta=".$mygestor->getTipo_tarjeta();
$ssql.=" where wdd_numero=".$mygestor->getNum_factura();
$ssql.=" and wdd_ban_efec='".config_no;
$ssql.="' and wdd_estado='".config_estado_act."'";
if (!@mysql_query($ssql))
{
$ok=0;
die('Error en update detalle descarga: '.mysql_error());
return 0;
}
Gráfico No.1.23a. Clase cls_sqlgestor
106
/*
* Consulta de detalle preguntando si se encuentra
* acreditado para seguir realizando las actualizaciones nesesarias
*/
$ssql=" select * from tbpv_detalle_descarga ";
$ssql.=" where wdd_numero=".$mygestor->getNum_factura();
$ssql.=" and wdd_ban_efec='S'";
$ssql.=" and wdd_estado='A'";
$rs=mysql_query($ssql);
if (!$rs)
{
die('detalle de desacarga Could not connect:'.mysql_error());
}
else
{
if(mysql_num_rows($rs)>0)
{
Gráfico No. Clase cls_transProducto_publicado.php
while ($row = mysql_fetch_array($rs, MYSQL_ASSOC))
{
$mydetdescarga=new cls_detalle_descarga();
$mydetdescarga->setCod_producto($row['wdd_cod_producto']);
$mydetdescarga->setAlias_compra($row['wdd_alias_compra']);
$mydetdescarga->setCantidad($row['wdd_cantidad']);
$mydetdescarga->setFecha_efectivo($row['wdd_fecha_efectivo']);
$mydetdescarga->setValor_neto($row['wdd_valor_neto']);
$mydetdescarga->setValor_comision($row['wdd_valor_comision']);
$mydetdescarga->setPorc_com($row['wdd_porc_com']);
$mydetdescarga->setValor_total($row['wdd_valor_total']);
$mydetdescarga->setAlias_bajado($row['wdd_alias_bajado']);
/*
* realiza la insercion en la tabla tbpv_producto_descargado
* para la la validacion del numero de posiblidades de
* de descargas.
*/
$ssql=" INSERT INTO tbpv_producto_descargado(wpd_clave, ";
$ssql.=" wpd_producto, wpd_contador, wpd_contador_maximo,";
$ssql.=" wpd_fecha_descarga, wpd_fecha_maxima, wpd_alias_compra,";
$ssql.=" wpd_ban_realizado) VALUES( ";
$ssql.= $mygestor->getNum_factura();
$ssql.= " , ".$mydetdescarga->getCod_producto();
$ssql.= " , 0";
$ssql.= " , ".config_max_desc;
$ssql.= " ,CURDATE()";
$ssql.= " ,CURDATE()+".config_max_dias_des;
$ssql.= " , '".$mydetdescarga->getAlias_compra();
$ssql.= "' , 'N'";
$ssql.= ")";
if (!@mysql_query($ssql)) //if 1
{
die('Could not connect:'.mysql_error());
$ok=0;
return 0;
}//fin de if 1
/*
* insertar en el control de productos.
*/
$ssql = " INSERT INTO tbpv_control_producto(wcp_numero, ";
$ssql.=" wcp_cod_producto, wcp_cantidad, wcp_fecha_efectivo,";
$ssql.=" wcp_valor_neto, wcp_valor_comision, wcp_por_comision,";
$ssql.=" wcp_valor_total, wcp_alias_compra, wcp_anio, wcp_mes,";
$ssql.=" wcp_alias_publicado) VALUES(";
$ssql.=$mygestor->getNum_factura();
$ssql.= " , ".$mydetdescarga->getCod_producto();
$ssql.= " , ".$mydetdescarga->getCantidad();
$ssql.= " , '".$mydetdescarga->getFecha_efectivo();
$ssql.= "' , ".$mydetdescarga->getValor_neto();
$ssql.= " , ".$mydetdescarga->getValor_comision();
Gráfico No.1.23b. Clase cls_sqlgestor
107
$ssql.= " , ".$mydetdescarga->getPorc_com();
$ssql.= " , ".$mydetdescarga->getValor_total();
$ssql.= " , '". $mydetdescarga->getAlias_compra();
$ssql.= "' , year(CURDATE())";
$ssql.= ", month(CURDATE())";
$ssql.= ", '". $mydetdescarga->getAlias_bajado();
$ssql.= "')";
if (!@mysql_query($ssql))// if 2
{
die('tbpv_control_producto Could not connect:'.mysql_error());
$ok=0;
return 0;
}// fin if 2
/*
* Actualiza tbpv_producto_publicado el campo de
* numero de descargas...
*/
$ssql=" update tbpv_producto_publicado set ";
$ssql.=" wpp_numero_descarga=wpp_numero_descarga+1";
$ssql.=" where wpp_clave=".$mydetdescarga->getCod_producto();
if (!@mysql_query($ssql))// if 3
{
die('Could not connect:'.mysql_error());
$ok=0;
return 0;
}
$ssql=" SELECT wps_clave, wps_alias_publicado, wps_anio, wps_mes ";
$ssql.=" FROM tbpv_producto_suscriptor ";
$ssql.=" where wps_clave=".$mydetdescarga->getCod_producto();
$ssql.=" and wps_alias_publicado='".$mydetdescarga->getAlias_bajado()."'";
$ssql.=" and wps_anio=year(curdate()) ";
$ssql.=" and wps_mes = month(curdate())";
$rs_1=mysql_query($ssql);
if (!$rs_1)// if 4
{
die('Error_select tbpv_producto_suscriptor
:'.mysql_error());
return 0;
}
else
{
if(mysql_num_rows($rs_1)>0)// if 5
{
/*
* actualiza el contador tbpv_producto_suscriptor
* para conocer el numero de descargas por suscriptor
*/
$ssql=" update tbpv_producto_suscriptor set ";
$ssql.=" wps_cont_cifrado=wps_cont_cifrado+1";
$ssql.=" , wps_contador = wps_contador + 1";
$ssql.=" , wps_neto=wps_neto+".$mydetdescarga>getValor_neto();
$ssql.=" ,
wps_valor_comision=wps_valor_comision+".$mydetdescarga->getValor_comision();
$ssql.=" , wps_valor_total=wps_valor_total+".$mydetdescarga>getValor_total();
$ssql.=" where wps_clave=".$mydetdescarga>getCod_producto();
$ssql.=" and wps_alias_publicado='".$mydetdescarga>getAlias_bajado()."'";
$ssql.=" and wps_anio=year(curdate())";
$ssql.=" and wps_mes=month(curdate())";
Gráfico No.1.23c. Clase cls_sqlgestor
108
if (!@mysql_query($ssql))
{
die('tbpv_producto_suscriptor Could not connect:'.mysql_error());
$ok=0;
return 0;
}
}
else
{
/*
* registrar tbpv_producto_suscriptor
*/
$ssql=" INSERT INTO tbpv_producto_suscriptor(wps_clave,";
$ssql.=" wps_alias_publicado, wps_anio, wps_mes,";
$ssql.=" wps_cont_cifrado, wps_contador, wps_neto,";
$ssql.=" wps_valor_comision, wps_valor_total,";
$ssql.=" wps_ban_realizado) VALUES(";
$ssql.=$mydetdescarga->getCod_producto();
$ssql.=" ,'".$mydetdescarga->getAlias_bajado()."'";
$ssql.=" , year(curdate()) ";
$ssql.=" , month(curdate())";
$ssql.=" ,1,1,".$mydetdescarga->getValor_neto();
$ssql.=" , ".$mydetdescarga->getValor_comision();
$ssql.=" , ".$mydetdescarga->getValor_total();
$ssql.=" , 'N')";
if (!@mysql_query($ssql))
{
die('Could not connect:'.mysql_error());
$ok=0;
return 0;
}
}//fin if 5
}
// fin if 4
/*
* realiza la consulta de
tbpv_movimiento_financiero
* para determinado mes
*/
$ssql=" SELECT wmf_alias, wmf_anio, wmf_mes ";
$ssql.=" FROM tbpv_movimiento_financiero ";
$ssql.=" where wmf_alias='".$mydetdescarga>getAlias_bajado()."'";
$ssql.=" and wmf_anio=year(curdate()) ";
$ssql.=" and wmf_mes = month(curdate())";
$rs_2=mysql_query($ssql);// if 6
if (!$rs_2)
{
die('Error_select
tbpv_producto_suscriptor :'.mysql_error());
return 0;
}
else
{
if(mysql_num_rows($rs_2)>0)// if 7
{
/*
* actualiza los movimientos
tbpv_movimiento_financiero
* incrementandolos
*/
$ssql=" update
tbpv_movimiento_financiero set ";
Gráfico No.1.23d. Clase cls_sqlgestor
109
$ssql.=" wmf_valor_neto=wmf_valor_neto+".$mydetdescarga->getValor_neto();
$ssql.=" ,
wmf_valor_neto=wmf_valor_neto+".$mydetdescarga->getValor_comision();
$ssql.=" ,
wmf_total=wmf_total+".$mydetdescarga->getValor_total();
$ssql.=" where
wmf_alias='".$mydetdescarga->getAlias_bajado()."'";
$ssql.=" and
wmf_anio=year(curdate())";
$ssql.=" and
wmf_mes=month(curdate())";
if (!@mysql_query($ssql))
{
die('Could not
connect:'.mysql_error());
$ok=0;
return 0;
}
}
else
{
/*
* insertar tbpv_movimiento_financiero de
pago
*/
$ssql=" INSERT INTO tbpv_movimiento_financiero(wmf_alias,";
$ssql.=" wmf_anio, wmf_mes, wmf_valor_comision, ";
$ssql.=" wmf_valor_neto, wmf_total, wmf_ban_pago,";
$ssql.=" wmf_estado, wmf_acumulado) VALUES('";
$ssql.=$mydetdescarga->getAlias_bajado()."'";
$ssql.=" ,year(curdate()),month(curdate())";
$ssql.=" , ".$mydetdescarga->getValor_comision();
ssql.=" , ".$mydetdescarga->getValor_neto();
$ssql.=" ,".$mydetdescarga->getValor_total();
$ssql.=" , 'N','A','N')";
if (!@mysql_query($ssql))
{
die('Could not connect:'.mysql_error());
$ok=0;
return 0;
}
}// fin if 7
}//fin if 6
}//fin while
mysql_free_result($rs);
$ok=1;
}// fin if
else
{
$ok=0;
}
} //fin if
}
function cancelar_orden(cls_gestor_pagos &$mygestor, &$ok)
{
/*
* Funcion que gestiona los insert en las tablas de simulacion
*/
$ssql=" select * from tbpp_datos_financiero ";
$ssql.= " where pdf_nombre ='".$mygestor->getNombre();
$ssql.= "' and pdf_apellido ='".$mygestor->getApellido();
$ssql.= "' and pdf_tipo_cuenta = ".$mygestor->getTipo_tarjeta();
Gráfico No.1.23e. Clase cls_sqlgestor
110
$ssql.= " and pdf_num_tarjeta ='".$mygestor->getNum_tarjeta()."'";
$rs=mysql_query($ssql);
if (!$rs)
{
die('Could not connect:'.mysql_error());
}
else
{
if(mysql_num_rows($rs)>0)
{
/*
* actualiza tbpp_datos_financierocon los datos nuevos
*/
$ssql="update tbpp_datos_financiero set ";
$ssql.= " pdf_contrasena = '".$mygestor->getPassword();
$ssql.= "' , pdf_mes=".$mygestor->getMes();
$ssql.= " , pdf_anio=".$mygestor->getAnio();
$ssql.= " , pdf_pais=".$mygestor->getPais();
$ssql.= " , pdf_telefono='".$mygestor->getTelefono();
$ssql.= "' , pdf_direccion='".$mygestor->getDireccion();
$ssql.= "' , pdf_ciudad='".$mygestor->getCiudad();
$ssql.= "' , pdf_mail ='".$mygestor->getEmail();
$ssql.= "' where pdf_nombre='".$mygestor->getNombre();
$ssql.= "' and pdf_apellido ='".$mygestor->getApellido();
$ssql.= "' and pdf_tipo_cuenta = ".$mygestor->getTipo_tarjeta();
$ssql.= " and pdf_num_tarjeta ='".$mygestor->getNum_tarjeta()."'";
echo $ssql;
//die;
}
else
{
/*
* realiza la insercion de los datos
* nuevos
*/
$ssql=" insert into tbpp_datos_financiero ( pdf_nombre, pdf_apellido,";
$ssql.= " pdf_tipo_cuenta, pdf_num_tarjeta, pdf_contrasena, pdf_mes,";
$ssql.= " pdf_anio, pdf_pais, pdf_telefono, pdf_direccion, pdf_ciudad, pdf_mail";
$ssql.= " ) values ('";
$ssql.= $mygestor->getNombre()."'";
$ssql.= ",'".$mygestor->getApellido();
$ssql.= "',".$mygestor->getTipo_tarjeta();
$ssql.= " , '".$mygestor->getNum_tarjeta();
$ssql.= "', '".$mygestor->getPassword();
$ssql.= "' , ".$mygestor->getMes();
$ssql.= " , ".$mygestor->getAnio();
$ssql.= " , ".$mygestor->getPais();
$ssql.= " , '".$mygestor->getTelefono();
$ssql.= "' , '".$mygestor->getDireccion();
$ssql.= "' , '".$mygestor->getCiudad();
$ssql.= "' , '".$mygestor->getEmail();
$ssql.= "')";
}
if (!@mysql_query($ssql))
{
die('Mensaje'. mysql_error());
$ok=0;
exit();
}
}
/* recupera el dia actual*/
$ssql=" Select CURDATE() as fecha ";
$rs=mysql_query($ssql);
Gráfico No.1.23f. Clase cls_sqlgestor
111
if (!$rs)
{
die('Mensaje'. mysql_error());
}
else
{
if(mysql_num_rows($rs)>0)
{
while($row=mysql_fetch_array($rs,MYSQL_ASSOC))
{
$mygestor->setFecha($row['fecha']);
}
}
}
$var_codigo;
$var_secuencia;
/*
* recupera el numero de actualizacion de pago
*/
$ssql=" Select max(pmf_clave) + 1 as secuencia ";
$ssql.=" from tbpp_mov_finaciero ";
$rs=mysql_query($ssql);
if (!$rs)
{
$var_secuencia=1;
die('Mensaje'. mysql_error());
}
else
{
if(mysql_num_rows($rs)>0)
{
while($row=mysql_fetch_array($rs,MYSQL_ASSOC))
{
/*
* asignacion de autorizacion a variable
*/
if($row['secuencia'] == NULL)
{
$var_secuencia=1;
}
else
{$var_secuencia=$row['secuencia'];}
}
}
}
$var_codigo=str_repeat('0',8-strlen($var_secuencia)).$var_secuencia;
$mygestor->setAutorizacion($var_codigo);
$ssql=" INSERT INTO tbpp_mov_finaciero(pmf_clave, pmf_codigo, pmf_factura,";
$ssql.=" pmf_emisor, pmf_tipo_tarjeta, pmf_num_tarjeta, pmf_valor, pmf_tipo_fact,pmf_fecha)" ;
$ssql.=" VALUES(";
$ssql.= $var_secuencia;
$ssql.=" ,'".$var_codigo;
$ssql.="',".$mygestor->getNum_factura() ;
$ssql.=" , '".$mygestor->getEmisor();
$ssql.="',".$mygestor->getTipo_tarjeta();
$ssql.= ",'".$mygestor->getNum_tarjeta();
$ssql.= "', ".$mygestor->getValor_factura();
$ssql.= ",'".$mygestor->getTipo();
$ssql.= "',CURDATE())";
Gráfico No.1.23g. Clase cls_sqlgestor
112
$ssql.= $var_secuencia;
$ssql.=" ,'".$var_codigo;
$ssql.="',".$mygestor->getNum_factura() ;
$ssql.=" , '".$mygestor->getEmisor();
$ssql.="',".$mygestor->getTipo_tarjeta();
$ssql.= ",'".$mygestor->getNum_tarjeta();
$ssql.= "', ".$mygestor->getValor_factura();
$ssql.= ",'".$mygestor->getTipo();
$ssql.= "',CURDATE())";
else
{
if(mysql_num_rows($rs)>0)
{
while ($row = mysql_fetch_array($rs, MYSQL_ASSOC))
{
$var_fecha=$row['fecha'];
}
}
}
/*
* verifica si existe ya una descarga de ese recurso
* por la orden de descarga.
*/
$ssql=" select wpd_clave, wpd_contador,wpd_fecha_maxima from tbpv_producto_descargado ";
$ssql.=" where wpd_clave =".$orden;
$ssql.=" and wpd_producto=".$producto;
$ssql.=" and wpd_ban_realizado='N'";
$rs=mysql_query($ssql);
if (!$rs)
{
die('Error_select tbpv_producto_descargado :'.mysql_error());
return 0;
}
else
{
if(mysql_num_rows($rs)>0)
{
while ($row = mysql_fetch_array($rs, MYSQL_ASSOC))
{
$var_contador = $row['wpd_contador'];
$var_fecha_max= $row['wpd_fecha_maxima'];
}
/*
* si existe el recurso valida el numero de descarga
* para cambiar el estado del registro.
*/
if(($var_contador==config_max_desc)||($var_fecha_max<$var_fecha) )
{
$ssql=" update tbpv_producto_descargado set ";
$ssql.=" wpd_ban_realizado = 'S' ";
$ssql.=" where wpd_clave =".$orden;
$ssql.=" and wpd_producto=".$producto;
$rs=mysql_query($ssql);
if (!$rs)
{
die('tbpv_producto_descargado Could not
connect:'.mysql_error());
}
}
if(($var_contador<config_max_desc)||($var_fecha_max>$var_fecha) )
{
$ssql=" update tbpv_producto_descargado set ";
Gráfico No.1.23h. Clase cls_sqlgestor
113
$ssql.=" wpd_contador = wpd_contador+1 ";
$ssql.=" where wpd_clave =".$orden;
$ssql.=" and wpd_producto=".$producto;
$ssql.=" and wpd_ban_realizado='N'";
$rs=mysql_query($ssql);
if (!$rs)
{
die('restar Could not connect:'.mysql_error());
}
}
}
else
{
/*
* si no existe este producto se lo inserta del detalle de
* descarga.
*/
$ssql=" select * from tbpv_detalle_descarga ";
$ssql.=" where wdd_numero=".$orden;
$ssql.=" and wdd_cod_producto =".$producto;
$ssql.=" and wdd_ban_efec='S'";
$ssql.=" and wdd_estado='A'";
$rs=mysql_query($ssql);
if (!$rs)
{
die('Could not connect:'.mysql_error());
}
else
{
if(mysql_num_rows($rs)<0)
{
while ($row = mysql_fetch_array($rs, MYSQL_ASSOC))
{
/*
* insertar tbpv_producto_descargado los datos nuevos
*/
$ssql=" INSERT INTO tbpv_producto_descargado(wpd_clave, ";
$ssql.=" wpd_producto, wpd_contador, wpd_contador_maximo,";
$ssql.=" wpd_fecha_descarga, wpd_fecha_maxima, wpd_alias_compra,";
$ssql.=" wpd_ban_realizado) VALUES( ";
$ssql.= $orden;
$ssql.= " , ".$producto;
$ssql.= " , 0";
$ssql.= " , ".config_max_desc;
$ssql.= " ,CURDATE()";
$ssql.= " ,CURDATE()+".config_max_dias_des;
$ssql.= " , '".$row['wdd_alias_compra'];
$ssql.= "' , 'N'";
$ssql.= ")";
if (!@mysql_query($ssql))
{ die('Could not connect:'.mysql_error());
return 0;
}
} }}} }//fin else}
$ok=1;
}// fin de funcion gestionar descarga.
}
}//fin else
}
Gráfico No.1.23i. Clase cls_sqlgestor
114
function gestionar_suscripcion(cls_gestor_pagos &$mygestor, &$ok)
{
/*
* Funcion que actualiza los campos referentes a los pagos de las
* descargas.
*/
$ssql =" update tbpv_tarifa_suscriptor set";
$ssql.=" wtu_ban_efec='".config_si;
$ssql.="' , wtu_fecha_efec=".$mygestor->getFecha();
$ssql.=" , wtu_autorizacion =".$mygestor->getAutorizacion();
$ssql.=" , wtu_nombre_apellido='".$mygestor->getNombre().' '.$mygestor->getApellido();
$ssql.="' ,wtu_vencimiento='".$mygestor->getAnio().'-'.$mygestor->getMes();
$ssql.="' ,wtu_num_tarjeta='".$mygestor->getNum_tarjeta();
$ssql.="' ,wtu_tipo_tarjeta=".$mygestor->getTipo_tarjeta();
$ssql.=" where wtu_codigo=".$mygestor->getNum_factura();
$ssql.=" and wtu_ban_efec = '".config_no;
$ssql.="' and wtu_estado='".config_estado_act."'";
if (!@mysql_query($ssql))
{
die('Error en update descarga: '.mysql_error());
$ok=0;
return 0;
}
}
function gestionar_anulacion($id_orden, &$ok)
{
/*
* permite realizar las anulaciones respectivas
* a las ordenes que no se requieran pagar
*/
$ok=0;
$ssql=" update tbpv_descarga set wde_estado ='I'";
$ssql.= " where wde_numero =".$id_orden;
echo $ssql;
$rs=mysql_query($ssql);
if (!$rs)
{
die('Could not connect:'.mysql_error());
}
$ssql=" update tbpv_detalle_descarga set wdd_estado ='I'";
$ssql.= " where wdd_numero =".$id_orden;
$rs=mysql_query($ssql);
if (!$rs)
{
die('Could not connect:'.mysql_error());
}
$ok=1;
}
}?>
Gráfico No.1.23j. Clase cls_sqlgestor
115
1.4.16 cls_transgestor
Ubicación: /lib/clases/ clases/gestor/cls_transgestor.php
<?php class cls_transgestor
{
/*
* metodos que accesan a las cls_sqlgestor
* para realizar las sentencias requeridas.
*/
function __construct()
{
}
function gestionar_cancelacion(cls_gestor_pagos $mygestor, &$ok)
{
/*
* con el objeto y la variable ingresan los datos a la base
* por el metodo gestionar_cancelacion
*/
$link=new DB_mysql();
// crea un objeto tipo DB_mysql
$mysqlgestor= new cls_sqlgestor($link);// crea un objeto tipo cls_sqlgestor
$mysqlgestor->gestionar_cancelacion( $mygestor, $ok);// llama a metodo
$link->__sleep();// cierra conexion
}
function cancelar_orden(cls_gestor_pagos $mygestor, &$ok)
{
/*
* con el objeto y la variable ingresan los datos a la base
* por el metodo gestionar_cancelacion
*/
$link=new DB_mysql(); // crea un objeto tipo DB_mysql
$mysqlgestor= new cls_sqlgestor($link);// crea un objeto tipo cls_sqlgestor
$mysqlgestor->cancelar_orden( $mygestor, $ok);// llama a metodo
$link->__sleep();// cierra conexion
}
function gestionar_descarga($orden, $producto, &$ok)
{
/*
* con el objeto y la variable ingresan los datos a la base
* por el metodo gestionar_descarga para el registro
* de la descargas
*/
$link=new DB_mysql();
// crea un objeto tipo DB_mysql
$mysqlgestor= new cls_sqlgestor($link); // crea un objeto tipo cls_sqlgestor
$mysqlgestor->gestionar_descarga($orden, $producto, $ok);// llama a metodo
$link->__sleep();// cierra conexion
}
Gráfico No.1.24a. Clase cls_transgestor
116
function gestionar_suscripcion(cls_gestor_pagos $mygestor, &$ok)
{
/*
* con el objeto y la variable ingresan los datos a la base
* por el metodo gestionar_suscripcion para el registro
* de la cancelacion de suscripcion
*/
$link=new DB_mysql();
// crea un objeto tipo DB_mysql
$mysqlgestor= new cls_sqlgestor($link);// crea un objeto tipo cls_sqlgestor
$mysqlgestor->gestionar_suscripcion( $mygestor, $ok);// llama a metodo
$link->__sleep();// cierra conexion
}
function gestionar_anulacion($id_orden, &$ok)
{
/*
* con la variable ralaiza la anulacion
* de la orden de descargas.
*/
$link=new DB_mysql();// crea un objeto tipo DB_mysql
$mysqlgestor= new cls_sqlgestor($link);// crea un objeto tipo cls_sqlgestor
$mysqlgestor->gestionar_anulacion($id_orden, $ok);// llama a metodo
$link->__sleep();// cierra conexion
}
}?>
Gráfico No.1.24b. Clase cls_transgestor
117
1.4.17 Descargar.php
Pagina que se encarga de presentar los ítems que se podrá
descargar.
Ubicación: decargar.php
<?php
// añade las librerias
include ("./lib/lib.inc.php");
/* pagina que presenta la orden
* para realizar la descarga*/
class PaginaWeb extends PlantillaHtml{
var $ok;
var $array;
var $id_orden;
function PreProceso()
{
// verifica que haya una session
if(!isset($_SESSION['usuario']))
{
header('location:'.config_live_site.'login.php');
}
// recupera el numero de la oreden de descargas
if ((isset($_GET['id_orden']))||(isset($_POST['id_orden'])))
{
if(isset($_GET['id_orden']))
{
$this->id_orden=$_GET['id_orden'];
}
if(isset($_POST['id_orden']))
{
$this->id_orden=$_POST['id_orden'];
}
}
}
function SeccionCentroMostrarHtml()
{
$this->ok=0;
$this->array=array();
$this->opcion='ok';
if($this->opcion=='ok')
{
// genera el detalle para realizar la descarga
$mytransdetdescarga=new cls_transdetalle_ds();// crea un objeto de tipo cls_transdetalle_ds
/*
* llama a la funcion consultar_x_orden_desc
* la que se encarga de recuperar la orden de descarga
*/
$mytransdetdescarga->consultar_x_orden_desc($this->id_orden,$this->array ,$this->ok);
if ($this->ok==1)// por verdadero
{
$mybox = new CuadroHtml('Descargar','90%',"ZG",0,1, '',0,1,1);// crea el cuadro
$mybox->Agregar(0,0,"Codigo");
$mybox->Agregar(1,0,"Descripcion");
$i=0;
while ($i<count($this->array))
{
/*
* añade los datos de la consulta a la tabla
*/
$mybox->Agregar(0,$i+1,$this->array[$i]->getCodigo());
$mybox->Agregar(1,$i+1,$this->array[$i]->getDescripcion());
Gráfico No.1.25a. descargar.php
118
$mybox->Agregar(2,$i+1 , $this->array[$i]->getNum_descarga());
// link que ejecuta la descarga
$url="<a href='".config_live_site."download.php?clave=".$this->array[$i]>getClave()."&id_orden=".$this->id_orden."'>descargar</a>";
if ($this->array[$i]->getNum_descarga()!=config_max_desc)
{$mybox->Agregar(3,$i+1, $url);}
$i++;
}
$mybox->MostrarHtml();
}
$j=0;
}
}
}
$mypagina = new PaginaWeb('Descarga');
$mypagina->MostrarHtml();
?>
Gráfico No.1.25b. descargar.php
1.4.18 Download.php
Pagina que realiza la descarga individual del contenido recibe por get
el id_orden y la clave del contenido con la cual evaluara si tiene la
oportunidad.
Ubicación: download.php
<?PHP
include ("./lib/lib.inc.php");
/* pagina que permite
* realizar la descarga de archivos.
*/
$clave=$_GET['clave'];
$id_orden=$_GET['id_orden'];
$var_direccion;
$var_len;
$var_contador;
$ok=0;
$mytransde_desc=new cls_transdetalle_ds();
// sensa que tenga posibilidad de descarga
$mytransde_desc->consulta_oportunidad($id_orden,$clave,$ok,$var_contador);
if ($ok==1)
{
if ($var_contador<config_max_desc)
{
Gráfico No.1.26a. Download.php
119
// realiza la consulta de la ruta y el nombre del archivo que se requiere descargar
$ok=0;
$mytransgestor=new cls_transgestor();
$mytransgestor->gestionar_descarga($id_orden,$clave,$ok);
if ($ok==1)
{
$link=new DB_mysql();
$ssql=" select wpp_direccion, wpp_codigo, wpp_tipo_archivo
from tbpv_producto_publicado where wpp_clave=".$clave;
$rs = mysql_query($ssql);
if($rs)
{
if(mysql_num_rows($rs)>0)
{
$row = mysql_fetch_array($rs, MYSQL_ASSOC);
$var_direccion=$row['wpp_direccion'].$row['wpp_codigo'].config_extension;
$var_len=filesize($var_direccion);
// lineas que permiten realizar las descargas.
header("Content-type: application/force-download");
header("Content-Transfer-Encoding: Binary");
header("Content-length: ".$var_len);
header("Content-disposition: attachment;
filename=\"".basename($var_direccion)."\"");
echo file_get_contents ($var_direccion);// presentar
}
}
else
{
die('Could not connect:'.mysql_error());
}
$link->__sleep();
header ("location:".$_SERVER['HTTP_REFERER']);
// regresa a la pantalla que lo llamo
}
}
else
{
header ("location:".$_SERVER['HTTP_REFERER']);
// regresa a la pantalla que lo llamo
}
}
?>
Gráfico No.1.26b. Download.php
120
1.4.19 Admincontrolcontenido.php
Pagina que presenta la búsqueda de los contenidos por parte del
administrador. Envia datos por get para realizar la respectiva
búsqueda de manera paginada son presentados lo sresultados.
Ubicación: admincontrolcontenido.php
<?php
/*
* Pagina que presenta todo el contenido que se encuentra
* en nuestras bases de datos
*/
include ("lib/lib.inc.php");
class PaginaWeb extends PlantillaAdminHtml
{
/*
* Declaracion de variables que se utilizan en esta clase
*/
var $array;
var $ok;
var $MostrarSeccionDerecha=false;
var $MostrarSeccionArribaCentro=true;
var $categoria;
var $titulo;
var $pages;
var $cantidad;
var $total_reg;
var $estado;
function PreProceso()
{
/*
* Atrapa los parametros que son enviados por el formulario despues de sensar
* el inicio de una secion como asuario administrador, puesto que si no cumple no le permitira ingresar
* a dicha pagina.
*/
if(!isset($_SESSION['admin']))
{
header('location: '.config_live_site.'admin.php');
exit();
}
if (!isset($_GET["categoria"]))
{ $this->categoria=0;
}
else
{$this->categoria=$_GET["categoria"];}
if (!isset($_GET["titulo"]))
{$this->titulo="";}
else
{$this->titulo=$_GET["titulo"];}
if (!isset($_GET["pagina"]))
{ $this->pages=0;}
else
{$this->pages=$_GET["pagina"];}
Gráfico No.1.27a. admincontrolcontenidos.php
121
if (!isset($_GET["estado_prod"]))
{ $this->estado=1;}
else
{$this->estado=$_GET["estado_prod"];}
$this->cantidad=20;
if (isset($_GET["categoria"])&&(isset($_GET["titulo"]))&&(isset($_GET["estado_prod"])))
{
/*
* recupera el total de registros que contiene el
* producto dependiendo la categoria.
*/
$mytransproducto = new cls_transproducto_publicado();
$this->total_reg=$mytransproducto->total_registro($this->categorias,$this->titulo,$this->estado);
}
}
function SeccionCentroMostrarHtml()
{
/*
* Genera el formulario que realiza las busquedas respectivas
* x categoria de los contenidos requeridos.
*/
echo "<form name='buscar' action='".config_live_site."admincontrolcontenido.php' method='GET'
enctype='multipart/form-data'>";
echo "<table width=\"100%\" height=\"12\" >";
echo "<tr>";
echo "<td width=\"20%\" height=\"2\" class=\"layout_cuadroZGpie\" align=\"right\">";
$this->array=array();
$this->ok=0;
$i=0;
$mytranscategoria= new cls_transcategoria();
$mytranscategoria->consulta_categoria($this->array,$this->ok);
if($this->ok==1)
{
$var_cadena="<select name='categoria' id='categoria' class='layout_peq' > ";
while ($i<count($this->array))
{
if ($this->categoria==$this->array[$i]->getCodigo())
{ $selec="selected";}
else
{$selec="";}
$var_cadena.="<option value='".$this->array[$i]->getCodigo()."' $selec >
".$this->array[$i]->getDescripcion()."</option>";
$i++;
}
$var_cadena.="</font></select>";
}
echo "Categoria: ".$var_cadena;
$var_cadena2="<input type='text' id='titulo' name='titulo' size='26' class='layout_peq' value='$this->titulo'>";
echo "Titulo: ".$var_cadena2;
$this->array=array();
$this->ok=0;
$var_cadena="";
// realiza la consulta de la consulta.
$myestado= new cls_TransEstado_Producto();
$myestado->consulta_todos($this->array,$this->ok);
if($this->ok==1)
{
$i=0;
// crea el combo
$var_cadena="<select name='estado_prod' id='estado_prod' class='layout_peq' >";
Gráfico No.1.27b. admincontrolcontenidos.php
122
while ($i<count($this->array))
{
if ($this->estado==$this->array[$i]->getClave())
{ $selec="selected";}
else
{$selec="";}
$var_cadena.="<option value='".$this->array[$i]->getClave()."' $selec
>".$this->array[$i]->getDescripcion()."</option>";
$i++;
}
$var_cadena.="</select>";
}
echo "Estado:".$var_cadena;
$var_cadena=" <input type='submit' value ='Buscar' class='layout_peq'>";
echo $var_cadena;
echo "</td>";
echo "</tr>";
echo "</table>";
echo "</form>";
/*Genera la paginacion correspondiente de la busqueda realizada.
*/
$this->array=array();
$this->ok=0;
$num_pagina = intval($this->total_reg/$this->cantidad);
$pie="";
if ($this->pages <> 0)
{
// crea el link de anterior, realiza el calculo correspondiente
$pag = $this->pages - 1;
$url=config_live_site."admincontrolcontenido.php?categoria=$this>categoria&titulo=$this->titulo&pagina=$pag&estado=$this->estado&";
$miVinculo = new VinculoUrl("« Anterior",$url);
$pie.= $miVinculo->Vaciar();// agrega el link
}
else {
$pie.= '' ;
}
for ($i=0 ;$i<($num_pagina+1); $i++)
{
if ($this->pages==$i)
{ $pie.="<".$i.">";}// genera la cadena con el numero
else
{
$url=config_live_site."admincontrolcontenido.php?categoria=$this->categoria&titulo=$this>titulo&pagina=$i&estado=$this->estado&";
$miVinculo = new VinculoUrl($i,$url);
$pie.="<".$miVinculo->Vaciar()."> ";// crea la cadena de las paginas
}
}
if ($this->pages < $num_pagina)
{
/*
* crea el link siguiente.
*/
$pag = $this->pages + 1;
$url=config_live_site."admincontrolcontenido.php?categoria=$this>categoria&titulo=$this->titulo&pagina=$pag&estado=$this->estado&";
$miVinculo = new VinculoUrl("Siguiente »",$url,'mainlevel');
$pie.= $miVinculo->Vaciar();
Gráfico No.1.27c. admincontrolcontenidos.php
123
}
else {
$pie.= '';
}
echo "<br>";
// crea objeto tipo cls_transproducto_publicado
$mytransproducto = new cls_transproducto_publicado();
// realiza la consulta
$mytransproducto->Cons_Prod_Cate_Titulo($this->categoria,$this->titulo, $this->array, $this>ok,$this->pages,$this->cantidad,$this->estado);
if($this->ok==0)
{
$mybox = new CuadroHtml('Resultados ',230,"ZG",0,1,"",0,0,0);
$mybox->Agregar(0,0,"No existen Datos Con estos parametros indicados ");
}
else
{
/*
* presenta el resultado de la busqueda realizada
*/
$mybox = new CuadroHtml('Resultados','90%',"ZG",0,1, $pie,1,1,1);
$mybox->Agregar(0,0,'Codigo');
$mybox->Agregar(1,0,'Titulo');
$mybox->Agregar(2,0,'Resumen');
$mybox->Agregar(3,0,'Ver');
$mybox->Agregar(4,0,'Estado');
$i=0;
while($i<count($this->array))
{
$mybox->Agregar(0,$i+1,$this->array[$i]->getCodigo());
$mybox->Agregar(1,$i+1,$this->array[$i]->getDescripcion());
$mybox->Agregar(2,$i+1,$this->array[$i]->getResumen());
$myimagen1="<img src='img/page_find.png' width='13' height='13'
border='0'>";
/*Crea el link de la ventana emergente para realizar la
* modificacion del registro requerido*/
$url1="<a href=\"#\"
onclick=\"popupWindow('".config_live_site."admincontenido_view.php?clave=".$this->array[$i]>getClave()." ','view',640,450,'si');\">$myimagen1</a>";
$mybox->Agregar(3,$i+1,$url1);
$myimagen="<img src='img/icon_up.png' width='13' height='13' border='0'>";
echo "<script language='javascript' src='jscript/validar.js'></script>";
/* Crea el link de la ventana emergente para realizar la
* modificacion del registro requerido */
$url="<a href=\"#\"
onclick=\"popupWindow('".config_live_site."admin_cont_update.php?clave=".$this->array[$i]>getClave()."','updt',500,430,'si');\">$myimagen</a>";
$mybox->Agregar(4,$i+1,$url);
$i++;
}
}
$mybox->MostrarHTML();
}}
$mypagina = new PaginaWeb('Control Contenido');
$mypagina->MostrarHtml();
?>
Gráfico No.1.27d. admincontrolcontenidos.php
124
1.4.20 Admin_cont_update.php
Pagina que presenta los datos que se requiera para poder modificar.
Ubicación: admin_cont_update.php
<?php
/*
* Pagina que presenta los datos del registro del
* contenido subido por el usuario
* es manipulada por el administrador del sitio
*/
include ("./lib/lib.inc.php");
class PaginaWeb extends PlantillaDialogoHtml{
var $clave;
var $ok;
var $array=array();
var $oferta;
var $valor=0;
function PreProceso()
{
/*
*
Realiza el preproceso atrapando los datos que son enviados por
*
el formulario.
*/
if ((isset($_GET['clave']))||(isset($_POST['clave'])))
{
if(isset($_GET['clave']))
{
$this->clave=$_GET['clave'];
}
if(isset($_POST['clave']))
{
$this->clave=$_POST['clave'];
}
}
if (isset($_POST['opcion']))
{
$opcion=$_POST['opcion'];
// por 'exit sale de la pantalla actual'
if($opcion=='exit')
{
echo "<script>\n";
echo "window.close();\n";
echo "</script>\n</body>\n</html>";
die;
}
if(!isset($_POST['oferta']))
{
// si no envia oferta guarda los datos que se han enviados
$this->oferta='N';
$myproducto=new cls_producto_publicado();
$myproducto->setClave($this->clave);
$myproducto->setResumen($_POST["txtarea"]);
$myproducto->setEstado($_POST["estado_prod"]);
$myproducto->setOferta($this->oferta);
$myproducto->setPorcentaje(config_comision);
$res=$this->admin_actualizar_cont($myproducto);
Gráfico No.1.28a. admin_cont_update.php
125
/*
* se genera un scrip en js para
* cerrar la pantalla y actualizarla a la vez
*/
if ($res==1)
{
echo "<script>\n";
echo "window.opener.location.reload();\n";
echo "window.close();\n";
echo "</script>\n</body>\n</html>";
}
}
else
{
// si envia el parametro de oferta realiza los calculos correspondiente
// y guarda dichos cambios
$this->oferta='A';
$myproducto=new cls_producto_publicado();
$myproducto->setClave($this->clave);
$myproducto->setResumen($_POST["txtarea"]);
$myproducto->setEstado($_POST["estado_prod"]);
if($_POST['txtvalor']<config_comision)
{
// guarda los datos en el objeto
$myproducto->setOferta($this->oferta);
$myproducto->setPorcentaje($_POST['txtvalor']);
}
else
{
// guarda los datos en el objeto
$myproducto->setPorcentaje(config_comision);
$myproducto->setOferta('N');
}
// actualiza los datos
$res=$this->admin_actualizar_cont($myproducto);
if ($res==1)
{
/*
* se genera un scrip en js para
* cerrar la pantalla y actualizarla a la vez
*/
echo "<script>\n";
echo "window.opener.location.reload();\n";
echo "window.close();\n";
echo "</script>\n</body>\n</html>";
}
}
}
}
function admin_actualizar_cont(cls_producto_publicado $myproducto)
{
/*
* funcion que modifica el producto gracias al objeto cls_transproducto_publicado
* que contiene la invocacion para realizar la actualizacion
*/
$mytransproducto=new cls_transproducto_publicado();
$res=$mytransproducto->admin_modificar($myproducto);
return $res;
}
Gráfico No.1.28b admin_cont_update.php
126
function SeccionCentroMostrarHtml()
{
/* Funcion que genera el formulario correspondiente a la consulta del contenido publicado
* Es la interfaz que presenta el registro guardado en la base.*/
$this->ok=0;
$myproducto = new cls_producto_publicado();
$myproducto->setClave($this->clave);
$mytransproducto = new cls_transproducto_publicado();
$mytransproducto->consulta_producto($myproducto,$this->ok);
if ($this->ok==0)
{
$mybox = new CuadroHtml('Contenido',230,"3",0);
$mybox->Agregar(0,0,"No existen Registro");
$mybox->MostrarHTML();
}
/ genera el cuadro de presentacion de datos*/
echo "<form name='form' action='".config_live_site."admin_cont_update.php' method=\"POST\"
enctype=\"application/x-www-form-urlencoded\" >";
$mybox = new CuadroHtml('Modificar','100%',"3",0);
$mybox->Agregar(0,1," ");
$mybox->Agregar(1,0,"<br><font class='layout_small'> Codigo:</font> ");
$mybox->Agregar(1,1,"<font class='layout_small'> Titulo:</font>");
$mybox->Agregar(1,2,"<font class='layout_small'> Precio </font>");
$mybox->Agregar(1,3,"<font class='layout_small'> Porcentaje</font>");
$mybox->Agregar(1,4,"<font class='layout_small'> F. Publición:</font>");
$mybox->Agregar(1,5,"<font class='layout_small'> No Descargas:</font>");
$mybox->Agregar(1,6,"<font class='layout_small'> Breve resumen de la Obra:</font>");
$mybox->Agregar(1,7,"<font class='layout_small'> Est. Producto</font>");
$mybox->Agregar(1,8,"<font class='layout_small'> Oferta</font>");
// asigna los valores a los texto
$mybox->Agregar(2,0,"<br><font class='layout_small'> ".$myproducto->getCodigo()."</font>");
$mybox->Agregar(2,1,"<font class='layout_small'> ".$myproducto->getDescripcion()."</font>");
$mybox->Agregar(2,2,"<B> <FONT color=red>".config_signo." ".number_format($myproducto>getPrecio(), 2, '.', '')."</font>");
$mybox->Agregar(2,3,"<input type='text' id='txtvalor' class='layout_small' name='txtvalor' size='1'
value='".$myproducto->getPorcentaje()."'>");
$mybox->Agregar(3,3,"<div id='lblvalor' class='campoError'></>");
$mybox->Agregar(2,4,"<font class='layout_small'> ".$myproducto->getFecha_publicacion()."</font>");
$mybox->Agregar(2,5,"<font class='layout_small'> ".$myproducto->getNumero_descarga()."</font>");
$mybox->Agregar(2,6, "<textarea name='txtarea' id='txtarea' cols='50' rows='15' class='layout_small'
>".$myproducto->getResumen()."</textarea>");
$mybox->Agregar(3,6,"<div id='lblarea' class='campoError'></>");
$this->array=array();
$this->ok=0;
$i=0;
$var_cadena="";
// realiza consulta para la vizualizacion de los contenidos
$myestado= new cls_TransEstado_Producto();
$myestado->consulta_todos($this->array,$this->ok);
if($this->ok==1)
{
// genera el combo
$var_cadena="<select name='estado_prod' id='estado_prod' class='layout_peq' >";
while ($i<count($this->array))
{
if($myproducto->getEstado()==$this->array[$i]->getClave())
{$selection="selected";}
else
{$selection="";}
$var_cadena.="<option value='".$this->array[$i]->getClave()."' $selection>".$this>array[$i]->getDescripcion()."</option>";
$i++;
}
$var_cadena.="</select>";
}
Gráfico No.1.28c. admin_cont_update.php
127
$mybox->Agregar(2,7,$var_cadena);
if($myproducto->getOferta()=='A')
{
$var_check='checked';
}
else
{
$var_check='';
}
$mybox->Agregar(2,8,"<input type='checkbox' id='oferta' name='oferta' value='A' $var_check >");
$mybox->Agregar(1,10, "<input type=\"hidden\" id=\"opcion\" name=\"opcion\" size=\"10\" >");
$mybox->Agregar(3,10, "<input type=\"hidden\" id=\"clave\" name=\"clave\" size=\"10\"
value=".$this->clave.">");
$bottona="<input type='submit' name='guardar' value='guardar' class='layout_peq' onClick='return
valida_carga_archivo_modificado(form)'>";
$bottonb="<input type='submit' name='cancelar' value='cancelar' class='layout_peq'
onclick=\"opcion.value='exit'\">";
$mybox->Agregar(1,9, $bottona.$bottonb);
$mybox->MostrarHTML();//mostrar el cuadro
echo "</form>";// cierra la form
}
}
$mypagina = new PaginaWeb('Contenido');// crea pagina
$mypagina->MostrarHtml();//presenta la pagina
?>
<script language="javascript" src="jscript/validar.js"></script>
<style type="text/css">
<!-.campoError{
font-family: Arial, Helvetica, sans-serif;
font-size: 10px;
font-weight: bold;
color: #FF0000;
}
-->
</style>
Gráfico No.1.28d. admin_cont_update.php
128
1.4.21 Admincontenido_view.php
Pagina que presenta los datos que se requiera para poder modificar.
Ubicación: admincontenidoview.php
<?php
/*
* Pagina que presenta el contenido del
* articulo que se publico
*/
// añadir librerias.
include ("lib/lib.inc.php");
class PaginaWeb extends PlantillaViewHtml
{
var $MostrarSeccionDerecha=false;
function SeccionCentroMostrarHtml()
{
/*presenta el contenido del documento
*/
if(!isset($_GET['clave']))
{
//header ("location:".$_SERVER['HTTP_REFERER']);
return;
}
$clave=$_GET['clave']; // asignacion
// llama el contenido que se encuentra adminview.php
echo "<iframe name='iframe_contenido' src='".config_live_site."adminview.php?clave=$clave&' height='100%' width='100%'
scrolling='yes' frameborder='0' marginheight='0' marginwidth='0' AllowTransparency></iframe>";
}
}
$mypagina = new PaginaWeb('Contenido');
$mypagina->MostrarHtml();
?>
Gráfico No.1.29a. admincontenido_view.php
129
1.4.22 Adminview.php
Pagina realiza la recuparacion del archivo desde la ruta guardada en
la base
Ubicación: admincontenidoview.php
<?php
/*
* Pagina que genera el contenido del archivo
* pdf
*/
include ("./lib/lib.inc.php");
$clave=$_GET['clave'];
// crea una conexion
$link=new DB_mysql();
// declaracion de variables
$var_direccion;
$var_len;
/*
* genera la sentecia sql que recupera los datos guardado
* en la base de datos.
*/
$ssql=" select wpp_direccion, wpp_codigo, wpp_tipo_archivo from tbpv_producto_publicado where wpp_clave=".$clave;
$rs = mysql_query($ssql);
if($rs)
{
if(mysql_num_rows($rs)>0)
{
/*
* Con estas lineas muestra los pdf en la ruta que dicho documento se encuentra.
*/
$row = mysql_fetch_array($rs, MYSQL_ASSOC);// asigna la consulta a una estructura
$var_direccion=$row['wpp_direccion'].$row['wpp_codigo'].config_extension;
$var_len=filesize($var_direccion);//calcula el tamaño del documento
header("Cache-Control: no-store, no-cache, must-revalidate"); // no reserva cache
header("Pragma: no-cache"); //no reserva cache
header('Content-Type: '.$row['wpp_tipo_archivo']);// decide el tipo de documento
header("Content-Length: $var_len");// reserva el tamaño
header('Content-disposition: inline; filename="'.$var_direccion.'"');// dispone del documento
readfile($var_direccion);// lee el documeno
}
}
else
{
die('Could not connect:'.mysql_error());
}
$link->__sleep();// cierra la conexion
?>
Gráfico No.1.30ª. adminview.php
130
1.4.23 Cargar_archivo.php
Present a el formula para guardar los contenidos que los suscriptores
necesites subir.
Ubicación: cargar_archivo.php
<?php
/*
* pagina que muestra la carga de
* los archivos, Se realizan las respectivas validaciones
* que se requiere para su respectiva publicacion
*/
include ("./lib/lib.inc.php");
class PaginaWeb extends PlantillaHtml
{
/*
* Declaracion de varibles que requiere la clase
*/
var $usuario;
var $array;
var $ok;
var $estado;
var $clave;
var $mensaje;
var $valor;
var $titulo;
var $last_name;
function PreProceso()
{
///para accesar a cargar arcjivos, debemos ver si el///
///usuario esta validado en el sistema, de lo//////////
///contratio lo enviamos a login.hp///////////////////
if(!isset($_SESSION['usuario']))
{
header('location: '.config_live_site.'login.php');
exit();
}
$this->usuario=$_SESSION['usuario'];
$mytransaldo= new cls_transtarifa_suscriptor();
$saldo = $mytransaldo->validar_saldo($this->usuario);
if($saldo==0)
{
header('location:'.config_live_site.'orden_suscripcion.php');
exit();
}
$this->usuario=$_SESSION['usuario'];
if(!empty($_POST))
{
if(isset($_POST['txttitulo']))
{
$this->titulo=$_POST['txttitulo'];}
Gráfico No.1.31a. cargar_archivo.php
131
else
{
$this->titulo="";
}
if(isset($_POST['txtvalor']))
{
$this->valor=$_POST['txtvalor'];}
else
{
$this->valor="";
}
if(isset($_POST['txtarea']))
{
$this->last_name=$_POST['txtarea'];
}
else
{
$this->last_name="";
}
if ($_POST["ok"] == "carga")
{
/*
* En esta parte se recupera la informacion del
* archivo para ir agregandola a la clase del producto.
* para luego grabarla si pasa los filtros correspondiente
*/
ini_set('max_execution_time','300');
//Maximum execution time of each script, in seconds
ini_set('max_input_time', '60');
// Maximum amount of time each script may spend parsing request data
ini_set('memory_limit','20');
//Maximum amount of memory a script may consume (16MB)
ini_set('post_max_size','8M');
//Maximum size of POST data that PHP will accept.
ini_set('file_uploads', 'On');
//Whether to allow HTTP file uploads.
ini_set('upload_max_filesize','20M');
//Maximum allowed size for uploaded files.
ini_set('register_globals','On');
/* You should do your best to write your scripts so that they do not require
register_globals to be on; Using form variables as globals can easily lead
to possible security problems, if the code is not very well thought of.*/
ini_set('register_long_arrays','On');
/*Whether or not to register the old-style input arrays, HTTP_GET_VARS
and friends. If you're not using them, it's recommended to turn them off,
for performance reasons.*/
/*
* asignacion de los atributos de archivo a variables
*/
$archivo = $_FILES["archivo"]['name'];// nombre
$archivo1 = $_FILES["resumen"]['name'];// nombre resumen
$tipo = $_FILES["archivo"]['type'];// tipo archivo
$tipo1 = $_FILES["resumen"]['type'];//tipo de resumen
$tamanio = $_FILES["archivo"]['size'];// tamaño de archivo
$tamanio1 = $_FILES["resumen"]['size'];// tamaño de resumen
$tmptipo = substr($tipo,-3); // recupera extencion
$tmptipo1 = substr($tipo1,-3);
if($archivo !== "")// verifica si llega el archivo
{
if($tmptipo == config_extensions)// verifica l aextencion
{
if(($tmptipo1 == config_extensions) or ($tmptipo1== "")) // verifica la
extencion de l resumen
Gráfico No.1.31b. cargar_archivo.php
132
if(($tmptipo1 == config_extensions) or ($tmptipo1== "")) // verifica la
extencion de l resumen
{
if($tamanio<config_maximo_archivo)// tamaño maximo de
archivo
{
if(($tamanio1<config_maximo_resumen)&&($tamanio1<$tamanio))// tamaño minimo de resumen
{
$var_cadena=$_POST['categoria'];
$mycategoria=new cls_categoria();// recuper el tipo de categoria
$mycategoria>setCodigo($var_cadena);//codigo de categoria
$mytranscategoria= new cls_transcategoria();//crea
cls_transcategoria
$mytranscategoria->consulta_u($mycategoria,$this->ok);
$var_destino=config_ruta_car."/".$mycategoria->getDescripcion()."/archivo/";
$destino=$var_destino.$archivo; // archivo de destino
$var_destino1=config_ruta_car."/".$mycategoria->getDescripcion()."/resumen/";
$destino1=$var_destino1.$archivo1;// destino de resumen
if
(copy($_FILES["archivo"]['tmp_name'],$destino))// copia a la carpeta destino
{
if(copy ($_FILES["resumen"]['tmp_name'],$destino1))//copia a carpeta destino de resumen
{
}
$txttitulo =$_POST['txttitulo'];//titulo
$txtvalor =$_POST['txtvalor'];// valor
$txtarea =$_POST['txtarea'];// comentario
$myproducto=new cls_producto_publicado();// crea un objeto cls_producto_publicado
$myproducto->setDescripcion($txttitulo);//descripcion
$myproducto->setPrecio($txtvalor);//valor
$myproducto->setCategoria($var_cadena);//categoria
$myproducto->setFecha_publicacion('CURDATE()');//fecha
$myproducto->setDireccion($var_destino);// ruta de direccion
$myproducto->setDireccion_resumen($var_destino1);
$myproducto->setNumero_descarga(0);
$myproducto->setPorcentaje(20);
$myproducto->setPrecio_publico(($txtvalor*config_comision/100) + $txtvalor);
Gráfico No.1.31c. cargar_archivo.php
133
///////////////PUBLICACION AUTOMATICA SI EL ARCHIVO/////
///////////////TIENE UN TAMAÑO MENOR A 2MB//////////////
////////////////////////1 pendiente////////////////////
////////////////////////2 publicado////////////////////
if($tamanio<config_tope_maximo)
{
$myproducto->setEstado(2);
}
else
{
$myproducto->setEstado(1);
}
$myproducto->setAlias($this->usuario);
$myproducto->setTipo_motivo(1);
$myproducto->setResumen($txtarea);
$myproducto->setArchivo($archivo);
$myproducto->setArchivo_resumen($archivo1);
$myproducto->setTamanio($tamanio);
$myproducto->setTamanio1($tamanio1);
$myproducto->setTipo_archivo($tipo);
$myproducto->setTipo_resumen($tipo1);
$myproducto->setNombre_archivo($archivo);
$myproducto->setNombre_resumen($archivo1);
$mytranscontenido= new cls_transproducto_publicado();
// validacion del contenido
$saldo = $mytranscontenido->validar_producto($this->usuario, $archivo);
$this->estado=0;
if($saldo==0)
{
$mytranspublicado= new cls_transproducto_publicado();
// guarda la informacion del contenido
$this->estado=$mytranspublicado->insertar_t($myproducto);
}
if($this->estado==1)
{
// direcciona al comentario
header('location:'.config_live_site.'comentario_suscripcion.php?mens=2&clave='.$myproducto->getClave());
exit();
}
if($this->estado==0)
{
// direcciona al comentario
header('location:'.config_live_site.'comentario_suscripcion.php?mens=3');
exit();
}
}
}
else
//El Resumen debe ser menor a 1MG
$this->mensaje="** El Resumen debe ser menor a 1MG";
}
else
//El Archivo de ser un archivo menor a 4MG
$this->mensaje="** El Archivo de ser un archivo menor a 4MG ";
}
else
//El Resumen debe ser un archivo PDF
$this->mensaje="** El Resumen debe ser un archivo PDF";
}
else
Gráfico No.1.31d. cargar_archivo.php
134
// El Archivo debe ser un archivo PDF
$this->mensaje="** El Archivo debe ser un archivo PDF";
}
else
{
// El Archivo a subir debe ser obligatorio"
$this->mensaje="** El Archivo a subir debe ser obligatorio"."<br>"."El Resumen es
opcional";
}
}
}
}
function SeccionCentroMostrarHtml()
{
/*
* Genera el formulario correspondiente que muestra
*/
echo "<form name='form1' method='POST' action='".config_live_site."cargar_archivos.php'
enctype='multipart/form-data' >";
$mybox = new CuadroHtml('AQUIDESCARGA INFORMA',450,3);
$var_cadena="";
$var_cadena.="<TABLE cellSpacing=1 cellPadding=1 width='400' border=0>";
$var_cadena.="<TBODY>";
$var_cadena.="<TD class=linksec height=20> <FONT color=black> ·: Que usted pueder subir contenidos de hasta
4MB </font></TD>";
$var_cadena.="</TR><tr>";
$var_cadena.="<TD class=linksec height=20><FONT color=black>·: Puedes compartir contenidos con todo el
mundo</font></TD></tr><tr><td>";
$var_cadena.="<TABLE cellSpacing=0 cellPadding=0 width='100%' border=0><TBODY>";
$var_cadena.="<TR class=menu_option onmouseover=\"this.className='menu_option_over'\" style=\"CURSOR:
pointer; PADDING-TOP: 2px\" onclick=\"document.location='".config_live_site."welcome.php'\"
onmouseout=\"this.className='menu_option'\">";
$var_cadena.="<TD class=linksec height=20></TD><TD class=linksec height=20>.: Autoridad Controladora de
Nuestro Portal</TD></tr></TBODY></TABLE>";
$var_cadena.=" </td></tr></TBODY></TABLE>";
$mybox->Agregar(9,1,config_espacio);
$mybox->Agregar(10,1,$var_cadena);
$mybox->Agregar(10,2,config_espacio);
$mybox->MostrarHTML();
$mybox = new CuadroHtml('SUBIR ARCHIVOS',450,3);
$mybox->Agregar(0,1,config_espacio);
$mybox->Agregar(0,0,config_espacio);
$mybox->Agregar(1,1,"Clasificacion:");
$mybox->Agregar(1,3,"Titulo:");
$mybox->Agregar(1,5,"Valor:");
$mybox->Agregar(1,7,"Breve resumen de la Obra:");
$mybox->Agregar(1,9,"Adjunta Archivo:");
$mybox->Agregar(1,11,"Adjunta Resumen:");
$this->array=array();
$this->ok=0;
$i=0;
// consulta categoria
$mytranscategoria= new cls_transcategoria();
$mytranscategoria->consulta_categoria($this->array,$this->ok);
if($this->ok==1)
{
// forma combo
$var_cadena="<select name='categoria' id='categoria' class='layout_peq' >";
while ($i<count($this->array))
{
$var_cadena.="<option value='".$this->array[$i]->getCodigo()."'>".$this->array[$i]>getDescripcion()."</option>";
$i++;
}
$var_cadena.="</select>";
}
Gráfico No.1.31e. cargar_archivo.php
135
$mybox->Agregar(2,1,$var_cadena);
$mybox->Agregar(2,3,"<input type='text' id='txttitulo' name='txttitulo' size='22' class='layout_small' maxlength='45'
value='".$this->titulo."' >");
$mybox->Agregar(3,3,"<div id=\"lbltitulo\" class=\"campoError\"></>");
$mybox->Agregar(2,5,"<input type='text' id='txtvalor' name='txtvalor' size=5 maxlength='5' class='layout_small'
value='".$this->valor."'>");
$mybox->Agregar(3,5,"<div id=\"lblvalor\" class=\"campoError\"></>");
$mybox->Agregar(2,7, "<textarea cols='40' rows='15' name='txtarea' id='txtarea' class='layout_small' >".$this>last_name."</textarea>");
$mybox->Agregar(3,7,"<div id=\"lblarea\" class=\"campoError\"></>");
$mybox->Agregar(2,9, "<input type='file' size=22 name='archivo' class='layout_small' id='txtarchivo'>");
$mybox->Agregar(3,9,"<div id=\"lblarchivo\" class=\"campoError\"></>");
$mybox->Agregar(2,11, "<input type='file' size=22 name='resumen' class='layout_small' id='resumen'>");
$mybox->Agregar(5,12, "<input type='hidden' name='ok' value='carga'>");
$mybox->Agregar(2,13, "<input type='submit' name='enviar' value='subir' onClick='return
valida_carga_archivo(form1)'>");
$mybox->Agregar(2,14,config_espacio);
$mybox->Agregar(2,15,$this->mensaje);
$mybox->Agregar(2,17,config_espacio);
$mybox->MostrarHTML();
echo "</form>";// fin de forma
$this->MostrarError();
}///fin SeccionCentroMostrarHtml
}//class PaginaWeb extends PlantillaHtml
$MiPagina = new PaginaWeb('Upload Pdf');
$MiPagina->MostrarHtml();
// llama los JS que maneja nuestro proyecto
?>
<script language="javascript" src="jscript/validar.js"></script>
<style type="text/css">
<!-.campoError{
font-family: Arial, Helvetica, sans-serif;
font-size: 10px;
font-weight: bold;
color: #FF0000;
}
-->
</style>
Gráfico No.1.31f. cargar_archivo.php
37
CAPITULO 2
Manual de usuario
Antes de empezar
Se recomienda leer primero este apartado
del manual, con respecto a la instalación y
configuración del sistema. Si se requieren
más detalles de funcionamiento, remitase
al manual técnico aquí proporcionado.
137
2.1 Instalación del servidor Web para Linux.
2.1.1 Pasos para la instalación de Xampp en Linux.
Lo primero es conseguir el paquete xampp-linux-1.6.3a.tar.tar, una vez
que hemos conseguido el paquete, debemos de ubicarlo en el
directorio /root/install, luego de ello procedemos a descomprimirlos.
Para realizar una correcta instalación de Xampp debemos de digitar
los siguientes comandos en la consola de Linux.
Con este comando nos cambiamos al directorio local:
[root@server ~]# cd /usr/local
Luego descomprimimos el archivo con el siguiente comando:
[root@server ~]# tar xvfz /root/install/xampp-linux-1.6.3a.tar.tar -C /opt
Luego de ello, Xampp debería estar instalado en el directorio
/opt/lampp
Ahora iniciamos el servidor web de la siguiente manera:
[root@server ~]# /opt/lampp/lampp start
Una vez que hemos iniciado el servicio de Xampp, en la consola de
Linux debe de aparecer lo siguiente:
138
XAMPP: SELinux is activated. Making XAMPP fit SELinux...
Starting XAMPP for Linux 1.6.3a...
XAMPP: Starting Apache with SSL (and PHP5)...
XAMPP: Starting MySQL...
XAMPP: Starting ProFTPD...
XAMPP for Linux started.
Esto indica que Xampp fue instalado con éxito y sus servicios se están
ejecutando correctamente.
Para continuar y saber si hemos instalado correctamente abrimos una
ventana del navegador y en la barra de direcciones digitamos la
siguiente ruta:
http://127.0.0.1/
En ese momento se debe visualizar la siguiente pantalla.
Gráfico No.2.1. Instalación de Xampp
139
2.1.2 Instalación de MySQL Tools for 5.0 para Linux.
En el desarrollo de nuestro proyecto hemos utilizado la (GUI) interfaz
grafica de usuario denominada MySQL Tools, que es la que nos
permite visualizar y manipular la base de datos de nuestro proyecto.
Dicha herramienta contiene varias opciones en la cual podemos hacer
consultas, administración de la base web.
Para instalar este programa en Linux, debemos de ubicar el paquete
mysql-gui-tools-5.0r12-linux-i386.tar.tar en el directorio /root/install,
luego de ello procedemos a descomprimirlos.
Con este comando nos cambiamos al directorio local:
[root@server ~]# cd /usr/local
Luego descomprimimos el archivo con el siguiente comando:
[root@server ~]# tar xvfz /root/install/ mysql-gui-tools-5.0r12-linuxi386.tar.tar -C /opt
2.1.3 Instalación de la Base de Datos “Web”
Para instalar la base de datos se debe de seguir los siguientes pasos:
Seleccionar la opción de PhpMyAdmin que se encuentra en el menú
de herramientas del Xampp.
140
Gráfico No.2.2. Interfaz de PhpMyAdmin.
Se debe de escoger la opcion de importar base de datos, y seleccionar
el archivo para restaurar la base de datos.
Gráfico No.2.3. Importación de la base Web.
141
Después de esto, debe de aparecer en el listado de base de datos, el
nombre de nuestra base de datos, con sus respectivas tablas.
Gráfico No.2.4. Tablas de la base Web
2.1.4 Creación del usuario para conectarse a la base de datos de
aquidescarga.com
Para crear un nuevo usuario para la base de datos “web”, se debe de
seleccionar la opcion de “Agregar un nuevo usuario”, que se encuentra
dentro del menú de PhpMyAdmin en el Xampp.
142
Gráfico No.2.5. Creación de usuario en la base
Luego de esto, se visualizará una pantalla en la cual vamos a poder
ingresar el nombre del usuario, nombre del servidor y contraseña de la
base de datos.
Gráfico No.2.6. Privilegios para el usuario en la base “Web”.
143
En la misma página, nos muestra los privilegios que va a tener dicho
usuario, así como también el acceso a la base de datos a la cual va a
tener acceso el usuario que hemos creado.
2.1.5 Instalación del portal aquidescarga.com dentro de nuestro
servidor Web en Linux.
Para proceder a la instalación del portal en nuestro servidor web, se
debe de copiar los archivos que se encuentran dentro de la carpeta
“aquidescarga” en el directorio llamado /opt/lampp/htdocs/ y de esta
manera queda instalado el portal dentro del servidor web.
Gráfico No.2.7 Pantalla inicial de Aquidescarga
144
2.2 Instalación del servidor Web para Windows.
2.1.1 Pasos para la instalación de EasyPHP.
Para la instalación del servidor web en Windows, hemos utilizado una
herramienta similar al Xampp que se utilizó en Linux, dicha programa
permite instalar de una manera práctica los 3 servicios (Apache, Php y
Mysql) necesarios para nuestro servidor web.
Caracteristicas del EasyPHP.
Plataforma: Win/95/98/ME/2000/NT/XP
Idioma: Español
Licencia: Freeware
Tamaño: 7.8 MB
Web: http://www.easyphp.org/
El archivo que hemos utlizado para la instalación de nuestro servidor
web es EasyPHP-2.0b1-setup.exe que lo hemos descargado de la url
anteriormente mencionada, al momento de la instalación del programa
para el desarrollo del proyecto, éste se encontraba en la versión 2.0.
Empezaremos por instalar EasyPHP, que incluye el servidor Web
Apache, La base de datos MySQL, y el lenguaje PHP.
Haz doble clic sobre el icono del archivo de EasyPHP-2.0b1-setup.exe
145
Gráfico No.2.8. Selección de idioma para EasyPHP.
Después de hacer doble clic, y de una pequeña ventana de
confirmación, se verá esta imagen:
Gráfico No.2.9. Instalación de EasyPHP (Paso 2)
146
Haz clic en el botón "siguiente" para ver la pantalla de la licencia.
Luego, el programa de instalación de EasyPhp mostrará la pantalla
que nos permitirá aceptar su licencia de difusión:
Gráfico No.2.10. Instalación de EasyPHP (Paso 2)
Marca "Acepto el acuerdo" y haz clic sobre el botón 'Next' para
continuar.
La
pantalla
siguiente
mostrará
algunas
informaciones
actualizaciones sobre versiones anteriores de EasyPHP.
sobre
147
Gráfico No.2.11. Instalación de EasyPHP (Paso 3)
La ventana de diálogo siguiente permite definir el directorio dónde se
instalarán los componentes de EasyPHP.
Gráfico No.2.12. Instalación de EasyPHP (Paso 4)
148
El desplazamiento por defecto es la mejor opción, sólo hace falta en
este caso hacer clic sobre el botón 'Siguiente' para continuar.
La ventana siguiente permite definir dónde se pondrán los enlaces
directos al programa.
Gráfico No.2.13. Instalación de EasyPHP (Paso 5)
En este caso también, el desplazamiento por defecto que sugiere la
instalación es la mejor opción, sólo es necesario hacer clic en el botón
'Siguiente' para continuar.
El programa de instalación mostrará enseguida una pantalla de
recapitulación de las opciones anteriores:
149
Gráfico No.2.14. Instalación de EasyPHP (Paso 6)
Haz clic en 'Instalar' para iniciar la instalación del programa.
Gráfico No.2.15. Instalación de EasyPHP (Paso 7)
Después de algunos instantes necesarios para copiar los archivos de
EasyPhp, veremos una lista de los cambios importantes realizados
con la nueva versión de PHP:
150
Gráfico No.2.16. Instalación de EasyPHP (Paso 8)
La pantalla del grafico No.2.16 muestra las configuraciones que va a
tener el EasyPHP en el momento de la instalación.
Gráfico No.2.17. Instalación de EasyPHP (Paso 9)
151
2.1.2 Uso de EasyPHP.
En el menú Inicio, Programas tendrá una nueva entrada para
EasyPhp:
Gráfico No.2.18. Menú Inicio, Programas con EasyPHP
Haciendo clic sobre la entrada 'EasyPhp', iniciarás el servidor Web.
Sabrás que el servidor Web funciona porque estará situado en la barra
de herramientas:
152
Gráfico No.2.19. Icono de EasyPHP en la barra de tareas.
El icono de EasyPhp se muestra con un pequeño punto rojo. Esto
indica que todo va bien.
Un clic con el botón derecho del ratón muestra un menú contextual:
Gráfico No.2.20. Menú contextual de EasyPHP en la barra de tareas.
Las entradas 'Salir', 'Detener', 'Reiniciar' permiten parar o reiniciar el
servidor Web.
Seleccionando la opción 'configuración', permite ver los parámetros de
la aplicación:
153
Gráfico No.2.21. Configuracion de EasyPHP.
Tienes la posibilidad de escoger la opción 'Iniciar EasyPHP al iniciar
Windows' (o 'Iniciar los servidores sólo como servicios' si se está bajo
Windows NT). Esto hará que el programa se inicie automáticamente
cuando se encienda el ordenador, de forma que no tendrás que iniciar
el programa manualmente.
2.1.3 Instalación de MySQL Tools for 5.0 para Windows.
El programa mysql-gui-tools-5.0-r12-win32.exe fue el que se escogió
para instalarlo en el servidor web de nuestro portal para el desarrollo
de nuestro proyecto, es el que nos permite utilizar una interfaz gráfica
agradable para manipular los registros de la base de datos.
Al ejecutar el programa de instalación, se visualizará la pantalla:
154
Gráfico No.2.22. Instalación de MySQL Tools (Paso 1).
Procedemos a presionar el botón “Next >”, luego de ello se mostrara lo
siguiente:
Gráfico No.2.23. Instalación de MySQL Tools (Paso 2).
155
En esta pantalla debemos de aceptar la licencia del producto y
presionar “Next >”.
Gráfico No.2.24. Instalación de MySQL Tools (Paso 3).
Luego de ello se mostrará la pantalla en la cual nos va a indicar el
directorio en donde se va a ubicar la aplicación en nuestro servidor
web.
Gráfico No.2.25. Instalación de MySQL Tools (Paso 4).
156
Después seleccionamos la opción “Complete”, que viene por defecto.
Gráfico No.2.26. Instalación de MySQL Tools (Paso 5).
Luego de ello se visualizará la pantalla en la cual nos va a indicar que
se va a iniciar la instalación
Gráfico No.2.27. Instalación de MySQL Tools (Paso 6).
157
En ese momento se van a presentar las pantallas de información del
producto instalado.
Gráfico No.2.28. Instalación de MySQL Tools (Paso 7).
2.1.4 Instalación de la Base de Datos de Aquidescarga
Para instalar la base de datos debemos de seleccionar la opción de
“Administración” del menú contextual que tiene EasyPHP, luego de
ello se selecciona la opción “Mysql Gestion”, en se momento se
mostrará una pantalla en la cual debemos de seleccionar la opción
llamada “SQL”, y en esa pantalla se debe de importar el script de la
base de datos para que sea creada en el servidor web.
158
2.1.5 Creación del usuario para conectarse a la base de datos de
aquidescarga
Los pasos para crear el nombre de usuario que se va a conectar a la
base de datos web, son los mismos que se enumeraron anteriormente.
Puesto que esto se realiza mediante la opción de PhpMyAdmin que se
encuentra en el EasyPHP.
Se puede acceder a esta opción mediante el menú contextual visto
anteriormente, seleccionando primero la opción “Administración”, en
ese momento se abre una ventana del navegador y dentro de ella se
debe escoger la opción “Mysql Gestion” que se encuentra junto a la
etiqueta PhpMyAdmin 2.9.1.1. Luego de ello se va a visualizar una
ventana, de la cual seleccionaremos la opción “Privilegios”, y dentro de
ella se seguirán los pasos para crear al usuario de la base de datos.
2.1.6 Instalación del portal Web en Windows.
Una vez que se siguieron los pasos anteriores para instalar el
EasyPHP, realizaremos la instalación del portal en el servidor,
copiando los archivos que se encuentran dentro de la carpeta
“aquidescarga” en la ruta “C:\Archivos de programa\EasyPHP
2.0b1\www”, y de esta manera nuestro proyecto ya se encuentra
ubicado en nuestro servidor Web.
159
2.1.7 Obtención del dominio para Aquidescarga.com
Para obtener el nombre de dominio aquidescarga.com para nuestro
portal, tuvimos que ingresar a la página http://www.cityofdomains.com/
con el fin de registrar nuestro nombre de dominio. De esta manera,
una vez que ha sido verificado nuestro dominio como libre, entonces
procedemos a registrarlo.
Gráfico No.2.29. Obtención del dominio (Paso 1).
En ese momento se visualizara una pantalla en la cual vamos a elegir
el tipo de extensión que va a tener el portal, ya sea .com .net .org, etc,
luego presionamos el botón de “Continue”.
160
Gráfico No.2.30. Obtención del dominio (Paso 2).
Luego de ello continuamos con el ingreso de los datos de nuestro
portal, llenando los respectivos casilleros en el formulario.
Gráfico No.2.31. Obtención del dominio (Paso 3).
161
En la pantalla que se muestra a continuación se deben de ingresar los
datos personales, los cuales serán verificados posteriormente por
cityofdomains.com. Una vez que los datos han sido ingresados en la
página, se debe continuar con el proceso para registrar nuestro
nombre de dominio.
Gráfico No.2.32. Obtención del dominio (Paso 4).
Luego de haber ingresado nuestros datos para el dominio de
aquidescarga.com, procedemos a seleccionar el tipo de pago del
servicio que ofrece cityofdomains.com, y es en esa pantalla la que nos
mostrará un subtotal del valor que vamos a pagar por el nombre de
dominio que hemos obtenido.
162
Gráfico No.2.33. Obtención del dominio (Paso 5).
Una vez que hayamos digitados los datos necesarios para el portal,
debemos de continuar con el proceso para realizar la transacción. Y es
aquí donde seleccionamos la forma de pago para obtener nuestro
nombre de dominio, que en nuestro caso va a ser mediante la tarjeta
de crédito.
Luego de ingresar los datos en esta pantalla, seguimos en el proceso
y veremos a continuación una pantalla en la cual se nos va a solicitar
la información correspondiente a la tarjeta de crédito con la cual
queremos realizar el pago.
163
Gráfico No.2.34. Obtención del dominio (Paso 6).
Y como ultimo paso, se nos va a presentar pantalla final del proceso.
Gráfico No.2.35. Obtención del dominio (Paso 7).
164
2.1.8 Obtención del hosting para Aquidescarga.com
Para poder poner nuestro proyecto en un hosting, tuvimos que seguir
los siguientes pasos:
Elegimos la siguiente dirección http://www.westnic.net/web-hosting/
para poder poner nuestro portal en la red. Luego de ello
seleccionamos el botón “Order now”.
Gráfico No.2.36. Obtención del hosting (Paso 1).
Luego de haber presionado el botón en “Order now”, se visualiza una
pantalla en la cual seleccionamos la opción de dominio, que en
nuestro caso va a ser la segunda alternativa de la pantalla y en el
165
casillero escribimos nuestro nombre de dominio aquidescarga.com, y
damos clic en el botón “Next >>”
Gráfico No.2.37. Obtención del hosting (Paso 2).
Luego de ello nos muestra una pantalla y dentro de la cual debemos
de seleccionar el tipo de paquete para el hosting, en nuestro caso
escogemos el paquete personal y seleccionamos dentro de un listado
de opciones, el nombre de dominio para nuestro portal, que en nuestro
caso es: aquidescarga.com
166
Gráfico No.2.38. Obtención del hosting (Paso 3).
Una vez que hemos ingresados los datos anteriores, debemos de
presionar el botón “Continue >>”, de esta manera se presentará una
pantalla en la cual vamos a seleccionar una de las opciones que se
presentan en un listado, en nuestro caso escogemos la opción de 12
meses. Luego presionamos el botón “Calculate Totals”, y se mostrará
una descripción del paquete que hemos comprado, el cual incluye el
valor total y el tiempo por el cual se ha hecho la transacción, además
en la parte inferior seleccionamos la opción “I am a new customer”, en
el caso de serlo. Después presionamos el botón “Continue >>”.
167
Gráfico No.2.39. Obtención del hosting (Paso 4).
Gráfico No.2.40. Obtención del hosting (Paso 4).
168
En la ventana siguiente tenemos que llenar un formulario en el cual
ingresamos los datos personales (Nombre, dirección, pais, etc), la
información necesaria para que se puedan contactar con nosotros
(Telefono, email, etc) y las opciones de pago del servicio, que en
nuestro caso va a ser la tarjeta de crédito.
Gráfico No.2.41. Obtención del hosting (Paso 5).
Luego de haber llenado los datos del formulario, procedemos a
presionar el botón “Verify my Order >>” para completar la transacción
financiera del servicio.
169
Gráfico No.2.42. Obtención del hosting (Paso 6).
170
2.3 Funcionalidad del proyecto aquidescarga
2.3.1 Pagina de inicio del portal.
La pantalla que se muestra en la siguiente figura, es la página principal
de nuestro portal, en ella se puede observar el lugar destinado para el
inicio de sesión de los usuarios, que se ubica en la parte central al
lado izquierdo de la pantalla. Aquí mostraremos la secuencia que el
usuario debe seguir para publicar y descargar archivos dentro de
nuestro portal
Para iniciar el proceso, debe dar clic en el link que dice “Registrate
AQUI”.
171
2.3.2 Pantalla de registro de usuarios.
En esta pantalla, el usuario va a digitar sus datos en un formulario, una
vez que hayan sido ingresados, se procede a dar clic en el boton
guardar.
172
En ese momento se presentara una pantalla en la cual nos indica que
los datos han sido grabados con éxito. El siguinte paso es activar la
cuenta del usuario, para esto, el usuario debe de revisar el correo
electronico que nos proporciono al momento del registro y dar clic en
el link de activacion que va incluido en el mensaje del correo.
Cabe destacar que la cuenta de correo que el usuario escribe en el
formulario de registro debe de ser una cuenta válida, puesto que es a
ella, donde vamos a enviar la informacion correspondiente al usuario
que se ha registrado, asi como tanbién el respectivo link que sirve para
la activacion de la cuenta.
Al hacer esto, el registro del usuario queda activado para poder
ingresar en nuestro portal y de esta manera él pueda acceder dentro
del mismo.
173
2.3.3 Pantalla Mi cuenta.
Una vez que el usuario ya ha activado su cuenta, él puede ingresar al
portal con su respectivo nombre de usuario y contraseña, ésta es la
pantalla que se muestra para el ingreso al portal.
174
2.3.4 Pantalla Pago de suscripción.
Para que el usuario pueda publicar sus contenidos, debe de pagar un
dinero por concepto de suscripción en un determinado tiempo. Aquí se
muestra el listado de opciones de las cuales el usuario puede escoger.
175
2.3.5 Pantalla de Simulador de Pago.
En esta parte, el usuario debe de ingresar los datos correspondientes
a la tarjeta de crédito para poder realizar la transacción y luego pueda
publicar sus contenidos en pdf en nuestro portal.
176
2.3.6 Pantalla de Subir archivos.
Esta pantalla le permite al usuario suscrito en nuestro portal, subir
archivos en formato pdf para que estos sean publicados y
posteriormente descargados por otros usuarios. Aquí puede ubicar el
archivo en la categoría que el usuario desee, asi como tamicen escribir
una descripción, además de subir otro archivo de tipo resumen,
tambien en formato pdf.
177
2.3.7 Pantalla de Confirmación.
Esta pantalla muestra al usuario un mensaje que indica que los
archivos que esta subiendo a nuestro portal, se han subido con éxito.
Luego de ello, y dependiendo del tamaño del archivo, se procede a
publicar dicho archivo o en su defecto pasa a un estado pendiente a la
espera de la aprobación por parte del administrador del portal.
178
2.3.8 Pantalla para realizar la compra.
Una vez que ha seleccionado el o los archivos para descargar, Estos
se presentaran en un listado con sus respectivos valores y en la parte
inferior de dicho listado se mostrará el valor total por el cual se va a
realizar la transacción financiera.
179
Para continuar con el proceso de compra, se debe de dar clic en la
opción “Realizar pago”. Una vez alli, debe de dar clic en la opción
“Hacer una orden”, para el respectivo pago del recurso que se desea
descargar.
Después de haber seguido los pasos anteriormente mencionados, se
procederá a dar clic en la opción “Hacer una orden”, en ese momento
se mostrará una pantalla en la cual el usuario debe de ingresar los
datos correspondientes a la forma de pago, que en nuestro caso va a
ser la tarjeta de crédito, con la cual se va a proceder a pagar el valor
respectivo por el o los contenidos que el usuario haya elegido para
descargar.
Luego del respectivo pago, el usuario podrá descargar dichos
archivos, dicho usuario tendra hasta un maximo de 3 ocasiones para
proceder a descargarlos, ya sea en ese mismo momento o en un
momento posterior.
Descargar