Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 54
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 / 54
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 / 54
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_data = json_encode(['file' => $filename]);
38                    $edit_admin = <<<ZZZZZZZZZZ
39                        <button
40                            id='live-results-button'
41                            class='btn btn-secondary'
42                            onclick='return olzResults.initOlzLiveResultsModal({$enc_data})'
43                        >
44                            <img src='{$code_href}assets/icns/edit_white_16.svg' class='noborder' />
45                            Live Resultate überschreiben
46                        </button>
47                        <button
48                            id='edit-result-button'
49                            class='btn btn-secondary'
50                            onclick='return olzResults.initOlzEditResultModal({$enc_data})'
51                        >
52                            <img src='{$code_href}assets/icns/edit_white_16.svg' class='noborder' />
53                            Resultate bearbeiten
54                        </button>
55                        ZZZZZZZZZZ;
56                }
57                $out .= <<<ZZZZZZZZZZ
58                    {$edit_admin}
59                    <div id='title-box'>
60                        <div id='backbutton' onclick='olzResults.popHash()'>&lt;</div>
61                        <h1 id='title'></h1>
62                    </div>
63                    <div id='results-content'>
64                        <div id='classes-box'></div>
65                        <div id='content-box'></div>
66                        <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>
67                    </div>
68                    ZZZZZZZZZZ;
69            } elseif ($this->authUtils()->hasPermission('any')) {
70                $enc_data = json_encode(['file' => $filename]);
71                $out .= <<<ZZZZZZZZZZ
72                    <div>
73                        <button
74                            id='live-results-button'
75                            class='btn btn-secondary'
76                            onclick='return olzResults.initOlzLiveResultsModal({$enc_data})'
77                        >
78                            <img src='{$code_href}assets/icns/new_white_16.svg' class='noborder' />
79                            Live Resultate hochladen
80                        </button>
81                        <button
82                            id='create-result-button'
83                            class='btn btn-secondary'
84                            onclick='return olzResults.initOlzEditResultModal({$enc_data})'
85                        >
86                            <img src='{$code_href}assets/icns/new_white_16.svg' class='noborder' />
87                            Resultate hochladen
88                        </button>
89                    </div>
90                    ZZZZZZZZZZ;
91            } else {
92                $out .= OlzNoAppAccess::render([
93                    'app' => $metadata,
94                ]);
95            }
96        } else {
97            $out .= "<ul>";
98            $contents = scandir("{$data_path}results") ?: [];
99            foreach ($contents as $entry) {
100                if (preg_match('/\.xml$/', $entry) && !preg_match('/\.bak\./', $entry)) {
101                    $out .= "<li><a href='?file={$entry}'>{$entry}</a></li>\n";
102                }
103            }
104            $out .= "</ul>";
105            if ($this->authUtils()->hasPermission('any')) {
106                $out .= <<<ZZZZZZZZZZ
107                    <div>
108                        <button
109                            id='live-results-button'
110                            class='btn btn-secondary'
111                            onclick='return olzResults.initOlzLiveResultsModal()'
112                        >
113                            <img src='{$code_href}assets/icns/new_white_16.svg' class='noborder' />
114                            Live Resultate hochladen
115                        </button>
116                        <button
117                            id='create-result-button'
118                            class='btn btn-secondary'
119                            onclick='return olzResults.initOlzEditResultModal()'
120                        >
121                            <img src='{$code_href}assets/icns/new_white_16.svg' class='noborder' />
122                            Resultate hochladen
123                        </button>
124                    </div>
125                    ZZZZZZZZZZ;
126            }
127        }
128        $out .= "</div>";
129
130        $out .= $metadata->getJsCssImports();
131
132        $out .= OlzFooter::render();
133
134        return $out;
135    }
136}