designtopack/public/site/controllers/site.php
isUnknown ea90f512cf
All checks were successful
Deploy Preprod / Build and Deploy to Preprod (push) Successful in 31s
feat: inversion relation User→Projects, les projets pointent vers les utilisateurs
Le champ `users` est désormais sur le blueprint projet. Les blueprints
pochet/client perdent leur champ `projects`. La logique PHP (user-projects,
managers, controller, template, mark-all-read) lit project.users au lieu
de user.projects. Script de migration inclus.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 14:01:27 +01:00

59 lines
No EOL
1.8 KiB
PHP

<?php
return function ($page, $kirby, $site) {
if (!$kirby->user() && $page->uri() !== 'login') {
go('/login');
}
$data = $page->toArray();
$data['template'] = (string) $page->template();
$data['newInspirations'] = (bool) page('inspirations')->children()->findBy('new', 'true');
if ($kirby->user()) {
$userData = [
"name" => (string) $kirby->user()->name()->or(null),
"email" => (string) $kirby->user()->email(),
"role" => (string) $kirby->user()->role(),
"uuid" => (string) $kirby->user()->uuid()
];
if ($kirby->user()->client()->exists() && $kirby->user()->client()->isNotEmpty()) {
$userData['client'] = [
"name" => (string) $kirby->user()->client()->toPage()->title(),
"uuid" => (string) $kirby->user()->client()->toPage()->uuid()
];
if ($kirby->user()->client()->toPage()->logo()->isNotEmpty()) {
$userData['client']["logo"] = $kirby->user()->client()->toPage()->logo()->toFile()->url();
}
}
$userProjects = $kirby->user()->currentProjects()->merge(
$kirby->user()->archivedProjects()
);
if ($userProjects->count() > 0) {
$userData['projects'] = $userProjects->map(function ($project) {
return [
"title" => (string) $project->title(),
"uri" => (string) $project->uri(),
"step" => (string) $project->currentStep(),
"uuid" => (string) $project->uuid(),
];
})->data;
}
if ($kirby->user()->hiddenProjects()->exists() && $kirby->user()->hiddenProjects()->isNotEmpty()) {
$userData['hiddenProjects'] = $kirby->user()->hiddenProjects()->toPages()->map(function ($project) {
return (string) $project->uuid();
})->values();
} else {
$userData['hiddenProjects'] = [];
}
}
return [
'genericData' => $data,
'userData' => $userData ?? null
];
};