All checks were successful
Deploy Preprod / Build and Deploy to Preprod (push) Successful in 34s
- Multiselect Kirby pour filtrer par utilisateur(s) - Données de test alignées sur les vrais comptes - Suppression bloc utilisateurs les plus actifs - Route get-data supporte le filtre emails - Améliorations UI filtres (layout dates + users) - Autres modifs : menu, router, dialog, deploy workflow Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
76 lines
2 KiB
PHP
76 lines
2 KiB
PHP
<?php
|
|
|
|
return [
|
|
'pattern' => 'analytics-data.json',
|
|
'method' => 'GET',
|
|
'action' => function () {
|
|
$kirby = kirby();
|
|
$user = $kirby->user();
|
|
|
|
// Seuls les admins peuvent accéder aux données analytics
|
|
if (!$user || !$user->isAdmin()) {
|
|
return [
|
|
'status' => 'error',
|
|
'message' => 'Unauthorized'
|
|
];
|
|
}
|
|
|
|
$analyticsPage = $kirby->page('analytics');
|
|
|
|
if (!$analyticsPage) {
|
|
return [
|
|
'status' => 'error',
|
|
'message' => 'Analytics page not found'
|
|
];
|
|
}
|
|
|
|
$request = $kirby->request();
|
|
$filters = [];
|
|
|
|
if ($startDate = $request->query()->get('startDate')) {
|
|
$filters['startDate'] = $startDate;
|
|
}
|
|
|
|
if ($endDate = $request->query()->get('endDate')) {
|
|
$filters['endDate'] = $endDate;
|
|
}
|
|
|
|
if ($project = $request->query()->get('project')) {
|
|
$filters['project'] = $project;
|
|
}
|
|
|
|
if (!empty($_GET['emails'])) {
|
|
$filters['emails'] = explode(',', $_GET['emails']);
|
|
}
|
|
|
|
$data = $analyticsPage->getAnalyticsData($filters);
|
|
|
|
$users = [];
|
|
foreach ($kirby->users() as $u) {
|
|
$email = (string) $u->email();
|
|
$name = $u->name()->isNotEmpty() ? (string) $u->name() : $email;
|
|
$label = $name;
|
|
|
|
$clientField = $u->content()->get('client');
|
|
if ($clientField && $clientField->isNotEmpty()) {
|
|
$clientPage = $clientField->toPage();
|
|
if ($clientPage) {
|
|
$label .= ' (' . $clientPage->title() . ')';
|
|
}
|
|
}
|
|
|
|
$users[] = [
|
|
'email' => $email,
|
|
'label' => $label,
|
|
];
|
|
}
|
|
|
|
usort($users, fn($a, $b) => strcasecmp($a['label'], $b['label']));
|
|
|
|
return [
|
|
'status' => 'success',
|
|
'data' => $data,
|
|
'users' => $users
|
|
];
|
|
}
|
|
];
|