Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 28
0.00% covered (danger)
0.00%
0 / 5
CRAP
0.00% covered (danger)
0.00%
0 / 1
OlzStartseiteParams
n/a
0 / 0
n/a
0 / 0
0
n/a
0 / 0
OlzStartseite
0.00% covered (danger)
0.00%
0 / 28
0.00% covered (danger)
0.00%
0 / 5
56
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 / 10
0.00% covered (danger)
0.00%
0 / 1
2
 getPageTitle
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getPageDescription
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getHtmlWhenHasAccess
0.00% covered (danger)
0.00%
0 / 15
0.00% covered (danger)
0.00%
0 / 1
12
1<?php
2
3// =============================================================================
4// Zeigt die OLZ Startseite an.
5// =============================================================================
6
7namespace Olz\Startseite\Components\OlzStartseite;
8
9use Olz\Components\Common\OlzEditableText\OlzEditableText;
10use Olz\Components\Common\OlzRootComponent;
11use Olz\Components\Page\OlzFooter\OlzFooter;
12use Olz\Components\Page\OlzHeader\OlzHeader;
13use Olz\Repository\Snippets\PredefinedSnippet;
14use Olz\Startseite\Components\OlzCustomizableHome\OlzCustomizableHome;
15use Olz\Utils\HttpParams;
16
17/** @extends HttpParams<array{}> */
18class OlzStartseiteParams extends HttpParams {
19}
20
21/** @extends OlzRootComponent<array<string, mixed>> */
22class OlzStartseite extends OlzRootComponent {
23    public function hasAccess(): bool {
24        return true;
25    }
26
27    public function searchSqlWhenHasAccess(array $terms): string|array|null {
28        $code_href = $this->envUtils()->getCodeHref();
29        $snippets_where = $this->searchUtils()->getSnippetsWhereSql([
30            PredefinedSnippet::StartseiteBanner,
31        ], $terms);
32        return <<<ZZZZZZZZZZ
33            SELECT
34                '{$code_href}' AS link,
35                '{$code_href}assets/icns/question_mark_20.svg' AS icon,
36                NULL AS date,
37                'Startseite' AS title,
38                IFNULL(text, '') AS text,
39                1.0 AS time_relevance
40            FROM snippets
41            WHERE {$snippets_where}
42            ZZZZZZZZZZ;
43    }
44
45    public function getPageTitle(): string {
46        return "Startseite";
47    }
48
49    public function getPageDescription(): string {
50        return "Eine Übersicht der Neuigkeiten und geplanten Anlässe der OL Zimmerberg.";
51    }
52
53    public function getHtmlWhenHasAccess(mixed $args): string {
54        $this->httpUtils()->validateGetParams(OlzStartseiteParams::class);
55
56        $out = OlzHeader::render([
57            'description' => $this->getPageDescription(),
58        ], $this);
59
60        $out .= "<div class='content-full'>";
61
62        $banner_snippet = PredefinedSnippet::StartseiteBanner;
63        $banner_text = OlzEditableText::render(['snippet' => $banner_snippet], $this);
64        if (trim(strip_tags($banner_text)) !== '' || $this->authUtils()->hasPermission("snippet_{$banner_snippet->value}")) {
65            $out .= "<div id='important-banner' class='banner'>";
66            $out .= $banner_text;
67            $out .= "</div>";
68        }
69
70        $out .= OlzCustomizableHome::render([], $this);
71
72        $out .= "</div>";
73
74        $out .= OlzFooter::render([], $this);
75
76        return $out;
77    }
78}