Food Bank Italia In Italia si stima che 2,6 milioni di persone vivano in povertà assoluta. Food Bank Italia è un'organizzazione no-profit dedicata a combattere la fame e la povertà nella nostra comunità, raccogliendo e distribuendo cibo a coloro che ne hanno bisogno. Il nostro sito permette: Agli utenti registrati, che vivono in situazione di difficoltà economica, di visualizzare i prodotti disponibili nei nostri punti di ritiro; Effettuare donazioni per vari progetti di sostegno della comunità. Diventare volontario della nostra associazione. Database Per registrare le informazioni degli utenti abbiamo utilizzato 2 tabelle: User e User_Profile, in modo che i dati opzionali degli utenti vengano gestiti in una tabella a parte, limitando la conservazione di dati inutili. Abbiamo deciso di fare una tabella separata per la newsletter in modo da separare le logiche applicative. Allo stesso modo abbiamo diviso crowdfunding e donation dal resto in quanto accettiamo donazioni anche da persone non registrate. Utilizziamo la tabella message per tenere traccia di tutte le email inviate e da chi sono state inviate(possono essere state inviate solo da admin). (non ancora implementato nel sito) L'associazione tra product e pick_up_point ci permette di tenere traccia dei prodotti disponibili in un determinato punto di ritiro. Crowdfunding La parte relativa al crowdfunding si focalizza nell'aiutare persone in condizioni di povertà attraverso il finanziamento di progetti che hanno un impatto positivo sulla comunità. Ogni processo di donazione è identificato univocamente da $_SESSION['thisdonation'] in combinazione con $_POST["uniqueDonation"], la donazione può proseguire solo se questi due valori coincidono, cosi da rendere univoco il processo di donazione e allo stesso tempo rendere impossibile ritornare indietro a donazione avvenuta. Ogni progetto presente sulla pagina di crowdfunding ha un obiettivo di raccolta fondi e una data di scadenza. Anche se l'obiettivo viene raggiunto, la raccolta fondi continua fino alla data di scadenza specificata, un conto alla rovescia mostra quanto tempo rimane per partecipare al finanziamento, lo stesso conto alla rovescia viene utilizzato anche per mostrare il tempo rimanente all'inizio dei progetti non ancora avviati. Newsletter Abbiamo implementato nel sito una newsletter a cui ogni utente può decidere di aderire tramite apposito form così da poter ricevere tutte le novità sui vari prodotti o progetti. L'implementazione avviene in due fasi: PHPMailer: è una libreria open-source che consente agli sviluppatori di inviare email utilizzando il Simple Mail Transfer Protocol (SMTP). HTML: tramite HTML avviene la gestione del template della newsletter che l'utente riceverà via email. La gestione dell'invio delle email viene affidata esclusivamente agli admin. Admin area Admin_area è un area riservata solo ad user abilitati (campo 'admin' della tabella 'user' == 1 ) e sfruttando $_SESSION['admin'] evitiamo di ripetere la stessa query più volte. Per gli utenti abilitati abbiamo creato una area di lavoro con una navbar personalizzata. Ogni utente abilitato può utilizzare le seguenti funzionalità: Gestione newsletter(invio e visualizzazione delle news). Gestione utenti (cancellazione, ban e admin). Gestione prodotti (inserimento, modifica e cancellazione). Gestione crowdfunding (inserimento e visualizzazione statistiche nella tabella). Le tabelle vengono implementate con JQuery DataTable