Archivo de la etiqueta: Proyectos

JdA (MVC)

Kick-off Meeting minutes

Escenario

Partiendo de la base de un software desarrollado por la Junta de Andalucía basado en el patrón modelo-vista-controlador (En adelante MVC) se pide la incorporación de una nueva funcionalidad que muestre la tabla de empleados de la base de datos “SCOTT”. A esta nueva funcionalidad se llegará seleccionando un nuevo controlador en la petición “HTTP”. La nueva petición tendrá el formato “http://localhost/path/index.php?controlador=Emp”.

Software de la Junta de Andalucía

El cliente suministra los ficheros PHP y la el backup de la base de datos “CDCOL“. También suministra la base de datos “SCOTT” necesaria para la nueva funcionalidad. La nueva funcionalidad no debe alterar de ninguna manera el funcionamiento anterior. Si no especificamos ningún controlador se debe seguir mostrando la lista de la base de datos “CDCOL“.

 Análisis previo

Base de datos

La base de datos “Cdcol” está compuesta por una única tabla llamada “CDS” que contiene una lista de discos musicales. La tabla tiene los siguientes campos: “titel”,”interpret”, “jahr”,”id”.

Software PHP

Siguiendo el patrón MVC el fichero “index.php” es un fichero sencillo que llama al controlador principal situado en el fichero “libs/FrontController.php”. Por defecto el “front controller” llama al controlador “Cd” en el fichero “controlador/CdController.php” y al método “listar”.  El elemento modelo está en el fichero “modelo/CdModelo.php” y el elemento vista en “vista/listado.php”.

Existen varios ficheros complementarios:

  • libs/Config.php – Es un fichero genérico que crea una clase con la configuración.
  • configuracion.php – crea los atributos y valores de la clase “Config” del fichero anterior
  • libs/SPDO.php – crea una clase con una única instancia a la base de datos “CDCOL”
  • libs/Vew.php – Es un frontal del elemento “vista”. Llama a la plantilla indicada en su método “show”.

Análisis de las modificaciones necesarias

Análisis por fichero:

  • index.php – no es necesario modificarlo
  • configuracion.php – Es necesario añadir un parámetro nuevo “nombreBDscott” con el valor “scott”
  • libs/FrontController.php – No es necesario modificarlo
  • libs/Config.php – No es necesario modificarlo
  • libs/View.php – No es necesario modificarlo
  • libs/SPDO.php – Es necesario crear una nueva clase denominada “SPDOscott” para la conexión con la base de datos “SCOTT”
  • controlador/CdController.php – no es necesaria su modificación pero es necesario un nuevo fichero llamado “controlador/EmpController.php” con un método “listar” que llame a un elemento modelo diferente “EmpModelo” y un método diferente “devuelveTodosEmp”. También la llamada a vista debe ser diferente con una nueva plantilla “listadoEmp.php”.
  • modelo/CdModelo.php – no es necesaria su modificación pero se debe crear un fichero nuevo llamado “modelo/EmpModelo.php” con un método “devuelveTodosEmp” que conecte con la base de datos “SCOTT” y liste todos los empleados.
  • vista/listado.php – no es necesaria su modificación pero es necesario un nuevo fichero “vista/listadoEmp.php”. Este fichero debe ser similar a “listado.php” pero con los campos de la tabla de empleados de la base de datos “SCOTT

Reparto de tareas

Programador 1 (controlador)

Se encargará de la creación del fichero “controlador/EmpController.php” que llamará al nuevo método “devuelveTodosEmp” en el nuevo modelo “modelo/EmpModelo.php” y a la nueva vista “vista/listadoEmp.php”

Programador 2 (vista)

Se encargará de la nueva vista “vista/listadoEmp.php” que muestre los campos de la tabla de empleados de la base de datos “SCOTT”

Programador 3 (modelo)

Se encargará de crear el nuevo método “devuelveTodosEmp” en el nuevo fichero de modelo “modelo/EmpModelo.php”. Para encargará también del nuevo parámetro en “configuracion.php” y de la nueva clase en “libs/SPDO.php”.

