Newer
Older
itcca-allievi / README.md
# 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/`.