Repository: https://niphredil.duckdns.org/git/fabio/tonitalia-pluginsoci.git
Cartella WordPress: wp-content/plugins/ton-italia-registration/
Versione attuale: 1.8.2
Organizzazione: TON ITALIA ODV
Gestisce il processo di domanda di ammissione a socio e tesseramento TON ITALIA ODV:
| Requisito | Valore |
|---|---|
| WordPress | 6.0+ |
| PHP | 8.0+ (8.1+ consigliato in produzione Aruba) |
| Permessi admin | manage_options per gestione iscrizioni |
| SMTP / mail | wp_mail funzionante (hosting o plugin SMTP) |
ton-italia-registration in wp-content/plugins/.{prefisso}ton_registrations, cartella upload Documenti Iscritti, opzioni default (testi da PDF).[ton_registration_form]
[ton_registration_form class="mia-classe-css"]
Aggiunge una classe al wrapper .ton-reg-form per stili custom nel tema.
flowchart TD
A[Utente apre pagina con shortcode] --> B[Compila form]
B --> C[CAPTCHA + validazione]
C --> D{OK?}
D -->|No| E[Messaggio errore sulla pagina]
D -->|Sì| F[Crea utente Subscriber]
F --> G[Salva riga DB + meta]
G --> H[Email admin + email utente]
H --> I[Messaggio successo]
Le date (nascita e dichiarazione) sono in formato gg-mm-aaaa (es. 25-05-1990).
In database vengono salvate come aaaa-mm-gg.
?ton_reg=success (messaggio HTML da impostazioni).mario, mario1, … se collisioni)./wp-admin/ e barra admin nascosta.| Meccanismo | Descrizione |
|---|---|
| Nonce WordPress | ton_reg_nonce su ogni submit |
| Honeypot | Campo nascosto ton_reg_website — se compilato, rifiuto |
| Tempo minimo | Form non inviabile prima di ~3 secondi dal caricamento |
| CAPTCHA matematico | Domanda casuale (es. 4+7), risposta in transient legata al token |
| Rate limit IP | Default: max 5 tentativi / 15 min (impostazioni) |
| Validazione server | CF, CAP 5 cifre, province 2 lettere, email, date, checkbox obbligatori |
| Duplicati | Blocco se email o CF già in iscrizione pending o admitted |
{prefisso}ton_registrationsContiene tutti i campi del form + metadati legali:
| Campo | Note | ||
|---|---|---|---|
registration_ip |
IP al momento dell’invio (finalità legali) | ||
user_agent |
Troncato a 255 caratteri | ||
privacy_text_version |
Versione informativa al consenso | ||
consent_statuto_at, consent_privacy_at |
Timestamp UTC | ||
consenso_statuto, consenso_privacy, consenso_newsletter |
0/1 | ||
status |
pending \ |
admitted \ |
rejected |
libro_associati_date |
Solo admin — data Libro Associati | ||
doc_identita_id, doc_bonifico_id, doc_pagamento_id |
ID attachment Media | ||
admin_notes, gdpr_log |
Note e log azioni GDPR | ||
anonymized_at |
Se anonimizzato |
Mirror parziale anche in user_meta con prefisso ton_reg_*.
{prefisso}ton_reg_membership_cards (v1.7+)Tessere PDF generate per (registration_id, year).
{prefisso}ton_reg_membership_renewals (v1.8+)Quote associative per anno: status (pending | paid), timestamp promemoria gennaio.
Menu WordPress: TON Iscrizioni (icona groups).
; per Excel italiano.Barra navigazione: Socio precedente / Socio successivo (mantiene filtri e ordinamento dell'elenco).
Documenti (solo backend, upload admin):
| Tipo | Colonna DB | Formati |
|---|---|---|
| Documento di identità | doc_identita_id |
PDF, JPG, PNG |
| Ricevuta versamento tessera | doc_pagamento_id |
PDF, JPG, PNG |
File salvati in Media WordPress, percorso fisico:
wp-content/uploads/Documenti Iscritti/{nome-cognome-codicefiscale}/file.pdf
La cartella base viene creata all’attivazione plugin; la sottocartella iscritto alla prima iscrizione o al primo upload.
Tessere PDF (v1.7+) — per soci ammessi:
Documenti Iscritti/{socio}/tessere/.Quote associative annuali (v1.8+) — checkbox «Pagata» per ogni anno solare, dall'anno iscrizione all'anno in corso (l'anno successivo compare a gennaio).
Consensi e dichiarazioni (sezione dedicata):
Dati anagrafici — tabella read-only dei campi inviati.
Gestione stato (Consiglio Direttivo):
GDPR:
| Gruppo | Opzioni |
|---|---|
| Quota | Anno sociale, importo €, beneficiario, IBAN |
| Testi form | Istruzioni bonifico (HTML), dichiarazione statuto, privacy, newsletter, minorenni, messaggio successo |
| Oggetto/corpo admin e utente; email promemoria rinnovo (1 e 25 gennaio); riepilogo admin rinnovi; email notifiche; contatto GDPR | |
| Comportamento | CAPTCHA on/off, newsletter obbligatoria, rate limit, elimina utenti alla disinstallazione |
| Mailchimp | Integrazione attiva, API key, List ID (Audience), tag (es. «Socio TON ITALIA»), test connessione |
Quando un richiedente spunta il consenso newsletter nel form, l’email viene sincronizzata con Mailchimp (solo se l’integrazione è attiva e configurata). L’iscrizione socio non viene mai bloccata da errori Mailchimp.
Configurazione:
Comportamento tecnico:
status_if_new: subscribed (non re-iscrive contatti unsubscribed senza nuovo consenso).subscribed.cleaned (bounce): errore in admin, gestione manuale.Dettaglio iscrizione: sotto consenso newsletter compare lo stato sync (pending, synced, error) con pulsante Riprova iscrizione Mailchimp se necessario.
Sicurezza: API key salvata con autoload = no, campo password in admin (lasciare vuoto per non modificare), accesso solo a manage_options.
Placeholder email: {nome}, {cognome}, {email}, {codice_fiscale}, {ip}, {login_url}, {gdpr_contact}, {admin_url}
Placeholder istruzioni bonifico: {quota}, {anno}, {beneficiario}, {iban}, {nome}, {cognome}
In cima alla pagina: istruzioni per shortcode [ton_registration_form].
I Subscriber accedono solo a Profilo in wp-admin (profile.php) e possono scaricare la tessera PDF dell'anno.
{profile_url}.[ton_registration_profile] mantenuto per retrocompatibilità.Inviata a ton_reg_admin_email (default: email amministratore sito).
Contiene riepilogo e link alla scheda iscrizione in admin.
Inviata all’email del form.
Include istruzioni bonifico, contatto GDPR, invito a impostare password via wp_lostpassword_url().
Viene anche inviata la notifica WordPress standard nuovo utente (wp_send_new_user_notifications).
Nota: configurare SPF/DKIM su Aruba o usare plugin SMTP se le mail non arrivano.
La tessera associativa copre l'anno solare (1 gennaio – 31 dicembre). Il plugin traccia il pagamento della quota per ogni anno nella tabella ton_reg_membership_renewals.
Gestione admin:
Promemoria automatici (WP-Cron giornaliero):
| Data | Destinatari | Contenuto |
|---|---|---|
| 1 gennaio | Soci ammessi senza quota pagata | Primo promemoria con istruzioni bonifico |
| 25 gennaio | Stessi soci ancora senza pagamento | Secondo sollecito |
| Stesse date | Email admin (ton_reg_admin_email) |
Riepilogo elenco soci da pagare |
Testi email configurabili in Impostazioni (oggetto/corpo primo e secondo promemoria, riepilogo admin).
Placeholder email rinnovo: {nome}, {cognome}, {email}, {anno}, {quota}, {beneficiario}, {iban}, {payment_instructions}, {profile_url}, {gdpr_contact}. Admin rinnovi: {lista_soci}, {numero_soci}, {anno}, {admin_url}.
Soci già ammessi prima dell'aggiornamento: nessun backfill automatico; risultano «da pagare» finché l'admin non spunta la checkbox o fino ai promemoria di gennaio.
Anno inizio promemoria (ton_reg_renewal_reminders_start_year, default 2027): nessuna email automatica parte all'installazione/aggiornamento del plugin; i primi invii avvengono solo dal 1 gennaio dell'anno configurato (poi sollecito il 25 gennaio). Modificabile in Impostazioni → Anno inizio promemoria rinnovo.
Affidabilità cron: WP-Cron richiede visite al sito; per invii puntuali a inizio gennaio configurare un cron di sistema che chiami wp-cron.php.
| Azione | Effetto |
|---|---|
| Esporta JSON/CSV | Dump dati iscrizione + meta utente WP |
| Anonimizza | PII sostituiti con ANONIMIZZATO; mantiene ID e date consenso; utente WP con email fittizia |
| Elimina | wp_delete_user() + cancellazione riga tabella + documenti |
Contatto predefinito interessato: qeshet.tonitalia@gmail.com (modificabile).
Disattivazione: non cancella dati.
Eliminazione plugin (da Plugin → Elimina):
ton_registrations e ton_reg_membership_renewals.ton_reg_* e transient ton_reg_*.wp-content/uploads/Documenti Iscritti/.Opzione “Elimina utenti alla disinstallazione” in Impostazioni: se attiva prima della rimozione, cancella anche gli utenti WP collegati alle iscrizioni.
ton-italia-registration.php Bootstrap includes/ class-plugin.php Orchestrazione, upgrade DB class-registration-form.php Shortcode + HTML form class-registration-handler.php Submit, validazione, save class-captcha.php Anti-spam class-user-manager.php Subscriber + login univoco class-database.php CRUD tabella class-mailer.php wp_mail + promemoria rinnovo class-membership-renewals.php Quote annuali per anno class-renewal-reminders.php Cron promemoria gennaio class-membership-card.php Generazione tessera PDF (FPDI) class-membership-cards.php CRUD tessere class-members-export.php Export CSV Libro Soci class-profile.php Profilo subscriber + download tessera class-gdpr.php Export / anonimizza / erase class-documents.php Upload Media per iscritto class-defaults.php Testi default PDF admin/ class-admin.php Menu, settings, dettaglio class-registration-list-table.php assets/css, assets/js Form frontend uninstall.php Hook disinstallazione
Documenti Iscritti.git pull).maybe_upgrade() esegue dbDelta se serve nuove colonne.| Problema | Soluzione |
|---|---|
| Form non appare | Pagina contiene shortcode? Plugin attivo? |
| Email non arrivano | Test SMTP; spam; wp_mail log |
| “Email già registrata” | Utente WP o iscrizione attiva esistente |
| Elenco vuoto ma conta 1 iscrizione | Aggiornare a v1.3+ (fix paginazione) |
| PHP compatibility warning | Hosting PHP ≥ 8.0 |
| Upload documento fallisce | Permessi uploads/, max upload PHP, formato PDF/JPG/PNG |
| Subscriber accede wp-admin | Plugin blocca redirect; verificare ruolo subscriber |
cd wp-content/plugins/ton-italia-registration git pull origin master git add . git commit -m "v1.x: descrizione" git push origin master
Pacchetti zip release in releases/ton-italia-registration-X.Y.Z.zip (nel repository GitBucket, tag vX.Y.Z).
Download ultima release (1.8.2):https://niphredil.duckdns.org/git/fabio/tonitalia-pluginsoci/raw/v1.8.2/releases/ton-italia-registration-1.8.2.zip
Per generare un nuovo zip dal progetto sito: ./deploy/build-plugin-zip.sh nella root di tents-of-nations, poi copiare in releases/ del repo plugin.
Importante — struttura zip: il file zip deve contenere la cartella ton-italia-registration/ come radice. WordPress deve sostituire la cartella esistente, non crearne una nuplicata.
| Versione | Novità principali |
|---|---|
| 1.6 | Integrazione Mailchimp su consenso newsletter |
| 1.5 | Ricevuta pagamento (3° documento) |
| 1.4 | Sezione consensi in dettaglio admin |
| 1.3 | Fix elenco iscrizioni |
| 1.2 | Date form gg-mm-aaaa |
| 1.1 | Upload documenti identità/bonifico |
| 1.0 | Release iniziale |
qeshet.tonitalia@gmail.com (configurabile in plugin)