User:Mybookmark
From Laboratório MM 5
(Difference between revisions)
Mybookmark (Talk | contribs) (→OBJETIVOS DO DOCUMENTO) |
Mybookmark (Talk | contribs) (→MAPA DO SITE) |
||
| (228 intermediate revisions not shown) | |||
| Line 1: | Line 1: | ||
| - | + | [[File:Logo transparent-01.png|370px]] | |
| + | <br/> | ||
| + | [http://bit.ly/zDQZBi DOWNLOAD DO RELATÓRIO EM PDF]<br/> | ||
| + | ==INTRODUÇÃO== | ||
| + | <br/> | ||
| + | : Lao Tzu disse uma vez: ''"A journey of a thousand miles must begin with a single step."'', e este projeto não quer ser nada mais que isso; o primeiro passo para a concretização daquela viagem de sonho ou o planeamento das férias que sempre quis fazer. | ||
| + | <br/> | ||
| + | |||
| + | ---- | ||
===OBJETIVOS DO DOCUMENTO=== | ===OBJETIVOS DO DOCUMENTO=== | ||
| + | ---- | ||
| + | <br/> | ||
| + | :: Este documento visa a apresentação e descrição, ao leitor, das várias fases de desenvolvimento deste projeto, bem como todas as ferramentas, técnicas e metodologias utilizadas. | ||
| + | :: Pretende-se, com este escrito, deixar documentados - de forma simples e concreta - os principais desafios encontrados, soluções viáveis e decisões tomadas. | ||
| + | :: Uma vez que o grupo considerou a possibilidade de o projeto vir a ser, posteriormente, desenvolvido é bastante relevante apresentar documentação detalhada da implementação e evolução da aplicação em causa, assegurando ao leitor a compreensão e estrutura de toda a aplicação - desde o design e base de dados ao código e respetivas frameworks. | ||
| + | <br/> | ||
| + | ---- | ||
===VISÃO GERAL DO DOCUMENTO=== | ===VISÃO GERAL DO DOCUMENTO=== | ||
| + | ---- | ||
| + | <br/> | ||
| + | :: Com este projeto pretende-se disponibilizar aos utilizadores uma aplicação intuitiva e fiável que proporcione a qualquer tipo de utilizador - seja ele avançado ou principiante - todas as ferramentas necessárias para planear com sucesso uma viagem sem percalços, uma estadia perfeita e uma visita bem estruturada a todos os pontos de interesse; de modo a que o utilizador consiga fazer a melhor gestão possível do seu tempo, guardando sempre algum para explorar livremente o espaço em que se encontra. | ||
| + | :: De forma a proporcionar aos utilizadores as melhores experiências, a um custo acessível, a aplicação também está disponível a empresas (colaboradores) que disponibilizam promoções especiais ajustadas ao projeto de cada utilizador. | ||
| + | :: O projeto visa ''“desenvolver um projecto que seja reconhecido pela excelência do seu desempenho, com o propósito de melhorar a qualidade de vida e satisfação de todos os amantes das viagens, que para a sua realização precisam de ajuda”''. | ||
| + | ::Numa época em que o sedentarismo é uma preocupação eminente, e a crise por que se está a passar está presente em todas as capas de jornais, focadas nos demais artigos e objeto de todo o tipo de entrevistas e documentários, esta aplicação pretende surgir como catalisador, de modo a alimentar o sonho dos utilizadores e incentivá-los a não abdicar das suas férias. Com o boom das redes sociais e a interação constante entre os vários milhões de utilizadores que usam regularmente este tipo de serviços, a aplicação vai tirar partido desta mesma interação para fazer com que os utilizadores se vão inter-apoiando, de forma a todos eles conseguirem levar a cabo os seus projetos. | ||
| + | <br/> | ||
| + | ---- | ||
| + | |||
| + | ==DESIGN== | ||
| + | ===PALETA DE CORES=== | ||
| + | ---- | ||
| + | <br/> | ||
| + | :: Para o desenvolvimento do grafismo desta aplicação foram escolhidas duas cores, cada uma delas podendo apresentar mais que uma variação. | ||
| + | :: Para cor principal foi escolhido o cinzento - este está presente na maior parte da aplicação. | ||
| + | :: Como cor secundária adotou-se o vermelho - este poderá ser encontrado no logotipo, bem como em pequenos detalhes na aplicação. | ||
| + | <br/> | ||
| + | :: '''CINZENTO''' | ||
| + | <br/> | ||
| + | :: [[File:Paleta_cinzentos.png|600px|none|thumb|alt=Paleta de variações de cinzento|FIG 1. PALETA DE VARIAÇÕES DE CINZENTO]] | ||
| + | <br/> | ||
| + | :: '''VERMELHO''' | ||
| + | <br/> | ||
| + | :: [[File:Paleta_vermelhos.png|370px|none|thumb|alt=Paleta de variações de vermelho|FIG 2. PALETA DE VARIAÇÕES DE VERMELHO]]<br/> | ||
| + | <br/> | ||
| + | ---- | ||
| + | |||
| + | ===LOGOTIPO=== | ||
| + | ---- | ||
| + | <br/> | ||
| + | :: Para a aplicação, apelidada de bookmark, pretendia-se criar um logotipo facilmente legível e de linhas simples, pois a principal plataforma onde será visualizado é o ecrã. Como tal, foram tidas em consideração as oscilações a que este poderia estar sujeito de ecrã para ecrã. | ||
| + | :: No entanto, foram também tomados outros cuidados, como ser legível em pequeno ou grande formato, a cor ou a preto e branco. Apesar de se ter optado por uma variação light da fonte dekar, verificou-se que não colocava em causa a legibilidade devido a esta ser uma fonte relativamente larga, ainda assim otimizou-se o espaçamento entre as letras para uma melhor leitura do logotipo. | ||
| + | <br/> | ||
| + | :: '''LOGOTIPO''' | ||
| + | |||
| + | :: [[Image:bookmark_logo.png|600px|none|thumb|alt=LOGOTIPO DA APLICAÇÃO|FIG 3. LOGOTIPO DA APLICAÇÃO]] | ||
| + | <br/> | ||
| + | ---- | ||
| + | |||
| + | ===LAYOUT=== | ||
| + | ---- | ||
| + | <br/> | ||
| + | :: Para a conceção da interface foram estudadas as práticas dos sítios web mais visitados que de certa forma poderiam ser semelhantes a esta aplicação . Uma vez que o grupo está limitado ao tempo e meios que dispõe, optou-se por analisar e perceber o porquê das escolhas feitas em aplicações como o Facebook, Google+, entre outras. Uma das ferramentas também utilizada para a fase inicial da construção do layout foi o w3school, onde se podem encontrar estatísticas sobre os browsers e as resoluções recomendadas. | ||
| + | :: Assim ficou decidido que a área principal da aplicação não poderia exceder, em largura, os 720px. | ||
| + | <br/> | ||
| + | |||
| + | :: '''LAYOUT''' | ||
| + | |||
| + | :: [[Image:Layout-01.png|370px|none|thumb|alt=LAYOUT A APLICAÇÃO|FIG 3. LAYOUT DA APLICAÇÃO]] | ||
| + | <br/> | ||
| + | |||
| + | ---- | ||
| + | ==MAPA DO SITE== | ||
| + | <br/> | ||
| + | ::[[File:Mapa-site-01.jpg|600px|none|thumb|alt=Mapa do site|FIG 4. MAPA DO SITE]] | ||
| + | <br/> | ||
| + | ---- | ||
| + | |||
| + | ==USABILIDADE== | ||
| + | <br/> | ||
| + | ::As plataformas multimedia procuram adaptar-se aos diferentes tipos de utilizadores, de forma a que estes atinjam os seus objectivos com eficácia, eficiência e satisfação num contexto específico de uso. Neste sentido, procura-se que a aplicação seja de uso fácil, contribuindo para a motivação e interesse de quem a explora. | ||
| + | ::É importante que o utilizador, que não possui conhecimento relativamente a esta rede social, aquando do seu primeiro contacto, se sinta familiarizado e deve realizar, com rapidez e facilidade, aquilo que procura. Para tal, é importante avaliar, essencialmente, a criação de nova conta, a realização do login, personalização do perfil, inserção de dados necessários no perfil das poupanças e os acessos aos conteúdos da área social. | ||
| + | ::Esta rede social alinhou os seus princípios baseando-se na antecipação da necessidade de cada usuário: confere autonomia ao utilizador, permitindo que detenha o controlo sobre a aplicação; preocupação na escolha das cores, tendo em conta, todo o tipo de utilizadores possíveis; permite reversibilidade, ou seja, sempre que o utilizador insere algum tipo de informação num campo, tem a possibilidade de voltar a editá-lo mais tarde; o tempo que o utilizador dispõe para alcançar um objectivo é o mínimo possível, facilitando, assim, a interacção. | ||
| + | <br/> | ||
| + | ---- | ||
| + | |||
| + | ==BASE DE DADOS== | ||
| + | <br/> | ||
| + | :: A base de dados do projecto bookmark armazena os dados de vinte e uma tabelas, relacionadas entre si. Primeiramente, determinou-se as entidades primordiais, constituídas por toda a informação necessária ao desenvolvimento do projecto. Após a definição das funcionalidades inerentes a esta rede social, surgiram as tabelas que a seguir se descrevem: | ||
| + | <br/> | ||
| + | :: [[Image:Tabelas.jpg|172px|left|thumb|alt=BASE DE DADOS - TABELAS|FIG 5. BASE DE DADOS - TABELAS]] [[Image:BD.png|600px|none|thumb|alt=BASE DE DADOS|FIG 6. BASE DE DADOS]] | ||
| + | <br/> | ||
| + | |||
| + | ::*'''DADOS_COMUM:''' | ||
| + | :::Regista os dados comuns de dois tipos de utilizadores (empresa e utilizador comum), nomeadamente nome, username (conjuga o nome e o sobrenome inserido pelo usuário), email de registo, palavra passe, país, local, fotografia, data de login e data de registo. Possui, ainda, um campo ‘active’ que permite ativar ou desativar a conta. | ||
| + | <br/> | ||
| + | ::*'''UTILIZADOR_COMUM: | ||
| + | :::Regista os dados inseridos pelo utilizador – data de nascimento, sobrenome, tipo de sexo e interesses. | ||
| + | <br/> | ||
| + | ::*'''EMPRESA: | ||
| + | :::Regista a respectiva morada, ano de fundação, descrição e website. | ||
| + | <br/> | ||
| + | ::*'''EMPRESA_SUBS: | ||
| + | :::Regista as subscrições efectuadas a uma empresa, sendo constituída pelo campo de quem subscreve e outro campo que inscreve a empresa subscrita. O utilizador tem a possibilidade de cancelar a subscrição através do campo ‘active’. | ||
| + | <br/> | ||
| + | ::*'''PROMOCOES: | ||
| + | :::Regista as promoções lançadas pelas empresas, onde serão inseridos os dados relativamente a dois tipos de descrição: primária e secundária, imagem da campanha, local de destino, custo e respectiva data de inicio e fim da promoção. | ||
| + | <br/> | ||
| + | ::*'''CONTACTOS: | ||
| + | :::Regista os dados dos diferentes utilizadores. Encontra-se numa tabela diferenciada para que o utilizador possa escolher se esta informação é ou não visível no seu perfil: telemóvel, telefone e email. Possibilita, também, que o utilizador modifique o seu email sem que esta alteração interfira no email que utilizou no registo de conta. | ||
| + | <br/> | ||
| + | ::*'''CATEGORIA: | ||
| + | :::Esta tabela diferencia os diversos tipos de utilizador possíveis nesta rede social: o utilizador comum ou a empresa. | ||
| + | <br/> | ||
| + | ::*'''TIPO_SEXO: | ||
| + | :::Regista o tipo de sexo do utilizador comum: masculino ou feminino. | ||
| + | <br/> | ||
| + | ::*'''COMENTARIO: | ||
| + | :::Regista os comentários que são realizados ao projecto de cada utilizador comum. É, então, constituída por um campo que memoriza a descrição do comentário, a sua data, o autor do comentário e qual o seu destinatário. | ||
| + | <br/> | ||
| + | ::*'''MENSAGEM: | ||
| + | :::Regista as mensagens privadas que são enviadas ao perfil de cada utilizador comum. Possui um campo que memoriza destinatário e autor de cada mensagem, assim como a data em que esta foi enviada, o estado (lido ou não lido) e permite, ainda, mostrar as mensagens anteriores (histórico). | ||
| + | <br/> | ||
| + | ::*'''NOTIFICACAO: | ||
| + | :::Regista as notificações provenientes da actividade entre um perfil - aquele que vê - e outro perfil - aquele que está a ser visto, ou seja, regista o emissor e o receptor, a descrição, data e o estado - lido ou não lido. | ||
| + | <br/> | ||
| + | ::*'''PROJECTO: | ||
| + | :::Regista o projecto que cada utilizador comum realiza, sendo este o autor. Nesta tabela é inserido o custo estimado do respectivo plano e possui um campo (‘active’) que permite o cancelamento ou a activação deste. | ||
| + | <br/> | ||
| + | ::*'''PROJECTO_SUBS: | ||
| + | :::Regista as subscrições efectuadas a um projecto, sendo constituída pelo campo de quem subscreve e outro campo que inscreve o projecto subscrito. O utilizador tem a possibilidade de cancelar a subscrição através do campo ‘active’. | ||
| + | <br/> | ||
| + | ::*'''ESTADIA: | ||
| + | :::Esta tabela regista o tipo de estadia, respectiva descrição e data de chegada e saída, relativamente à concretização do projecto do utilizador. | ||
| + | <br/> | ||
| + | ::*'''DESTINO: | ||
| + | :::Esta tabela regista o local de destino e a data de ida, relativamente à concretização do projecto do utilizador. | ||
| + | <br/> | ||
| + | ::*'''VIAGEM_IDA: | ||
| + | :::Esta tabela regista o tipo de transporte a utilizar na viagem de ida para o local planeado, descrição, e data e hora de ida. | ||
| + | <br/> | ||
| + | ::*'''VIAGEM_VOLTA: | ||
| + | :::Esta tabela regista o tipo de transporte a utilizar na viagem de volta, descrição, e data e hora de ida. | ||
| + | <br/> | ||
| + | ::*'''BUDGET: | ||
| + | :::Permite que o utilizador comum faça a gestão das suas economias. Regista, assim, o valor actual – valor que possui para investir no projecto - e a data em que é actualizado. Permite que o utilizador escolha se esta informação é ou não visível a outros utilizadores através do campo ‘publico_privado’ - por defeito, encontra-se privado. | ||
| + | <br/> | ||
| + | ::*'''MOVIMENTOS: | ||
| + | :::Regista os movimentos realizados no budget: valor inserido e respectiva data. | ||
| + | <br/> | ||
| + | ::*'''NOTIFICACAO_BUDGET: | ||
| + | :::Esta tabela regista o tipo de movimentos que são efectuados na área de poupanças, a data e o valor inserido. O campo ‘estado’ permite que o utilizador apague ou não a notificação. | ||
| + | <br/> | ||
| + | ::*'''POI: | ||
| + | :::Regista os pontos de interesse que o utilizador visitará no decorrer da sua viagem projectada: tipo de ponto de interesse (ex.: praia, museu, entre outros) e respectiva descrição. | ||
| + | <br/> | ||
| + | ::Após a identificação das entidades e respectivos campos, procedeu-se à realização das relações existentes entre as diferentes tabelas: Relações 1:1 do tipo Identifying, relações 1:1 do tipo Non-Identifying, relações 1:M do tipo Identifying e relações 1:M do tipo Non-Identifying. | ||
| + | <br/> | ||
| + | ---- | ||
| + | |||
| + | ==IMPLEMENTAÇÃO== | ||
| + | ===DESCRIÇÃO DAS PRINCIPAIS FUNCIONALIDADES DA APLICAÇÃO WEB=== | ||
| + | ---- | ||
| + | <br/> | ||
| + | ::A implementação desta plataforma on-line assenta em três diferentes grupos: perfil do utilizador, rede social e área de gestão. | ||
| + | ::*Na primeira visita do utilizador a esta rede social, é-lhe apresentado um formulário para registo de conta segundo o tipo de usuário - empresa ou utilizador comum. Após este passo, ser-lhe-á enviado um email de boas-vindas e respectivas credenciais. | ||
| + | ::*Caso o utilizador já tenha criado a sua conta, terá, apenas, que se autenticar na plataforma para que tenha acesso à sua rede social. Tem, também, a possibilidade de recuperar a sua palavra-passe, caso seja esquecida - terá que inserir o seu email de registo, para onde esta será enviada. | ||
| + | ::*Após a realização do login, o utilizador poderá personalizar o seu perfil. Tanto o utilizador empresa como o utilizador comum podem inserir e editar os seus dados pessoais e fazer o upload de fotografia de perfil. | ||
| + | ::*A rede social de cada usuário comum é criada pelo próprio, ou seja, este subscreve projectos e empresas, realiza comentários e envia mensagens privadas aos utilizadores que possuem planos de viagem do seu interesse para uma possível troca de sugestões relativas ao local que pretende visitar. | ||
| + | ::*No seu perfil, poderá ver todas as subscrições realizadas ao seu projecto, tendo a possibilidade de cancelar as indesejadas e todos os comentários realizados por outros utilizadores, tendo, também, a possibilidade de apagar os indesejados. | ||
| + | ::*Na sua rede social, a partir do feed de notícias, terá acesso a todos os projectos que subscreve e respectivos perfis, ordenados por data de actualização e a todas as empresas inscritas nesta rede, bem como destacar, as empresas preferidas. | ||
| + | ::*Após a conclusão do seu plano ou por outros motivos alheios, o usuário poderá suspender a sua conta e mais tarde, reactiva-la. | ||
| + | ::*O utilizador empresa poderá visualizar todos os perfis dos utilizadores comuns, tendo acesso directo, a partir do feed de notícias da sua rede, aos utilizadores que a marcaram como preferida. | ||
| + | ::*Relativamente à área de gestão, esta varia consoante cada tipo de usuário. Por um lado, as empresas têm a possibilidade de criar as suas promoções e publicá-las no seu perfil, de forma a atrair potenciais clientes. Por outro lado, os utilizadores comuns têm a possibilidade de criar o projecto e respectivo budget. | ||
| + | ::*A criação de um projecto permite a definição do local de destino - disponibilizando o Google Maps como ferramenta de procura de informações do mesmo -, tipo de transporte, tipo de estadia, data de realização e pontos de interesse a visitar. Para realização do seu plano, o utilizador dispõe de uma área de gestão de economias - budget -, onde pode inserir os gastos ou poupanças, tendo acesso à sua barra de progresso que indica a percentagem de conclusão do objectivo definido (viagem). | ||
| + | <br/> | ||
| + | ---- | ||
| + | |||
| + | ===SERVER BEHAVIOURS UTILIZADOS=== | ||
| + | ---- | ||
| + | <br/> | ||
| + | :: Para a realização deste projecto, recorreu-se à utilização de vários server behaviours - comportamentos do servidor - disponibilizados pelo Dreamweaver ou escritos de raiz: | ||
| + | <br/> | ||
| + | :::*'''repeat region''' - possibilitam a repetição de vários elemento vindos da base de dados; | ||
| + | <br/> | ||
| + | :::*'''insert record''' - utilizados aquando o registo de uma nova conta, criação de um projecto e respectivo budget e inserção de informações pessoais; | ||
| + | <br/> | ||
| + | :::*'''update record''' - utilizados aquando a edição de dados; | ||
| + | <br/> | ||
| + | :::*'''delete record''' - utilizado para eliminar dados; | ||
| + | <br/> | ||
| + | :::*'''Show if Recordset is Not Empty''': só executa o código caso as condições do recordset se verifiquem; | ||
| + | <br/> | ||
| + | :::*'''log in user''' - utilizados para certificar que a palavra-passe corresponde ao email introduzido, autorizando ou impedindo o utilizador de aceder à rede social (sistema de login); | ||
| + | <br/> | ||
| + | :::*'''log out user''' - permite realizar o logout do utilizador; | ||
| + | <br/> | ||
| + | :::*'''check new username''' - utilizado para verificar, no processo de criação de nova conta, se o email introduzido pelo utilizador já se encontra registado na base de dados do bookmark. | ||
| + | <br/> | ||
| + | ---- | ||
| + | |||
| + | ===RECORDSETS UTILIZADOS=== | ||
| + | ---- | ||
| + | <br/> | ||
| + | :: A partir do Dreamweaver foram criados sete tipos de recordsets: | ||
| + | <br/> | ||
| + | :::* '''rs_tipoSexo''' - utilizado para conhecer o sexo do utilizador (masculino ou feminino); | ||
| + | <br/> | ||
| + | :::* '''rs_empresas''' - utilizado para seleccionar os dados da empresa; | ||
| + | <br/> | ||
| + | :::* '''rs_feed''' - utilzado para demonstração de projectos e empresas subscritos; | ||
| + | <br/> | ||
| + | :::* '''rs_promo''' - selecciona os dados das campanhas das empresas; | ||
| + | <br/> | ||
| + | :::* '''rs_dadosUtilizador''' - utilizado para seleccionar os dados do utilizador comum; | ||
| + | <br/> | ||
| + | :::* '''rs_poi''' - selecciona os dados dos pontos de interesse, correspondestes à descrição de um projecto; | ||
| + | <br/> | ||
| + | :::* '''rs_notificacaoBudget''' - adiciona na área de budget as movimentações feitas pelo utiizador. | ||
| + | <br/> | ||
| + | :: Para além disto, foram criados de raiz três recordsets: | ||
| + | <br/> | ||
| + | :::* '''dadosVisitadosRS''' - utilizado para obter os dados do perfil de quem é visitado; | ||
| + | <br/> | ||
| + | :::* '''projectoRS''' - utilizado para seleccionar as características inseridas pelo utilizador, relativamente ao seu projecto; | ||
| + | <br/> | ||
| + | :::* '''budgetRS''' - utilizado para seleccionar as características inseridas pelo utilizador, relativamente ao seu budget. | ||
| + | <br/> | ||
| + | ---- | ||
| + | |||
| + | ===QUERIES UTILIZADAS=== | ||
| + | ---- | ||
| + | <br/> | ||
| + | |||
| + | :: Para proceder à implementação desta rede social, recorreu-se a um elevado número de queries. Sendo, por isso, necessário destacar as mais complexas: | ||
| + | <br/> | ||
| + | ::* '''upload de uma fotografia de perfil, seguido de uma selecção da área a apresentar e, consequente recorte:''' | ||
| + | |||
| + | :::criação de variáveis de upload; criação de funções necessárias para a redimensão da imagem pretendida; verificar se o ID do utilizador que carrega a foto já possuiu uma pasta no servidor; caso não possua, é então, criada uma pasta para onde é enviada a fotografia carregada; | ||
| + | <br/> | ||
| + | ::* '''registo de uma nova conta de utilizador:''' | ||
| + | |||
| + | :::aquando o registo de um novo utilizador nesta rede social, ao inserir os seus dados para criação de conta, estes serão adicionadas em mais que uma tabela da base de dados; | ||
| + | <br/> | ||
| + | ::* '''envio de um email de confirmação de registo ou de recuperação da palavra-passe:''' | ||
| + | |||
| + | :::quando o utilizador cria uma nova conta, recebe, de imediato, um email de boas-vindas, indicando-lhe as suas credencias; no entanto, caso o utilizador se tenha esquecido da sua palavra-passe para se autenticar na rede social, tem a possibilidade de inserir o seu email de registo, para onde lhe será enviada a palavra-passe. Para que isto se tornasse possível, foi necessário criar um mecanismo que permitisse a autenticação na rede, para a aprovação do envio do email para o usuário. | ||
| + | <br/> | ||
| + | ---- | ||
| + | |||
| + | ===PARÂMETROS PASSADOS ENTRE PÁGINAS=== | ||
| + | ---- | ||
| + | <br/> | ||
| + | :: Os parâmetros passados entre páginas foram realizados pelo método POST. | ||
| + | :: Apenas foram enviados parâmetros como o ID e a palavra pesquisa, inserida na barra de pesquisa. | ||
| + | |||
| + | Exemplo: | ||
| + | |||
| + | $dados__query = sprintf(" | ||
| + | SELECT | ||
| + | db_bookmark.dados_comum.username, | ||
| + | db_bookmark.dados_comum.categoria_id, | ||
| + | db_bookmark.dados_comum.fotografia | ||
| + | FROM | ||
| + | db_bookmark.dados_comum | ||
| + | WHERE | ||
| + | db_bookmark.dados_comum.id_perfil = %s", $_SESSION['MM_UserGroup']); | ||
| + | |||
| + | $USER = sprintf(" | ||
| + | SELECT | ||
| + | nome, username, email, fotografia, id_perfil | ||
| + | FROM | ||
| + | dados_comum | ||
| + | WHERE | ||
| + | categoria_id = %d | ||
| + | AND | ||
| + | (nome LIKE %s OR username LIKE %s OR email LIKE %s)",$User, | ||
| + | GetSQLValueString( '%'.$_POST['palavra_pesq'].'%', 'text'), | ||
| + | GetSQLValueString('%'.$_POST['palavra_pesq'].'%', 'text'), | ||
| + | GetSQLValueString('%'.$_POST['palavra_pesq'].'%', 'text')); | ||
| + | <br/> | ||
| + | ===INTEGRAÇÃO=== | ||
| + | ---- | ||
| + | <br/> | ||
| + | :: Para a concretização desta rede social recorreu-se à integração de diferentes tecnologias, nomeadamente, PHP, HTML, CSS, jQuery e Javascript. | ||
| + | <br/> | ||
| + | ::* A estrutura desta plataforma social é construída a partir do HTML, cujo design e o conteúdo são editados e formatados através do CSS, recorrendo a ids e classes. | ||
| + | <br/> | ||
| + | ::* A linguagem PHP confere dinamismo e integração com a base de dados às páginas integrantes da rede. | ||
| + | <br/> | ||
| + | ::* Para validação de formulários optou-se pela linguagem Javascript, aliando o surgimento de caixas dinâmicas de aviso, através de jQuery. | ||
| + | <br/> | ||
| + | ::* A inserção da API Google Maps foi feita por meio de Javascript e PHP. Na página detalhada sobre o projecto do utilizador, este pode procurar informações sobre o respectivo destino. | ||
| + | <br/> | ||
| + | ---- | ||
| + | |||
| + | ==DESAFIOS== | ||
| + | <br/> | ||
| + | :Ao longo de todo o desenvolvimento da aplicação a equipa deparou-se com os mais variados desafios. Os que serão, posteriormente, explicitados aqui foram alvo de especial atenção por parte do grupo. Cabe por isso a função de salientar aqui a sua função para a funcionalidade da nossa aplicação. | ||
| + | |||
| + | |||
| + | :'''EMAIL: CONFIRMAÇÃO DE REGISTO E RECUPERAÇÃO DE PASSWORD''' | ||
| + | |||
| + | :DESAFIO: pesquisa de um código funcional que permitisse a autenticação na rede. | ||
| + | |||
| + | :Existem duas funcionalidades distintas: envio de um email para confirmação de registo de conta e respectivas credenciais ou envio de um email com a palavra-passe, por pedido do utilizador para a recuperação da mesma. | ||
| + | |||
| + | |||
| + | :'''HEADER: LOGIN;''' | ||
| + | |||
| + | :DESAFIO: A aplicação não permitia que se fizesse session_start(). | ||
| + | |||
| + | :O session_start é o que permite ao utilizador estar identificado enquanto se encontra ligado à aplicação. Nesta existem dois “header’s”: | ||
| + | |||
| + | ::*O primeiro é no index onde se encontra a área de login. | ||
| + | ::*O segundo header é a barra de navegação principal da aplicação e está a ser processado pela função require presente no PHP. | ||
| + | |||
| + | :Assim, o grupo optou por colocar o código neste segundo “header” de forma a poupar recursos, assim este código não teria que estar presente em todas as páginas. No entanto encontrou-se dificuldades em colocar este código em funcionamento. | ||
| + | :Uma vez que o grupo está habituado à estrutura de processamento do código em javascript - que faz a leitura e processamento do código na vertical - assumiu que em PHP funcionaria da mesma forma. No entanto em PHP o código é processado com base no conteúdo - ao processar o código o PHP analisa o código embutido na página e só depois vai buscar o código presente em páginas que estejam ligadas a esta. | ||
| + | |||
| + | |||
| + | :'''PÁGINA DE FEEDS: ALGORITMO DE ATUALIZAÇÃO DOS UTILIZADORES;''' | ||
| + | |||
| + | :DESAFIO: Ordenar o feed de actualização dos projectos dos utilizadores subscritos por ordem decrescente de alteração dos mesmos. | ||
| + | |||
| + | :Inicialmente, o grupo pensou em apresentar o feed de atualizações dos utilizadores comuns em conjunto com as últimas promoções das empresas. Posteriormente, decidiu-se que seria mais lógico se as duas estivessem separadas. | ||
| + | :Para isso criou-se um novo campo na tabela PROJECTO_SUBS, com a data de atualização. | ||
| + | :Isto permitiu reduzir o número de queries feitas à base de dados, que por sua vez contribui para uma diminuição do tráfego. | ||
| + | |||
| + | |||
| + | :'''IMAGEM DE PERFIL: UPLOAD E SELECÇÃO;''' | ||
| + | |||
| + | :DESAFIO: Implementar uma ferramenta que permita realizar o upload de uma fotografia bem como selecionar a área que o utilizador queria que ficasse visível no perfil. | ||
| + | |||
| + | :O processo que ocorre já está detalhadamente explicado no ponto 5.1. deste ensaio, no entanto foi um dos grandes desafios com que o grupo se deparou e batalhou, conseguindo implementar com sucesso, daí a sua presença novamente nesta área. | ||
| + | |||
| + | |||
| + | :'''GOOGLE MAPS: IMPLEMENTAÇÃO DE LIVRARIA DE LOCAIS;''' | ||
| + | |||
| + | :DESAFIO: Associar à API da Google uma ferramenta que permita a sugestão de locais consoante a pesquisa efetuada. | ||
| + | |||
| + | :O objetivo primordial desta ferramenta é evitar que o utilizador tenha que preencher dados complicados - como latitude e longitude - e reduzir a hipótese de ocorrerem erros de preenchimento. | ||
| + | <br/> | ||
| + | ---- | ||
| + | |||
| + | ==DESENVOLVIMENTOS FUTUROS== | ||
| + | <br/> | ||
| + | : Sendo o tempo de desenvolvimento deste projeto bastante limitado - comparativamente ao tempo que seria normalmente necessário para planificar e implementar uma aplicação desta dimensão - existem inúmeras ideias que foram colocadas de parte e que levou o grupo a seguir um caminho um pouco diferente do que realmente gostaria, de forma a conseguir atingir o resultado mais próximo do esperado. | ||
| + | |||
| + | : Assim, numa abordagem futura, as principais funcionalidades a implementar na nossa aplicação passariam pela implementação de uma ferramenta que permitisse ao utilizador receber o valor estimado do projeto de forma automática. Para isso, o usuário teria que fornecer apenas a data - de ida e e de volta - da viagem, bem como o número de noites e local da estadia. No entanto, esta ferramenta estaria apenas disponível para viagens de avião e comboio / metro. | ||
| + | |||
| + | : De modo a que os utilizadores acompanhem a atividade inerente ao seu perfil/projeto ou seja, sempre que ocorra algum tipo de interação entre dois ou mais utilizadores, o grupo pretende implementar um sistema de notificações. | ||
| + | |||
| + | : Pretende-se também cativar e facilitar o acesso de todos os tipos de potenciais utilizadores à aplicação. Para isso, o grupo pretende vir a disponibilizar a possibilidade de efectuar login com a sessão do Facebook. O grupo também considerou que seria relevante para o crescimento da aplicação, a implementação de partilha do projeto do utilizador nas principais redes sociais. | ||
| + | |||
| + | : Tendo, também, em vista a expansão da aplicação, assim como a melhoria da experiência dos utilizadores - seria bastante interessante a implementação da aplicação bookmark em formato mobile. Isto permitiria aos utilizadores atualizarem o seu perfil enquanto estivessem a viajar e assim partilhar e incentivar os outros utilizadores. | ||
| + | |||
| + | : Neste momento o bookmark apenas suporta fotografias na imagem de perfil dos utilizadores e empresas e nas campanhas das mesmas. No entanto, o grupo pretende adicionar uma galeria associado ao projeto de cada utilizadores; seja este um - como acontece neste momento - ou mais que um projeto por utilizador. | ||
| + | <br/> | ||
| + | ---- | ||
| + | |||
| + | ==CONCLUSÕES== | ||
| + | <br/> | ||
| + | ::''Quais são as necessidades do utilizador face a esta aplicação?'' | ||
| + | <br/> | ||
| + | ::Foi este o ponto de partida para este projeto que tem como missão acompanhar e guiar o utilizador, principalmente quando este está num sítio novo e desconhecido. Partilhar os melhores momentos, as maiores emoções e aventuras da vida dos utilizadores incentivando os outros a concretizarem os seus projetos. | ||
| + | ::Sendo este ensaio, para o grupo, o comutar de todos os conhecimentos adquiridos ao longo dos Laboratórios Multimedia, entregamos este projeto com a sensação de quem cumpriu o seu dever e de quem está à altura do desafio que vai ser a disciplina de projeto. | ||
| + | ::O grupo despede-se, assim, com a esperança de que este projeto ganhe vida, sendo uma ferramenta útil nas malas de todos os amantes da viagem. | ||
| + | ::Como Robert Louis Stevenson escreveu uma vez: | ||
| + | |||
| + | <br/> | ||
| + | |||
| + | ::''“For my part, I travel not to go anywhere, but to go. I travel for travel’s sake. The great affair is to move.”'' | ||
| + | |||
| + | <br/> | ||
| + | |||
| + | ::''Boas viagens!'' | ||
| + | |||
| + | <br/> | ||
| + | ---- | ||
| + | |||
| + | ==REFERÊNCIAS BIBLIOGRÁFICAS== | ||
| + | <br/> | ||
| + | :;BIBLIOGRAFIA: | ||
| + | |||
| + | :[1] Michele E. Davis , Jon A. Phillips, Learning php & mysql, 1st edition, O'Reilly, 2006 | ||
| + | <br/> | ||
| + | |||
| + | :;WEBGRAFIA: | ||
| + | |||
| + | :[1] Estatísticas de browsers@ http://www.w3schools.com/browsers/browsers_stats.asp | ||
| + | :[2] Estatísticas de resoluções nos browsers @ http://www.w3schools.com/browsers/browsers_display.asp | ||
| + | :[3] Manual de PHP @ http://pt.php.net/manual/en/index.php | ||
| + | :[4] Consulta e esclarecimento de dúvidas @ http://stackoverflow.com/ | ||
| + | :[5] Notificação / pop-up @ http://css-tricks.com/examples/PopFromTopMessage/ | ||
| + | :[6] Menu de Pesquisa @ http://www.marcofolio.net/webdesign/a_fancy_apple.com-style_search_suggestion.html | ||
| + | <br/> | ||
| + | ---- | ||
| + | ==AUTORIA== | ||
| + | <br/> | ||
| + | ;TRABALHO REALIZADO NO ÂMBITO DA CADEIRA DE LABORATÓRIO MULTIMEDIA 5, POR: | ||
| + | |||
| + | CARLOTA SILVA, 50244 | ||
| + | |||
| + | FILIPE ROQUE, 49446 | ||
| + | |||
| + | JOÃO CARDOTE - 50482 | ||
| + | <br/> | ||
| + | ---- | ||
Latest revision as of 05:41, 20 January 2012
Contents |
INTRODUÇÃO
- Lao Tzu disse uma vez: "A journey of a thousand miles must begin with a single step.", e este projeto não quer ser nada mais que isso; o primeiro passo para a concretização daquela viagem de sonho ou o planeamento das férias que sempre quis fazer.
OBJETIVOS DO DOCUMENTO
- Este documento visa a apresentação e descrição, ao leitor, das várias fases de desenvolvimento deste projeto, bem como todas as ferramentas, técnicas e metodologias utilizadas.
- Pretende-se, com este escrito, deixar documentados - de forma simples e concreta - os principais desafios encontrados, soluções viáveis e decisões tomadas.
- Uma vez que o grupo considerou a possibilidade de o projeto vir a ser, posteriormente, desenvolvido é bastante relevante apresentar documentação detalhada da implementação e evolução da aplicação em causa, assegurando ao leitor a compreensão e estrutura de toda a aplicação - desde o design e base de dados ao código e respetivas frameworks.
VISÃO GERAL DO DOCUMENTO
- Com este projeto pretende-se disponibilizar aos utilizadores uma aplicação intuitiva e fiável que proporcione a qualquer tipo de utilizador - seja ele avançado ou principiante - todas as ferramentas necessárias para planear com sucesso uma viagem sem percalços, uma estadia perfeita e uma visita bem estruturada a todos os pontos de interesse; de modo a que o utilizador consiga fazer a melhor gestão possível do seu tempo, guardando sempre algum para explorar livremente o espaço em que se encontra.
- De forma a proporcionar aos utilizadores as melhores experiências, a um custo acessível, a aplicação também está disponível a empresas (colaboradores) que disponibilizam promoções especiais ajustadas ao projeto de cada utilizador.
- O projeto visa “desenvolver um projecto que seja reconhecido pela excelência do seu desempenho, com o propósito de melhorar a qualidade de vida e satisfação de todos os amantes das viagens, que para a sua realização precisam de ajuda”.
- Numa época em que o sedentarismo é uma preocupação eminente, e a crise por que se está a passar está presente em todas as capas de jornais, focadas nos demais artigos e objeto de todo o tipo de entrevistas e documentários, esta aplicação pretende surgir como catalisador, de modo a alimentar o sonho dos utilizadores e incentivá-los a não abdicar das suas férias. Com o boom das redes sociais e a interação constante entre os vários milhões de utilizadores que usam regularmente este tipo de serviços, a aplicação vai tirar partido desta mesma interação para fazer com que os utilizadores se vão inter-apoiando, de forma a todos eles conseguirem levar a cabo os seus projetos.
DESIGN
PALETA DE CORES
- Para o desenvolvimento do grafismo desta aplicação foram escolhidas duas cores, cada uma delas podendo apresentar mais que uma variação.
- Para cor principal foi escolhido o cinzento - este está presente na maior parte da aplicação.
- Como cor secundária adotou-se o vermelho - este poderá ser encontrado no logotipo, bem como em pequenos detalhes na aplicação.
- CINZENTO
- VERMELHO
LOGOTIPO
- Para a aplicação, apelidada de bookmark, pretendia-se criar um logotipo facilmente legível e de linhas simples, pois a principal plataforma onde será visualizado é o ecrã. Como tal, foram tidas em consideração as oscilações a que este poderia estar sujeito de ecrã para ecrã.
- No entanto, foram também tomados outros cuidados, como ser legível em pequeno ou grande formato, a cor ou a preto e branco. Apesar de se ter optado por uma variação light da fonte dekar, verificou-se que não colocava em causa a legibilidade devido a esta ser uma fonte relativamente larga, ainda assim otimizou-se o espaçamento entre as letras para uma melhor leitura do logotipo.
- LOGOTIPO
LAYOUT
- Para a conceção da interface foram estudadas as práticas dos sítios web mais visitados que de certa forma poderiam ser semelhantes a esta aplicação . Uma vez que o grupo está limitado ao tempo e meios que dispõe, optou-se por analisar e perceber o porquê das escolhas feitas em aplicações como o Facebook, Google+, entre outras. Uma das ferramentas também utilizada para a fase inicial da construção do layout foi o w3school, onde se podem encontrar estatísticas sobre os browsers e as resoluções recomendadas.
- Assim ficou decidido que a área principal da aplicação não poderia exceder, em largura, os 720px.
- LAYOUT
MAPA DO SITE
USABILIDADE
- As plataformas multimedia procuram adaptar-se aos diferentes tipos de utilizadores, de forma a que estes atinjam os seus objectivos com eficácia, eficiência e satisfação num contexto específico de uso. Neste sentido, procura-se que a aplicação seja de uso fácil, contribuindo para a motivação e interesse de quem a explora.
- É importante que o utilizador, que não possui conhecimento relativamente a esta rede social, aquando do seu primeiro contacto, se sinta familiarizado e deve realizar, com rapidez e facilidade, aquilo que procura. Para tal, é importante avaliar, essencialmente, a criação de nova conta, a realização do login, personalização do perfil, inserção de dados necessários no perfil das poupanças e os acessos aos conteúdos da área social.
- Esta rede social alinhou os seus princípios baseando-se na antecipação da necessidade de cada usuário: confere autonomia ao utilizador, permitindo que detenha o controlo sobre a aplicação; preocupação na escolha das cores, tendo em conta, todo o tipo de utilizadores possíveis; permite reversibilidade, ou seja, sempre que o utilizador insere algum tipo de informação num campo, tem a possibilidade de voltar a editá-lo mais tarde; o tempo que o utilizador dispõe para alcançar um objectivo é o mínimo possível, facilitando, assim, a interacção.
BASE DE DADOS
- A base de dados do projecto bookmark armazena os dados de vinte e uma tabelas, relacionadas entre si. Primeiramente, determinou-se as entidades primordiais, constituídas por toda a informação necessária ao desenvolvimento do projecto. Após a definição das funcionalidades inerentes a esta rede social, surgiram as tabelas que a seguir se descrevem:
- DADOS_COMUM:
- Regista os dados comuns de dois tipos de utilizadores (empresa e utilizador comum), nomeadamente nome, username (conjuga o nome e o sobrenome inserido pelo usuário), email de registo, palavra passe, país, local, fotografia, data de login e data de registo. Possui, ainda, um campo ‘active’ que permite ativar ou desativar a conta.
- UTILIZADOR_COMUM:
- Regista os dados inseridos pelo utilizador – data de nascimento, sobrenome, tipo de sexo e interesses.
- EMPRESA:
- Regista a respectiva morada, ano de fundação, descrição e website.
- EMPRESA_SUBS:
- Regista as subscrições efectuadas a uma empresa, sendo constituída pelo campo de quem subscreve e outro campo que inscreve a empresa subscrita. O utilizador tem a possibilidade de cancelar a subscrição através do campo ‘active’.
- PROMOCOES:
- Regista as promoções lançadas pelas empresas, onde serão inseridos os dados relativamente a dois tipos de descrição: primária e secundária, imagem da campanha, local de destino, custo e respectiva data de inicio e fim da promoção.
- CONTACTOS:
- Regista os dados dos diferentes utilizadores. Encontra-se numa tabela diferenciada para que o utilizador possa escolher se esta informação é ou não visível no seu perfil: telemóvel, telefone e email. Possibilita, também, que o utilizador modifique o seu email sem que esta alteração interfira no email que utilizou no registo de conta.
- CATEGORIA:
- Esta tabela diferencia os diversos tipos de utilizador possíveis nesta rede social: o utilizador comum ou a empresa.
- TIPO_SEXO:
- Regista o tipo de sexo do utilizador comum: masculino ou feminino.
- COMENTARIO:
- Regista os comentários que são realizados ao projecto de cada utilizador comum. É, então, constituída por um campo que memoriza a descrição do comentário, a sua data, o autor do comentário e qual o seu destinatário.
- MENSAGEM:
- Regista as mensagens privadas que são enviadas ao perfil de cada utilizador comum. Possui um campo que memoriza destinatário e autor de cada mensagem, assim como a data em que esta foi enviada, o estado (lido ou não lido) e permite, ainda, mostrar as mensagens anteriores (histórico).
- NOTIFICACAO:
- Regista as notificações provenientes da actividade entre um perfil - aquele que vê - e outro perfil - aquele que está a ser visto, ou seja, regista o emissor e o receptor, a descrição, data e o estado - lido ou não lido.
- PROJECTO:
- Regista o projecto que cada utilizador comum realiza, sendo este o autor. Nesta tabela é inserido o custo estimado do respectivo plano e possui um campo (‘active’) que permite o cancelamento ou a activação deste.
- PROJECTO_SUBS:
- Regista as subscrições efectuadas a um projecto, sendo constituída pelo campo de quem subscreve e outro campo que inscreve o projecto subscrito. O utilizador tem a possibilidade de cancelar a subscrição através do campo ‘active’.
- ESTADIA:
- Esta tabela regista o tipo de estadia, respectiva descrição e data de chegada e saída, relativamente à concretização do projecto do utilizador.
- DESTINO:
- Esta tabela regista o local de destino e a data de ida, relativamente à concretização do projecto do utilizador.
- VIAGEM_IDA:
- Esta tabela regista o tipo de transporte a utilizar na viagem de ida para o local planeado, descrição, e data e hora de ida.
- VIAGEM_VOLTA:
- Esta tabela regista o tipo de transporte a utilizar na viagem de volta, descrição, e data e hora de ida.
- BUDGET:
- Permite que o utilizador comum faça a gestão das suas economias. Regista, assim, o valor actual – valor que possui para investir no projecto - e a data em que é actualizado. Permite que o utilizador escolha se esta informação é ou não visível a outros utilizadores através do campo ‘publico_privado’ - por defeito, encontra-se privado.
- MOVIMENTOS:
- Regista os movimentos realizados no budget: valor inserido e respectiva data.
- NOTIFICACAO_BUDGET:
- Esta tabela regista o tipo de movimentos que são efectuados na área de poupanças, a data e o valor inserido. O campo ‘estado’ permite que o utilizador apague ou não a notificação.
- POI:
- Regista os pontos de interesse que o utilizador visitará no decorrer da sua viagem projectada: tipo de ponto de interesse (ex.: praia, museu, entre outros) e respectiva descrição.
- Após a identificação das entidades e respectivos campos, procedeu-se à realização das relações existentes entre as diferentes tabelas: Relações 1:1 do tipo Identifying, relações 1:1 do tipo Non-Identifying, relações 1:M do tipo Identifying e relações 1:M do tipo Non-Identifying.
IMPLEMENTAÇÃO
DESCRIÇÃO DAS PRINCIPAIS FUNCIONALIDADES DA APLICAÇÃO WEB
- A implementação desta plataforma on-line assenta em três diferentes grupos: perfil do utilizador, rede social e área de gestão.
- Na primeira visita do utilizador a esta rede social, é-lhe apresentado um formulário para registo de conta segundo o tipo de usuário - empresa ou utilizador comum. Após este passo, ser-lhe-á enviado um email de boas-vindas e respectivas credenciais.
- Caso o utilizador já tenha criado a sua conta, terá, apenas, que se autenticar na plataforma para que tenha acesso à sua rede social. Tem, também, a possibilidade de recuperar a sua palavra-passe, caso seja esquecida - terá que inserir o seu email de registo, para onde esta será enviada.
- Após a realização do login, o utilizador poderá personalizar o seu perfil. Tanto o utilizador empresa como o utilizador comum podem inserir e editar os seus dados pessoais e fazer o upload de fotografia de perfil.
- A rede social de cada usuário comum é criada pelo próprio, ou seja, este subscreve projectos e empresas, realiza comentários e envia mensagens privadas aos utilizadores que possuem planos de viagem do seu interesse para uma possível troca de sugestões relativas ao local que pretende visitar.
- No seu perfil, poderá ver todas as subscrições realizadas ao seu projecto, tendo a possibilidade de cancelar as indesejadas e todos os comentários realizados por outros utilizadores, tendo, também, a possibilidade de apagar os indesejados.
- Na sua rede social, a partir do feed de notícias, terá acesso a todos os projectos que subscreve e respectivos perfis, ordenados por data de actualização e a todas as empresas inscritas nesta rede, bem como destacar, as empresas preferidas.
- Após a conclusão do seu plano ou por outros motivos alheios, o usuário poderá suspender a sua conta e mais tarde, reactiva-la.
- O utilizador empresa poderá visualizar todos os perfis dos utilizadores comuns, tendo acesso directo, a partir do feed de notícias da sua rede, aos utilizadores que a marcaram como preferida.
- Relativamente à área de gestão, esta varia consoante cada tipo de usuário. Por um lado, as empresas têm a possibilidade de criar as suas promoções e publicá-las no seu perfil, de forma a atrair potenciais clientes. Por outro lado, os utilizadores comuns têm a possibilidade de criar o projecto e respectivo budget.
- A criação de um projecto permite a definição do local de destino - disponibilizando o Google Maps como ferramenta de procura de informações do mesmo -, tipo de transporte, tipo de estadia, data de realização e pontos de interesse a visitar. Para realização do seu plano, o utilizador dispõe de uma área de gestão de economias - budget -, onde pode inserir os gastos ou poupanças, tendo acesso à sua barra de progresso que indica a percentagem de conclusão do objectivo definido (viagem).
- A implementação desta plataforma on-line assenta em três diferentes grupos: perfil do utilizador, rede social e área de gestão.
SERVER BEHAVIOURS UTILIZADOS
- Para a realização deste projecto, recorreu-se à utilização de vários server behaviours - comportamentos do servidor - disponibilizados pelo Dreamweaver ou escritos de raiz:
- repeat region - possibilitam a repetição de vários elemento vindos da base de dados;
- insert record - utilizados aquando o registo de uma nova conta, criação de um projecto e respectivo budget e inserção de informações pessoais;
- update record - utilizados aquando a edição de dados;
- delete record - utilizado para eliminar dados;
- Show if Recordset is Not Empty: só executa o código caso as condições do recordset se verifiquem;
- log in user - utilizados para certificar que a palavra-passe corresponde ao email introduzido, autorizando ou impedindo o utilizador de aceder à rede social (sistema de login);
- log out user - permite realizar o logout do utilizador;
- check new username - utilizado para verificar, no processo de criação de nova conta, se o email introduzido pelo utilizador já se encontra registado na base de dados do bookmark.
RECORDSETS UTILIZADOS
- A partir do Dreamweaver foram criados sete tipos de recordsets:
- rs_tipoSexo - utilizado para conhecer o sexo do utilizador (masculino ou feminino);
- rs_empresas - utilizado para seleccionar os dados da empresa;
- rs_feed - utilzado para demonstração de projectos e empresas subscritos;
- rs_promo - selecciona os dados das campanhas das empresas;
- rs_dadosUtilizador - utilizado para seleccionar os dados do utilizador comum;
- rs_poi - selecciona os dados dos pontos de interesse, correspondestes à descrição de um projecto;
- rs_notificacaoBudget - adiciona na área de budget as movimentações feitas pelo utiizador.
- Para além disto, foram criados de raiz três recordsets:
- dadosVisitadosRS - utilizado para obter os dados do perfil de quem é visitado;
- projectoRS - utilizado para seleccionar as características inseridas pelo utilizador, relativamente ao seu projecto;
- budgetRS - utilizado para seleccionar as características inseridas pelo utilizador, relativamente ao seu budget.
QUERIES UTILIZADAS
- Para proceder à implementação desta rede social, recorreu-se a um elevado número de queries. Sendo, por isso, necessário destacar as mais complexas:
- upload de uma fotografia de perfil, seguido de uma selecção da área a apresentar e, consequente recorte:
- criação de variáveis de upload; criação de funções necessárias para a redimensão da imagem pretendida; verificar se o ID do utilizador que carrega a foto já possuiu uma pasta no servidor; caso não possua, é então, criada uma pasta para onde é enviada a fotografia carregada;
- registo de uma nova conta de utilizador:
- aquando o registo de um novo utilizador nesta rede social, ao inserir os seus dados para criação de conta, estes serão adicionadas em mais que uma tabela da base de dados;
- envio de um email de confirmação de registo ou de recuperação da palavra-passe:
- quando o utilizador cria uma nova conta, recebe, de imediato, um email de boas-vindas, indicando-lhe as suas credencias; no entanto, caso o utilizador se tenha esquecido da sua palavra-passe para se autenticar na rede social, tem a possibilidade de inserir o seu email de registo, para onde lhe será enviada a palavra-passe. Para que isto se tornasse possível, foi necessário criar um mecanismo que permitisse a autenticação na rede, para a aprovação do envio do email para o usuário.
PARÂMETROS PASSADOS ENTRE PÁGINAS
- Os parâmetros passados entre páginas foram realizados pelo método POST.
- Apenas foram enviados parâmetros como o ID e a palavra pesquisa, inserida na barra de pesquisa.
Exemplo:
$dados__query = sprintf("
SELECT
db_bookmark.dados_comum.username,
db_bookmark.dados_comum.categoria_id,
db_bookmark.dados_comum.fotografia
FROM
db_bookmark.dados_comum
WHERE
db_bookmark.dados_comum.id_perfil = %s", $_SESSION['MM_UserGroup']);
$USER = sprintf("
SELECT
nome, username, email, fotografia, id_perfil
FROM
dados_comum
WHERE
categoria_id = %d
AND
(nome LIKE %s OR username LIKE %s OR email LIKE %s)",$User,
GetSQLValueString( '%'.$_POST['palavra_pesq'].'%', 'text'),
GetSQLValueString('%'.$_POST['palavra_pesq'].'%', 'text'),
GetSQLValueString('%'.$_POST['palavra_pesq'].'%', 'text'));
INTEGRAÇÃO
- Para a concretização desta rede social recorreu-se à integração de diferentes tecnologias, nomeadamente, PHP, HTML, CSS, jQuery e Javascript.
- A estrutura desta plataforma social é construída a partir do HTML, cujo design e o conteúdo são editados e formatados através do CSS, recorrendo a ids e classes.
- A linguagem PHP confere dinamismo e integração com a base de dados às páginas integrantes da rede.
- Para validação de formulários optou-se pela linguagem Javascript, aliando o surgimento de caixas dinâmicas de aviso, através de jQuery.
- A inserção da API Google Maps foi feita por meio de Javascript e PHP. Na página detalhada sobre o projecto do utilizador, este pode procurar informações sobre o respectivo destino.
DESAFIOS
- Ao longo de todo o desenvolvimento da aplicação a equipa deparou-se com os mais variados desafios. Os que serão, posteriormente, explicitados aqui foram alvo de especial atenção por parte do grupo. Cabe por isso a função de salientar aqui a sua função para a funcionalidade da nossa aplicação.
- EMAIL: CONFIRMAÇÃO DE REGISTO E RECUPERAÇÃO DE PASSWORD
- DESAFIO: pesquisa de um código funcional que permitisse a autenticação na rede.
- Existem duas funcionalidades distintas: envio de um email para confirmação de registo de conta e respectivas credenciais ou envio de um email com a palavra-passe, por pedido do utilizador para a recuperação da mesma.
- HEADER: LOGIN;
- DESAFIO: A aplicação não permitia que se fizesse session_start().
- O session_start é o que permite ao utilizador estar identificado enquanto se encontra ligado à aplicação. Nesta existem dois “header’s”:
- O primeiro é no index onde se encontra a área de login.
- O segundo header é a barra de navegação principal da aplicação e está a ser processado pela função require presente no PHP.
- Assim, o grupo optou por colocar o código neste segundo “header” de forma a poupar recursos, assim este código não teria que estar presente em todas as páginas. No entanto encontrou-se dificuldades em colocar este código em funcionamento.
- Uma vez que o grupo está habituado à estrutura de processamento do código em javascript - que faz a leitura e processamento do código na vertical - assumiu que em PHP funcionaria da mesma forma. No entanto em PHP o código é processado com base no conteúdo - ao processar o código o PHP analisa o código embutido na página e só depois vai buscar o código presente em páginas que estejam ligadas a esta.
- PÁGINA DE FEEDS: ALGORITMO DE ATUALIZAÇÃO DOS UTILIZADORES;
- DESAFIO: Ordenar o feed de actualização dos projectos dos utilizadores subscritos por ordem decrescente de alteração dos mesmos.
- Inicialmente, o grupo pensou em apresentar o feed de atualizações dos utilizadores comuns em conjunto com as últimas promoções das empresas. Posteriormente, decidiu-se que seria mais lógico se as duas estivessem separadas.
- Para isso criou-se um novo campo na tabela PROJECTO_SUBS, com a data de atualização.
- Isto permitiu reduzir o número de queries feitas à base de dados, que por sua vez contribui para uma diminuição do tráfego.
- IMAGEM DE PERFIL: UPLOAD E SELECÇÃO;
- DESAFIO: Implementar uma ferramenta que permita realizar o upload de uma fotografia bem como selecionar a área que o utilizador queria que ficasse visível no perfil.
- O processo que ocorre já está detalhadamente explicado no ponto 5.1. deste ensaio, no entanto foi um dos grandes desafios com que o grupo se deparou e batalhou, conseguindo implementar com sucesso, daí a sua presença novamente nesta área.
- GOOGLE MAPS: IMPLEMENTAÇÃO DE LIVRARIA DE LOCAIS;
- DESAFIO: Associar à API da Google uma ferramenta que permita a sugestão de locais consoante a pesquisa efetuada.
- O objetivo primordial desta ferramenta é evitar que o utilizador tenha que preencher dados complicados - como latitude e longitude - e reduzir a hipótese de ocorrerem erros de preenchimento.
DESENVOLVIMENTOS FUTUROS
- Sendo o tempo de desenvolvimento deste projeto bastante limitado - comparativamente ao tempo que seria normalmente necessário para planificar e implementar uma aplicação desta dimensão - existem inúmeras ideias que foram colocadas de parte e que levou o grupo a seguir um caminho um pouco diferente do que realmente gostaria, de forma a conseguir atingir o resultado mais próximo do esperado.
- Assim, numa abordagem futura, as principais funcionalidades a implementar na nossa aplicação passariam pela implementação de uma ferramenta que permitisse ao utilizador receber o valor estimado do projeto de forma automática. Para isso, o usuário teria que fornecer apenas a data - de ida e e de volta - da viagem, bem como o número de noites e local da estadia. No entanto, esta ferramenta estaria apenas disponível para viagens de avião e comboio / metro.
- De modo a que os utilizadores acompanhem a atividade inerente ao seu perfil/projeto ou seja, sempre que ocorra algum tipo de interação entre dois ou mais utilizadores, o grupo pretende implementar um sistema de notificações.
- Pretende-se também cativar e facilitar o acesso de todos os tipos de potenciais utilizadores à aplicação. Para isso, o grupo pretende vir a disponibilizar a possibilidade de efectuar login com a sessão do Facebook. O grupo também considerou que seria relevante para o crescimento da aplicação, a implementação de partilha do projeto do utilizador nas principais redes sociais.
- Tendo, também, em vista a expansão da aplicação, assim como a melhoria da experiência dos utilizadores - seria bastante interessante a implementação da aplicação bookmark em formato mobile. Isto permitiria aos utilizadores atualizarem o seu perfil enquanto estivessem a viajar e assim partilhar e incentivar os outros utilizadores.
- Neste momento o bookmark apenas suporta fotografias na imagem de perfil dos utilizadores e empresas e nas campanhas das mesmas. No entanto, o grupo pretende adicionar uma galeria associado ao projeto de cada utilizadores; seja este um - como acontece neste momento - ou mais que um projeto por utilizador.
CONCLUSÕES
- Quais são as necessidades do utilizador face a esta aplicação?
- Foi este o ponto de partida para este projeto que tem como missão acompanhar e guiar o utilizador, principalmente quando este está num sítio novo e desconhecido. Partilhar os melhores momentos, as maiores emoções e aventuras da vida dos utilizadores incentivando os outros a concretizarem os seus projetos.
- Sendo este ensaio, para o grupo, o comutar de todos os conhecimentos adquiridos ao longo dos Laboratórios Multimedia, entregamos este projeto com a sensação de quem cumpriu o seu dever e de quem está à altura do desafio que vai ser a disciplina de projeto.
- O grupo despede-se, assim, com a esperança de que este projeto ganhe vida, sendo uma ferramenta útil nas malas de todos os amantes da viagem.
- Como Robert Louis Stevenson escreveu uma vez:
- “For my part, I travel not to go anywhere, but to go. I travel for travel’s sake. The great affair is to move.”
- Boas viagens!
REFERÊNCIAS BIBLIOGRÁFICAS
- BIBLIOGRAFIA
- [1] Michele E. Davis , Jon A. Phillips, Learning php & mysql, 1st edition, O'Reilly, 2006
- WEBGRAFIA
- [1] Estatísticas de browsers@ http://www.w3schools.com/browsers/browsers_stats.asp
- [2] Estatísticas de resoluções nos browsers @ http://www.w3schools.com/browsers/browsers_display.asp
- [3] Manual de PHP @ http://pt.php.net/manual/en/index.php
- [4] Consulta e esclarecimento de dúvidas @ http://stackoverflow.com/
- [5] Notificação / pop-up @ http://css-tricks.com/examples/PopFromTopMessage/
- [6] Menu de Pesquisa @ http://www.marcofolio.net/webdesign/a_fancy_apple.com-style_search_suggestion.html
AUTORIA
- TRABALHO REALIZADO NO ÂMBITO DA CADEIRA DE LABORATÓRIO MULTIMEDIA 5, POR
CARLOTA SILVA, 50244
FILIPE ROQUE, 49446
JOÃO CARDOTE - 50482


