From 5d4bf36574647b55c93bac4e2f18c1f84fcc8c45 Mon Sep 17 00:00:00 2001 From: Ben Klang Date: Wed, 2 Nov 2005 23:39:54 +0000 Subject: [PATCH] Cleaned up context filtering in LDAP driver git-svn-id: https://svn.alkaloid.net/gpl/shout/trunk@79 06cd67b6-e706-0410-b29e-9de616bca6e9 --- andrew.webprj | 21 +++++++++++---------- lib/Driver/ldap.php | 44 +++++++++++++++++++++++++++++-------------- lib/api.php | 5 ----- lib/defines.php | 23 ++++++++++++++++------ templates/menu.inc | 8 ++++---- themes/graphics/add-user.gif | Bin 83 -> 235 bytes 6 files changed, 62 insertions(+), 39 deletions(-) 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 c343e4b8e39393ab8cf15602c80776b26e54194a..faac4f1ce0f4225f05373a19fcf515163f7b407b 100644 GIT binary patch literal 235 zcmeAS@N?&q;$mQ6;PUiv2?EjrAk4xHB;VeB1QL)4@Ck7R(hLkO3=IEUT3U`BJN6$2 zW*lAo1t`N&666;Q6=S&9yf+dk#+c;o?!wT)D(eB{a29w(76WMz+k?UFWVRiU5$WmT z7{YNqS)-k)?b9bFHa0c`W)I^H%#y4IY!i~W8jWJOP95aAEFjw9k)aWC%H+yInKj*} zCJcu-3K_en7`IDxG)uH9tvlDG&^BSwg2jt0JX{1g4rD1XFf^Q0&b$&(*a)02qjcRkM>ksZ7A{Hly!)+%0d eJlnY}^3=5c?t@c(E>6yEO5Ph?A)>*+U=0B13m4Y_ -- 2.11.0