Blog (MVC)

Vencimiento: 16/02/2017

Desarrollo de nuevas funciones de un blog desarrollado utilizando el patrón Modelo-Vista-Controlador. Esta aplicación blog tiene ya desarrolladas una serie de funcionalidades y el objetivo de este proyecto es comprender su funcionamiento y desarrollar funcionalidades adicionales.

El primer paso es crear una base de datos llamada “bdweb” utilizando PhpMyAdmin. También con PhpMyAdmin se ejecutará el siguiente script. Este script introduce en la base de datos los datos necesarios para el proyecto. Los ficheros php podemos descargarlos en un fichero zip y los colocaremos en la carpeta “blog” en “htdocs”.

Las funcionalidades existentes pueden ser utilizadas unas por usuarios no autenticados y otras por usuarios autenticados. Estas serán:

Funcionalidad Descripción Quién
Listado de posts Lista todos los posts enviados por cualquier usuario. Es la página de inicio. Usuario no autenticado / Usuario autenticado
Autenticación Autenticar/conectar a un usuario en el sistema. Usuario no autenticado
Desconexión Aparecerá un enlace en la cabecera de la ventana que permita desconectarse. Usuario autenticado
Registro de usuario  (alta de usuario) Crear un nuevo usuario. Usuario no autenticado
Envío de un post (alta de post) Enviar un post al sistema. Solicita autenticación si no se estaba previamente. Usuario autenticado
Detalle de un post Información detallada de un post. Usuario no autenticado

Lo primero que se hará es crear una tercera categoría de usuario: Administrador del blog. Podrá haber más de uno y tendrá asociadas una serie de funcionalidades propias. Cada usuario autenticado lo es de un solo tipo, administrador o básico.

A continuación se proponen las siguientes funcionalidades nuevas:

Funcionalidad Descripción Quién
Contador de visitas Aparecerá en la cabecera, durante toda la conexión, para usuarios autenticados. Se guardará de una conexión a otra. Usuario autenticado
Listado de posts propios Lista todos los posts enviados por el usuario con el que se está conectado. Usuario autenticado
Eliminación de un post propio Permite borrar un post enviado por el usuario con el que se está conectado. Usuario autenticado
Subida de foto en el alta de usuario Permite subir una foto del usuario al crearlo, que quedará asociada a su perfil. Usuario autenticado
Modificación del perfil de un usuario Permite modificar los datos de su perfil (todos menos el nombre de usuario) al usuario con el que se está conectado. Usuario autenticado
Baja de usuario Permite darse de baja al usuario con el que se está conectado. Fuerza la desconexión. Se eliminarán sus posts. Usuario autenticado
Listado/consulta parametrizada de usuarios Listado de todos los usuarios del Blog, pudiendo consultar por su login, fecha nacimiento… Se mostrará como respuesta una lista de usuarios con sus datos principales, incluida la foto. Usuario administrador
Bloqueo/Desbloqueo de usuario básico Permite bloquear/desbloquear a un usuario básico. El usuario bloqueado ya no podrá conectarse, siendo informado de ello. Usuario administrador

Con el objetivo de mejorar la organización del blog se introducirá  el concepto de Tema (Categoría) de un post. Se quiere asociar a cada post, al ser enviado, un tema o categoría, de manera que todo post estuviera categorizado por tema. Cada tema incorporaría la siguiente información:

  • Nombre del tema
  • Descripción
  • Fecha de creación

Adicionalmente se proponen una serie de funcionalidades avanzadas a realizar en una segunda fase:

Funcionalidad Descripción Quién
Alta de tema Crear un tema. Usuario administrador
Consulta de posts de un tema Listar los posts de un determinado tema. Usuario autenticado
Añadir la elección de temas al alta de post Modificar el proceso de alta de post para que en el formulario aparezca la lista de temas disponibles. Usuario autenticado
Eliminación de tema Elimina un tema siempre que no tenga posts vinculados. Usuario administrador
Modificación de tema Modificar información del tema. Usuario administrador