=== Clubfy Connect ===
Contributors: sportgest
Tags: sport, futsal, calcio, classifica, risultati, rosa, news, shortcode
Requires at least: 6.0
Tested up to: 6.7
Requires PHP: 8.0
Stable tag: 1.4.3
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Collega il tuo sito WordPress a Clubfy. Visualizza classifica, risultati, rosa, news, highlights e sponsor in tempo reale tramite shortcode o blocchi Gutenberg.

== Descrizione ==

**Clubfy Connect** integra il tuo sito WordPress con la piattaforma Clubfy, permettendoti di mostrare i dati del club direttamente nelle pagine WordPress senza aggiornamenti manuali.

= Come funziona =

1. Il plugin si connette all'API Clubfy tramite un token univoco
2. I dati vengono recuperati in tempo reale (con cache configurabile)
3. Opzionalmente, i dati vengono archiviati localmente nel DB WordPress per massima resilienza
4. Le immagini possono essere importate nella Media Library WordPress

= Modalità di funzionamento =

**Modalità live** (default): ogni shortcode interroga l'API Clubfy al momento del caricamento della pagina. I risultati vengono cachati per la durata configurata (default: 60 secondi).

**Modalità archivio locale**: attiva "Salva dati nel DB" nelle impostazioni. I dati vengono sincronizzati periodicamente via WP-Cron e serviti dal database WordPress — il sito continua a funzionare anche se Clubfy non è raggiungibile.

== Installazione ==

1. Carica il file `sportgest-connect.zip` in WordPress → Plugin → Aggiungi nuovo → Carica plugin
2. Attiva il plugin
3. Vai in **Impostazioni → Clubfy**
4. Inserisci l'indirizzo del sito pubblico del tuo club (es. `https://sporting.oonthe.net`, o il tuo dominio proprio)
5. Inserisci il Token API fornito dal tuo consulente Clubfy (oppure generalo dal pannello gestionale Clubfy → Impostazioni → Connessioni WordPress)
6. Clicca **Salva impostazioni** — se la connessione è attiva vedrai ✅

== Shortcode ==

= [sportgest_classifica] =

Mostra la tabella classifica del campionato.

**Parametri:**
* `campionato_id` — (opzionale) ID del campionato specifico. Se omesso mostra la classifica del campionato principale.

**Esempi:**
```
[sportgest_classifica]
[sportgest_classifica campionato_id="uuid-campionato"]
```

---

= [sportgest_partite] =

Mostra risultati passati o la prossima partita.

**Parametri:**
* `tipo` — `ultimi` (default) | `prossima` | `prossimi`
* `n` — numero di partite da mostrare (default: `5`)

**Esempi:**
```
[sportgest_partite]
[sportgest_partite tipo="ultimi" n="10"]
[sportgest_partite tipo="prossima"]
```

---

= [sportgest_rosa] =

Mostra la rosa giocatori con foto, numero maglia e ruolo.

**Parametri:**
* `layout` — `griglia` (default) | `lista`

**Esempi:**
```
[sportgest_rosa]
[sportgest_rosa layout="lista"]
```

---

= [sportgest_staff] =

Mostra i membri dello staff.

**Parametri:**
* `tipo` — `tecnico` (default, staff allenatori/preparatori) | `org` (organigramma societario)

**Esempi:**
```
[sportgest_staff]
[sportgest_staff tipo="org"]
```

---

= [sportgest_news] =

Mostra le ultime news del club con titolo, immagine e sommario.

**Parametri:**
* `limit` — numero di news da mostrare (default: `5`)

**Esempi:**
```
[sportgest_news]
[sportgest_news limit="10"]
```

---

= [sportgest_highlights] =

Mostra i video highlights YouTube con thumbnail e titolo.

**Parametri:**
* `limit` — numero di video da mostrare (default: `6`)
* `tipo` — `highlights` (default) | `replay` (replay partite intere)

**Esempi:**
```
[sportgest_highlights]
[sportgest_highlights limit="3"]
[sportgest_highlights tipo="replay"]
[sportgest_highlights tipo="replay" limit="4"]
```

