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 / 5
CRAP
0.00% covered (danger)
0.00%
0 / 1
OlzNewsletterParams
n/a
0 / 0
n/a
0 / 0
0
n/a
0 / 0
OlzNewsletter
0.00% covered (danger)
0.00%
0 / 37
0.00% covered (danger)
0.00%
0 / 5
42
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 / 7
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 / 27
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2
3namespace Olz\Apps\Newsletter\Components\OlzNewsletter;
4
5use Olz\Apps\Newsletter\Components\OlzEmailCard\OlzEmailCard;
6use Olz\Apps\Newsletter\Components\OlzTelegramCard\OlzTelegramCard;
7use Olz\Apps\Newsletter\Metadata;
8use Olz\Components\Apps\OlzNoAppAccess\OlzNoAppAccess;
9use Olz\Components\Common\OlzRootComponent;
10use Olz\Components\Page\OlzFooter\OlzFooter;
11use Olz\Components\Page\OlzHeader\OlzHeader;
12use Olz\Utils\HttpParams;
13
14/** @extends HttpParams<array{}> */
15class OlzNewsletterParams extends HttpParams {
16}
17
18/** @extends OlzRootComponent<array<string, mixed>> */
19class OlzNewsletter extends OlzRootComponent {
20    public function hasAccess(): bool {
21        return (new Metadata())->isAccessibleToUser($this->authUtils()->getCurrentUser());
22    }
23
24    public function searchSqlWhenHasAccess(array $terms): string|array|null {
25        $metadata = new Metadata();
26        return $this->searchUtils()->getStaticResultQuery([
27            'link' => $metadata->getHref(),
28            'icon' => $metadata->getIconHref(),
29            'title' => "Apps: {$this->getPageTitle()}",
30            'text' => $this->getPageDescription(),
31        ], $terms);
32    }
33
34    public function getPageTitle(): string {
35        return "Newsletter";
36    }
37
38    public function getPageDescription(): string {
39        return "Hier kannst du Benachrichtigungen abonnieren. Damit wirst du automatisch per Mail und/oder Telegram über bevorstehende Termine, News und Aktualisierungen der Homepage benachrichtigt.";
40    }
41
42    public function getHtmlWhenHasAccess(mixed $args): string {
43        $this->httpUtils()->validateGetParams(OlzNewsletterParams::class);
44        $code_href = $this->envUtils()->getCodeHref();
45
46        $out = OlzHeader::render([
47            'back_link' => "{$code_href}service/",
48            'title' => $this->getPageTitle(),
49            'description' => $this->getPageDescription(),
50            'norobots' => true,
51        ]);
52
53        $user = $this->authUtils()->getCurrentUser();
54        $metadata = new Metadata();
55
56        $out .= "<div class='content-full'>";
57        if ($user) {
58            $out .= "<div class='responsive-flex'>";
59            $out .= "<div class='responsive-flex-2'>";
60            $out .= OlzTelegramCard::render();
61            $out .= "</div>";
62            $out .= "<div class='responsive-flex-2'>";
63            $out .= OlzEmailCard::render();
64            $out .= "</div>";
65            $out .= "</div>";
66        } else {
67            $out .= OlzNoAppAccess::render([
68                'app' => $metadata,
69            ]);
70        }
71        $out .= "</div>";
72
73        $out .= $metadata->getJsCssImports();
74        $out .= OlzFooter::render();
75
76        return $out;
77    }
78}