Travelbook
From Laboratório MM 5
Contents |
Introdução
Objectivo do documento
Este documento, inserido no contexto da avaliação do projecto da disciplina de Laboratório Multimédia 5 (na sequência do trabalho realizado nas cadeiras de Implementação e Controlo de Projectos Multimédia e Gestão de Empresas), leccionada pelos mui excelsos Professores Lícinio Mano e Hélder Caixinha, tem como objectivo relatar, de forma exemplar e exemplificativa, as decorrências do dito projecto, desde os primeiros esboços do layout e escolha de cores e fontes à implementação da base de dados e a integração desta no site através do php.
Visão geral do projecto
Os objectivos do projecto propriamente dito podem ser resumidos nos seguintes pontos:
- Apresentação do processo de concepção e desenvolvimento do website;
- Implementação dos conhecimentos adquiridos na disciplina e de outros explorados e aperfeiçoados externamente;
- Criação de um website server-side, dinâmico e funcional;
- Conseguir autonomia no desenvolvimento de layouts para páginas Web;
- Integração da arquitectura das 3 camadas no Website (multitier architecture): armazenamento de dados, lógica e apresentação;
- Criação e conexão à Base de Dados associada à própria aplicação;
- Criação de conteúdos, sofisticação do layout através de ferramentas de CSS e JS;
De forma sucinta, o site Travelbook apresenta as seguintes funcionalidades:
- Publicação de travelplans
- Edição de dados/perfil;
- Inserção de comentários aos travelplans e atribuição de rating aos mesmos;
- Inserção de comentários aos perfis dos users
- Procura de travelplans recorrendo a filtros de localização, tipo, custo, etc;
- Seguir users
- Mandar mensagens entre users
- Guardar travelplans como favoritos
- Concursos
Base de dados desenvolvida
Antes de passar à descrição e explicação das opções tomadas, queríamos só realçar o conhecimento de que a solução adoptada não é única e, inclusivamente, de que poderão existir melhores ou mais optimizadas. A nossa base de dados baseia-se em 2 tabelas/entidades principais, à volta das quais toda a estrutura orbita: a tabela dos users e a dos travelplans. Para além destas, existe um conjunto de tabelas ligadas a estas duas (há uma tabela não ligada, a de publicidade, mas a sua relevância para o projecto é bastante reduzida, fica apenas para futuras implementações). De seguida apresentamos as entidades mais significativas. Tabelas/entidades:
- users: aqui encontram-se os dados relativos a cada user, como o nome, email, password, rating do user, nacionalidade, idade, foto de perfil, data de registo, Travel Plans feitos, países visitados, previlégios de acesso e estado da conta, ou seja, se está ou não activa.
- travelPlans: esta tabela irá guardar os dados relativos a cada Travel Plan, nomeadamente, a sua descrição textual, imagens para o slideshow, a data, o estado activo e as ligações para as outras tabelas que contêm os dados sobre países, cidades, tipo de viagem, custos, alojamento e transporte.
- mensagensPrivadas: guardará dados das mensagens como o assunto, o corpo, a data, o estado activo e a ligação entre os users. Está directamente ligada à tabela de users, ligando um id como remetente a outro id como destinatário
- follow: será feita nesta tabela a relação entre users que seguem outros users, ou seja, o utilizador poderá ter guardado na respectiva página de Favoritos, o acesso aos perfis dos utilizadores que desejar seguir.
- concursos: aqui irão ser guardados os dados relativos à empresa criadora do concurso, a descrição do concurso, imagens, estado activo e o custo em pontos para participar.
Todas as outras tabelas são tabelas intermédias que servem de ligação entre estas principais.
Implementação
Descrição das principais funcionalidades da aplicação Web
Este projecto, enquanto rede social, irá apresentar funcionalidades que são de esperar neste tipo de produto, ou seja, o utilizador vai poder efectuar as seguintes operações: - ver uma página de apresentação do site e registar-se, de modo a poder aceder à rede social;
- criar uma página de perfil, onde pode incluir dados pessoais como o nome, idade, fazer upload da sua fotografia, listar os países visitados, receber comentários e fazer comentários a si próprio e criar uma lista de Travel Plans criados. Qualquer outro utilizador que aceda, poderá enviar-lhe mensagens privadas e escolher seguir o utilizador, acrescentando-o na página Favoritos;
- alterar os dados pessoais e de conta, caso se tenha enganado a preencher os dados no registo, porque mudou de sexo e pretende apresentar a informação correctamente ou simplesmente porque deseja apagar a sua conta;
- criar e editar Travel Plans, com informações curtas e de rápida visualização como país, cidade, custo, alojamento, tipo de viagem e transporte, mas também uma descrição longa onde o utilizador pode dar asas à sua qualidade de contador de histórias para narrar a sua aventura. Vai poder incluir fotografias que irão aparecer num slideshow, bem como receber rating e comentarios de outros utilizadores de modo a tornar a partilha mais interessante. Caso um utilizador goste de determinado Travel Plan, pode escolher guardá-lo nos seus Favoritos;
- procurar por Travel Plans existentes, escolhendo critérios que filtram por país, cidade, custo, tipo de viagem e rating;
- gerir os seus Favoritos, onde tem guardados os Travel Plans e os utilizadores que segue;
- participar em concursos e comprar pontos necessários para a inscrição, embora esta funcionalidade não se encontre implementada. Seria para futura implementação.
Mapa de páginas
- index.php
- apresentacao.php
- registo.php
- home.php
- mensagens.php
- favoritos.php
- criarTravelPlan.php
- updateTravelPlan.php
- definicoes.php
- resultadosProcura.php
- registoOK.php
- perfil.php
- travelPlan.php
- concursos.php
Server Behaviours utilizados
Os vários server behaviours usados dizem respeito a questões de login, logout, acessos limitados, etc. De seguida apresentamos os vários usados:
- Log In: verificação da existência do utilizador na tabela users e criação das variáveis de sessão
- Log Out User: terminar variáveis de sessão de user
- Check New Username: verificação da existência anterior de um username de forma a evitar a repetição
- User Restrict Access to Page (): limitar o acesso dos users a determinadas páginas, nomeadamente de uma conta com acesso de administrador a uma página com capacidades de moderação e edição de todo o conteúdo introduzido pelos users, incluindo a capacidade de o tornar inactivo, tornando-o invisível para todos os outros
- Repeat Region: permite que as listas onde são retornados valores (mensagens, followers,etc) sejam dinamicamente aumentadas quando há novos registos
- Dynamic Text Field (data): inserção dinâmica da data de registo e da data de criação do travelPlan
Recordsets/Queries utilizados
Nas várias páginas em que necessitámos apenas de um recordset, não lhe atribuímos um nome, no entanto todas as outras estão devidamente identificadas sobre o tipo de dados que vão posteriormente aceder. Seguem-se alguns exemplos de queries utilizados:
- SELECT travelbook.users.id_users, users1.id_users, users1.nome FROM travelbook.users Inner Join travelbook.follow On travelbook.follow.id_usersFollow = travelbook.users.id_users Inner Join travelbook.users users1 On travelbook.follow.id_usersFollowed = users1.id_users
WHERE travelbook.users.email = colname (o colname é igual à variável de sessão $_SESSION[‘MM_Username’]) – query usada para listar os users seguidos pelo user com sessão iniciada.
- SELECT id_users, id_genero, id_idade, nome, travelPlansFeitos, ratingAcumulado, fotoPerfil, registerDate, nacionalidade, paisesVisitados FROM users
WHERE id_users = colname(o colname é igual à variável de sessão $_SESSION[‘MM_Username’]) – query usada para listar as características do user com sessão iniciada na página de perfil
