Repository navigation
v2.12.0
2.12.0 — Colori personalizzabili + segnaposto email cliccabili
- Aspetto: sfondo, colore dei pulsanti e colore del testo del form si impostano in Impostazioni (globale) e per singolo form, con anteprima e avviso di contrasto. Testo e hover dei pulsanti e colore dei link vengono calcolati per restare WCAG AA. Il CSS del frontend usa ora variabili (
--dbfb-*) al posto dei colori fissi; i valori predefiniti sono quelli di prima, quindi i form esistenti non cambiano aspetto. - Segnaposto email per id campo: nuovo formato
{campo:id}, che non si rompe se l'etichetta viene rinominata. Il formato derivato dall'etichetta ({nome}) resta supportato; se due campi hanno la stessa etichetta vale il primo. - Segnaposto cliccabili: sotto ogni email dell'editor c'è l'elenco dei campi reali del form e dei segnaposto generali; un clic li inserisce nel punto del cursore.
- Traduzioni frontend: i messaggi mostrati dal JavaScript del form (errori, file, reCAPTCHA, avanzamento multi-step) sono ora traducibili. L'avanzamento multi-step usa lo stesso testo del PHP ("Passo 1 di 3") invece di "1 / 3".
- Escape nella lista file: il nome del file nell'
aria-labeldel pulsante "Rimuovi" è ora escapato correttamente anche per le virgolette.
2.11.2 — Fix sicurezza e privacy
- CSRF sull'eliminazione dei form: il nonce era verificato solo se presente nella richiesta; un link senza
_wpnonceaperto da un amministratore cancellava form e risposte. Ora il nonce è obbligatorio. - Cancellazione di file arbitrari in
uploads/: il server accettava nei dati inviati anche chiavi che non corrispondevano a campi del form (e valori forgiati per i campi file), che la pulizia degli allegati trattava poi come file da cancellare. Ora le chiavi sconosciute e i valori dei campi file inviati dal client vengono scartati, e la cancellazione degli allegati agisce solo sui campi di tipo file e solo dentrouploads/dbfb/. - reCAPTCHA saltato senza consenso: quando il captcha è configurato ma non caricato per mancanza di consenso, il limite invii per IP diventa obbligatorio.
- Pagina Risposte: lo script del dettaglio/selezione multipla non partiva per un apostrofo non escapato in una stringa tradotta. Tutte le stringhe inserite nel JavaScript (e nei
confirm()) passano ora daesc_js. - Impostazioni privacy non salvate: modalità di salvataggio IP, retention e cancellazione dati alla disinstallazione non venivano inviate al salvataggio e tornavano ai valori predefiniti. Ora vengono salvate.
- DSAR (art. 17): l'eraser paginava con
OFFSETsulla stessa tabella da cui cancellava e saltava righe oltre le prime 100. Ora scorre i candidati con un cursore sull'id. - Email in testo semplice: i testi delle email venivano salvati con
wp_kses_post, che converte&in&e lascia passare i tag HTML: in un'email text/plain comparivano letterali. Ora vengono salvati come testo semplice e quelli già salvati vengono ripuliti all'invio. - Segnaposto espansi a catena: la sostituzione avveniva con
str_replacein sequenza, quindi un valore scritto dall'utente che conteneva un segnaposto (es.{ip}) veniva a sua volta sostituito. Ora la sostituzione avviene in un solo passaggio (strtr). - Mittente vuoto: se l'email del mittente nelle impostazioni era vuota o non valida veniva generato
From: Nome <>e tutte le email fallivano. Ora in quel caso si usa il mittente predefinito di WordPress. - Webhook deliveries: eliminazione del form, eliminazione singola/multipla/totale delle risposte, retention ed eraser DSAR cancellano ora anche le deliveries collegate, che contengono il payload completo della submission. L'eliminazione del form rimuove anche gli allegati su disco. L'id della submission collegato alla delivery viene letto subito dopo l'INSERT (prima poteva essere sovrascritto da plugin SMTP che loggano su DB).
La 2.11.2 non è stata rilasciata separatamente: le sue correzioni sono incluse in questa versione.
🤖 Generated with Claude Code