diff --git a/include/class_config.inc b/include/class_config.inc index ee7cb0fb488ef65239edc048b42f71b3f00a4022..b3275934277555051a60c2f7e1620e8c7b6afa11 100644 --- a/include/class_config.inc +++ b/include/class_config.inc @@ -829,6 +829,8 @@ class config if (!preg_match('/^\(.*\)$/', $value['filter'])) { $value['filter'] = '('.$value['filter'].')'; } + } elseif (isset($plInfo['plFilter'])) { + $value['filter'] = $plInfo['plFilter']; } else { $value['filter'] = NULL; } diff --git a/include/class_pluglist.inc b/include/class_pluglist.inc index 8b83ec7ce0e7ece2fad4659a03ec20369723a145..9bda4a6581f659204097734c5fc448df709e1937 100644 --- a/include/class_pluglist.inc +++ b/include/class_pluglist.inc @@ -150,6 +150,13 @@ class pluglist { if (!isset($infos['plTitle']) && isset($infos['plShortName'])) { $infos['plTitle'] = $infos['plShortName']; } + if (!empty($infos['plObjectClass']) && !isset($infos['plFilter'])) { + if (count($infos['plObjectClass']) == 1) { + $infos['plFilter'] = '(objectClass='.$infos['plObjectClass'][0].')'; + } else { + $infos['plFilter'] = '(&(objectClass='.implode(')(objectClass=', $infos['plObjectClass']).'))'; + } + } if (isset($infos['plFilter'])) { $infos['plFilterObject'] = ldapFilter::parse($infos['plFilter']); } diff --git a/include/simpleplugin/class_simplePlugin.inc b/include/simpleplugin/class_simplePlugin.inc index f6b31f7bb2ff771cd9cda574f7bdc59bc9ca9856..fd710936f70f3a3d2f2aa46eb4addc1c66057ff5 100644 --- a/include/simpleplugin/class_simplePlugin.inc +++ b/include/simpleplugin/class_simplePlugin.inc @@ -153,6 +153,12 @@ class simplePlugin $this->parent = $parent; $this->mainTab = $mainTab; + $plInfo = pluglist::pluginInfos(get_class($this)); + + if (isset($plInfo['plObjectClass'])) { + $this->objectclasses = $plInfo['plObjectClass']; + } + if ($attributesInfo === NULL) { $attributesInfo = $this->getAttributesInfo(); } @@ -188,11 +194,10 @@ class simplePlugin /* Ensure that we've a valid acl_category set */ if (empty($this->acl_category)) { - $tmp = pluglist::pluginInfos(get_class($this)); - if (isset($tmp['plCategory'])) { - $c = key($tmp['plCategory']); + if (isset($plInfo['plCategory'])) { + $c = key($plInfo['plCategory']); if (is_numeric($c)) { - $c = $tmp['plCategory'][0]; + $c = $plInfo['plCategory'][0]; } $this->acl_category = $c.'/'; } diff --git a/plugins/admin/acl/class_aclAssignment.inc b/plugins/admin/acl/class_aclAssignment.inc index d4284f2542e04dfcdae2c4e0bce17103b8d59203..bf2f043a7bcd69179c3c84ecc8e33e921d7a06a2 100644 --- a/plugins/admin/acl/class_aclAssignment.inc +++ b/plugins/admin/acl/class_aclAssignment.inc @@ -260,8 +260,6 @@ class ACLsAssignmentAttribute extends DialogOrderedArrayAttribute class aclAssignment extends simplePlugin { - var $objectclasses = array('gosaAcl'); - static function plInfo() { global $config; @@ -269,7 +267,6 @@ class aclAssignment extends simplePlugin 'aclAssignment' => array( 'aclCategory' => 'acl', 'name' => _('ACL assignment'), - 'filter' => 'objectClass=gosaAcl', 'ou' => '', 'icon' => 'geticon.php?context=categories&icon=acl&size=16', 'tabClass' => 'simpleTabs_noSpecial', @@ -284,6 +281,7 @@ class aclAssignment extends simplePlugin return array( 'plShortName' => _('ACL Assignment'), 'plDescription' => _('Access control roles assignment'), + 'plObjectClass' => array('gosaAcl'), 'plObjectType' => $oc, 'plForeignKeys' => array( 'gosaAclEntry' => array( diff --git a/plugins/admin/aclrole/class_aclRole.inc b/plugins/admin/aclrole/class_aclRole.inc index 714d5d02c4fcd16ab2689e631586bc9f55827708..d1c738d262de1812f74a049e6cdcf35bd1d95295 100644 --- a/plugins/admin/aclrole/class_aclRole.inc +++ b/plugins/admin/aclrole/class_aclRole.inc @@ -69,17 +69,15 @@ class ACLsAttribute extends DialogOrderedArrayAttribute class aclRole extends simplePlugin { - var $objectclasses = array('top','gosaRole'); - static function plInfo() { return array( 'plShortName' => _('Role'), 'plDescription' => _('Access control roles'), + 'plObjectClass' => array('gosaRole'), 'plObjectType' => array('aclRole' => array( 'aclCategory' => 'acl', 'name' => _('ACL role'), - 'filter' => 'objectClass=gosaRole', 'ou' => get_ou('aclRoleRDN'), 'icon' => 'geticon.php?context=categories&icon=acl&size=16', )), diff --git a/plugins/admin/departments/class_country.inc b/plugins/admin/departments/class_country.inc index ddc06d92bf5a47ec8c1a5ff745945a404eb28b9e..d38ef6702c3d25d67f000e52a901df905d0415c6 100644 --- a/plugins/admin/departments/class_country.inc +++ b/plugins/admin/departments/class_country.inc @@ -20,18 +20,19 @@ class country extends department { - static $namingAttr = "c"; - var $structuralOC = array("country"); + static protected $namingAttr = 'c'; + protected $structuralOC = array('country'); static function plInfo() { return array( 'plShortName' => _('Country'), 'plDescription' => _('Country'), + 'plObjectClass' => array('gosaDepartment'), + 'plFilter' => '(&(objectClass=country)(objectClass=gosaDepartment))', 'plObjectType' => array('country' => array( 'aclCategory' => 'department', 'name' => _('Country'), - 'filter' => '(&(objectClass=country)(objectClass=gosaDepartment))', 'ou' => '', 'icon' => 'geticon.php?context=types&icon=country&size=16', 'tabClass' => 'deptabs', diff --git a/plugins/admin/departments/class_dcObject.inc b/plugins/admin/departments/class_dcObject.inc index ced37a4e78eacb512f01d630d0687461a2955713..66cb59723a461fe518ac472991861154a32d46a4 100644 --- a/plugins/admin/departments/class_dcObject.inc +++ b/plugins/admin/departments/class_dcObject.inc @@ -20,19 +20,18 @@ class dcObject extends department { - static $namingAttr = "dc"; - var $objectclasses = array("top", "dcObject", "gosaDepartment"); - var $structuralOC = array("locality"); + static protected $namingAttr = 'dc'; + protected $structuralOC = array('locality'); static function plInfo() { return array( 'plShortName' => _('Domain Component'), 'plDescription' => _('Domain Component'), + 'plObjectClass' => array('dcObject', 'gosaDepartment'), 'plObjectType' => array('dcObject' => array( 'aclCategory' => 'department', 'name' => _('Domain Component'), - 'filter' => '(&(objectClass=dcObject)(objectClass=gosaDepartment))', 'ou' => '', 'icon' => 'geticon.php?context=types&icon=dc&size=16', 'tabClass' => 'deptabs', diff --git a/plugins/admin/departments/class_department.inc b/plugins/admin/departments/class_department.inc index ddf29b1774cb88aa20d5e94f2ab35ac7d05f96e2..3bd3c287ede8d960f70d2035c0428281ba9a2ddb 100644 --- a/plugins/admin/departments/class_department.inc +++ b/plugins/admin/departments/class_department.inc @@ -21,23 +21,22 @@ class department extends simplePlugin { - static $namingAttr = 'ou'; - - /* Do not append the structural object classes here, they are added dynamically in the constructor */ - var $objectclasses = array("top", "gosaDepartment"); - var $structuralOC = array("organizationalUnit"); + static protected $namingAttr = 'ou'; + protected $structuralOC = array('organizationalUnit'); static function plInfo() { return array( 'plShortName' => _('Department'), 'plDescription' => _('Departments'), + /* Do not append the structural object classes here, they are added dynamically in the constructor */ + 'plObjectClass' => array('gosaDepartment'), + 'plFilter' => '(&(objectClass=organizationalUnit)(objectClass=gosaDepartment))', 'plCategory' => array('department' => array('objectClass' => 'gosaDepartment', 'description' => _('Departments'))), 'plObjectType' => array( 'department' => array( 'name' => _('Department'), - 'filter' => '(&(objectClass=organizationalUnit)(objectClass=gosaDepartment))', 'ou' => '', 'icon' => 'geticon.php?context=places&icon=folder&size=16', 'tabClass' => 'deptabs', diff --git a/plugins/admin/departments/class_domain.inc b/plugins/admin/departments/class_domain.inc index 01994317cb0248fd90d390043212dfc6e5cea627..7a01aa2eac93fd3831dcd5c2289100dc457121b6 100644 --- a/plugins/admin/departments/class_domain.inc +++ b/plugins/admin/departments/class_domain.inc @@ -20,19 +20,18 @@ class domain extends department { - static $namingAttr = "dc"; - var $objectclasses = array("top", "domain", "gosaDepartment"); - var $structuralOC = array("domain"); + static protected $namingAttr = 'dc'; + protected $structuralOC = array('domain'); static function plInfo() { return array( 'plShortName' => _('Domain'), 'plDescription' => _('Domain'), + 'plObjectClass' => array('domain', 'gosaDepartment'), 'plObjectType' => array('domain' => array( 'aclCategory' => 'department', 'name' => _('Domain'), - 'filter' => '(&(objectClass=domain)(objectClass=gosaDepartment))', 'ou' => '', 'icon' => 'geticon.php?context=types&icon=domain&size=16', 'tabClass' => 'deptabs', diff --git a/plugins/admin/departments/class_locality.inc b/plugins/admin/departments/class_locality.inc index 6f0e8125be07045d7aedb693792afcfeb8f04ac6..99483b64c3b48243f6c67bc099b12501008600b1 100644 --- a/plugins/admin/departments/class_locality.inc +++ b/plugins/admin/departments/class_locality.inc @@ -20,19 +20,19 @@ class locality extends department { - static $namingAttr = "l"; - var $objectclasses = array("top", "gosaDepartment"); - var $structuralOC = array("locality"); + static protected $namingAttr = 'l'; + protected $structuralOC = array('locality'); static function plInfo() { return array( 'plShortName' => _('Locality'), 'plDescription' => _('Locality'), + 'plObjectClass' => array('gosaDepartment'), + 'plFilter' => '(&(!(objectClass=dcObject))(objectClass=locality)(objectClass=gosaDepartment))', 'plObjectType' => array('locality' => array( 'aclCategory' => 'department', 'name' => _('Locality'), - 'filter' => '(&(!(objectClass=dcObject))(objectClass=locality)(objectClass=gosaDepartment))', 'ou' => '', 'icon' => 'geticon.php?context=types&icon=locality&size=16', 'tabClass' => 'deptabs', diff --git a/plugins/admin/departments/class_organization.inc b/plugins/admin/departments/class_organization.inc index d633dc3f27cad9bf087e0f0613e41ef7cbb9d8b4..ff0dac558b1a49d258818a5a87b12ef04f9d2c48 100644 --- a/plugins/admin/departments/class_organization.inc +++ b/plugins/admin/departments/class_organization.inc @@ -20,19 +20,19 @@ class organization extends department { - static $namingAttr = "o"; - var $objectclasses = array("top", "gosaDepartment"); - var $structuralOC = array("organization"); + static protected $namingAttr = 'o'; + protected $structuralOC = array('organization'); static function plInfo() { return array( 'plShortName' => _('Organization'), 'plDescription' => _('Organization'), + 'plObjectClass' => array('gosaDepartment'), + 'plFilter' => '(&(objectClass=organization)(objectClass=gosaDepartment))', 'plObjectType' => array('organization' => array( 'aclCategory' => 'department', 'name' => _('Organization'), - 'filter' => '(&(objectClass=organization)(objectClass=gosaDepartment))', 'ou' => '', 'icon' => 'geticon.php?context=types&icon=organization&size=16', 'tabClass' => 'deptabs', diff --git a/plugins/admin/groups/class_ogroup.inc b/plugins/admin/groups/class_ogroup.inc index c34532deebad107c91306544e243cac9211af023..ed476f1c07e2e86fcbc6d11bc7342809ed47199b 100644 --- a/plugins/admin/groups/class_ogroup.inc +++ b/plugins/admin/groups/class_ogroup.inc @@ -151,8 +151,6 @@ class ObjectSelectDialog extends GenericSelectDialog class ogroup extends simplePlugin { - var $objectclasses = array('groupOfNames', 'gosaGroupOfNames'); - var $used_workstations = array(); protected $savedTypedMembers; @@ -176,11 +174,12 @@ class ogroup extends simplePlugin 'plDescription' => _('Object group information'), 'plFilter' => '(objectClass=groupOfNames)', 'plPriority' => 1, + 'plObjectClass' => array('groupOfNames', 'gosaGroupOfNames'), + 'plFilter' => '(objectClass=groupOfNames)', 'plObjectType' => array('ogroup' => array( 'name' => _('Group'), 'description' => _('Group'), 'ou' => get_ou('ogroupRDN'), - 'filter' => 'objectClass=groupOfNames', 'icon' => 'geticon.php?context=types&icon=resource-group&size=16', 'tabClass' => 'ogrouptabs', )), diff --git a/plugins/admin/groups/class_roleGeneric.inc b/plugins/admin/groups/class_roleGeneric.inc index 9569ee633aeab43ad590951d6758d218c10d8082..7d16dcb54a11f571d8aa0f17685ceed668567853 100644 --- a/plugins/admin/groups/class_roleGeneric.inc +++ b/plugins/admin/groups/class_roleGeneric.inc @@ -47,20 +47,18 @@ class RoleMembersAttribute extends UsersAttribute class roleGeneric extends simplePlugin { - var $objectclasses = array('organizationalRole'); - static function plInfo() { return array( 'plShortName' => _('Role'), 'plDescription' => _('Role information'), + 'plObjectClass' => array('organizationalRole'), 'plFilter' => '(&(objectClass=organizationalRole)(!(objectClass=simpleSecurityObject)))', 'plObjectType' => array('role' => array( 'name' => _('Role'), 'description' => _('Organizational role'), 'ou' => get_ou('roleRDN'), - 'filter' => '(&(objectClass=organizationalRole)(!(objectClass=simpleSecurityObject)))', 'icon' => 'geticon.php?context=types&icon=role&size=16', 'mainAttr' => 'cn', ) diff --git a/plugins/config/class_configInLdap.inc b/plugins/config/class_configInLdap.inc index bdc2e66249cddf5b9e5c7ad3bd794a9ebba5468f..77d44516dfaf8057254838d2e86e8dd8fcc35c70 100644 --- a/plugins/config/class_configInLdap.inc +++ b/plugins/config/class_configInLdap.inc @@ -21,7 +21,7 @@ /* Debug level is an OR combination of several values */ class DebugLevelAttribute extends SetAttribute { - protected function loadAttrValue ($attrs) + protected function loadAttrValue (array $attrs) { if (isset($attrs[$this->getLdapName()])) { $value = $attrs[$this->getLdapName()][0]; @@ -48,8 +48,6 @@ class DebugLevelAttribute extends SetAttribute class configInLdap extends simplePlugin { - var $objectclasses = array("fusionDirectoryConf"); - static function plInfo() { return array( @@ -57,6 +55,7 @@ class configInLdap extends simplePlugin 'plTitle' => _('FusionDirectory configuration'), 'plDescription' => _('Configuration screen of FusionDirectory'), 'plIcon' => 'geticon.php?context=categories&icon=settings&size=48', + 'plObjectClass' => array('fusionDirectoryConf'), 'plObjectType' => array( 'configuration' => array( 'name' => _('FusionDirectory configuration'), diff --git a/plugins/config/class_dashBoardConfig.inc b/plugins/config/class_dashBoardConfig.inc index 7fbc9dce87dc4ac4d8d14a9ae0da278745e58f53..f506098ffe9ddbbb371ea5a58bc370c9ff3bb71e 100644 --- a/plugins/config/class_dashBoardConfig.inc +++ b/plugins/config/class_dashBoardConfig.inc @@ -20,14 +20,13 @@ class dashboardConfig extends simplePlugin { - var $objectclasses = array('fdDashboardPluginConf'); - static function plInfo() { return array( 'plShortName' => _('Dashboard configuration'), 'plDescription' => _('FusionDirectory dashboard plugin configuration'), 'plCategory' => array('configuration'), + 'plObjectClass' => array('fdDashboardPluginConf'), 'plObjectType' => array('smallConfig'), 'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo()) diff --git a/plugins/config/class_mainPluginsConfig.inc b/plugins/config/class_mainPluginsConfig.inc index 47a46468dcdd72c3a0f95ec23cd0017dedc7fe34..dd6e4fef39a890c523f840eedf307510cd1d8e5b 100644 --- a/plugins/config/class_mainPluginsConfig.inc +++ b/plugins/config/class_mainPluginsConfig.inc @@ -20,17 +20,16 @@ class mainPluginsConfig extends simplePlugin { - var $objectclasses = array("fusionDirectoryPluginsConf"); - static function plInfo() { return array( - "plShortName" => _("Plugins configuration"), - "plDescription" => _("FusionDirectory plugins configuration"), - "plCategory" => array("configuration"), - "plObjectType" => array("smallConfig"), + 'plShortName' => _('Plugins configuration'), + 'plDescription' => _('FusionDirectory plugins configuration'), + 'plCategory' => array('configuration'), + 'plObjectClass' => array('fusionDirectoryPluginsConf'), + 'plObjectType' => array('smallConfig'), - "plProvidedAcls" => parent::generatePlProvidedAcls(static::getAttributesInfo()) + 'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo()) ); } diff --git a/plugins/config/class_pluginsConfigInLdap.inc b/plugins/config/class_pluginsConfigInLdap.inc index eef1a50d6591f437ba265b0e23e237c1888e0c2c..941fae92f69ec4e5c7610d6500f5e366501e6f8d 100644 --- a/plugins/config/class_pluginsConfigInLdap.inc +++ b/plugins/config/class_pluginsConfigInLdap.inc @@ -26,12 +26,12 @@ class pluginsConfigInLdap extends multiPlugin static function plInfo() { return array( - "plShortName" => _("Plugins"), - "plDescription" => _("Configuration for plugins"), - "plPriority" => 20, - "plObjectType" => array("configuration"), + 'plShortName' => _('Plugins'), + 'plDescription' => _('Configuration for plugins'), + 'plPriority' => 20, + 'plObjectType' => array('configuration'), - "plProvidedAcls" => array() + 'plProvidedAcls' => array() ); } } diff --git a/plugins/config/class_recoveryConfig.inc b/plugins/config/class_recoveryConfig.inc index 6f0ed62212d21588911352ff5cced5fa2b1edc31..905cec0c65d183924638faaea4fc1f5a8f691518 100644 --- a/plugins/config/class_recoveryConfig.inc +++ b/plugins/config/class_recoveryConfig.inc @@ -20,13 +20,12 @@ class recoveryConfig extends simplePlugin { - var $objectclasses = array('fdPasswordRecoveryConf'); - static function plInfo() { return array( 'plShortName' => _('Password recovery'), 'plDescription' => _('Settings for the password recovery feature'), + 'plObjectClass' => array('fdPasswordRecoveryConf'), 'plObjectType' => array('configuration'), 'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo()) diff --git a/plugins/personal/generic/class_user.inc b/plugins/personal/generic/class_user.inc index 575196e5ec42e03cc9d85971c060b0ce1019e0f6..4e4ec17045c2a0cfe0edbc7b71f698ab11471409 100644 --- a/plugins/personal/generic/class_user.inc +++ b/plugins/personal/generic/class_user.inc @@ -84,7 +84,7 @@ class UserPasswordAttribute extends CompositeAttribute } /* We need to handle method select disabling manually */ - function renderAttribute(&$attributes, $readOnly) + function renderAttribute(array &$attributes, $readOnly) { global $config; if ($this->visible) { @@ -110,7 +110,7 @@ class UserPasswordAttribute extends CompositeAttribute /*! \brief Loads this attribute value from the attrs array */ - protected function loadAttrValue ($attrs) + protected function loadAttrValue (array $attrs) { if (isset($attrs[$this->getLdapName()])) { $this->setValue($this->inputValue($attrs[$this->getLdapName()][0])); @@ -186,7 +186,7 @@ class UserPasswordAttribute extends CompositeAttribute return array($pw_storage, $password, $password, $value, $locked); } - function writeValues($values) + function writeValues(array $values) { if ($this->needPassword[$values[0]] && ($values[1] == '')) { if ($this->plugin->is_template) { @@ -268,8 +268,6 @@ class PostalAddressAttribute extends TextAreaAttribute class user extends simplePlugin { - var $objectclasses = array('inetOrgPerson','organizationalPerson','person'); - private $was_locked; static function plInfo() @@ -277,14 +275,14 @@ class user extends simplePlugin return array( 'plShortName' => _('User'), 'plDescription' => _('User account information'), - 'plFilter' => '(objectClass=inetOrgPerson)', 'plIcon' => 'geticon.php?context=applications&icon=user-info&size=48', 'plSmallIcon' => 'geticon.php?context=applications&icon=user-info&size=16', 'plSelfModify' => TRUE, + 'plObjectClass' => array('inetOrgPerson','organizationalPerson','person'), + 'plFilter' => '(objectClass=inetOrgPerson)', 'plObjectType' => array('user' => array( 'name' => _('User'), 'description' => _('User account'), - 'filter' => '(objectClass=inetOrgPerson)', 'mainAttr' => 'uid', 'nameAttr' => 'cn', 'icon' => 'geticon.php?context=types&icon=user&size=16',