32 lines
1,015 B
PHP
32 lines
1,015 B
PHP
<?php
|
|
function getProjectData($project) {
|
|
return [
|
|
'title' => $project->title()->value(),
|
|
'url' => $project->url(),
|
|
'uri' => '/' . $project->uri(),
|
|
'modified' => $project->modified('Y-MM-d'),
|
|
'currentStep' => $project->currentStep()->value(),
|
|
'status' => $project->status(),
|
|
'logo' => $project->client()->toPage() ? $project->client()->toPage()->logo()->toFile()->url() : '',
|
|
'steps' => $project->getSteps(),
|
|
"uuid" => (string) $project->uuid()
|
|
];
|
|
}
|
|
|
|
try {
|
|
$children = $kirby->user()->role() == 'admin' ? $page->children()->map(fn($project) => getProjectData($project))->values() : $kirby->user()->projects()->toPages()->map(fn($project) => getProjectData($project))->values();
|
|
} catch (\Throwable $th) {
|
|
throw new Exception($th->getMessage() . ' line ' . $th->getLine(), 1);
|
|
$children = [];
|
|
}
|
|
|
|
$specificData = [
|
|
"children" => $children,
|
|
];
|
|
|
|
$pageData = array_merge($genericData, $specificData);
|
|
|
|
echo json_encode([
|
|
"page" => $pageData,
|
|
"user" => $userData
|
|
]);
|