diff options
author | Simon Rettberg | 2014-12-12 18:28:38 +0100 |
---|---|---|
committer | Simon Rettberg | 2014-12-12 18:28:38 +0100 |
commit | 97a0f7dcfdcf4a5263c1cc6c19160a0868abb5f2 (patch) | |
tree | cf735055cfb785ac64e60ab477e215f5f50ad767 /modules | |
parent | [news] fix xml tags of news api (diff) | |
download | slx-admin-97a0f7dcfdcf4a5263c1cc6c19160a0868abb5f2.tar.gz slx-admin-97a0f7dcfdcf4a5263c1cc6c19160a0868abb5f2.tar.xz slx-admin-97a0f7dcfdcf4a5263c1cc6c19160a0868abb5f2.zip |
Rework config module class structure. Still some TODOs though....
Diffstat (limited to 'modules')
-rw-r--r-- | modules/session.inc.php | 34 | ||||
-rw-r--r-- | modules/sysconfig.inc.php | 58 | ||||
-rw-r--r-- | modules/sysconfig/addconfig.inc.php | 2 | ||||
-rw-r--r-- | modules/sysconfig/addmodule.inc.php | 2 | ||||
-rw-r--r-- | modules/sysconfig/addmodule_adauth.inc.php (renamed from modules/sysconfig/addmodule_ad.inc.php) | 35 | ||||
-rw-r--r-- | modules/sysconfig/addmodule_branding.inc.php | 4 | ||||
-rw-r--r-- | modules/sysconfig/addmodule_custommodule.inc.php (renamed from modules/sysconfig/addmodule_custom.inc.php) | 6 | ||||
-rw-r--r-- | modules/translation.inc.php | 2 | ||||
-rw-r--r-- | modules/webinterface.inc.php | 2 |
9 files changed, 47 insertions, 98 deletions
diff --git a/modules/session.inc.php b/modules/session.inc.php index 42963e63..5b9bc7fc 100644 --- a/modules/session.inc.php +++ b/modules/session.inc.php @@ -2,43 +2,37 @@ class Page_Session extends Page { - + protected function doPreprocess() { - if (!isset($_REQUEST['action'])) Util::traceError('No action on module init'); - User::load(); - if (isset($_POST['action']) && $_POST['action'] === 'login') { + if (Request::post('action') === 'login') { // Login - see if already logged in - if (User::isLoggedIn()) { + if (User::isLoggedIn()) // and then just redirect Util::redirect('?do=Main'); - } // Else, try to log in - if (User::login($_POST['user'], $_POST['pass'])) { + if (User::login(Request::post('user'), Request::post('pass'))) Util::redirect('?do=Main'); - } - // Login credentials wrong + // Login credentials wrong - delay and show error message sleep(1); Message::addError('loginfail'); } - if ($_REQUEST['action'] === 'logout') { - if (Util::verifyToken()) { - // Log user out (or do nothing if not logged in) - User::logout(); - Util::redirect('?do=Main'); - } + if (Request::post('action') === 'logout') { + // Log user out (or do nothing if not logged in) + User::logout(); + Util::redirect('?do=Main'); } + + if (User::isLoggedIn()) + Util::redirect('?do=Main'); } protected function doRender() { - if ($_REQUEST['action'] === 'login') { - Render::setTitle(Dictionary::translate('lang_login')); - Render::addTemplate('page-login'); - return; - } + Render::setTitle(Dictionary::translate('lang_login')); + Render::addTemplate('page-login'); } } diff --git a/modules/sysconfig.inc.php b/modules/sysconfig.inc.php index 6bb96c80..134f3143 100644 --- a/modules/sysconfig.inc.php +++ b/modules/sysconfig.inc.php @@ -3,45 +3,6 @@ class Page_SysConfig extends Page { - /** - * Holds all the known configuration modules, with title, description, start class for their wizard, etc. - * @var array - */ - protected static $moduleTypes = array(); - - /** - * 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(); @@ -53,12 +14,6 @@ class Page_SysConfig extends Page $action = Request::any('action', 'list'); - // Load all addmodule classes, as they populate the $moduleTypes array - require_once 'modules/sysconfig/addmodule.inc.php'; - foreach (glob('modules/sysconfig/addmodule_*.inc.php') as $file) { - require_once $file; - } - // Action: "addmodule" (upload new module) if ($action === 'addmodule') { $this->initAddModule(); @@ -316,21 +271,24 @@ class Page_SysConfig extends Page private function initAddModule() { + ConfigModules::loadDb(); + require_once 'modules/sysconfig/addmodule.inc.php'; $step = Request::any('step', 0); - if ($step === 0) + if ($step === 0) { $step = 'AddModule_Start'; + } elseif (!class_exists($step) && preg_match('/^([a-zA-Z0-9]+)_/', $step, $out)) { + require_once 'modules/sysconfig/addmodule_' . strtolower($out[1]) . '.inc.php'; + } AddModule_Base::setStep($step); } private function initAddConfig() { + ConfigModules::loadDb(); + require_once 'modules/sysconfig/addconfig.inc.php'; $step = Request::any('step', 0); if ($step === 0) $step = 'AddConfig_Start'; - require_once 'modules/sysconfig/addconfig.inc.php'; - foreach (glob('modules/sysconfig/addconfig_*.inc.php') as $file) { - require_once $file; - } AddConfig_Base::setStep($step); } diff --git a/modules/sysconfig/addconfig.inc.php b/modules/sysconfig/addconfig.inc.php index 1e2e870a..0f35095f 100644 --- a/modules/sysconfig/addconfig.inc.php +++ b/modules/sysconfig/addconfig.inc.php @@ -108,7 +108,7 @@ class AddConfig_Start extends AddConfig_Base protected function renderInternal() { - $mods = Page_SysConfig::getModuleTypes(); + $mods = ConfigModules::getList(); $res = Database::simpleQuery("SELECT moduleid, title, moduletype, filepath FROM configtgz_module" . " ORDER BY title ASC"); while ($row = $res->fetch(PDO::FETCH_ASSOC)) { diff --git a/modules/sysconfig/addmodule.inc.php b/modules/sysconfig/addmodule.inc.php index 1191570d..7fa5b5b9 100644 --- a/modules/sysconfig/addmodule.inc.php +++ b/modules/sysconfig/addmodule.inc.php @@ -109,7 +109,7 @@ class AddModule_Start extends AddModule_Base protected function renderInternal() { $title = $order = array(); - $mods = Page_SysConfig::getModuleTypes(); + $mods = ConfigModules::getList(); foreach ($mods as $module) { $title[] = $module['title']; $order[] = $module['sortOrder']; diff --git a/modules/sysconfig/addmodule_ad.inc.php b/modules/sysconfig/addmodule_adauth.inc.php index d43c9129..4873d505 100644 --- a/modules/sysconfig/addmodule_ad.inc.php +++ b/modules/sysconfig/addmodule_adauth.inc.php @@ -4,10 +4,7 @@ * Wizard for setting up active directory integration for authentication. */ -Page_SysConfig::addModule('AD_AUTH', 'AdModule_Start', Dictionary::translate('lang_adAuthentication'), Dictionary::translate('lang_adModule'), Dictionary::translate('lang_authentication'), true -); - -class AdModule_Start extends AddModule_Base +class AdAuth_Start extends AddModule_Base { protected function renderInternal() @@ -15,7 +12,7 @@ class AdModule_Start extends AddModule_Base Session::set('ad_check', false); Session::save(); Render::addDialog(Dictionary::translate('lang_adAuthentication'), false, 'sysconfig/ad-start', array( - 'step' => 'AdModule_CheckConnection', + 'step' => 'AdAuth_CheckConnection', 'title' => Request::post('title'), 'server' => Request::post('server'), 'searchbase' => Request::post('searchbase'), @@ -27,7 +24,7 @@ class AdModule_Start extends AddModule_Base } -class AdModule_CheckConnection extends AddModule_Base +class AdAuth_CheckConnection extends AddModule_Base { private $taskIds; @@ -41,7 +38,7 @@ class AdModule_CheckConnection extends AddModule_Base $bindpw = Request::post('bindpw'); if (empty($server) || empty($binddn)) { Message::addError('empty-field'); - AddModule_Base::setStep('AdModule_Start'); // Continues with AdModule_Start for render() + AddModule_Base::setStep('AdAuth_Start'); // Continues with AdAuth_Start for render() return; } $parent = null; @@ -57,7 +54,7 @@ class AdModule_CheckConnection extends AddModule_Base 'username' => $user )); if (!isset($selfSearch['id'])) { - AddModule_Base::setStep('AdModule_Start'); // Continues with AdModule_Start for render() + AddModule_Base::setStep('AdAuth_Start'); // Continues with AdAuth_Start for render() return; } $parent = $selfSearch['id']; @@ -70,7 +67,7 @@ class AdModule_CheckConnection extends AddModule_Base 'bindpw' => $bindpw )); if (!isset($ldapSearch['id'])) { - AddModule_Base::setStep('AdModule_Start'); // Continues with AdModule_Start for render() + AddModule_Base::setStep('AdAuth_Start'); // Continues with AdAuth_Start for render() return; } $this->taskIds = array( @@ -90,14 +87,14 @@ class AdModule_CheckConnection extends AddModule_Base 'bindpw' => Request::post('bindpw'), 'home' => Request::post('home'), 'originalbinddn' => $this->originalBindDn, - 'step' => 'AdModule_Finish' + 'step' => 'AdAuth_Finish' )) ); } } -class AdModule_Finish extends AddModule_Base +class AdAuth_Finish extends AddModule_Base { private $taskIds; @@ -107,26 +104,32 @@ class AdModule_Finish extends AddModule_Base $binddn = Request::post('binddn'); $searchbase = Request::post('searchbase'); if (empty($searchbase)) { + // If no search base was given, determine it from the dn $originalBindDn = str_replace('\\', '/', trim(Request::post('originalbinddn'))); if (!preg_match('#^([^/]+)/[^/]+$#', $originalBindDn, $out)) { Message::addError('value-invalid', 'binddn', $originalBindDn); - Util::redirect('?do=SysConfig&action=addmodule&step=AdModule_Start'); - } + Util::redirect('?do=SysConfig&action=addmodule&step=AdAuth_Start'); + } // $out[1] is the domain + // Find the domain in the dn $i = mb_stripos($binddn, '=' . $out[1] . ','); if ($i === false) { Message::addError('value-invalid', 'binddn', $out[1]); - Util::redirect('?do=SysConfig&action=addmodule&step=AdModule_Start'); + Util::redirect('?do=SysConfig&action=addmodule&step=AdAuth_Start'); } + // Now find ',' before it so we get the key + $i = mb_strrpos(mb_substr($binddn, 0, $i), ','); + if ($i === false) + $i = -1; $searchbase = mb_substr($binddn, $i + 1); } $title = Request::post('title'); if (empty($title)) $title = 'AD: ' . Request::post('server'); - $config = ConfigModule::insertAdConfig($title, Request::post('server'), $searchbase, $binddn, Request::post('bindpw', ''), Request::post('home', '')); + $config = ConfigModule_AdAuth::insert($title, Request::post('server'), $searchbase, $binddn, Request::post('bindpw', ''), Request::post('home', '')); $config['proxyip'] = Property::getServerIp(); $tgz = Taskmanager::submit('CreateAdConfig', $config); if (!isset($tgz['id'])) { - AddModule_Base::setStep('AdModule_Start'); // Continues with AdModule_Start for render() + AddModule_Base::setStep('AdAuth_Start'); // Continues with AdAuth_Start for render() return; } $this->taskIds = array( diff --git a/modules/sysconfig/addmodule_branding.inc.php b/modules/sysconfig/addmodule_branding.inc.php index 9612bedb..a6c16d9d 100644 --- a/modules/sysconfig/addmodule_branding.inc.php +++ b/modules/sysconfig/addmodule_branding.inc.php @@ -4,8 +4,6 @@ * Wizard for including a branding logo. */ -Page_SysConfig::addModule('BRANDING', 'Branding_Start', Dictionary::translate('lang_institutionLogo'), Dictionary::translate('lang_institutionLogo'), 'Branding', true); - class Branding_Start extends AddModule_Base { @@ -199,7 +197,7 @@ class Branding_Finish extends AddModule_Base Message::addError('missing-file'); Util::redirect('?do=SysConfig&action=addmodule&step=Branding_Start'); } - if (!ConfigModule::insertBrandingModule($title, $tgz)) + if (!ConfigModule_Branding::insert($title, $tgz)) Util::redirect('?do=SysConfig&action=addmodule&step=Branding_Start'); Session::set('logo_tgz', false); Session::save(); diff --git a/modules/sysconfig/addmodule_custom.inc.php b/modules/sysconfig/addmodule_custommodule.inc.php index f79313e8..66ba33a5 100644 --- a/modules/sysconfig/addmodule_custom.inc.php +++ b/modules/sysconfig/addmodule_custommodule.inc.php @@ -6,11 +6,7 @@ * fancy is happening. */ -Page_SysConfig::addModule('custom', 'CustomModule_UploadForm', Dictionary::translate('lang_generic'), - Dictionary::translate('lang_addCustomModuleInfo'), Dictionary::translate('lang_generic'), false, 100 -); - -class CustomModule_UploadForm extends AddModule_Base +class CustomModule_Start extends AddModule_Base { protected function renderInternal() diff --git a/modules/translation.inc.php b/modules/translation.inc.php index 85524d92..4dc2f515 100644 --- a/modules/translation.inc.php +++ b/modules/translation.inc.php @@ -271,7 +271,7 @@ class Page_Translation extends Page */ private function loadHardcodedStringEditArray() { - $tags = $this->loadTagsFromPhp('/Dictionary\s*::\s*translate\s*\(\s*[\'"](.*?)[\'"]\s*\)/i'); + $tags = $this->loadTagsFromPhp('/Dictionary\s*::\s*translate\s*\(\s*[\'"]([^\'"]*?)[\'"]\s*\)/i'); if ($tags === false) return false; return $this->buildTranslationTable('messages-hardcoded', $tags); diff --git a/modules/webinterface.inc.php b/modules/webinterface.inc.php index fcaf923b..f3780277 100644 --- a/modules/webinterface.inc.php +++ b/modules/webinterface.inc.php @@ -48,7 +48,7 @@ class Page_WebInterface extends Page protected function doRender() { - Render::setTitle(Dictionary::translate('title-webinterface')); + Render::setTitle(Dictionary::translate('lang_titleWebinterface')); if (Request::get('show') === 'httpsupdate') { Render::addTemplate('webinterface/httpd-restart', array('taskid' => Session::get('https-id'))); } |