---

= [sportgest_sponsor] =

Mostra la band sponsor con loghi cliccabili.

**Parametri:** nessuno.

**Esempio:**
```
[sportgest_sponsor]
```

== Blocchi Gutenberg ==

Tutti gli shortcode sono disponibili anche come blocchi Gutenberg nell'editor a blocchi.
Cerca "Clubfy" nel pannello Inserisci blocco per trovarli.

Blocchi disponibili:
* **Clubfy Classifica**
* **Clubfy Partite**
* **Clubfy Rosa**
* **Clubfy Staff**
* **Clubfy News**
* **Clubfy Highlights**
* **Clubfy Sponsor Band**

== Personalizzazione CSS ==

Il plugin usa variabili CSS sovrascrivibili dal tuo tema. Aggiungi queste regole nel tuo CSS personalizzato:

```css
:root {
  --sg-accent:     #1a56db;  /* colore principale (es. colori sociali) */
  --sg-bg:         #ffffff;  /* sfondo widget */
  --sg-bg-alt:     #f4f6f9;  /* sfondo alternativo (card, header tabella) */
  --sg-border:     #e2e8f0;  /* colore bordi */
  --sg-text:       #1e293b;  /* colore testo principale */
  --sg-text-muted: #64748b;  /* colore testo secondario */
  --sg-radius:     8px;      /* raggio bordi card */
  --sg-font:       inherit;  /* font (default: eredita dal tema) */
}
```

**Esempio per i colori Sporting Sala Consilina:**
```css
:root {
  --sg-accent: #003087;
}
```

== Impostazioni avanzate ==

= Archivio locale =
Abilita "Salva dati nel DB" per archiviare una copia locale. Il plugin crea la tabella `wp_sportgest_cache` nel database WordPress. Utile se vuoi che il sito funzioni anche in caso di problemi di connessione a Clubfy.

= Importa immagini =
Abilita "Importa immagini" per scaricare foto atleti, loghi sponsor e immagini news nella tua Media Library WordPress (`/wp-content/uploads/`). Le immagini restano disponibili anche se il servizio Clubfy venisse disattivato.

= Frequenza sync automatica =
Quando l'archivio locale è attivo, il plugin sincronizza i dati automaticamente via WP-Cron:
* Ogni ora
* Ogni 6 ore
* Ogni 12 ore
* Ogni giorno

= Sincronizzazione manuale =
Dalla pagina impostazioni puoi avviare una sincronizzazione immediata con il pulsante **↺ Sincronizza ora**. Il pannello mostra quanti record sono stati aggiornati e quanti erano già invariati.

== Domande frequenti ==

= Il sito smette di funzionare se Clubfy non è raggiungibile? =
Solo in modalità live. Se hai abilitato l'archivio locale, i widget mostrano i dati salvati nel database WordPress.

= Come ottengo il Token API? =
Il token viene generato dal pannello gestionale Clubfy (Impostazioni → Connessioni WordPress). Contatta il tuo consulente Clubfy se non hai accesso al gestionale.

= Posso usare più shortcode nella stessa pagina? =
Sì, puoi inserire quanti shortcode vuoi nella stessa pagina o widget.

= Come cambio i colori dei widget? =
Usa le variabili CSS `--sg-accent`, `--sg-bg` ecc. nel tuo CSS personalizzato (Aspetto → Personalizza → CSS aggiuntivo).

= Cosa succede se rigenero il token dal gestionale? =
Il plugin smette di funzionare finché non aggiorni il Token API nelle impostazioni con il nuovo valore.

== Changelog ==

