<?php
// ============================================================
// inc/events.php — récupère les formations depuis l'agenda lishan.fr
// (plugin The Events Calendar), catégorie 'tuina-mtc', avec cache.
// ============================================================
require_once __DIR__ . '/config.php';

function formations_evenements(int $cacheMinutes = 60): array {
    $cacheFile = DATA_DIR . '/cache_events.json';

    // cache valide ?
    if (is_file($cacheFile) && (time() - filemtime($cacheFile) < $cacheMinutes*60)) {
        $cached = json_decode(file_get_contents($cacheFile), true);
        if (is_array($cached)) return $cached;
    }

    $url = 'https://lishan.fr/wp-json/tribe/events/v1/events?categories=tuina-mtc&per_page=20&start_date=now';
    $ctx = stream_context_create(['http'=>['timeout'=>8],'ssl'=>['verify_peer'=>false,'verify_peer_name'=>false]]);
    $raw = @file_get_contents($url, false, $ctx);

    if ($raw === false) {
        // en cas d'échec réseau : renvoyer l'ancien cache s'il existe
        if (is_file($cacheFile)) {
            $old = json_decode(file_get_contents($cacheFile), true);
            if (is_array($old)) return $old;
        }
        return [];
    }

    $d = json_decode($raw, true);
    $events = [];
    foreach (($d['events'] ?? []) as $e) {
        $events[] = [
            'titre'  => html_entity_decode($e['title'] ?? '', ENT_QUOTES, 'UTF-8'),
            'debut'  => $e['start_date'] ?? null,
            'fin'    => $e['end_date'] ?? null,
            'url'    => $e['url'] ?? '#',
            'image'  => $e['image']['url'] ?? null,
            'desc'   => trim(html_entity_decode(strip_tags($e['description'] ?? ''), ENT_QUOTES, 'UTF-8')),
            'cout'   => $e['cost'] ?? '',
        ];
    }

    @file_put_contents($cacheFile, json_encode($events, JSON_UNESCAPED_UNICODE));
    return $events;
}

// Formate une plage de dates en français
function formate_dates(string $debut, ?string $fin): string {
    $mois = [1=>'janvier',2=>'février',3=>'mars',4=>'avril',5=>'mai',6=>'juin',
             7=>'juillet',8=>'août',9=>'septembre',10=>'octobre',11=>'novembre',12=>'décembre'];
    $d = strtotime($debut);
    $f = $fin ? strtotime($fin) : null;
    if ($f && date('Y-m', $d) === date('Y-m', $f) && date('d',$d) !== date('d',$f)) {
        // même mois : "18 → 20 septembre 2026"
        return date('j',$d).' → '.date('j',$f).' '.$mois[(int)date('n',$d)].' '.date('Y',$d);
    }
    return date('j',$d).' '.$mois[(int)date('n',$d)].' '.date('Y',$d);
}
