Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 37
0.00% covered (danger)
0.00%
0 / 3
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 / 37
0.00% covered (danger)
0.00%
0 / 3
12
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
 searchSqlWhenHasAccess
0.00% covered (danger)
0.00%
0 / 16
0.00% covered (danger)
0.00%
0 / 1
2
 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\Service\Components\OlzDownloads\OlzDownloads;
10use Olz\Service\Components\OlzLinks\OlzLinks;
11use Olz\Utils\HttpParams;
12
13/** @extends HttpParams<array{}> */
14class OlzServiceParams extends HttpParams {
15}
16
17/** @extends OlzRootComponent<array<string, mixed>> */
18class OlzService extends OlzRootComponent {
19    public function hasAccess(): bool {
20        return true;
21    }
22
23    public function searchSqlWhenHasAccess(array $terms): string|array|null {
24        $code_href = $this->envUtils()->getCodeHref();
25        $downloads_where = implode(' AND ', array_map(function ($term) {
26            return "name LIKE '%{$term}%'";
27        }, $terms));
28        $links_where = implode(' AND ', array_map(function ($term) {
29            return "(name LIKE '%{$term}%' OR url LIKE '%{$term}%')";
30        }, $terms));
31        // TODO better icons
32        return <<<ZZZZZZZZZZ
33            SELECT
34                '{$code_href}service' AS link,
35                '{$code_href}assets/icns/link_internal_16.svg' AS icon,
36                NULL AS date,
37                CONCAT('Download: ', name) AS title,
38                NULL AS text,
39                0.9 AS time_relevance
40            FROM downloads
41            WHERE
42                on_off = '1'
43                AND {$downloads_where}
44            UNION ALL
45            SELECT
46                '{$code_href}service' AS link,
47                '{$code_href}assets/icns/termine_type_all_20.svg' AS icon,
48                NULL AS date,
49                CONCAT('Link: ', name) AS title,
50                url AS text,
51                0.9 AS time_relevance
52            FROM links
53            WHERE
54                on_off = '1'
55                AND {$links_where}
56            ZZZZZZZZZZ;
57    }
58
59    public static string $title = "Service";
60    public static string $description = "Diverse Online-Tools rund um OL und die OL Zimmerberg.";
61
62    public function getHtmlWhenHasAccess(mixed $args): string {
63        $this->httpUtils()->validateGetParams(OlzServiceParams::class);
64
65        $out = OlzHeader::render([
66            'title' => self::$title,
67            'description' => self::$description,
68        ]);
69
70        $out .= "<div class='content-full'>";
71
72        $out .= "<h1>Service</h1>";
73        $out .= "<h2>Apps</h2>";
74        $out .= OlzAppsList::render();
75        $out .= "<br /><br />";
76
77        $out .= "<div class='responsive-flex'>";
78        $out .= "<div class='responsive-flex-2'>";
79        $out .= OlzLinks::render();
80        $out .= "</div>";
81        $out .= "<div class='responsive-flex-2'>";
82        $out .= OlzDownloads::render();
83        $out .= "</div></div><br><br>";
84
85        $out .= "</div>";
86
87        $out .= OlzFooter::render();
88
89        return $out;
90    }
91}