# Bloc d'avis Google

Affiche la note globale et jusqu'à 5 avis Google d'un établissement, dans un
carrousel « coverflow ». PHP pur, aucune dépendance à l'exécution.

> ⚠️ L'API officielle Google ne renvoie que **5 avis maximum** (impossible
> d'afficher les 120). Le bloc montre la **note globale**, le **nombre total
> d'avis** et ces **5 avis**.

## Prérequis
PHP ≥ 8.0 avec les extensions `curl`, `json` et `mbstring` (activées par défaut sur la quasi-totalité des hébergements).

## Installation

### 1. Créer une clé API Google (~5 min)
1. Aller sur https://console.cloud.google.com/ et créer (ou sélectionner) un projet.
2. Menu **API et services → Bibliothèque**, rechercher **« Places API (New) »**, cliquer **Activer**.
3. Menu **API et services → Identifiants → Créer des identifiants → Clé API**. Copier la clé.
4. (Recommandé) Cliquer sur la clé → **Restrictions d'API** → limiter à **Places API (New)**.
   Si le serveur a une IP fixe, ajouter une **restriction par adresse IP**.
5. Lier un compte de **facturation** au projet (obligatoire pour l'API ; le quota
   gratuit couvre très largement un usage avec cache 24 h).

### 2. Trouver le Place ID (~2 min)
1. Ouvrir le **Place ID Finder** : https://developers.google.com/maps/documentation/places/web-service/place-id
2. Rechercher l'établissement de la cliente. Copier le **Place ID** (commence souvent par `ChIJ...`).

### 3. Configurer le bloc
```bash
cp config.example.php config.php
```
Éditer `config.php` :
```php
define('GR_API_KEY', 'la_cle_copiee_a_l_etape_1');
define('GR_PLACE_ID', 'le_place_id_copie_a_l_etape_2');
define('GR_CACHE_TTL', 86400); // 24 h
```
> `config.php` et `cache/*.json` sont gitignorés : la clé n'est jamais versionnée.

### 4. Intégrer dans le site
À l'endroit où afficher le bloc :
```php
<?php include __DIR__ . '/avis-google/google-reviews.php'; ?>
```
(adapter le chemin selon l'emplacement du dossier `avis-google/`).

Le dossier `cache/` doit être **accessible en écriture** par PHP (le bloc y écrit `avis.json`).

## Fonctionnement
- 1er affichage après expiration : un appel à Google, puis écriture du cache.
- Pendant 24 h : tout est servi depuis le cache (instantané, aucun appel réseau).
- Si Google est indisponible : l'ancien cache est réutilisé ; le bloc ne casse jamais.

## Développement / tests
```bash
composer install
./vendor/bin/phpunit
```
Prévisualisation visuelle sans clé API :
```bash
php -S localhost:8000
# puis ouvrir http://localhost:8000/tests/manual-preview.php
```

## Afficher plus de 5 avis (pool local)
L'API Google plafonne à **5 avis** en direct. Pour en afficher davantage, on ajoute
des avis dans le fichier **`avis-locaux.json`** : ils sont fusionnés avec les 5 avis
live, **dédupliqués** (un avis présent en live n'apparaît pas deux fois), **mélangés
aléatoirement** à chaque chargement, puis limités à `GR_REVIEWS_MAX` (défaut 12).

Ajouter un avis = un objet dans le tableau (recopié depuis la fiche Google) :
```json
{
  "author": "Prénom N.",
  "rating": 5,
  "relative": "il y a 2 mois",
  "text": "Le texte de l'avis…"
}
```
- `author`, `text` : obligatoires. `rating` (défaut 5), `relative` (ex. « il y a 3 mois »).
- Pas de photo pour les avis du pool → un avatar avec l'initiale s'affiche.
- Un avis sans `text` est ignoré.

Le fichier est amorcé avec les 5 avis actuels : ajoutez-en d'autres pour dépasser 5.

## Personnalisation
- Langue des avis : constante `GR_LANG` (défaut `'fr'`) — Google traduit les avis
  rédigés dans une autre langue.
- Nombre d'avis affichés : constante `GR_REVIEWS_MAX` (défaut 12).
- Couleurs/police : le bloc hérite du site. Les accents Google sont des variables
  CSS en haut de `.gr-block` dans `assets/avis-google.css` (`--gr-gold`, `--gr-blue`…).
- Durée du cache : constante `GR_CACHE_TTL` dans `config.php`.
