summaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorSimon Rettberg2014-12-12 18:28:38 +0100
committerSimon Rettberg2014-12-12 18:28:38 +0100
commit97a0f7dcfdcf4a5263c1cc6c19160a0868abb5f2 (patch)
treecf735055cfb785ac64e60ab477e215f5f50ad767 /modules
parent[news] fix xml tags of news api (diff)
downloadslx-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.php34
-rw-r--r--modules/sysconfig.inc.php58
-rw-r--r--modules/sysconfig/addconfig.inc.php2
-rw-r--r--modules/sysconfig/addmodule.inc.php2
-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.php4
-rw-r--r--modules/sysconfig/addmodule_custommodule.inc.php (renamed from modules/sysconfig/addmodule_custom.inc.php)6
-rw-r--r--modules/translation.inc.php2
-rw-r--r--modules/webinterface.inc.php2
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')));
}