Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 45
0.00% covered (danger)
0.00%
0 / 4
CRAP
0.00% covered (danger)
0.00%
0 / 1
OlzServiceParams
n/a
0 / 0
n/a
0 / 0
0
n/a
0 / 0
OlzService
0.00% covered (danger)
0.00%
0 / 45
0.00% covered (danger)
0.00%
0 / 4
90
0.00% covered (danger)
0.00%
0 / 1
 hasAccess
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getSearchTitle
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getSearchResults
0.00% covered (danger)
0.00%
0 / 23
0.00% covered (danger)
0.00%
0 / 1
42
 getHtmlWhenHasAccess
0.00% covered (danger)
0.00%
0 / 20
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace Olz\Service\Components\OlzService;
4
5use Olz\Components\Apps\OlzAppsList\OlzAppsList;
6use Olz\Components\Common\OlzRootComponent;
7use Olz\Components\Page\OlzFooter\OlzFooter;
8use Olz\Components\Page\OlzHeader\OlzHeader;
9use Olz\Entity\Service\Download;
10use Olz\Entity\Service\Link;
11use Olz\Service\Components\OlzDownloads\OlzDownloads;
12use Olz\Service\Components\OlzLinks\OlzLinks;
13use Olz\Utils\HttpParams;
14
15/** @extends HttpParams<array{}> */
16class OlzServiceParams extends HttpParams {
17}
18
19/** @extends OlzRootComponent<array<string, mixed>> */
20class OlzService extends OlzRootComponent {
21    public function hasAccess(): bool {
22        return true;
23    }
24
25    public function getSearchTitle(): string {
26        return 'Service';
27    }
28
29    public function getSearchResults(array $terms): array {
30        $results = [];
31        $code_href = $this->envUtils()->getCodeHref();
32        $download_repo = $this->entityManager()->getRepository(Download::class);
33        $downloads = $download_repo->search($terms);
34        foreach ($downloads as $download) {
35            $results[] = $this->searchUtils()->getScoredSearchResult([
36                'link' => "{$code_href}service",
37                'icon' => "{$code_href}assets/icns/link_internal_16.svg", // TODO better icon
38                'date' => null,
39                'title' => $download->getName() ?: '?',
40                'text' => null,
41            ], $terms);
42        }
43        $link_repo = $this->entityManager()->getRepository(Link::class);
44        $links = $link_repo->search($terms);
45        foreach ($links as $link) {
46            $results[] = $this->searchUtils()->getScoredSearchResult([
47                'link' => "{$code_href}service",
48                'icon' => "{$code_href}assets/icns/link_internal_16.svg", // TODO better icon
49                'date' => null,
50                'title' => $link->getName() ?: '?',
51                'text' => $link->getUrl() ?: null,
52            ], $terms);
53        }
54        return $results;
55    }
56
57    public static string $title = "Service";
58    public static string $description = "Diverse Online-Tools rund um OL und die OL Zimmerberg.";
59
60    public function getHtmlWhenHasAccess(mixed $args): string {
61        $this->httpUtils()->validateGetParams(OlzServiceParams::class);
62
63        $out = OlzHeader::render([
64            'title' => self::$title,
65            'description' => self::$description,
66        ]);
67
68        $out .= "<div class='content-full'>";
69
70        $out .= "<h1>Service</h1>";
71        $out .= "<h2>Apps</h2>";
72        $out .= OlzAppsList::render();
73        $out .= "<br /><br />";
74
75        $out .= "<div class='responsive-flex'>";
76        $out .= "<div class='responsive-flex-2'>";
77        $out .= OlzLinks::render();
78        $out .= "</div>";
79        $out .= "<div class='responsive-flex-2'>";
80        $out .= OlzDownloads::render();
81        $out .= "</div></div><br><br>";
82
83        $out .= "</div>";
84
85        $out .= OlzFooter::render();
86
87        return $out;
88    }
89}