summaryrefslogtreecommitdiffstats
path: root/modules/sysconfig.inc.php
diff options
context:
space:
mode:
authorSimon Rettberg2015-01-26 20:28:49 +0100
committerSimon Rettberg2015-01-26 20:28:49 +0100
commit5347ecd5ddb1803ec1c43240bafc84f5c427f855 (patch)
tree7a852cdaa44599dab5f4c98b9daa7c6443d81024 /modules/sysconfig.inc.php
parentFix stupid bug in update query, check DB version before handling callbacks (diff)
downloadslx-admin-5347ecd5ddb1803ec1c43240bafc84f5c427f855.tar.gz
slx-admin-5347ecd5ddb1803ec1c43240bafc84f5c427f855.tar.xz
slx-admin-5347ecd5ddb1803ec1c43240bafc84f5c427f855.zip
Add configtgz class. Fix dozens of bugs
Diffstat (limited to 'modules/sysconfig.inc.php')
-rw-r--r--modules/sysconfig.inc.php83
1 files changed, 76 insertions, 7 deletions
diff --git a/modules/sysconfig.inc.php b/modules/sysconfig.inc.php
index 0da58767..94e2455a 100644
--- a/modules/sysconfig.inc.php
+++ b/modules/sysconfig.inc.php
@@ -25,6 +25,12 @@ class Page_SysConfig extends Page
if (Request::post('del', 'no') !== 'no') {
$this->delModule();
}
+ if (Request::post('download', 'no') !== 'no') {
+ $this->downloadModule();
+ }
+ if (Request::post('rebuild', 'no') !== 'no') {
+ $this->rebuildModule();
+ }
}
// Action: "addconfig" (compose config from one or more modules)
@@ -42,6 +48,10 @@ class Page_SysConfig extends Page
if (Request::post('activate', 'no') !== 'no') {
$this->activateConfig();
}
+ // Action "rebuild" (rebuild config.tgz from its modules)
+ if (Request::post('rebuild', 'no') !== 'no') {
+ $this->rebuildConfig();
+ }
}
}
@@ -88,7 +98,7 @@ class Page_SysConfig extends Page
private function listConfigs()
{
// Configs
- $res = Database::simpleQuery("SELECT configtgz.configid, configtgz.title, configtgz.filepath, GROUP_CONCAT(configtgz_x_module.moduleid) AS modlist"
+ $res = Database::simpleQuery("SELECT configtgz.configid, configtgz.title, configtgz.filepath, configtgz.status, GROUP_CONCAT(configtgz_x_module.moduleid) AS modlist"
. " FROM configtgz"
. " INNER JOIN configtgz_x_module USING (configid)"
. " GROUP BY configid"
@@ -99,22 +109,31 @@ class Page_SysConfig extends Page
'configid' => $row['configid'],
'config' => $row['title'],
'modlist' => $row['modlist'],
- 'current' => readlink(CONFIG_HTTP_DIR . '/default/config.tgz') === $row['filepath']
+ 'current' => readlink(CONFIG_HTTP_DIR . '/default/config.tgz') === $row['filepath'],
+ 'needrebuild' => ($row['status'] !== 'OK')
);
}
// Config modules
- $res = Database::simpleQuery("SELECT moduleid, title FROM configtgz_module ORDER BY title ASC");
+ $res = Database::simpleQuery("SELECT moduleid, title, moduletype, status FROM configtgz_module ORDER BY title ASC");
$modules = array();
while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
$modules[] = array(
'moduleid' => $row['moduleid'],
- 'module' => $row['title']
+ 'moduletype' => $row['moduletype'],
+ 'module' => $row['title'],
+ 'iscustom' => ($row['moduletype'] === 'CustomModule' || $row['moduletype'] === 'Branding'),
+ 'needrebuild' => ($row['status'] !== 'OK')
);
}
Render::addTemplate('sysconfig/_page', array(
'configs' => $configs,
'modules' => $modules
));
+ Render::addScriptTop('custom');
+ Render::addFooter('<script> $(window).load(function (e) {
+ forceTable($("#modtable"));
+ forceTable($("#conftable"));
+ }); // </script>');
}
private function listModuleContents($moduleid)
@@ -216,6 +235,25 @@ class Page_SysConfig extends Page
Util::redirect('?do=SysConfig');
}
+ private function rebuildConfig()
+ {
+ $configid = Request::post('rebuild', 'MISSING');
+ $config = ConfigTgz::get($configid);
+ if ($config === false) {
+ Message::addError('config-invalid', $configid);
+ Util::redirect('?do=SysConfig');
+ }
+ //$ret = $config->generate(false, 350); // TODO
+ $ret = $config->generate(false, 350) === 'OK'; // TODO
+ if ($ret === true)
+ Message::addSuccess('module-rebuilt', $config->title());
+ elseif ($ret === false)
+ Message::addError('module-rebuild-failed', $config->title());
+ else
+ Message::addInfo('module-rebuilding', $config->title());
+ Util::redirect('?do=SysConfig');
+ }
+
private function delModule()
{
$moduleid = Request::post('del', 'MISSING');
@@ -246,15 +284,46 @@ class Page_SysConfig extends Page
Util::redirect('?do=SysConfig');
}
+ private function downloadModule()
+ {
+ $moduleid = Request::post('download', 'MISSING');
+ $row = Database::queryFirst("SELECT title, filepath FROM configtgz_module WHERE moduleid = :moduleid LIMIT 1", array('moduleid' => $moduleid));
+ if ($row === false) {
+ Message::addError('config-invalid', $moduleid);
+ Util::redirect('?do=SysConfig');
+ }
+ if (!Util::sendFile($row['filepath'], $row['title'] . '.tgz'))
+ Util::redirect('?do=SysConfig');
+ exit(0);
+ }
+
+ private function rebuildModule()
+ {
+ $moduleid = Request::post('rebuild', 'MISSING');
+ $module = ConfigModule::get($moduleid);
+ if ($module === false) {
+ Message::addError('config-invalid', $moduleid);
+ Util::redirect('?do=SysConfig');
+ }
+ $ret = $module->generate(false, 250);
+ if ($ret === true)
+ Message::addSuccess('module-rebuilt', $module->title());
+ elseif ($ret === false)
+ Message::addError('module-rebuild-failed', $module->title());
+ else
+ Message::addInfo('module-rebuilding', $module->title());
+ Util::redirect('?do=SysConfig');
+ }
+
private function delConfig()
{
$configid = Request::post('del', 'MISSING');
- $module = ConfigModule::get($configid);
- if ($module === false) {
+ $config = ConfigTgz::get($configid);
+ if ($config === false) {
Message::addError('config-invalid', $configid);
Util::redirect('?do=SysConfig');
}
- $module->delete();
+ $config->delete();
Util::redirect('?do=SysConfig');
}