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