DB Avvisi self-updates
Bacheca avvisi interna per WordPress: ogni utente loggato pubblica avvisi con allegati protetti, gli amministratori gestiscono e vedono le statistiche di chi ha caricato cosa.
by Davide Bertolino · github.com/dadebertolino/db-avvisi · website
Install
The author publishes release zips, so WP-CLI can install straight from GitHub:
wp plugin install https://github.com/dadebertolino/db-avvisi/releases/download/v1.0.0/db-avvisi-v1.0.0.zipShips its own WordPress updater (built-in updater), so new versions show up under Dashboard → Updates.
Readme
DB Avvisi
Bacheca avvisi interna per WordPress: ogni utente che ha effettuato l'accesso può pubblicare avvisi con allegati, tutti gli utenti loggati li leggono dalla bacheca, e gli amministratori hanno una pagina di gestione con le statistiche di chi ha caricato cosa.
Nato per il sito dell'IIS Cigna-Baruffi-Garelli di Mondovì, ma non contiene nulla di specifico per quella scuola: funziona su qualsiasi installazione WordPress.
- Autore: Davide Bertolino — davidebertolino.it
- Licenza: GPL v2 o successiva
- Requisiti: WordPress 5.8+, PHP 7.4+
- Niente registrazioni, niente nag, niente trucchi.
Cosa fa
Il plugin aggiunge un menu Avvisi in bacheca, subito sotto la voce Bacheca, con tre pagine:
- Tutti gli avvisi — elenco a schede di ciò che è stato pubblicato, con ricerca, filtro per categoria, filtro "solo i miei" e apertura del singolo avviso. Visibile a tutti gli utenti loggati.
- Nuovo avviso — form di pubblicazione con titolo, testo (editor), categoria, data di scadenza facoltativa e allegati multipli. Aperto a ogni utente loggato; ciascuno può poi modificare o eliminare i propri avvisi.
- Gestione e statistiche — riservata agli amministratori, con tre schede:
- Avvisi: tabella di tutti gli avvisi (compresi nascosti e scaduti), filtri per stato/categoria/autore, azioni singole (nascondi, fissa in alto, modifica, elimina) e azioni di gruppo.
- Statistiche: numeri generali, tabella chi ha caricato cosa (avvisi, allegati, spazio occupato, download, letture, ultimo avviso per ogni utente), andamento mensile, distribuzione per categoria, allegati più scaricati, avvisi più letti, esportazione CSV.
- Impostazioni: categorie, limiti sugli allegati, estensioni ammesse, avvisi per pagina, scadenza proposta, email di notifica.
In più, un widget "Avvisi recenti" nella home della bacheca mostra gli ultimi cinque avvisi a chi entra nel sito.
Chi può fare cosa
| Azione | Chi |
|---|---|
| Vedere gli avvisi e scaricare gli allegati | Qualsiasi utente loggato |
| Pubblicare un avviso | Qualsiasi utente loggato |
| Modificare / eliminare un avviso | L'autore dell'avviso e gli amministratori |
| Nascondere, fissare in alto, azioni di gruppo | Solo amministratori |
| Statistiche, impostazioni, export CSV | Solo amministratori |
Chi non ha effettuato l'accesso non vede il menu, non raggiunge le pagine e non scarica gli allegati.
I permessi sono modificabili via filtro senza toccare il codice del plugin:
// Esempio: consentire la pubblicazione solo a chi può scrivere articoli.
add_filter( 'dbav_can_create', function () {
return current_user_can( 'edit_posts' );
} );
// Esempio: affidare la gestione a un ruolo diverso da amministratore.
add_filter( 'dbav_manage_capability', function () {
return 'edit_others_posts';
} );
Filtri disponibili: dbav_can_view, dbav_can_create, dbav_can_manage, dbav_can_edit, dbav_manage_capability.
Azioni disponibili: dbav_avviso_created, dbav_avviso_updated, dbav_avviso_deleted.
Allegati protetti
Gli allegati non finiscono nella Libreria media: vengono salvati in wp-content/uploads/db-avvisi/AAAA/MM/ con un nome casuale, e si scaricano solo attraverso un endpoint che verifica l'accesso. Un link copiato e incollato fuori dal sito non funziona per chi non è loggato.
La cartella è protetta su tre fronti:
.htaccessconRequire all denied(Apache);web.configcon<deny users="*" />(IIS);- nome del file casuale di 24 caratteri, così l'indirizzo non è indovinabile.
Su Nginx .htaccess viene ignorato. La scheda Impostazioni esegue un controllo reale — prova a scaricare un file di prova dall'esterno — e segnala in rosso se la cartella risulta raggiungibile. In quel caso va aggiunta una regola lato server, per esempio:
location ^~ /wp-content/uploads/db-avvisi/ {
deny all;
return 404;
}
Le estensioni eseguibili (php, js, html, svg, exe, sh…) sono sempre rifiutate, anche se qualcuno le aggiunge a mano nell'elenco delle estensioni ammesse.
Installazione
- Scarica lo ZIP del plugin.
- In WordPress: Plugin → Aggiungi nuovo → Carica plugin e seleziona lo ZIP.
- Attiva. Le tabelle e la cartella protetta vengono create in automatico.
- Facoltativo: apri Avvisi → Gestione e statistiche → Impostazioni per adattare categorie e limiti.
Gli aggiornamenti successivi arrivano da soli nel pannello plugin tramite GitHub Releases.
Dati e privacy
- Il plugin registra l'autore di ogni avviso (ID utente WordPress), il testo, gli allegati, il numero di letture dell'avviso e il numero di download di ogni allegato.
- Le letture e i download sono contatori aggregati: non viene memorizzato chi ha letto o chi ha scaricato, né alcun indirizzo IP.
- Non ci sono servizi esterni, CDN, tracker o chiamate di rete, salvo il controllo aggiornamenti verso GitHub e il test di protezione della cartella allegati (una richiesta al proprio sito).
- La disinstallazione dal pannello plugin rimuove tabelle, opzioni e tutti gli allegati caricati.
Struttura
db-avvisi/
├── db-avvisi.php Bootstrap, costanti, funzioni di permesso
├── uninstall.php Pulizia completa alla disinstallazione
├── inc/
│ ├── class-settings.php Opzioni e loro sanificazione
│ ├── class-db.php Tabelle e query
│ ├── class-files.php Upload, protezione cartella, download controllato
│ ├── class-stats.php Aggregazioni ed export CSV
│ ├── class-actions.php Handler admin-post (salva, elimina, modera)
│ ├── class-admin.php Menu, asset, rendering pagine
│ ├── class-dashboard-widget.php
│ └── class-updater.php Aggiornamenti da GitHub Releases
├── templates/admin/ list, single, form, manage, stats, settings
└── assets/ db-admin-ui.css + CSS/JS del plugin
Tabelle create: wp_dbav_avvisi e wp_dbav_files.
Accessibilità
Etichette esplicite su ogni campo, screen-reader-text dove l'etichetta è visivamente ridondante, aria-label sui pulsanti a sola icona, focus visibile ereditato dal design system, nessun contenuto che si muove da solo. La tabella di gestione resta navigabile da tastiera e le conferme di eliminazione sono dialoghi nativi del browser.
Changelog
1.0.0
- Prima versione: elenco avvisi, pubblicazione con allegati, vista singola, area di gestione con moderazione, statistiche per autore ed export CSV, widget in bacheca, allegati protetti fuori dalla Libreria media, aggiornamenti da GitHub.
Read the full README on GitHub →
Releases
| Tag | Published | Asset | Downloads |
|---|---|---|---|
| v1.0.0 | Aug 29, 2026 | db-avvisi-v1.0.0.zip | 1 |