diff --git a/include/class_config.inc b/include/class_config.inc index e4535efca33ca69a66f99ddf45289bdc6e718b13..029cecb7adf81606774d370612ad263c0f741425 100644 --- a/include/class_config.inc +++ b/include/class_config.inc @@ -797,10 +797,13 @@ class config foreach ($plist->info as $class => &$plInfo) { if (isset($plInfo['plObjectType'])) { $entry = array('CLASS' => $class,'NAME' => $plInfo['plShortName']); + if (isset($plInfo['plSubTabs'])) { + $entry['SUBTABS'] = strtoupper($plInfo['plSubTabs']).'TABS'; + } foreach ($plInfo['plObjectType'] as $key => $value) { if (is_numeric($key)) { /* This is not the main tab */ - $tabclass = strtoupper($value)."TABS"; + $tabclass = strtoupper($value).'TABS'; if (($tabclass == 'GROUPTABS') && class_available('mixedGroup')) { $tabclass = 'OGROUP-USERTABS'; } diff --git a/include/class_userinfo.inc b/include/class_userinfo.inc index 341c27e3f097f7b9829b8475dd03d170ed12404a..904f0dd1c806491bf7483a61acb8548e74e5e239 100644 --- a/include/class_userinfo.inc +++ b/include/class_userinfo.inc @@ -1008,16 +1008,30 @@ class userinfo function getAttributeCategory($type, $attribute) { global $config; - $infos = objects::infos($type); - $tabs = $config->data['TABS'][$infos['tabGroup']]; + if (in_array_ics($attribute, array('objectClass', 'dn'))) { return TRUE; } + + if (is_array($type)) { + /* Used for recursion through subtabs */ + $tabs = $type; + } else { + /* Usual workflow */ + $infos = objects::infos($type); + $tabs = $config->data['TABS'][$infos['tabGroup']]; + } foreach ($tabs as $tab) { $acls = pluglist::pluginInfos($tab['CLASS'])['plProvidedAcls']; if (isset($acls[$attribute])) { return $infos['aclCategory'].'/'.$tab['CLASS']; } + if (isset($tab['SUBTABS'])) { + $acl = $this->getAttributeCategory($config->data['TABS'][$tab['SUBTABS']], $attribute); + if ($acl !== FALSE) { + return $acl; + } + } } return FALSE; } diff --git a/plugins/config/class_pluginsConfigInLdap.inc b/plugins/config/class_pluginsConfigInLdap.inc index 941fae92f69ec4e5c7610d6500f5e366501e6f8d..c797cf0b745d69c21a3b182806d8a63bef6088af 100644 --- a/plugins/config/class_pluginsConfigInLdap.inc +++ b/plugins/config/class_pluginsConfigInLdap.inc @@ -1,7 +1,7 @@ <?php /* This code is part of FusionDirectory (http://www.fusiondirectory.org/) - Copyright (C) 2012-2016 FusionDirectory + Copyright (C) 2012-2018 FusionDirectory 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 @@ -22,7 +22,6 @@ class pluginsConfigInLdap extends multiPlugin { var $tabClass = 'SMALLCONFIGTABS'; - /* Return plugin informations for acl handling */ static function plInfo() { return array( @@ -30,9 +29,9 @@ class pluginsConfigInLdap extends multiPlugin 'plDescription' => _('Configuration for plugins'), 'plPriority' => 20, 'plObjectType' => array('configuration'), + 'plSubTabs' => 'smallConfig', 'plProvidedAcls' => array() ); } } -?>