diff --git a/lam/lib/types.inc b/lam/lib/types.inc index 8a8b6551..cf6452a4 100644 --- a/lam/lib/types.inc +++ b/lam/lib/types.inc @@ -4,7 +4,7 @@ namespace LAM\TYPES; $Id$ This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/) - Copyright (C) 2005 - 2016 Roland Gruber + Copyright (C) 2005 - 2017 Roland Gruber This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -339,6 +339,17 @@ class ConfiguredType { return $ret; } + /** + * Returns the names of the active modules for this type. + * + * @return string[] module names + */ + public function getModules() { + $typeSettings = $this->typeManager->getConfig()->get_typeSettings(); + $modules = !empty($typeSettings['modules_' . $this->getId()]) ? $typeSettings['modules_' . $this->getId()] : ''; + return explode(',', $modules); + } + } /** @@ -474,6 +485,23 @@ class TypeManager { return $scopedTypes; } + /** + * Returns a list of configured types for these scopes. + * + * @param array $scopes scopes (e.g. user) + * @return \LAM\TYPES\ConfiguredType[] list of ConfiguredType + */ + public function getConfiguredTypesForScopes($scopes) { + $allTypes = $this->getConfiguredTypes(); + $scopedTypes = array(); + foreach ($allTypes as $type) { + if (in_array($type->getScope(), $scopes)) { + $scopedTypes[] = $type; + } + } + return $scopedTypes; + } + /** * Builds a configured account type. * diff --git a/lam/lib/types/group.inc b/lam/lib/types/group.inc index c62cdfa3..123a4d81 100644 --- a/lam/lib/types/group.inc +++ b/lam/lib/types/group.inc @@ -1,9 +1,10 @@ _("Delete selected roles")); } // build suffix list for account types - $types = array('user', 'gon', 'group'); - $activeTypes = $_SESSION['config']->get_ActiveTypes(); + $typeManager = new TypeManager(); + $scopes = array('user', 'gon', 'group'); + $types = $typeManager->getConfiguredTypesForScopes($scopes); foreach ($types as $type) { - if (!in_array($type, $activeTypes)) { - continue; - } - $suffix = $_SESSION['config']->get_Suffix($type); + $suffix = $type->getSuffix(); // stop if suffixes are not unique if (isset($this->suffixList[$suffix])) { $this->suffixList = array(); break; } if (!empty($suffix)) { - $this->suffixList[$suffix] = $type; + $this->suffixList[$suffix] = $type->getId(); } } } diff --git a/lam/templates/config/confmodules.php b/lam/templates/config/confmodules.php index 28980af3..0f2284c9 100644 --- a/lam/templates/config/confmodules.php +++ b/lam/templates/config/confmodules.php @@ -15,7 +15,7 @@ use \htmlDiv; $Id$ This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/) - Copyright (C) 2004 - 2016 Roland Gruber + Copyright (C) 2004 - 2017 Roland Gruber This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -272,12 +272,9 @@ echo "\n"; * @param htmlTable $container meta HTML container */ function config_showAccountModules($type, &$container) { - $conf = &$_SESSION['conf_config']; - $typeSettings = $conf->get_typeSettings(); // account modules $available = getAvailableModules($type->getScope(), true); - $selected = !empty($typeSettings['modules_' . $type->getId()]) ? $typeSettings['modules_' . $type->getId()] : ''; - $selected = explode(',', $selected); + $selected = $type->getModules(); $sortedAvailable = array(); for ($i = 0; $i < sizeof($available); $i++) { $sortedAvailable[$available[$i]] = getModuleAlias($available[$i], $type->getScope());