Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 49
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
OlzResultsParams
n/a
0 / 0
n/a
0 / 0
0
n/a
0 / 0
OlzResults
0.00% covered (danger)
0.00%
0 / 49
0.00% covered (danger)
0.00%
0 / 1
110
0.00% covered (danger)
0.00%
0 / 1
 getHtml
0.00% covered (danger)
0.00%
0 / 49
0.00% covered (danger)
0.00%
0 / 1
110
1<?php
2
3namespace Olz\Apps\Results\Components\OlzResults;
4
5use Olz\Apps\Results\Metadata;
6use Olz\Components\Apps\OlzNoAppAccess\OlzNoAppAccess;
7use Olz\Components\Common\OlzComponent;
8use Olz\Components\Page\OlzFooter\OlzFooter;
9use Olz\Components\Page\OlzHeader\OlzHeader;
10use Olz\Utils\HttpParams;
11
12/** @extends HttpParams<array{file?: ?string}> */
13class OlzResultsParams extends HttpParams {
14}
15
16/** @extends OlzComponent<array<string, mixed>> */
17class OlzResults extends OlzComponent {
18    public function getHtml(mixed $args): string {
19        $this->httpUtils()->validateGetParams(OlzResultsParams::class);
20
21        $code_href = $this->envUtils()->getCodeHref();
22        $data_path = $this->envUtils()->getDataPath();
23        $filename = $this->getParams()['file'] ?? null;
24        $metadata = new Metadata();
25
26        $out = OlzHeader::render([
27            'back_link' => "{$code_href}service/",
28            'title' => "Resultate",
29            'norobots' => true,
30        ]);
31
32        $out .= "<div class='content-full'>";
33        if ($filename !== null) {
34            if (is_file("{$data_path}results/{$filename}")) {
35                $edit_admin = '';
36                if ($this->authUtils()->hasPermission('any')) {
37                    $enc_filename = json_encode(['file' => $filename]);
38                    $edit_admin = <<<ZZZZZZZZZZ
39                            <button
40                                id='edit-result-button'
41                                class='btn btn-secondary'
42                                onclick='return olzResults.initOlzEditResultModal(null, {$enc_filename})'
43                            >
44                                <img src='{$code_href}assets/icns/edit_white_16.svg' class='noborder' />
45                                Resultate bearbeiten
46                            </button>
47                        ZZZZZZZZZZ;
48                }
49                $out .= <<<ZZZZZZZZZZ
50                    {$edit_admin}
51                    <div id='title-box'>
52                        <div id='backbutton' onclick='olzResults.popHash()'>&lt;</div>
53                        <h1 id='title'></h1>
54                    </div>
55                    <div id='results-content'>
56                        <div id='classes-box'></div>
57                        <div id='content-box'></div>
58                        <div class='inactive' id='grafik-box'><svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' style='width:100%; height:100%;' id='grafik-svg'></svg></div>
59                    </div>
60                    ZZZZZZZZZZ;
61            } elseif ($this->authUtils()->hasPermission('any')) {
62                $enc_filename = json_encode(['file' => $filename]);
63                $out .= <<<ZZZZZZZZZZ
64                    <div>
65                        <button
66                            id='create-result-button'
67                            class='btn btn-secondary'
68                            onclick='return olzResults.initOlzEditResultModal(null, {$enc_filename})'
69                        >
70                            <img src='{$code_href}assets/icns/new_white_16.svg' class='noborder' />
71                            Resultate hochladen
72                        </button>
73                    </div>
74                    ZZZZZZZZZZ;
75            } else {
76                $out .= OlzNoAppAccess::render([
77                    'app' => $metadata,
78                ]);
79            }
80        } else {
81            $out .= "<ul>";
82            $contents = scandir("{$data_path}results") ?: [];
83            foreach ($contents as $entry) {
84                if (preg_match('/\.xml$/', $entry) && !preg_match('/\.bak\./', $entry)) {
85                    $out .= "<li><a href='?file={$entry}'>{$entry}</a></li>\n";
86                }
87            }
88            $out .= "</ul>";
89            if ($this->authUtils()->hasPermission('any')) {
90                $out .= <<<ZZZZZZZZZZ
91                    <div>
92                        <button
93                            id='create-result-button'
94                            class='btn btn-secondary'
95                            onclick='return olzResults.initOlzEditResultModal()'
96                        >
97                            <img src='{$code_href}assets/icns/new_white_16.svg' class='noborder' />
98                            Resultate hochladen
99                        </button>
100                    </div>
101                    ZZZZZZZZZZ;
102            }
103        }
104        $out .= "</div>";
105
106        $out .= $metadata->getJsCssImports();
107
108        $out .= OlzFooter::render();
109
110        return $out;
111    }
112}