From aa6133587a955f958bac8e74f28b9fdaf18f5540 Mon Sep 17 00:00:00 2001 From: isUnknown Date: Tue, 28 Apr 2026 18:31:17 +0200 Subject: [PATCH] =?UTF-8?q?Fix=20jauge=20:=20filtrer=20les=20plans=20par?= =?UTF-8?q?=20campaign.id=20c=C3=B4t=C3=A9=20PHP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit L'API Donorbox ne supporte pas de filtre campaign_id côté serveur, et les plans n'exposent pas de slug. Filtre PHP sur plan['campaign']['id'] comparé à l'ID de la campagne récupérée. Co-Authored-By: Claude Sonnet 4.6 --- api/donorbox-proxy.php | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/api/donorbox-proxy.php b/api/donorbox-proxy.php index 3dc7280..7593f7a 100644 --- a/api/donorbox-proxy.php +++ b/api/donorbox-proxy.php @@ -129,10 +129,10 @@ if ($campaign === null) { } // Compter les donateurs réguliers actifs de la campagne ciblée uniquement -// Filtre PHP sur le slug car le paramètre campaign_id de l'API n'est pas fiable +// Filtre PHP sur campaign.id (l'API plans ne supporte pas de filtre côté serveur) +$campaign_id = $campaign['id'] ?? null; $recurring_count = 0; $plans_page = 1; -$first_plan_sample = null; do { $plans_url = 'https://donorbox.org/api/v1/plans?per_page=100&page=' . $plans_page; @@ -159,12 +159,8 @@ do { if (!is_array($plans)) break; foreach ($plans as $plan) { - if ($first_plan_sample === null) { - $first_plan_sample = $plan; - } - // Filtrer sur le slug de la campagne cible - $plan_slug = $plan['campaign']['slug'] ?? $plan['campaign_slug'] ?? null; - if ($plan_slug !== CAMPAIGN_SLUG) { + // Filtrer sur l'ID de la campagne cible + if (($plan['campaign']['id'] ?? null) !== $campaign_id) { continue; } if (isset($plan['status']) && $plan['status'] === 'active') { @@ -187,8 +183,7 @@ $filteredData = [ 'recurring_donors_count' => $recurring_count, 'campaign_name' => $campaign['name'] ?? 'Unknown', 'updated_at' => date('c'), - 'plans_detail' => $plans_detail ?? [], - '_debug_plan_sample' => $first_plan_sample + 'plans_detail' => $plans_detail ?? [] ]; $jsonResponse = json_encode($filteredData, JSON_PRETTY_PRINT);