index-soutien/includes/cache.php
isUnknown 322d9136b6 PHP dynamique + cache JSON, nettoyage CSS/HTML, CI Forgejo
- Renommage classes/IDs (BEM cohérent, anglais, noms sémantiques)
- Correction HTML : h3→h2 FAQ, button>a→a[role=button] CTA mobile
- Conversion index.html → index.php (FR/EN) avec cache JSON depuis API Kirby
- Pages merci/thanks converties en PHP dynamique
- Ajout includes/cache.php + includes/config.php (cache TTL 5min)
- Ajout CI Forgejo (deploy FTP via lftp)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-12 08:00:58 +02:00

42 lines
1.1 KiB
PHP

<?php
require_once __DIR__ . '/config.php';
function getSoutenirContent(string $lang = 'fr'): array {
$cacheFile = CACHE_DIR . "/content.{$lang}.json";
// Serve cache if fresh
if (file_exists($cacheFile) && (time() - filemtime($cacheFile)) < CACHE_TTL) {
return json_decode(file_get_contents($cacheFile), true) ?: [];
}
// Fetch from Kirby API
$url = KIRBY_API_URL . '?lang=' . urlencode($lang);
if (SOUTIEN_API_TOKEN) {
$url .= '&token=' . urlencode(SOUTIEN_API_TOKEN);
}
$context = stream_context_create([
'http' => [
'timeout' => 5,
'header' => "Referer: https://soutenir.index.ngo\r\n",
],
]);
$response = @file_get_contents($url, false, $context);
if ($response !== false) {
$data = json_decode($response, true);
if ($data && !isset($data['error'])) {
@file_put_contents($cacheFile, $response, LOCK_EX);
return $data;
}
}
// Fallback: serve stale cache rather than nothing
if (file_exists($cacheFile)) {
return json_decode(file_get_contents($cacheFile), true) ?: [];
}
return [];
}