# ITCCA Allievi — WordPress plugin per iscrizioni Tai Chi
Stack Docker locale + plugin WordPress che estende l'utente con i campi del CSV `INSARRI`, espone un form pubblico di iscrizione e sincronizza i dati con un Google Sheet privato selezionabile da Drive.
Il piano completo del progetto vive in [`.cursor/plans/itcca_allievi_wp_plugin.plan.md`](.cursor/plans/itcca_allievi_wp_plugin.plan.md).
## Requisiti
- Docker Desktop (o Docker Engine + Compose v2)
- Porte libere `8080` (WordPress) e `8081` (phpMyAdmin) — modificabili in `.env`
- Un account Google con accesso al foglio di gestione iscrizioni
## Avvio rapido
```bash
cp .env.example .env # se vuoi cambiare credenziali/porte di sviluppo
docker compose up -d
```
Poi:
- WordPress: <http://localhost:8080> (completa il wizard di installazione: lingua italiana, titolo sito a piacere, utente admin)
- phpMyAdmin: <http://localhost:8081> (utente `root` / password da `.env`)
- Attiva il plugin in `Plugin → Allievi ITCCA` (dopo aver installato le dipendenze, vedi sotto)
## Installazione dipendenze del plugin
Il plugin usa la libreria `google/apiclient`. Si installa con Composer dentro un container temporaneo, in modo da non dover avere PHP/Composer sul tuo Mac:
```bash
docker compose run --rm composer install
```
I file finiscono in `plugin/itcca-allievi/vendor/` (escluso da git).
## Comandi utili
```bash
docker compose ps # stato dei container
docker compose logs -f wordpress # log live
docker compose down # ferma tutto (DATI PRESERVATI nei volumi)
docker compose down -v # ferma e CANCELLA TUTTO (DB + WP)
docker compose run --rm composer update # aggiorna dipendenze del plugin
docker compose run --rm wpcli wp user list # esempio WP-CLI
docker compose run --rm wpcli wp plugin activate itcca-allievi
```
## Configurazione Google Cloud Console
Per usare la sincronizzazione con Google Sheets serve un OAuth Client ID e una API Key del progetto Google Cloud.
### 1. Creare il progetto
1. Vai su <https://console.cloud.google.com/projectcreate>
2. Crea un nuovo progetto (es. "ITCCA Allievi")
3. Selezionalo nel selettore in alto
### 2. Abilitare le API necessarie
In `API e servizi → Libreria` abilita:
- **Google Sheets API**
- **Google Drive API**
- **Google Picker API**
### 3. Configurare la schermata di consenso OAuth
In `API e servizi → Schermata di consenso OAuth`:
- Tipo utente: **Esterno** (anche se userai solo il tuo account)
- Nome app: "ITCCA Allievi" (o quello che preferisci)
- Email di supporto: la tua
- Domini autorizzati: puoi lasciare vuoto in sviluppo locale
- Scope: aggiungi `.../auth/spreadsheets` e `.../auth/drive.file`
- Utenti di test: aggiungi la tua email Google (necessario perché l'app è in modalità "test")
### 4. Creare l'OAuth Client ID
In `API e servizi → Credenziali → Crea credenziali → ID client OAuth`:
- Tipo: **Applicazione web**
- Nome: "ITCCA Allievi WordPress"
- URI di reindirizzamento autorizzati: `http://localhost:8080/wp-admin/admin.php?page=itcca-allievi-oauth`
- Salva e copia `Client ID` e `Client Secret`
### 5. Creare la API Key (per il Picker)
In `API e servizi → Credenziali → Crea credenziali → Chiave API`:
- Copia la chiave
- Clicca su "Limita chiave" e:
- Restrizioni applicazioni: HTTP referrer → aggiungi `http://localhost:8080/*`
- Restrizioni API: limita a Google Picker API + Google Drive API
### 6. Inserire le credenziali nel plugin
WordPress admin → `Allievi ITCCA → Impostazioni → Sezione Google`:
- OAuth Client ID
- OAuth Client Secret
- Picker API Key
Clicca "Connetti Google" e autorizza il tuo account. Poi clicca "Seleziona foglio da Drive" e scegli il foglio dell'anno corrente.
## Struttura del progetto
```
Itcca-allievi/
├── .cursor/
│ └── plans/
│ └── itcca_allievi_wp_plugin.plan.md # piano del progetto
├── docker-compose.yml
├── .env # credenziali dev (NON committare)
├── .env.example
├── .gitignore
├── README.md # questo file
└── plugin/
└── itcca-allievi/ # plugin WordPress (montato in wp-content/plugins)
├── itcca-allievi.php
├── composer.json
├── includes/
├── assets/
└── templates/
```
## Persistenza dei dati
Lo stack usa due volumi Docker nominati:
- `itcca-allievi_db_data` — database MariaDB (tutte le iscrizioni, le impostazioni, gli utenti)
- `itcca-allievi_wp_data` — tutti i file di WordPress (config, uploads, temi, plugin di terze parti)
`docker compose down` ferma i container ma **conserva** i volumi.
`docker compose down -v` cancella anche i volumi (azzera l'ambiente).
Il codice del plugin sta in `./plugin/itcca-allievi/` come bind-mount: modifiche immediate, niente rebuild.
## Troubleshooting
- **"Errore database" al primo avvio**: il container DB ci mette qualche secondo a inizializzarsi. Aspetta 30s e ricarica.
- **Conflitto porta 8080**: cambia `WP_PORT` in `.env` e rilancia `docker compose up -d`. Ricorda di aggiornare anche l'URI di redirect OAuth in Google Cloud Console se cambi porta.
- **Reset totale**: `docker compose down -v && docker compose up -d`
- **Permessi sui file del plugin**: i container girano come `www-data` (uid 33). Se vedi errori di scrittura, da host: `sudo chown -R $USER:staff plugin/`.