Progetto Eleven Gruppo 11 http://lpweb.diiga.univpm.it/~grp_11/ Introduzione Eleven è un azienda che opera nel campo delle applicazioni WEB specializzata nel campo dei social network. Da la possibilità ai singoli utenti di entrare a far parte di una piccola comunità di utenti con la possibilità di condividere informazioni e comunicare tra di loro. Le funzionalità date a chi si registra nel portale vanno dalla gestione di conversazioni tramite messaggi a quella dei blog. Inoltre è presente uno spazio dove caricare le proprie immagini e gestirle tramite l uso di album. Per garantire un corretto uso del portale nel rispetto delle regole è presente uno staff regolarmente attivo. Componenti del gruppo Giacomo Genobile (1047305) Contributo al progetto 25% Liberti Giacomo (1042201) Contributo al progetto 25% Di Benedetto Andrea (1047908) Contributo al progetto 25% Belleggia Michele (1042318) Contributo al progetto 25% Pagina 1
Funzionalità Le funzionalità dei vari livelli di utente (utente non registrato, utente registrato, utente staff, amministratore) sono descritte nel seguente elenco: Funzionalità di base: Opzione di registrazione; Visualizzazione di una breve presentazione dell azienda e, tramite varie sezioni, dei contatti, delle informazioni riguardanti il trattamento dei dati personali; Visualizzazione delle FAQ; Funzionalità a livello utente: Visualizzazione delle informazioni generiche, degli ultimi 5 blog, messaggi e album postati nella schermata profilo; Possibilità di accedere alla varie sottosezioni (messaggi, amici, blog e album) con seguenti funzionalità: o Per la sezione messaggi Visualizzazione riassuntiva delle varie conversazioni; Visualizzazione della sezione messaggi inviati e messaggi ricevuti ; Invio di un nuovo messaggio; Cancellazione delle conversazione e dei propri messaggi; Dalla sezione profilo è possibile vedere il numero dei messaggi non letti vicino al collegamento messaggi ; o Per la sezione amici Visualizzazione dell elenco amici con l opzione, per ogni amico (tranne quelli con richiesta non confermata), di inviargli un messaggio e di poter eliminare l amicizia; o Per la sezione blog Visualizzazione riassuntiva di ogni blog creato dall utente con la possibilità di eliminarlo completamente; Aggiunta di un nuovo blog; Visualizzazione completa del blog (compresa di tutti i commenti) con la possibilità di modificare il post iniziale, aggiungere commenti o eliminare il blog; o Per la sezione album Anteprima in miniature delle foto di ogni album; Gestione della privacy, inserimento e cancellazione di ogni singolo album; Pagina 2
Nella visualizzazione completa dell album c è la possibilità di avviare uno slideshow ed ingrandire la foto interessata; inserire una nuova immagine, cancellarla o spostarla; Visualizzazione delle notifiche (richiesta di amicizia, commento di un blog, amicizia accettata/rifiutata, cancellazioni da parte dello staff/admin); Ricerca, in base al nome, dei vari utenti nel database e possibilità di inviare una richiesta di amicizia ai singoli utenti; Modifica delle informazioni personali (compreso il proprio avatar); Modifica della propria password; Possibilità di gestire la visibilità del profilo personale verso utenti non amici; Disattivare o riattivare il proprio account; Funzionalità a livello staff: Visualizzazione dell elenco utenti registrati e per ogni utente la possibilità di: o Visualizzazione profilo dell utente e tramite la pagina profilo accedere alle sezioni Amici, Blog, Album e Notifiche; o Invio messaggio all utente; o Visualizzazione dell elenco blog dell utente con possibilità di inserimento commenti e cancellazione dell intero blog (con conseguente invio di una notifica al proprietario del blog) o singolo commento (con conseguente invio di una notifica a chi ha inviato il post); o Visualizzazione dell elenco album dell utente con possibilità di cancellazione di interi album o singole foto (con conseguente invio di una notifica all utente sia per la cancellazione album che per la cancellazione foto); Funzionalità a livello amministratore (comprensive anche di quelle a livello staff): Visualizzazione di informazioni generiche contenenti: o Il numero totale di blog presenti nel database; o Il numero totale di album presenti nel database; o La media di amici per ogni utente; o La media di post pubblicati in ogni blog; o La media di foto pubblicate in un album; o La media di richieste d amicizia ricevute da un utente; Nell elenco utenti simile a quello per il livello staff sono presenti anche: o La visualizzazione di informazioni aggiuntive per ogni utente (l elenco degli amici dell utente e il numero di richieste d amicizia ricevute); o La disattivazione/riattivazione dell utente; Pagina 3
Nella sezione profilo dell utente è possibile modificare i dati personali (comprensivo di avatar), modificare la password, disattivare o riattivare l account utente; Visualizzazione dell elenco staff con la possibilità per ogni utente staff di: o Visualizzazione del profilo con la possibilità di modificare i suoi dati personali, modificare la password, disattivare o riattivare l account; o Disattivazione o attivazione dell utente staff; Nella sezione elenco staff c è anche l opzione di aggiunta di un altro membro staff; Visualizzazione dell elenco FAQ con le opzioni di aggiunta, cancellazione e modifica delle singole; Mappa del sito Livello Pubblico Home (public) Home Privacy Dove siamo FAQ Contattaci Login Registra Privacy Dove siamo FAQ Contattaci ADMIN ADMIN/MOD ADMIN/MOD/PROPRIETARIO Pagina 4
Livello Utente Home (loggato) Ricerca Profilo pubblico Home Profilo Richiesta amicizia Privacy Dove siamo FAQ Elenco amici Cancella amicizia Profilo amico Profilo Elenco blog utente Profilo Invia messaggio Amici Visualizza blog Ricerca Utenti Profilo Blog Cancella Elenco amici Album Elenco messaggi Elenco blog Elenco messaggi Messaggi ricevuti Conversazione Elenco album utente Album I miei album Messaggi inviati Cancella Cancella Impostazioni utente Invia nuovo messaggio Logout Cancella conversazione Vai alla conversazione Elenco blog Blog Cancella blog Inserisci post Modifica Crea blog Cancella post Visualizza blog Cancella I miei album Album Inserisci foto Cancella Nuovo Cancella foto Cancella Sposta foto Album Imposta privacy Impostazioni utente Modifica dati profilo Modifica password Disattiva/riattiva account Pagina 5
Livello Staff/Admin Home (loggato) Gestione utenti Gestione staff Gestione FAQ Statistiche Logout Elenco utenti Profilo Invia messaggio Blog utente Album utente Informazioni aggiuntive Disattiva/riattiva account Elenco staff Inserisci Cancella Profilo Elenco FAQ Inserisci Cancella Modifica Soluzioni adottate Per l implementazione della lista degli utenti utilizzata sia dall Utente Staff che da quello Admin abbiamo deciso di utilizzare delle action, form e view presenti nello usercontroller utilizzando il controllo acl presente sul sito in modo da attimizzare la programmazione e da ridurre la quantità di codice. E stato adottato l'ajax per l'eliminazione di alcuni elementi nel lato server, come ad esempio l'eliminazione delle notifiche e il settaggio del flag di lettura, l'eliminazione dei messaggi ricevuti e inviati o di un' intera conversazione. Codice lato Client per l'eliminazione di qualsiasi link a cui corrisponde un action di eliminazione con risposta ajax: Pagina 6
//Metodo per eliminazione di messaggi, blog o album. var mex = 'Sei sicuro?'; $(".deleteconfirm").click(function(link) { link.preventdefault(); var href = $(this).attr("href"); var rel = $(this).attr("rel"); var par = $(this).attr("parent"); var message = (rel == undefined rel == '')? mex : rel; var permission = confirm(message); if(permission) { $.ajax({ type: 'POST', url: href, data: 'null', datatype: 'json', success: function(resp){ $('.convers').html(resp); ); $(this).parent(par).animate({'opacity':'hide', 'slow', function() { Pagina 7
$(this).parent(par).remove(); ); else { return; ); Al metodo vengono passati i parametri del tag link corrsipondente all'elemnto su cui viene effettuato il click e sono: -href: l'uri a cui fa riferimento l'action che processa lato server l'ajax. -rel: contenente il testo dda notificare all'utente per la conferma. -parent: il tag da rimuovere nel DOM una volta effettuata l'eliminazione. Codice dell'action Lato Server che elimina qualsiasi tipo di messaggio, sia tra quelli inviati che riceuvuti sia nella conversazione. public function deletemexconvaction(){ $this->_helper->gethelper('layout')->disablelayout(); $this->_helper->viewrenderer->setnorender(); if($this->_getparam('tipo')=='mitt'){ $item=array('vis_mitt'=>'0'); $this->_usermodel->updatemex($item, $this->_getparam('idmex')); else{ $item=array('vis_dest'=>'0'); Pagina 8
$this->_usermodel->updatemex($item, $this->_getparam('idmex')); $Mex=$this->_userModel->getMexById($this->_getParam('idMex')); if(($mex->vis_mitt==0)&&($mex->vis_dest==0)){ $this->_usermodel->deletemex($this->_getparam('idmex')); $Mexages=$this->_userModel->getAllConversationASC($this->_getParam('usrId'), $this->_getparam('usrid2')); if($this->_getparam('window')=='ricevuti'){ $response=$this->_usermodel->getmexricevuti($this->_getparam('usrid')); elseif($this->_getparam('window')=='inviati'){ $response=$this->_usermodel->getmexinviati($this->_getparam('usrid')); elseif((count($mexages)!=0)&&($this->_getparam('window')=='conversation')){ $this->_helper->redirector- >gotosimple('visualconversation','user',null,array('usrid'=>$this->_getparam('usrid'),'usrid2'=>$this- >_getparam('usrid2'))); $this->getresponse()->setheader('content-type','application/json')- >setbody(count($response)); L'action una volta eliminato il messaggio restituisce un response contente il nuovo numero di messaggi in base a quale tipo di richiesta sia stata eseguita, inviati, ricevuti o conversazione. Sulla view del profilo è stata gestita con una serie di controlli nidificati la visulizzazione del profilo controllando il role dell'utente se l'accesso avveniva da parte di un: Pagina 9
-Utente Loggato, a cui venngono abilitati i permessi a visulizzare l'intero proprio profilo e a modificarne i principali dati. -Utente Staff, con permessi di eliminazione su blog e album con conseguente invio di messaggio con la motivazione della sua rimozione. -Admin con permesso di visulizzare l'intero profilo, disattivarlo o riattivarlo modificarne i dati e eliminare blog o album con relativa motivazione. Entrambi i tipi di utente che gestiscono il sito(admini o STAFF) non possono visulizzare o eliminare messaggi o conversazioni dell'utente o eliminarne le amicizie, in piu non possono modificare il contewnuto del blog o inserirne di nuovi, lo stesso per gli album. Altra funzionalita che viene gestita è la visulizzazione del profilo di un utente amico da parte dell'utente che sta navigando sul sito, che ha permessi di visulizzare il suo profilo, i suoi blog e le sue gallerie, solo quando la richiesta di amicizia sia stata accettata. Se l'utente sceglie di cancellarsi dalla comunita il sistema non elimina il suo account ma lo disattiva e lo rende invisibile all'intera comunita ma mantiene visibile i dati che rigurdano anche altri utenti come i messaggi in comune o i post su blog di altri utenti, Solo lo stesso utente puo riattivare il proprio accout o l'administrator. Per la visualizazione delle notifica all'accesso del utente viene inizzializata nella init del controller user l'action controlladati che controlla tutte le nuove notifiche e le invia alla view principale del layout in modo che essa le possa visulizzare. //Metodo che controlla i dati al caricamento del proprio profilo public function controllodatiaction(){ //Controllo presenza di nuovi messaggi $Mex=$this->_userModel->getMexNonLetti($this->_authService->getIdentity()->usrId); $Nmex=count($Mex); $this->view->assign(array('nmextot2'=>$nmex)); Pagina 10
//Controllo presenza di notifiche non lette $Notf=$this->_userModel->getNotfNonLetti($this->_authService->getIdentity()->usrId); $Nnotf=count($Notf); $this->view->assign(array('nnotf'=>$nnotf)); if($nnotf!=0){ $this->view->assign(array('notifiche'=>$notf)); //Assegnamo i dati al layout Pagina 11