SAfe Community Engine PX
SAfe Community Engine PX (in breve SACEPX) è
un sistema modulare per la gestione di una comunità online in grado
di offrire sicurezza agli utenti, prestazioni ed un alto grado di partecipazione.
E' uno dei miei fiori all'occhiello e dei programmi su cui ho investito
più tempo, ma anche ottenuto maggiori gratificazioni per la risposta degli utenti.
Le caratteristiche
Alcune delle caratteristiche del programma.
In grassetto quelle aggiunte di recente.
Attenzione: l'elenco di funzionalità di questa pagina non è aggiornato: è più importante aggiungere caratteristiche al programma che documentarle qui!
- Completa separazione del codice dai template (X)HTML;
- gestione utenti e contenuti testuali tramite database, con riferimento a file esterni per i media;
- integrità del database garantita da chiavi esterne, delegando quindi all'engine nativo le attività di rimozione a cascata dei contenuti in caso di cancellazione utenti;
- sistema di gestione utenti con livelli separati: nuovo, bannato (due tipi di ban), normale, aiutante JR, aiutante, admin;
- ruoli definibili per gli aiutanti: aiutomod JR (solo accesso alle statistiche), aiutomod (pubblicazione di contenuti non rilevati come pericolosi dai filtri automatici), mod JR (accesso a tutto esclusi dati privati degli utenti e propri contenuti);
- supporto di permessi per consentire la gestione di specifiche rubriche o parti del sito a determinati utenti non admin;
- supporto di permessi e/o limiti arbitrari a ciò che gli utenti normali possono fare nel sito.
- modulo per l'iscrizione di nuovi utenti con facoltà per l'admin di accettare o rifiutare l'iscrizione e per l'utente di inserire note o esigenze particolari;
- possibilità di abilitare o disabilitare il login permanente (tipica opzione "ricordami") per tutti gli utenti o di disabilitarla per alcuni;
- sistema di amministrazione utenti avanzato con possibilità di modificare ogni campo (login, password, email di riferimento) e di inserire note relative all'utente.
- pre-moderazione di tutti i contenuti immessi dagli utenti (opzionale e attivata come impostazione predefinita);
- statistiche circa i contenuti immessi/rimossi;
- filtri automatici di identificazione contenuti potenzialmente vietati e loro evidenziazione nei messaggi inviati dagli utenti e in attesa di approvazione;
- completo log dell'IP usato dagli utenti per immettere qualsiasi contenuto e strumenti integrati per l'analisi di detto IP;
- supporto nativo per indirizzi IP di tipo IPv6;
- salvataggio nel log dell'orario di accesso a una pagina registrato dal server, per facilitare eventuali analisi comparate dei log del server anche a scopo forensico;
- protezione del database e dei log tramite impostazione automatica permessi utente nel filesystem (piattaforme *nix) per l'uso sicuro su shared hosting;
- funzioni di backup, ottimizzazione, compattazione database ed analisi indici;
- possibilità per l'admin di modificare qualsiasi contenuto immesso dall'utente tramite editor parametrizzato;
- "moneta virtuale" del sito, utilizzabile per "pagare" servizi (es. inserimento profilo) e guadagnabile partecipando ad altri servizi (es. pubblicazione eventi) con funzioni per lo scambio autonomo fra utenti;
- totale configurabilità di "costi e guadagni virtuali" e soglie di utilizzo, tramite file esterni di configurazione;
- sistema di gestione categorie anche nidificate totalmente parametrizzato e quindi utilizzabile in diversi contesti del sito (bacheca, sondaggi, forum, ecc);
- supporto in tutti i moduli di input della modalità "anteprima";
- supporto a colori e stili di testo nei messaggi tramite un parser BBCode semplificato;
- supporto per emoticon nei messaggi con inserimento intuitivo;
- paginazione per i contenuti (bacheca, ecc) con opzione di tolleranza, per evitare che l'ultima pagina contenga un solo elemento;
- possibilità per l'utente anche non iscritto di disattivare/attivare la visualizzazione di stili, colori ed emoticon nei testi e memorizzazione della scelta tramite cookie;
- possibilità per gli utenti registrati di inserire il proprio profilo e modificarlo (con visualizzazione nel modulo dell'ultimo profilo approvato);
- filtro configurabile sulle entity per prevenire l'uso di immagini sgradevoli;
- supporto (opzionale) integrato a jPlayer e jQuery;
- invio mail tramite la funzione PHP mail() oppure utilizzando la classe PHPMailer che offre SMTP auth, supporto DKIM e molte altre funzioni utili;
- possibilità di abilitare o disabilitare la visualizzazione del livello utente nei messaggi che invia.
Plugin chat
SACEPX può essere integrato con diversi sistemi di chat tramite plugin. E' possibile gestire gli utenti sincronizzando un database esterno o facendo operare la chat con il proprio, a seconda delle funzionalità della stessa. Indipendentemente dalla gestione del database è possibile abilitare un utente a tutti i servizi eccetto la chat, se richiesto, o disabilitarlo in qualsiasi momento.
Il primo plugin realizzato consentiva l'integrazione con i servizi di AddOn chat.
Dal 2016 è stata sviluppata una chat in-house (in linguaggio Python e l'integrazione è stata ulteriormente migliorata, consentendo al processo della chat di interagire con il sito tramite servizi protetti da key e token utente.
Fra le altre funzioni:
- Gestione diretta database utenti abilitati/admin/ecc;
- aggiornamento automatico trascrizione dialoghi in un database locale;
- possibilità di consentire l'accesso su base giornaliera (includendo o escludendo giorni);
- possibilità di consentire l'accesso su base oraria (a partire dalle ore xx oppure fra le xx e le yy);
- possibilità di consentire l'accesso solo da un determinato IP, utile per organizzazioni che possono negare ai propri utenti l'uso della chat da luoghi diversi dalla propria sede (es. scuole, ludoteche, ecc);
- funzioni integrate fra chat e sito per richiamare i contenuti di un utente cliccando sul suo nick in chat, per bannarlo, silenziarlo o kickarlo.
Moduli
Sul programma base di gestione utenti si integrano una serie di moduli.
Tali moduli sono facilmente estraibili e utilizzabili in
progetti stand-alone.
Modulo galleria
- Possibilità per ogni utente di avere una galleria con contenuti audio/video o immagini inviate all'admin e da questi valutate e pubblicate;
- ridimensionamento automatico delle immagini alla prima visualizzazione e salvataggio della miniatura per non dover ripetere l'operazione.
Modulo bacheca
- Possibilità di inserire messaggi per gli utenti registrati;
- visualizzazione avatar utente;
- possibilità di visualizzare tutti i messaggi di uno specifico utente;
- possibilità per l'admin di approvare/rifiutare o modificare il messaggio prima o dopo la pubblicazione;
- possibilità per l'admin di impostare i messaggi che devono restare in cima o essere evidenziati da un colore differente;
- possibilità di assegnare un costo e/o guadagno per la pubblicazione/rifiuto di un messaggio;
- possibiiltà di associare i messaggi a diverse categorie e di fatto creare più bacheche.
- possibilità di rispondere a un messaggio e visionare il messaggio a cui fa riferimento un intervento;
- possibilità per l'admin di rimuovere un messaggio e tutte le sue risposte con un'unica azione.
- possibilità di definire il livello necessario per pubblicare o cancellare un messaggio.
Modulo calendario
- Visualizzazione automatica del compleanno degli utenti per un numero impostabile di giorni precedenti e successivi;
- possibilità per gli utenti di proporre eventi che sono visualizzati, previa moderazione, con il conto alla rovescia dei giorni mancanti;
- possibilità per l'admin di approvare/rifiutare o modificare gli eventi o la data prima o dopo la pubblicazione;
- possibilità di assegnare un costo e/o guadagno per la pubblicazione/rifiuto di un evento;
- funzione admin per rimuovere gli eventi di una data precedente alla corrente e mantenere il database compatto;
- layout opzionale con visualizzazione grafica dei giorni che mancano ad un evento.
Modulo amicizie
- Possibilità per gli utenti registrati di stringere e sciogliere amicizie simboliche (che cioè non danno accesso a nulla ma aggiungono il nome in un elenco) in piena autonomia;
- possibilità di assegnare un costo e/o guadagno per la creazione/scioglimento di un'amicizia;
- completo sistema per admin di analisi amicizie (quante per utente, da chi, per chi).
Modulo regali
- Possibilità per gli utenti registrati di scambiarsi regali virtuali (descrizione testuale senza url o immagini) in una data a scelta;
- possibilità di fare regali a una singola persona o a tutti gli utenti presenti e futuri;
- possibilità per l'admin di approvare/rifiutare o modificare il regalo e la data di consegna prima o dopo la pubblicazione;
- possibilità di assegnare un costo e/o guadagno per la pubblicazione/rifiuto di un regalo da parte dell'admin;
- struttura della tabella concepita per impedire che un utente faccia più di un regalo nella stessa data allo stesso utente;
- sistema intuitivo di scelta della ricorrenza con la proposta di varie feste di diversi Stati e religioni;
- visualizzazione nella pagina di ogni utente dei regali ricevuti, del numero di regali in attesa e della prima data in cui ne avranno altri;
- funzione admin per rimuovere i regali precedenti a una data impostabile.
- completo sistema per admin di analisi regali (quanti per utente, da chi, per chi).
Modulo sondaggi
- Possibilità per gli utenti registrati di proporre sondaggi con un numero variabile di risposte multiple;
- possibilità per l'admin di approvare/rifiutare, modificare o azzerare il sondaggio prima o dopo la pubblicazione;
- possibilità per l'admin di impostare una data di chiusura automatica del sondaggio;
- possibilità per l'admin di assegnare un costo e/o guadagno per la pubblicazione/rifiuto di un sondaggio e per la partecipazione ad un sondaggio;
- struttura della tabella organizzata per impedire agli utenti di partecipare più volte allo stesso sondaggio;
- verifica automatica per evitare che il promotore di un sondaggio vi prenda parte;
- possibilità di suddividere i sondaggi per categorie;
- completo sistema per admin di analisi sondaggi (quanti e quali partecipanti, date, risposte scelte);
- possibilità di mostrare o meno i risultati di un sondaggio prima della sua chiusura;
- possibilità di mostrare o meno i partecipanti a un sondaggio;
- possibilità di usare diversi engine per la visualizzazione dei grafici (interno, Google charts api 1, HighCharts).
Modulo QA (domande e risposte)
- possibilità per chi scrive di fare riferimento a una domanda/risposta precedente;
- possibilità per chi risponde di modificare la domanda o renderla privata (ovvero non visibile agli altri);
- possibilità per chi risponde di modificare il nome del mittente se inadeguato;
- possibilità per chi risponde di impostare un messaggio come importante (ad esempio per creare raccolte di FAQ) e/o farlo apparire prima degli altri;
- possibilità di mostrare solo le domande importanti o quelle appartenenti a una specifica categoria;
- possibilità di creare più rubriche con grafica, database e pagine separate semplicemente impostando un file di configurazione testuale;
- possibilità di creare categorie e assegnare ogni quesito a una categoria specifica navigabile separatamente dalle altre;
- possibilità di effettuare ricerche di tipo FTS (Full Text Search) con sintassi evoluta ed evidenziazione dei termini ricercati nelle pagine dei risultati;
- possibilità di impostare un titolo per ogni domanda per rendere più chiari gli elenchi e favorire SEO;
- possibilità di riordinare la lista delle risposte secondo vari criteri;
- gestione a singolo curatore o a più curatori con possibilità di decidere se inserire o meno il proprio nome fra gli autori di una risposta e, per l'amministratore, di stabilire se chi risponde può pubblicare le proprie risposte o deve lasciarlo fare agli altri autori (per controllo incrociato);
- possibilità di definire il livello necessario per pubblicare o cancellare una domanda;
- sistema di revisioni "stile Wikipedia" con possibilità di ripristinare una revisione precedente.
Modulo forum
- Supporto di categorie multiple modificabili liberamente;
- possibilità per chi scrive di fare riferimento a un preciso messaggio;
- link diretto a qualsiasi messaggio;
- possibilità lato admin di cambiare la categoria di un argomento;
- approvazione dei messaggi categoria per categoria (con visualizzazione prioritaria di quelle contenenti nuovi messaggi) o tramite coda di moderazione;
- possibilità di definire il livello necessario per pubblicare o cancellare un messaggio.
Modulo archivio siti
- Supporto di categorie e sottocategorie multiple modificabili liberamente;
- possibilità di assegnare un elemento a più categorie;
- possibilità di approvare elementi segnalati dagli utenti e modificarne indirizzo, titolo e descrizione;
- registrazione di IP e nome utente/email di chi inserisce un elemento, anche lato admin;
- possibilità di inserire note ad uso interno circa l'elemento;
- possibilità di effettuare ricerche di tipo FTS (Full Text Search) con sintassi evoluta ed evidenziazione dei termini ricercati nelle pagine dei risultati;
- supporto per una data di verifica dei siti e per la visualizzazione dei soli siti verificati entro uno specifico numero di giorni, con funzioni di amministrazione che evidenziano i siti da controllare perché "in scadenza".
Questo modulo è in fase di riorganizzazione per essere astratto e diventare un archivio generico configurabile tramite impostazioni.
Modulo blog
- Possibilità di gestire blog collettivi e per singolo utente;
- supporto categorie selezionabili dall'utente e modificabili lato admin;
- supporto archivi mensili;
- possibilità per l'admin di approvare/rifiutare o modificare i post prima o dopo la pubblicazione;
- possibilità per l'admin di impostare i post che devono restare in cima o essere evidenziati da un colore differente;
- possibilità di assegnare un costo e/o guadagno per la pubblicazione/rifiuto di un post;
- possibilità di rispondere a un post e visionare il post a cui fa riferimento un intervento;
- possibilità di offrire opzionalmente commenti associati ai singoli post.
Requisiti
Il programma richiede PHP 8.1 e la libreria SQLite aggiornata almeno alla versione 3.35.x.
Il database è utilizzato tramite PDO (PHP Data Object) ed è strutturato nell'ottica della portabilità, quindi è adattabile a DBMS come MySQL, MSSQL, Oracle, ecc.
Applicazioni pratiche
SACEPX era nato per gestire l'espansione ufficiale di un portale con cui collaboravo, al fine di sopperire alla mancanza di nuovi servizi e che è stata chiusa quando ho lasciato tale sito, a metà 2011.
Da luglio 2011 la versione più evoluta di SACEPX è la base de Il Gomitolo, un sito web per bambini e ragazzi sviluppato da un gruppo di informatici, grafici e insegnanti.