# Google Sync Plus - Istruzioni

Nuovo modulo per la sincronizzazione di calendari Google multipli, completamente indipendente da ZMerge.

## 1. Installazione
1. Copiare la cartella `modules/GoogleSyncPlus` nella root di VTE.
2. Eseguire da browser o riga di comando: `php modules/GoogleSyncPlus/install.php`
   - Questo creerà i campi necessari nel database e nel modulo Utenti.

## 2. Configurazione OAuth2 (Google)
1. Andare in **Impostazioni > Configurazione > Configurazione Client OAuth**.
2. Creare un nuovo Client OAuth globale:
   - Service: `GoogleSyncPlus` (importante usare questo nome esatto o modificare lo script)
   - Provider: `Google`
   - Client ID e Secret: Da Google Cloud Console (abilitare Google Calendar API).
   - Scopes: `https://www.googleapis.com/auth/calendar.readonly` (o full access)

3. **Collegamento Utente:**
   - Ogni utente deve collegare il proprio account Google.
   - Attualmente VTE non ha un pannello utente nativo per OAuth generico. 
   - L'utente deve usare il pannello di configurazione OAuth o un link custom (da implementare nel frontend se necessario).
   - *Workaround:* Usare il pannello "Klondike" o simile se supporta servizi custom, oppure l'admin può generare il token.

### Modalità OAuth (Proxy vs Native)
- **Default (proxy Pantarei):** nessuna configurazione aggiuntiva.
- **Native (client per istanza):** aggiungere in `config.inc.php`:
  - `$GSPL_OAUTH_MODE = 'native';`
  - configurare un **Client OAuth globale** per `GoogleSyncPlus` in **Impostazioni > Configurazione Client OAuth**.

## 3. Configurazione Utente
1. Andare nel profilo utente (Detail View).
2. Nel blocco "Google Sync Plus", compilare il campo **Calendari Google Extra**.
3. Inserire gli ID dei calendari separati da virgola.
   - Esempio: `lavoro@gmail.com, team_project@group.calendar.google.com`
   - Per il calendario principale usare l'indirizzo email stesso.

## 4. Esecuzione (Cron)
Il cron è **automaticamente registrato** nella tabella `vte_cronjobs` durante l'installazione e viene eseguito **ogni minuto** dal sistema cron di VTE.

**IMPORTANTE:** Assicurati che il sistema cron di VTE sia attivo nel crontab di sistema:
```
*/1 * * * * root /var/www/html/vte/cron/RunCron.sh >> /var/www/html/vte/logs/cron.log 2>&1
```

Il cron viene gestito automaticamente da VTE tramite la tabella `vte_cronjobs`. Puoi verificare lo stato e modificare la frequenza dalla pagina **Impostazioni > Cron Manager** (se disponibile) o direttamente nella tabella `vte_cronjobs`.

## Note Tecniche
- Il sistema è completamente indipendente da ZMerge e non usa le sue tabelle (`tbl_s_zmerge_events`).
- La prevenzione dei loop di sincronizzazione è gestita tramite flag globale `GOOGLE_SYNC_PLUS_SYNCING`.
- Se si configura lo stesso calendario sia in ZMerge che in GoogleSyncPlus, si avranno duplicati o conflitti. **Evitare sovrapposizioni.**

## 5. Aggiornamento VTE 25 → 26 (drift detection)
Dalla v2.3.16 il plugin registra un fingerprint dei file core su cui sono basati i suoi override SDK (`modules/Calendar/Activity.php`, `modules/Emails/mail.php`, `modules/Calendar/CalendarHandler.php`). Quando il core VTE cambia (tipicamente upgrade 25 → 26), il banner "Aggiornamento VTE rilevato" compare in **Impostazioni > Google Calendar Sync Plus** con un bottone **Rigenera override SDK** che ri-esegue `install.php` contro il core attuale. Stesso effetto dell'OTA, senza ridownload.

Lo stesso controllo viene loggato anche dal cron `health_check` (sezione 9) come WARN, così è visibile in `logs/gspl_healthcheck.log` anche se l'admin non apre la pagina Settings.

Note operative:
- Il file di stato è `modules/GoogleSyncPlus/logs/gspl_core_state.json`.
- L'alias `Zend\Http\* → Laminas\Http\*` per VTE 26 è centralizzato in `gspl_compat.php` ed è incluso da tutti gli entrypoint del modulo.




