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:
parent
8a39475338
commit
d62a8c62cf
1 changed files with 13 additions and 4 deletions
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue