summaryrefslogtreecommitdiffstats
path: root/modules-available/sysconfig/inc
diff options
context:
space:
mode:
authorSimon Rettberg2017-11-03 17:53:13 +0100
committerSimon Rettberg2017-11-03 17:53:13 +0100
commit764ec440d8594c68a6c778f58aee2d7888b89204 (patch)
treee4db86bb1ef7fad95a4d12c57d1d35e36d888333 /modules-available/sysconfig/inc
parent[sysconfig] Fix: Empty config.tgz modules disappeared from the list (diff)
downloadslx-admin-764ec440d8594c68a6c778f58aee2d7888b89204.tar.gz
slx-admin-764ec440d8594c68a6c778f58aee2d7888b89204.tar.xz
slx-admin-764ec440d8594c68a6c778f58aee2d7888b89204.zip
[sysconfig/runmode] Deliver bare config.tgz with just global hook data when "no sysconfig" is set for a runmode
Diffstat (limited to 'modules-available/sysconfig/inc')
-rw-r--r--modules-available/sysconfig/inc/configtgz.inc.php49
-rw-r--r--modules-available/sysconfig/inc/sysconfig.inc.php2
2 files changed, 34 insertions, 17 deletions
diff --git a/modules-available/sysconfig/inc/configtgz.inc.php b/modules-available/sysconfig/inc/configtgz.inc.php
index c03d1c5e..dbf1bc99 100644
--- a/modules-available/sysconfig/inc/configtgz.inc.php
+++ b/modules-available/sysconfig/inc/configtgz.inc.php
@@ -12,7 +12,7 @@ class ConfigTgz
{
;
}
-
+
public function id()
{
return $this->configId;
@@ -101,22 +101,9 @@ class ConfigTgz
if (!empty($module['filepath']) && file_exists($module['filepath']))
$files[] = $module['filepath'];
}
- // Get stuff other modules want to inject
- $handler = function($hook) {
- include $hook->file;
- return isset($file) ? $file : false;
- };
- foreach (Hook::load('config-tgz') as $hook) {
- $file = $handler($hook);
- if ($file !== false) {
- $files[] = $file;
- }
- }
- // Hand over to tm
- $task = Taskmanager::submit('RecompressArchive', array(
- 'inputFiles' => $files,
- 'outputFile' => $this->file
- ));
+
+ $task = self::recompress($files, $this->file);
+
// Wait for completion
if ($timeoutMs > 0 && !Taskmanager::isFailed($task) && !Taskmanager::isFinished($task))
$task = Taskmanager::waitComplete($task, $timeoutMs);
@@ -199,6 +186,32 @@ class ConfigTgz
*/
/**
+ * @param string[] $files source files to include
+ * @param string $destFile where to store final result
+ * @return false|array taskmanager task
+ */
+ private static function recompress($files, $destFile)
+ {
+ // Get stuff other modules want to inject
+ $handler = function($hook) {
+ include $hook->file;
+ return isset($file) ? $file : false;
+ };
+ foreach (Hook::load('config-tgz') as $hook) {
+ $file = $handler($hook);
+ if ($file !== false) {
+ $files[] = $file;
+ }
+ }
+
+ // Hand over to tm
+ return Taskmanager::submit('RecompressArchive', array(
+ 'inputFiles' => $files,
+ 'outputFile' =>$destFile
+ ));
+ }
+
+ /**
* Marks all modules as outdated and triggers generate()
* on each one. This mostly makes sense to call if a global module
* that is injected via a hook has changed.
@@ -215,6 +228,8 @@ class ConfigTgz
$module->generate();
}
}
+ // Build the global "empty" config that just includes global hooks
+ self::recompress([], SysConfig::GLOBAL_MINIMAL_CONFIG);
}
public static function insert($title, $moduleIds)
diff --git a/modules-available/sysconfig/inc/sysconfig.inc.php b/modules-available/sysconfig/inc/sysconfig.inc.php
index 15bd4104..13549948 100644
--- a/modules-available/sysconfig/inc/sysconfig.inc.php
+++ b/modules-available/sysconfig/inc/sysconfig.inc.php
@@ -3,6 +3,8 @@
class SysConfig
{
+ const GLOBAL_MINIMAL_CONFIG = '/opt/openslx/configs/config-global.tgz';
+
public static function getAll()
{
$res = Database::simpleQuery("SELECT c.configid, c.title, c.filepath, c.status, Group_Concat(cl.locationid) AS locs FROM configtgz c"