Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 40
0.00% covered (danger)
0.00%
0 / 5
CRAP
0.00% covered (danger)
0.00%
0 / 1
OlzEmailReaktionParams
n/a
0 / 0
n/a
0 / 0
0
n/a
0 / 0
OlzEmailReaktion
0.00% covered (danger)
0.00%
0 / 40
0.00% covered (danger)
0.00%
0 / 5
210
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 / 1
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 / 36
0.00% covered (danger)
0.00%
0 / 1
110
1<?php
2
3namespace Olz\Components\Auth\OlzEmailReaktion;
4
5use Olz\Components\Common\OlzRootComponent;
6use Olz\Components\Page\OlzFooter\OlzFooter;
7use Olz\Components\Page\OlzHeader\OlzHeader;
8use Olz\Utils\HttpParams;
9
10/** @extends HttpParams<array{token?: ?string}> */
11class OlzEmailReaktionParams extends HttpParams {
12}
13
14/** @extends OlzRootComponent<array<string, mixed>> */
15class OlzEmailReaktion extends OlzRootComponent {
16    public function hasAccess(): bool {
17        return true;
18    }
19
20    public function searchSqlWhenHasAccess(array $terms): string|array|null {
21        return null;
22    }
23
24    public function getPageTitle(): string {
25        return "Reaktion auf E-Mail";
26    }
27
28    public function getPageDescription(): string {
29        return "Reaktion auf E-Mail";
30    }
31
32    public function getHtmlWhenHasAccess(mixed $args): string {
33        $params = $this->httpUtils()->validateGetParams(OlzEmailReaktionParams::class);
34        $code_href = $this->envUtils()->getCodeHref();
35        $token = $params['token'] ?? '';
36        $js_token = htmlentities(json_encode($token) ?: '');
37        $reaction_data = $this->emailUtils()->decryptEmailReactionToken($token);
38
39        $out = OlzHeader::render([
40            'title' => $this->getPageTitle(),
41            'description' => $this->getPageDescription(),
42            'norobots' => true,
43        ]);
44
45        $out .= "<div class='content-full'>";
46
47        if ($reaction_data) {
48            $question = null;
49            if ($reaction_data['action'] == 'unsubscribe') {
50                if (($reaction_data['notification_type'] ?? null) !== null) {
51                    $question = "<p>Willst du wirklich <b>alle E-Mail dieser Art abbestellen?</b></p>";
52                } elseif (isset($reaction_data['notification_type_all'])) {
53                    $question = "<p>Willst du wirklich <b>jegliche E-Mails von OL Zimmerberg abbestellen?</b></p>";
54                } else {
55                    $question = "<p>Hier ist etwas falsch gelaufen! Dies ist eine unbekannte Aktion. Trotzdem probieren?</p>";
56                }
57            }
58            if ($reaction_data['action'] == 'reset_password') {
59                $question = "<p>Willst du wirklich <b>dein Passwort zurücksetzen?</b></p>";
60            }
61            if ($reaction_data['action'] == 'verify_email') {
62                $question = "<p>Willst du <b>deine E-Mail-Adresse bestätigen?</b></p>";
63            }
64            if ($reaction_data['action'] == 'delete_news') {
65                $question = "<p>Willst du wirklich <b>deinen anonymen Forumseintrag löschen?</b></p>";
66            }
67            if ($question) {
68                $out .= <<<ZZZZZZZZZZ
69                    {$question}
70                    <p>
71                        <a
72                            class='btn btn-secondary'
73                            href='{$code_href}'
74                            role='button'
75                        >
76                            Abbrechen
77                        </a>
78                        <button
79                            id='execute-reaction-button'
80                            class='btn btn-danger'
81                            type='submit'
82                            onclick='olz.olzExecuteEmailReaction({$js_token})'
83                        >
84                            Ausführen
85                        </button>
86                    </p>
87                    <div id='email-reaction-success-message' class='alert alert-success' role='alert'></div>
88                    <div id='email-reaction-error-message' class='alert alert-danger' role='alert'></div>
89                    ZZZZZZZZZZ;
90            } else {
91                $out .= "<div class='alert alert-danger' role='alert'>Ungültiger Link!</div>";
92            }
93        } else {
94            $out .= "<div class='alert alert-danger' role='alert'>Ungültiger Link!</div>";
95        }
96
97        $out .= "</div>";
98
99        $out .= OlzFooter::render();
100        return $out;
101    }
102}