Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 56
0.00% covered (danger)
0.00%
0 / 3
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 / 56
0.00% covered (danger)
0.00%
0 / 3
156
0.00% covered (danger)
0.00%
0 / 1
 getSearchTitle
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getSearchResults
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 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\OlzRootComponent;
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 OlzRootComponent<array<string, mixed>> */
17class OlzResults extends OlzRootComponent {
18    public function getSearchTitle(): string {
19        return 'TODO';
20    }
21
22    public function getSearchResults(array $terms): array {
23        return [];
24    }
25
26    public function getHtml(mixed $args): string {
27        $this->httpUtils()->validateGetParams(OlzResultsParams::class);
28
29        $code_href = $this->envUtils()->getCodeHref();
30        $data_path = $this->envUtils()->getDataPath();
31        $filename = $this->getParams()['file'] ?? null;
32        $metadata = new Metadata();
33
34        $out = OlzHeader::render([
35            'back_link' => "{$code_href}service/",
36            'title' => "Resultate",
37            'norobots' => true,
38        ]);
39
40        $out .= "<div class='content-full'>";
41        if ($filename !== null) {
42            if (is_file("{$data_path}results/{$filename}")) {
43                $edit_admin = '';
44                if ($this->authUtils()->hasPermission('any')) {
45                    $enc_data = json_encode(['file' => $filename]);
46                    $edit_admin = <<<ZZZZZZZZZZ
47                        <button
48                            id='live-results-button'
49                            class='btn btn-secondary'
50                            onclick='return olzResults.initOlzLiveResultsModal({$enc_data})'
51                        >
52                            <img src='{$code_href}assets/icns/edit_white_16.svg' class='noborder' />
53                            Live Resultate überschreiben
54                        </button>
55                        <button
56                            id='edit-result-button'
57                            class='btn btn-secondary'
58                            onclick='return olzResults.initOlzEditResultModal({$enc_data})'
59                        >
60                            <img src='{$code_href}assets/icns/edit_white_16.svg' class='noborder' />
61                            Resultate bearbeiten
62                        </button>
63                        ZZZZZZZZZZ;
64                }
65                $out .= <<<ZZZZZZZZZZ
66                    {$edit_admin}
67                    <div id='title-box'>
68                        <div id='backbutton' onclick='olzResults.popHash()'>&lt;</div>
69                        <h1 id='title'></h1>
70                    </div>
71                    <div id='results-content'>
72                        <div id='classes-box'></div>
73                        <div id='content-box'></div>
74                        <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>
75                    </div>
76                    ZZZZZZZZZZ;
77            } elseif ($this->authUtils()->hasPermission('any')) {
78                $enc_data = json_encode(['file' => $filename]);
79                $out .= <<<ZZZZZZZZZZ
80                    <div>
81                        <button
82                            id='live-results-button'
83                            class='btn btn-secondary'
84                            onclick='return olzResults.initOlzLiveResultsModal({$enc_data})'
85                        >
86                            <img src='{$code_href}assets/icns/new_white_16.svg' class='noborder' />
87                            Live Resultate hochladen
88                        </button>
89                        <button
90                            id='create-result-button'
91                            class='btn btn-secondary'
92                            onclick='return olzResults.initOlzEditResultModal({$enc_data})'
93                        >
94                            <img src='{$code_href}assets/icns/new_white_16.svg' class='noborder' />
95                            Resultate hochladen
96                        </button>
97                    </div>
98                    ZZZZZZZZZZ;
99            } else {
100                $out .= OlzNoAppAccess::render([
101                    'app' => $metadata,
102                ]);
103            }
104        } else {
105            $out .= "<ul>";
106            $contents = scandir("{$data_path}results") ?: [];
107            foreach ($contents as $entry) {
108                if (preg_match('/\.xml$/', $entry) && !preg_match('/\.bak\./', $entry)) {
109                    $out .= "<li><a href='?file={$entry}'>{$entry}</a></li>\n";
110                }
111            }
112            $out .= "</ul>";
113            if ($this->authUtils()->hasPermission('any')) {
114                $out .= <<<ZZZZZZZZZZ
115                    <div>
116                        <button
117                            id='live-results-button'
118                            class='btn btn-secondary'
119                            onclick='return olzResults.initOlzLiveResultsModal()'
120                        >
121                            <img src='{$code_href}assets/icns/new_white_16.svg' class='noborder' />
122                            Live Resultate hochladen
123                        </button>
124                        <button
125                            id='create-result-button'
126                            class='btn btn-secondary'
127                            onclick='return olzResults.initOlzEditResultModal()'
128                        >
129                            <img src='{$code_href}assets/icns/new_white_16.svg' class='noborder' />
130                            Resultate hochladen
131                        </button>
132                    </div>
133                    ZZZZZZZZZZ;
134            }
135        }
136        $out .= "</div>";
137
138        $out .= $metadata->getJsCssImports();
139
140        $out .= OlzFooter::render();
141
142        return $out;
143    }
144}