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”.
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.