diff --git a/lam/lib/config.inc b/lam/lib/config.inc index 7a3b0015..5232afaf 100644 --- a/lam/lib/config.inc +++ b/lam/lib/config.inc @@ -723,89 +723,59 @@ class Config { } /** - * Returns an array of all selected user modules + * Returns an array of all selected account modules * + * @param string $scope account type * @return array user modules */ - function get_UserModules() { - return explode(",", $this->usermodules); + function get_AccountModules($scope) { + switch ($scope) { + case 'user': + return explode(",", $this->usermodules); + break; + case 'group': + return explode(",", $this->groupmodules); + break; + case 'host': + return explode(",", $this->hostmodules); + break; + default: + return array(); + break; + } + } /** - * Sets the selected user modules + * Sets the selected account modules * * @param array $modules array with module names (not aliases!) + * @param string $scope account type * @return boolean true if $modules has correct format */ - function set_UserModules($modules) { + function set_AccountModules($modules, $scope) { if (! is_array($modules)) return false; // check module names - $available = getAvailableModules('user'); + $available = getAvailableModules($scope); for ($i = 0; $i < sizeof($modules); $i++) { if (! in_array($modules[$i], $available)) return false; } // check depends/conflicts - if (check_module_conflicts($modules, getModulesDependencies('user')) != false) return false; - if (check_module_depends($modules, getModulesDependencies('user')) != false) return false; - $this->usermodules = implode(",", $modules); - return true; - } - - /** - * Returns an array of all selected group modules - * - * @return array group modules - */ - function get_GroupModules() { - return explode(",", $this->groupmodules); - } - - /** - * Sets the selected group modules - * - * @param array $modules array with module names (not aliases!) - * @return boolean true if $modules has correct format - */ - function set_GroupModules($modules) { - if (! is_array($modules)) return false; - // check module names - $available = getAvailableModules('group'); - for ($i = 0; $i < sizeof($modules); $i++) { - if (! in_array($modules[$i], $available)) return false; + if (check_module_conflicts($modules, getModulesDependencies($scope)) != false) return false; + if (check_module_depends($modules, getModulesDependencies($scope)) != false) return false; + switch ($scope) { + case 'user': + $this->usermodules = implode(",", $modules); + break; + case 'group': + $this->groupmodules = implode(",", $modules); + break; + case 'host': + $this->hostmodules = implode(",", $modules); + break; + default: + break; } - // check depends/conflicts - if (check_module_conflicts($modules, getModulesDependencies('group')) != false) return false; - if (check_module_depends($modules, getModulesDependencies('group')) != false) return false; - $this->groupmodules = implode(",", $modules); - return true; - } - - /** - * Returns an array of all selected host modules - * - * @return array host modules - */ - function get_HostModules() { - return explode(",", $this->hostmodules); - } - - /** - * Sets the selected host modules - * - * @param array $modules array with module names (not aliases!) - * @return boolean true if $modules has correct format - */ - function set_HostModules($modules) { - if (! is_array($modules)) return false; - // check module names - $available = getAvailableModules('host'); - for ($i = 0; $i < sizeof($modules); $i++) { - if (! in_array($modules[$i], $available)) return false; - } - // check depends/conflicts - if (check_module_conflicts($modules, getModulesDependencies('host')) != false) return false; - if (check_module_depends($modules, getModulesDependencies('host')) != false) return false; - $this->hostmodules = implode(",", $modules); return true; } diff --git a/lam/lib/modules.inc b/lam/lib/modules.inc index d9f75374..999d951c 100644 --- a/lam/lib/modules.inc +++ b/lam/lib/modules.inc @@ -419,6 +419,7 @@ function buildUploadAccounts($scope, $data, $ids) { $unOrdered = getAvailableModules($scope); $ordered = array(); $predepends = array(); + // get dependencies for ($i = 0; $i < sizeof($unOrdered); $i++) { $mod = new $unOrdered[$i]($scope); $predepends[$unOrdered[$i]] = $mod->get_uploadPreDepends(); @@ -1134,7 +1135,7 @@ class accountContainer { * $dn is the dn of the account which should be loaded */ function load_account($dn) { - $modules = call_user_func(array($_SESSION['config'], 'get_'.ucfirst($this->type).'Modules')); + $modules = $_SESSION['config']->get_AccountModules($this->type); $search = substr($dn, 0, strpos($dn, ',')); $result = ldap_search($_SESSION['ldap']->server(), $dn, $search); $entry = ldap_first_entry($_SESSION['ldap']->server(), $result); @@ -1223,8 +1224,7 @@ class accountContainer { * for a new account */ function new_account() { - $temp = ucfirst($this->type); - $modules = call_user_func(array(&$_SESSION['config'], 'get_' . $temp . 'Modules')); + $modules = $_SESSION['config']->get_AccountModules($this->type); foreach ($modules as $module) { $this->module[$module] = new $module($this->type); $this->module[$module]->init($this->base); diff --git a/lam/templates/config/confmain.php b/lam/templates/config/confmain.php index dce08290..9b8e8f59 100644 --- a/lam/templates/config/confmain.php +++ b/lam/templates/config/confmain.php @@ -131,9 +131,9 @@ if (isset($_GET["modulesback"])) { $conf->set_scriptserver($_SESSION['conf_scriptserver']); // check if modules were edited if ($_GET["moduleschanged"] == "true") { - $conf->set_UserModules($_SESSION['conf_usermodules']); - $conf->set_GroupModules($_SESSION['conf_groupmodules']); - $conf->set_HostModules($_SESSION['conf_hostmodules']); + $conf->set_AccountModules($_SESSION['conf_usermodules'], 'user'); + $conf->set_AccountModules($_SESSION['conf_groupmodules'], 'group'); + $conf->set_AccountModules($_SESSION['conf_hostmodules'], 'host'); } } @@ -216,9 +216,9 @@ echo ("