Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 60
0.00% covered (danger)
0.00%
0 / 5
CRAP
0.00% covered (danger)
0.00%
0 / 1
OlzKartenParams
n/a
0 / 0
n/a
0 / 0
0
n/a
0 / 0
OlzKarten
0.00% covered (danger)
0.00%
0 / 60
0.00% covered (danger)
0.00%
0 / 5
30
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 / 20
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 / 37
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace Olz\Karten\Components\OlzKarten;
4
5use Olz\Components\Common\OlzEditableText\OlzEditableText;
6use Olz\Components\Common\OlzRootComponent;
7use Olz\Components\Page\OlzFooter\OlzFooter;
8use Olz\Components\Page\OlzHeader\OlzHeader;
9use Olz\Entity\Karten\Karte;
10use Olz\Karten\Components\OlzKartenList\OlzKartenList;
11use Olz\Repository\Snippets\PredefinedSnippet;
12use Olz\Utils\HttpParams;
13
14/** @extends HttpParams<array{}> */
15class OlzKartenParams extends HttpParams {
16}
17
18/** @extends OlzRootComponent<array<string, mixed>> */
19class OlzKarten extends OlzRootComponent {
20    public function hasAccess(): bool {
21        return true;
22    }
23
24    public function searchSqlWhenHasAccess(array $terms): string|array|null {
25        $code_href = $this->envUtils()->getCodeHref();
26        $snippets_where = $this->searchUtils()->getSnippetsWhereSql([
27            PredefinedSnippet::KartenVerkauf,
28        ], $terms);
29        $static_page_query = $this->searchUtils()->getStaticResultQuery([
30            'link' => "{$code_href}karten",
31            'icon' => "{$code_href}assets/icns/link_map_16.svg",
32            'title' => $this->getPageTitle(),
33            'text' => $this->getPageDescription(),
34        ], $terms);
35        return [
36            'with' => $static_page_query['with'],
37            'query' => <<<ZZZZZZZZZZ
38                    SELECT
39                        '{$code_href}karten' AS link,
40                        '{$code_href}assets/icns/link_map_16.svg' AS icon,
41                        NULL AS date,
42                        'Karten' AS title,
43                        IFNULL(text, '') AS text,
44                        1.0 AS time_relevance
45                    FROM snippets
46                    WHERE {$snippets_where}
47                UNION ALL
48                    {$static_page_query['query']}
49                ZZZZZZZZZZ,
50        ];
51    }
52
53    public function getPageTitle(): string {
54        return "Unsere OL-Karten";
55    }
56
57    public function getPageDescription(): string {
58        return "Die OL-Karten, die die OL Zimmerberg aufnimmt, unterhält und verkauft.";
59    }
60
61    public function getHtmlWhenHasAccess(mixed $args): string {
62        $this->httpUtils()->validateGetParams(OlzKartenParams::class);
63        $code_href = $this->envUtils()->getCodeHref();
64
65        $out = OlzHeader::render([
66            'title' => $this->getPageTitle(),
67            'description' => $this->getPageDescription(),
68        ]);
69
70        $out .= "<div class='content-right olz-karten'>";
71        $out .= OlzKartenList::render([]);
72        $out .= "</div>
73        <div class='content-middle olz-karten'>
74        <h1>Unsere OL-Karten</h1>";
75
76        $karten_repo = $this->entityManager()->getRepository(Karte::class);
77        $karten = $karten_repo->findBy(['on_off' => 1]);
78        $karten_data = array_map(function (Karte $karte) use ($code_href) {
79            $icon_by_type = [
80                'ol' => 'orienteering_forest_16.svg',
81                'stadt' => 'orienteering_village_16.svg',
82                'scool' => 'orienteering_scool_16.svg',
83            ];
84            return [
85                'id' => $karte->getId(),
86                'url' => "{$code_href}karten/{$karte->getId()}",
87                'icon' => $icon_by_type[$karte->getKind()] ?? 'orienteering_scool_16.svg',
88                'name' => $karte->getName(),
89                'lat' => $karte->getLatitude(),
90                'lng' => $karte->getLongitude(),
91            ];
92        }, $karten);
93        $karten_json = json_encode($karten_data);
94
95        $out .= <<<ZZZZZZZZZZ
96            <div id='olz-karten-map' class='test-flaky'></div>
97            <script>olz.olzKartenMapRender({$karten_json});</script>
98            <br>
99            ZZZZZZZZZZ;
100
101        $out .= "<h2>Kartenverkauf</h2>";
102        $out .= OlzEditableText::render(['snippet' => PredefinedSnippet::KartenVerkauf]);
103        $out .= "</div>";
104
105        $out .= OlzFooter::render();
106
107        return $out;
108    }
109}