Fix jauge : filtrer les plans par campaign.id côté PHP
All checks were successful
Deploy / Deploy to Production (push) Successful in 9s

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 <noreply@anthropic.com>
This commit is contained in:
isUnknown 2026-04-28 18:31:17 +02:00
parent d62a8c62cf
commit aa6133587a

View file

@ -129,10 +129,10 @@ if ($campaign === null) {
} }
// Compter les donateurs réguliers actifs de la campagne ciblée uniquement // 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; $recurring_count = 0;
$plans_page = 1; $plans_page = 1;
$first_plan_sample = null;
do { do {
$plans_url = 'https://donorbox.org/api/v1/plans?per_page=100&page=' . $plans_page; $plans_url = 'https://donorbox.org/api/v1/plans?per_page=100&page=' . $plans_page;
@ -159,12 +159,8 @@ do {
if (!is_array($plans)) break; if (!is_array($plans)) break;
foreach ($plans as $plan) { foreach ($plans as $plan) {
if ($first_plan_sample === null) { // Filtrer sur l'ID de la campagne cible
$first_plan_sample = $plan; if (($plan['campaign']['id'] ?? null) !== $campaign_id) {
}
// Filtrer sur le slug de la campagne cible
$plan_slug = $plan['campaign']['slug'] ?? $plan['campaign_slug'] ?? null;
if ($plan_slug !== CAMPAIGN_SLUG) {
continue; continue;
} }
if (isset($plan['status']) && $plan['status'] === 'active') { if (isset($plan['status']) && $plan['status'] === 'active') {
@ -187,8 +183,7 @@ $filteredData = [
'recurring_donors_count' => $recurring_count, 'recurring_donors_count' => $recurring_count,
'campaign_name' => $campaign['name'] ?? 'Unknown', 'campaign_name' => $campaign['name'] ?? 'Unknown',
'updated_at' => date('c'), '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); $jsonResponse = json_encode($filteredData, JSON_PRETTY_PRINT);