= 1.1.0 =
* Nuovi shortcode: marcatori (classifica cannonieri), sanzioni (squalificati/ammoniti)
* Parametro layout="riga"|"griglia" su highlights, rosa, staff, news, sponsor, marcatori, sanzioni (scroll orizzontale invece della griglia responsive)
* Parametro colonne="N" per forzare un numero fisso di colonne sui widget a griglia
* Fix: sincronizzazione "replay" puntava a un endpoint API inesistente, non veniva mai sincronizzata
* Fix: sincronizzazione manuale non riscaricava più tutti i dati ad ogni giro (hash di confronto calcolato sul dato sbagliato quando attiva l'importazione immagini)
* Fix: shortcode classifica risultava "non disponibile" quando non veniva passato un campionato_id esplicito

= 1.0.0 =
* Prima release pubblica
* Shortcode: classifica, partite, rosa, staff, news, highlights, sponsor
* Blocchi Gutenberg per tutti gli shortcode
* Modalità live con cache WP transient
* Archivio locale con tabelle wp_sportgest_cache
* Import immagini in Media Library
* Sync automatica via WP-Cron (hourly/6h/12h/daily)
* Sincronizzazione manuale dal pannello impostazioni
* Test connessione in tempo reale
* Log chiamate API per monitoraggio utilizzo

= 1.1.2 =
* News aggiornate automaticamente tramite feed pubblicato, anche con cache locale e cron in ritardo.
* Ripristino automatico della pianificazione dopo aggiornamenti e primo salvataggio; niente eventi duplicati.
* Sincronizzazione manuale e programmata senza cache live, conteggi corretti e segnalazione degli errori.
* URL API normalizzati e verifica della risposta di collegamento.

Le news sono mostrate dai blocchi/shortcode Clubfy; dalla versione 1.1.3 è disponibile anche l’importazione opzionale come articoli WordPress.
WP-Cron esegue i lavori quando WordPress riceve richieste; per siti senza traffico serve un cron del server.

= 1.1.3 =
* Importazione opt-in delle ultime 50 news come articoli WordPress, pubblicati o bozze.
* Deduplicazione per sorgente/ID, aggiornamento dei soli articoli importati, cestino rispettato.
* Importazione in passaggi singoli e sincronizzazione separata per endpoint per ridurre i timeout.
* Messaggi AJAX distinti per HTTP 403/5xx, risposta non JSON e timeout.
Abilitare Impostazioni > Clubfy > News come articoli WordPress; salvare prima di sincronizzare.

= 1.1.4 =
* Classifica: nomi, pareggi e differenza reti corretti, punti in primo piano.
* Preset per ID con messaggio esplicito se mancanti/inattivi; catalogo Compositore incorporabile.
* Ultima e prossima partita con stemmi, nomi del club, risultato/data e luogo.
* Titolo personalizzabile o nascosto e firma Clubfy su tutti i widget.
* Cache parametrizzata: ultima/prossima partita e campionati distinti.
* Importazione media con lock, recupero allegati WordPress già importati e URL senza parametri di versione.
I widget Compositore richiedono URL del sito pubblico Clubfy nelle impostazioni se differisce dall’URL API. I file duplicati già presenti non vengono eliminati.

= 1.3.1 =
* Adattatore nativo Elementor: Clubfy — Widget sportivo. Contenuto, titolo, quantità, tipo partita/video e controlli di stile (colori, angoli, stemmi).
* CSS moderno e isolato dagli stili del tema; versione asset basata anche sulla data del file per invalidare cache obsolete.
* Titolo e visibilità personalizzabili localmente anche quando si usa un preset del Gestionale.
Elementor è opzionale; il plugin resta utilizzabile con Gutenberg e shortcode. L’accesso diretto a Hub senza Gestionale e la lettura esclusiva di dati locali sono evoluzioni successive, non incluse in questa versione.

= 1.3.16 =
Kit sito WordPress: nove pagine Gutenberg in bozza e template JSON Elementor. Creazione ripetibile senza sovrascrivere pagine; accesso amministratore e connessione Clubfy verificata.

= 1.4.0 =
Modalità Free sportiva con collegamento diretto Hub senza Gestionale, snapshot locale e selezione Serie A futsal. Connect conserva token, piano Pro e contenuti del club.

= 1.4.1 =
Connessione compatta con selettore Free/Pro e accordion; token mascherato e inviato negli header. Pro richiede abilitazione Hub e dominio autorizzato.
