Fix filtre campagne : filtrage PHP sur slug + debug structure API plans

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

View file

@ -129,12 +129,12 @@ 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
$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; $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;
. ($campaign_id ? '&campaign_id=' . urlencode($campaign_id) : '');
$ch_plans = curl_init(); $ch_plans = curl_init();
curl_setopt_array($ch_plans, [ curl_setopt_array($ch_plans, [
@ -159,6 +159,14 @@ do {
if (!is_array($plans)) break; if (!is_array($plans)) break;
foreach ($plans as $plan) { 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') { if (isset($plan['status']) && $plan['status'] === 'active') {
$recurring_count++; $recurring_count++;
} }
@ -179,7 +187,8 @@ $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);