From d62a8c62cf8f101bdba18edfa69debc13f8d4848 Mon Sep 17 00:00:00 2001 From: isUnknown Date: Tue, 28 Apr 2026 18:28:17 +0200 Subject: [PATCH] Fix filtre campagne : filtrage PHP sur slug + debug structure API plans MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Le paramètre campaign_id dans l'URL ne filtre pas côté Donorbox. Filtrage PHP sur plan['campaign']['slug'] à la place. Ajout _debug_plan_sample temporaire pour vérifier la structure réelle. Co-Authored-By: Claude Sonnet 4.6 --- api/donorbox-proxy.php | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/api/donorbox-proxy.php b/api/donorbox-proxy.php index 6ec4ba5..3dc7280 100644 --- a/api/donorbox-proxy.php +++ b/api/donorbox-proxy.php @@ -129,12 +129,12 @@ if ($campaign === null) { } // Compter les donateurs réguliers actifs de la campagne ciblée uniquement -$campaign_id = $campaign['id'] ?? null; +// Filtre PHP sur le slug car le paramètre campaign_id de l'API n'est pas fiable $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 - . ($campaign_id ? '&campaign_id=' . urlencode($campaign_id) : ''); + $plans_url = 'https://donorbox.org/api/v1/plans?per_page=100&page=' . $plans_page; $ch_plans = curl_init(); curl_setopt_array($ch_plans, [ @@ -159,6 +159,14 @@ 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) { + continue; + } if (isset($plan['status']) && $plan['status'] === 'active') { $recurring_count++; } @@ -179,7 +187,8 @@ $filteredData = [ 'recurring_donors_count' => $recurring_count, 'campaign_name' => $campaign['name'] ?? 'Unknown', 'updated_at' => date('c'), - 'plans_detail' => $plans_detail ?? [] + 'plans_detail' => $plans_detail ?? [], + '_debug_plan_sample' => $first_plan_sample ]; $jsonResponse = json_encode($filteredData, JSON_PRETTY_PRINT);