summaryrefslogtreecommitdiffstats
path: root/modules-available/sysconfig/inc/configmodule/screensaver.inc.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules-available/sysconfig/inc/configmodule/screensaver.inc.php')
-rw-r--r--modules-available/sysconfig/inc/configmodule/screensaver.inc.php107
1 files changed, 107 insertions, 0 deletions
diff --git a/modules-available/sysconfig/inc/configmodule/screensaver.inc.php b/modules-available/sysconfig/inc/configmodule/screensaver.inc.php
new file mode 100644
index 00000000..813b040d
--- /dev/null
+++ b/modules-available/sysconfig/inc/configmodule/screensaver.inc.php
@@ -0,0 +1,107 @@
+<?php
+
+ConfigModule::registerModule(
+ ConfigModule_Screensaver::MODID, // ID
+ Dictionary::translateFileModule('sysconfig', 'config-module', 'screensaver_title'), // Title
+ Dictionary::translateFileModule('sysconfig', 'config-module', 'screensaver_description'), // Description
+ Dictionary::translateFileModule('sysconfig', 'config-module', 'group_generic'), // Group
+ true, // Only one per config?
+ 100 // Sort order
+);
+
+class ConfigModule_Screensaver extends ConfigModule
+{
+ const MODID = 'Screensaver';
+ const VERSION = 1;
+
+ protected function generateInternal($tgz, $parent)
+ {
+ /* Validate if all data are available */
+ if (!$this->validateConfig())
+ return false;
+
+ /* Give the Taskmanager the job and create the tgz */
+ $taskId = 'xscreensaver' . mt_rand() . '-' . microtime(true);
+
+ $task = Taskmanager::submit('MakeTarball', array(
+ 'id' => $taskId,
+ 'files' => $this->getFileArray(),
+ 'destination' => $tgz,
+ ), false);
+
+ return $task;
+ }
+
+ protected function moduleVersion()
+ {
+ return self::VERSION;
+ }
+
+ protected function validateConfig()
+ {
+ return isset($this->moduleData['qss']) &&
+ isset($this->moduleData['texts']) &&
+ isset($this->moduleData['texts']['text-idle-kill']) &&
+ isset($this->moduleData['texts']['text-no-timeout']) &&
+ isset($this->moduleData['texts']['text-shutdown']);
+ }
+
+ public function setData($key, $value)
+ {
+ switch ($key) {
+ case 'qss':
+ case 'texts':
+ case 'messages':
+ break;
+ default:
+ return false;
+ }
+ $this->moduleData[$key] = $value;
+ return true;
+ }
+
+ public function allowDownload()
+ {
+ return true;
+ }
+
+ /**
+ * Creates a map with filepath => file content
+ *
+ * @return array in the form of Map<String, byte[]>
+ */
+ private function getFileArray()
+ {
+ $files = array(
+ '/opt/openslx/xscreensaver/style.qss' => array_values(unpack('C*', $this->moduleData['qss'])),
+ '/opt/openslx/xscreensaver/text-idle-kill' => array_values(unpack('C*', $this->wrapHtmlTags('text-idle-kill'))),
+ '/opt/openslx/xscreensaver/text-no-timeout' => array_values(unpack('C*', $this->wrapHtmlTags('text-no-timeout'))),
+ '/opt/openslx/xscreensaver/text-shutdown' => array_values(unpack('C*', $this->wrapHtmlTags('text-shutdown'))),
+ );
+
+ /* Create the message.ini from the messages array */
+ $messages = '';
+ foreach ($this->moduleData['messages'] as $categorie => $array) {
+ $messages = $messages . '[' . $categorie . ']' . "\n";
+ foreach ($array as $key => $message) {
+ $messages = $messages . $key . '="' . $message . '"' . "\n";
+ }
+ }
+ $files['/opt/openslx/xscreensaver/messages.ini'] = array_values(unpack('C*', $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'] = array_values(unpack('C*', $this->wrapHtmlTags('text-idle-kill-locked')));
+ if (isset($this->moduleData['texts']['text-no-timeout-locked']))
+ $files['/opt/openslx/xscreensaver/text-no-timeout-locked'] = array_values(unpack('C*', $this->wrapHtmlTags('text-no-timeout-locked')));
+ if (isset($this->moduleData['texts']['text-shutdown-locked']))
+ $files['/opt/openslx/xscreensaver/text-shutdown-locked'] = array_values(unpack('C*', $this->wrapHtmlTags('text-shutdown-locked')));
+
+ return $files;
+ }
+
+ private function wrapHtmlTags($text_name)
+ {
+ return '<html><body>' . $this->moduleData['texts'][$text_name] . '</body></html>';
+ }
+}