summaryrefslogtreecommitdiffstats
path: root/modules-available/sysconfig/page.inc.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules-available/sysconfig/page.inc.php')
-rw-r--r--modules-available/sysconfig/page.inc.php135
1 files changed, 35 insertions, 100 deletions
diff --git a/modules-available/sysconfig/page.inc.php b/modules-available/sysconfig/page.inc.php
index b64c7a5c..b11f399e 100644
--- a/modules-available/sysconfig/page.inc.php
+++ b/modules-available/sysconfig/page.inc.php
@@ -22,39 +22,6 @@ class Page_SysConfig extends Page
private $haveOverriddenLocations = false;
- /**
- * Add a known configuration module. Every addmoule_* file should call this
- * for its module provided.
- *
- * @param string $id Internal identifier for the module
- * @param string $startClass Class to start wizard for creating such a module
- * @param string $title Title of this module type
- * @param string $description Description for this module type
- * @param string $group Title for group this module type belongs to
- * @param bool $unique Can only one such module be added to a config?
- * @param int $sortOrder Lower comes first, alphabetical ordering otherwiese
- */
- public static function addModule($id, $startClass, $title, $description, $group, $unique, $sortOrder = 0)
- {
- self::$moduleTypes[$id] = array(
- 'startClass' => $startClass,
- 'title' => $title,
- 'description' => $description,
- 'group' => $group,
- 'unique' => $unique,
- 'sortOrder' => $sortOrder
- );
- }
-
- /**
- *
- * @return array All registered module types
- */
- public static function getModuleTypes()
- {
- return self::$moduleTypes;
- }
-
protected function doPreprocess()
{
User::load();
@@ -146,7 +113,7 @@ class Page_SysConfig extends Page
Render::addTemplate('sysconfig_heading');
- $action = Request::any('action', 'list');
+ $action = Request::any('action', 'list', 'string');
switch ($action) {
case 'addmodule':
User::assertPermission('module.edit');
@@ -177,25 +144,20 @@ class Page_SysConfig extends Page
return;
case 'module':
User::assertPermission('module.view-list');
- $listid = Request::post('list');
- if ($listid !== false) {
- $this->listModuleContents($listid);
- return;
- }
- break;
+ $listid = Request::post('list', Request::REQUIRED, 'int');
+ $this->listModuleContents($listid);
+ return;
case 'config':
User::assertPermission('config.view-list');
- $listid = Request::post('list');
- if ($listid !== false) {
- $this->listConfigContents($listid);
- return;
- }
- break;
+ $listid = Request::post('list', Request::REQUIRED, 'int');
+ $this->listConfigContents($listid);
+ return;
+ default:
}
Message::addError('invalid-action', $action, 'main');
}
- private function getLocationNames($locations, $ids)
+ private function getLocationNames(array $locations, array $ids): string
{
$ret = array();
foreach ($ids as $id) {
@@ -213,12 +175,12 @@ class Page_SysConfig extends Page
private function listConfigs()
{
// Configs
- $res = Database::simpleQuery("SELECT c.configid, c.title, c.filepath, c.status, c.dateline,
+ $res = Database::simpleQuery("SELECT c.configid, c.title, c.filepath, c.status, c.dateline, c.warnings,
GROUP_CONCAT(DISTINCT cl.locationid) AS loclist, GROUP_CONCAT(DISTINCT cxm.moduleid) AS modlist
FROM configtgz c
LEFT JOIN configtgz_x_module cxm USING (configid)
LEFT JOIN configtgz_location cl ON (c.configid = cl.configid)
- GROUP BY configid
+ GROUP BY configid, title
ORDER BY title ASC");
$configs = array();
if ($this->currentLoc !== 0) {
@@ -227,7 +189,7 @@ class Page_SysConfig extends Page
$locationName = false;
}
$hasDefault = false;
- while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
+ foreach ($res as $row) {
if (is_null($row['loclist'])) {
$locList = array();
} else {
@@ -247,6 +209,8 @@ class Page_SysConfig extends Page
$this->haveOverriddenLocations = true;
}
$configs[] = array(
+ 'warnings' => $row['warnings'],
+ 'warnings_hidden' => (!empty($row['warnings']) && $row['status'] === 'OK') ? '' : 'hidden',
'configid' => $row['configid'],
'config' => $row['title'],
'modlist' => $row['modlist'],
@@ -273,7 +237,7 @@ class Page_SysConfig extends Page
private function listModules()
{
// Config modules
- $modules = ConfigModule::getAll();
+ $modules = ConfigModule::getAll() ?? [];
$types = array_map(function ($mod) { return $mod->moduleType(); }, $modules);
$titles = array_map(function ($mod) { return $mod->title(); }, $modules);
array_multisort($types, SORT_ASC, $titles, SORT_ASC, $modules);
@@ -304,27 +268,7 @@ class Page_SysConfig extends Page
Taskmanager::addErrorMessage($status);
Util::redirect('?do=sysconfig&locationid=' . $this->currentLoc);
}
-
- // Sort files for better display
- $dirs = array();
- foreach ($status['data']['entries'] as $file) {
- if ($file['isdir'])
- continue;
- $dirs[dirname($file['name'])][] = $file;
- }
- ksort($dirs);
- $list = array();
- foreach ($dirs as $dir => $files) {
- $list[] = array(
- 'name' => $dir,
- 'isdir' => true
- );
- sort($files);
- foreach ($files as $file) {
- $file['size'] = Util::readableFileSize($file['size']);
- $list[] = $file;
- }
- }
+ $list = SysConfig::archiveContentsFromTask($status);
// render the template
Render::addDialog(Dictionary::translate('lang_contentOf') . ' ' . $row['title'], false, 'custom-filelist', array(
@@ -348,7 +292,7 @@ class Page_SysConfig extends Page
. " ORDER BY module.title ASC", array('configid' => $configid));
$modules = array();
- while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
+ foreach ($res as $row) {
$modules[] = array(
'module' => $row['moduletitle'],
'moduleid' => $row['moduleid']
@@ -363,11 +307,7 @@ class Page_SysConfig extends Page
private function activateConfig()
{
- $configid = Request::post('activate', false, 'int');
- if ($configid === false) {
- Message::addError('main.empty-field');
- Util::redirect('?do=sysconfig&locationid=' . $this->currentLoc);
- }
+ $configid = Request::post('activate', Request::REQUIRED, 'int');
// Validate that either the configid is valid (in case we override for a specific location)
// or that if the locationid is 0 (=global) that the configid exists, because it's not allowed
// to unset the global config
@@ -386,15 +326,18 @@ class Page_SysConfig extends Page
Database::exec("INSERT INTO configtgz_location (locationid, configid) VALUES (:locationid, :configid)"
. " ON DUPLICATE KEY UPDATE configid = :configid", compact('locationid', 'configid'));
}
- Event::activeConfigChanged();
+ $task = ConfigModuleBaseLdap::ldadp();
+ if ($task !== false) {
+ TaskmanagerCallback::addCallback($task, 'ldadpStartup');
+ }
Util::redirect('?do=sysconfig&locationid=' . $this->currentLoc);
}
private function rebuildConfig()
{
- $configid = Request::post('rebuild', 'MISSING');
+ $configid = Request::post('rebuild', Request::REQUIRED, 'int');
$config = ConfigTgz::get($configid);
- if ($config === false) {
+ if ($config === null) {
Message::addError('config-invalid', $configid);
Util::redirect('?do=sysconfig&locationid=' . $this->currentLoc);
}
@@ -410,7 +353,7 @@ class Page_SysConfig extends Page
private function delModule()
{
- $moduleid = Request::post('del', 'MISSING');
+ $moduleid = Request::post('del', Request::REQUIRED, 'int');
$module = Database::queryFirst("SELECT title, filepath FROM configtgz_module WHERE moduleid = :moduleid LIMIT 1", array('moduleid' => $moduleid));
if ($module === false) {
Message::addError('config-invalid', $moduleid);
@@ -433,9 +376,9 @@ class Page_SysConfig extends Page
Message::addSuccess('module-deleted', $module['title']);
}
// Rebuild depending config.tgz
- while ($crow = $existing->fetch(PDO::FETCH_ASSOC)) {
+ foreach ($existing as $crow) {
$config = ConfigTgz::get($crow['configid']);
- if ($config !== false) {
+ if ($config !== null) {
$config->generate();
}
}
@@ -444,7 +387,7 @@ class Page_SysConfig extends Page
private function downloadModule()
{
- $moduleid = Request::post('download', 'MISSING');
+ $moduleid = Request::post('download', Request::REQUIRED);
$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);
@@ -457,13 +400,13 @@ class Page_SysConfig extends Page
private function rebuildModule()
{
- $moduleid = Request::post('rebuild', 'MISSING');
+ $moduleid = Request::post('rebuild', Request::REQUIRED);
$module = ConfigModule::get($moduleid);
- if ($module === false) {
+ if ($module === null) {
Message::addError('config-invalid', $moduleid);
Util::redirect('?do=sysconfig');
}
- $ret = $module->generate(false, 250);
+ $ret = $module->generate(false, null, 500);
if ($ret === true)
Message::addSuccess('module-rebuilt', $module->title());
elseif ($ret === false)
@@ -475,9 +418,9 @@ class Page_SysConfig extends Page
private function delConfig()
{
- $configid = Request::post('del', 'MISSING');
+ $configid = Request::post('del', Request::REQUIRED);
$config = ConfigTgz::get($configid);
- if ($config === false) {
+ if ($config === null) {
Message::addError('config-invalid', $configid);
Util::redirect('?do=sysconfig&locationid=' . $this->currentLoc);
}
@@ -521,22 +464,14 @@ class Page_SysConfig extends Page
if (Request::post('action') === 'status') {
$mods = Request::post('mods');
$confs = Request::post('confs');
- $outMods = array();
- $outConfs = array();
$mods = explode(',', $mods);
$confs = explode(',', $confs);
// Mods
- $res = Database::simpleQuery("SELECT moduleid FROM configtgz_module
+ $outMods = Database::queryAll("SELECT moduleid AS id FROM configtgz_module
WHERE moduleid in (:mods) AND status = 'OK'", compact('mods'));
- while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
- $outMods[] = $row['moduleid'];
- }
// Confs
- $res = Database::simpleQuery("SELECT configid FROM configtgz
+ $outConfs = Database::queryAll("SELECT configid AS id, warnings FROM configtgz
WHERE configid in (:confs) AND status = 'OK'", compact('confs'));
- while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
- $outConfs[] = $row['configid'];
- }
Header('Content-Type: application/json');
die(json_encode(array('mods' => $outMods, 'confs' => $outConfs)));
}