validateConfig()) return false; return Taskmanager::submit('MakeTarball', array( 'files' => $this->getFileArray(), 'destination' => $tgz, 'parentTask' => $parent, ), false); } protected function moduleVersion(): int { return self::VERSION; } protected function validateConfig(): bool { return isset($this->moduleData['texts']['text-no-timeout']) && isset($this->moduleData['texts']['text-idle-kill']) && isset($this->moduleData['texts']['text-shutdown']) && isset($this->moduleData['qss']); } public function setData(string $key, $value): bool { switch ($key) { case 'qss': case 'texts': case 'messages': break; default: return false; } $this->moduleData[$key] = $value; return true; } public function allowDownload(): bool { return false; } /** * Creates a map with filepath => file content */ private function getFileArray(): array { $files = array( '/opt/openslx/xscreensaver/style.qss' => $this->moduleData['qss'], '/opt/openslx/xscreensaver/text-idle-kill' => $this->wrapHtmlTags('text-idle-kill'), '/opt/openslx/xscreensaver/text-no-timeout' => $this->wrapHtmlTags('text-no-timeout'), '/opt/openslx/xscreensaver/text-shutdown' => $this->wrapHtmlTags('text-shutdown'), ); /* Create the message.ini from the messages array */ $messages = ''; foreach ($this->moduleData['messages'] as $category => $array) { $messages .= '[' . $category . ']' . "\n"; foreach ($array as $key => $message) { $messages .= $key . '="' . str_replace(['\\', '"', "\n", "\r"], '-', $message) . '"' . "\n"; } } $files['/opt/openslx/xscreensaver/messages.ini'] = $messages; /* Add locked files if there are any */ if (isset($this->moduleData['texts']['text-idle-kill-locked'])) $files['/opt/openslx/xscreensaver/text-idle-kill-locked'] = $this->wrapHtmlTags('text-idle-kill-locked'); if (isset($this->moduleData['texts']['text-no-timeout-locked'])) $files['/opt/openslx/xscreensaver/text-no-timeout-locked'] = $this->wrapHtmlTags('text-no-timeout-locked'); if (isset($this->moduleData['texts']['text-shutdown-locked'])) $files['/opt/openslx/xscreensaver/text-shutdown-locked'] = $this->wrapHtmlTags('text-shutdown-locked'); return $files; } private function wrapHtmlTags(string $text_name): string { return '' . $this->moduleData['texts'][$text_name] . ''; } }