Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
25 / 25
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
System
100.00% covered (success)
100.00%
25 / 25
100.00% covered (success)
100.00%
2 / 2
3
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 payload
100.00% covered (success)
100.00%
24 / 24
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2
3declare(strict_types=1);
4
5namespace Cosray\Panel;
6
7use Cosray\Config;
8use Cosray\Locales;
9
10/**
11 * System payload embedded into panel editor pages. It feeds the
12 * standalone window.Cosray bridge (and through it every element
13 * control).
14 */
15final class System
16{
17    public function __construct(
18        private readonly Config $config,
19        private readonly Locales $locales,
20        #[\SensitiveParameter]
21        private readonly string $csrfToken,
22    ) {}
23
24    /** @return array<string, mixed> */
25    public function payload(): array
26    {
27        $config = $this->config;
28        $locales = [];
29
30        foreach ($this->locales as $locale) {
31            $locales[] = [
32                'id' => $locale->id,
33                'title' => $locale->title,
34                'fallback' => $locale->fallback,
35            ];
36        }
37
38        return [
39            'debug' => $config->debug(),
40            'env' => $config->env(),
41            'csrfToken' => $this->csrfToken,
42            'locale' => $this->locales->getDefault()->id,
43            'defaultLocale' => $this->locales->getDefault()->id,
44            'locales' => $locales,
45            'customLocales' => [],
46            'prefix' => $config->app->urlPrefix,
47            'assets' => $config->path->assets,
48            'allowedFiles' => [
49                'file' => array_merge(...array_values($config->upload->file)),
50                'image' => array_merge(...array_values($config->upload->image)),
51                'video' => array_merge(...array_values($config->upload->video)),
52            ],
53        ];
54    }
55}