From: Ben Klang Date: Wed, 2 Nov 2005 23:39:54 +0000 (+0000) Subject: Cleaned up context filtering in LDAP driver X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=5d4bf36574647b55c93bac4e2f18c1f84fcc8c45;p=horde.git Cleaned up context filtering in LDAP driver git-svn-id: https://svn.alkaloid.net/gpl/shout/trunk@79 06cd67b6-e706-0410-b29e-9de616bca6e9 --- diff --git a/andrew.webprj b/andrew.webprj index 270e6d3f5..8939e1248 100644 --- a/andrew.webprj +++ b/andrew.webprj @@ -9,7 +9,7 @@ - + @@ -33,13 +33,13 @@ - + - + @@ -63,13 +63,13 @@ - + - + - + @@ -85,7 +85,7 @@ - + @@ -93,7 +93,7 @@ - + @@ -105,7 +105,7 @@ templates/ toolbars/ - + Ben Klang ben@alkaloid.net No Debugger @@ -116,13 +116,14 @@ - + + diff --git a/lib/Driver/ldap.php b/lib/Driver/ldap.php index 985fd7d71..3b27a4c4a 100644 --- a/lib/Driver/ldap.php +++ b/lib/Driver/ldap.php @@ -68,34 +68,26 @@ class Shout_Driver_ldap extends Shout_Driver if ($searchfilters == SHOUT_CONTEXT_ALL) { $searchfilter="(objectClass=asteriskObject)"; } else { - $searchfilter = "(|"; + $searchfilter = "(&"; # FIXME Change this to non-V-Office specific objectClass if ($searchfilters & SHOUT_CONTEXT_CUSTOMERS) { + # FIXME what does this objectClass really do for us? $searchfilter.="(objectClass=vofficeCustomer)"; - } else { - $searchfilter.="(!(objectClass=vofficeCustomer))"; } - if ($searchfilters & SHOUT_CONTEXT_EXTENSIONS) { $searchfilter.="(objectClass=asteriskExtensions)"; - } else { - $searchfilter.="(!(objectClass=asteriskExtensions))"; } - if ($searchfilters & SHOUT_CONTEXT_MOH) { $searchfilter.="(objectClass=asteriskMusicOnHold)"; - } else { - $searchfilter.="(!(objectClass=asteriskMusicOnHold))"; } - if ($searchfilters & SHOUT_CONTEXT_CONFERENCE) { $searchfilter.="(objectClass=asteriskMeetMe)"; - } else { - $searchfilter.="(!(objectClass=asteriskMeetMe))"; } $searchfilter .= ")"; } + $attributes = array(SHOUT_ACCOUNT_ID_ATTRIBUTE, 'objectClass', 'context'); + # Collect all the possible contexts from the backend $res = @ldap_search($this->_LDAP, SHOUT_ASTERISK_BRANCH.','.$this->_params['basedn'], @@ -112,10 +104,33 @@ class Shout_Driver_ldap extends Shout_Driver $entries[$searchfilters] = array(); while ($i < $res['count']) { $context = $res[$i]['context'][0]; - @$domain = $res[$i]['associateddomain'][0]; + $type = SHOUT_CONTEXT_NONE; + foreach ($res[$i][strtolower('objectClass')] as $objectClass) { + switch ($objectClass) { + case SHOUT_CONTEXT_CUSTOMERS_OBJECTCLASS: + # FIXME What does this objectClass really get us? + $type = $type | SHOUT_CONTEXT_CUSTOMERS; + break; + case SHOUT_CONTEXT_EXTENSIONS_OBJECTCLASS: + $type = $type | SHOUT_CONTEXT_EXTENSIONS; + break; + case SHOUT_CONTEXT_MOH_OBJECTCLASS: + $type = $type | SHOUT_CONTEXT_MOH; + break; + case SHOUT_CONTEXT_CONFERENCE_OBJECTCLASS: + $type = $type | SHOUT_CONTEXT_CONFERENCE; + break; + case SHOUT_CONTEXT_VOICEMAIL_OBJECTCLASS: + $type = $type | SHOUT_CONTEXT_VOICEMAIL; + break; + } + } if (Shout::checkRights("shout:contexts:$context", $filterperms)) { $entries[$searchfilters][$context] = - array('domain' => $domain); + array( + 'custid' => SHOUT_ACCOUNT_ID_ATTRIBUTE, + 'type' => $type, + ); } $i++; } @@ -270,6 +285,7 @@ for $context")); foreach ($res[0]['objectclass'] as $objectClass) { switch ($objectClass) { case "vofficeCustomer": + # FIXME What does this objectClass really do for us? $properties = $properties | SHOUT_CONTEXT_CUSTOMERS; break; diff --git a/lib/api.php b/lib/api.php index c7b6910a5..484ab7afd 100644 --- a/lib/api.php +++ b/lib/api.php @@ -17,11 +17,6 @@ $_services['perms'] = array( 'type' => '{urn:horde}stringArray' ); -$_services['getUsersByDomain'] = array( - 'args' => array('domain' => 'string', 'timestamp' => 'int'), - 'type' => '{urn:horde}stringArray', -); - function _shout_perms() { static $perms = array(); diff --git a/lib/defines.php b/lib/defines.php index eda88349f..fd86b6915 100644 --- a/lib/defines.php +++ b/lib/defines.php @@ -13,9 +13,20 @@ @define(SHOUT_USERS_BRANCH, "ou=Customers"); @define(SHOUT_USER_OBJECTCLASS, "asteriskUser"); -@define(SHOUT_CONTEXT_ALL, 0xF); -@define(SHOUT_CONTEXT_NONE, 0); -@define(SHOUT_CONTEXT_CUSTOMERS, 1 << 0); -@define(SHOUT_CONTEXT_EXTENSIONS, 1 << 1); -@define(SHOUT_CONTEXT_MOH, 1 << 2); -@define(SHOUT_CONTEXT_CONFERENCE, 1 << 3); \ No newline at end of file +@define('SHOUT_CONTEXT_ALL', 0xFFF); +@define('SHOUT_CONTEXT_NONE', 0); +@define('SHOUT_CONTEXT_CUSTOMERS', 1 << 0); +@define('SHOUT_CONTEXT_EXTENSIONS', 1 << 1); +@define('SHOUT_CONTEXT_MOH', 1 << 2); +@define('SHOUT_CONTEXT_CONFERENCE', 1 << 3); +@define('SHOUT_CONTEXT_VOICEMAIL', 1 << 4); + +# FIXME Maybe these should be params instead? +@define('SHOUT_CONTEXT_CUSTOMERS_OBJECTCLASS', 'vofficeCustomer'); +@define('SHOUT_CONTEXT_EXTENSIONS_OBJECTCLASS', 'asteriskExtensions'); +@define('SHOUT_CONTEXT_MOH_OBJECTCLASS', 'asteriskMusiconHold'); +@define('SHOUT_CONTEXT_CONFERENCE_OBJECTCLASS', 'asteriskMeetMe'); +@define('SHOUT_CONTEXT_VOICEMAIL_OBJECTCLASS', 'asteriskVoicemail'); + +# FIXME Maybe these should be params instead? +@define('SHOUT_ACCOUNT_ID_ATTRIBUTE', 'vofficeCustomerNumber'); \ No newline at end of file diff --git a/templates/menu.inc b/templates/menu.inc index 2a2a44cf7..3297c0c94 100644 --- a/templates/menu.inc +++ b/templates/menu.inc @@ -13,12 +13,12 @@ $menu_view = $prefs->getValue('menu_view'); diff --git a/themes/graphics/add-user.gif b/themes/graphics/add-user.gif index c343e4b8e..faac4f1ce 100644 Binary files a/themes/graphics/add-user.gif and b/themes/graphics/add-user.gif differ