X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_filterLDAP.inc;h=34aff04a8e5652b6c00a9e61cb5bdb8df7dbb459;hb=ec31213715f17cad47d051582e1f73ea1feb85fe;hp=d49463ae6aee9331b47e6b512224ac53ae1e599f;hpb=099fb791bb6d2c03127ac3d547d1540a456218e1;p=gosa.git diff --git a/gosa-core/include/class_filterLDAP.inc b/gosa-core/include/class_filterLDAP.inc index d49463ae6..34aff04a8 100644 --- a/gosa-core/include/class_filterLDAP.inc +++ b/gosa-core/include/class_filterLDAP.inc @@ -2,29 +2,17 @@ class filterLDAP { - static function query($base, $scope, $filter, $attributes, $category, $method,$objectStorage= "") + static function query($base, $scope, $filter, $attributes, $category, $objectStorage= array("")) { $config= session::global_get('config'); $ldap= $config->get_ldap_link(TRUE); $flag= ($scope == "sub")?GL_SUBSEARCH:0; - $result= filterLDAP::get_list($base, $filter, $attributes, $category, $objectStorage,$method, $flag | GL_SIZELIMIT); + $result= filterLDAP::get_list($base, $filter, $attributes, $category, $objectStorage, $flag | GL_SIZELIMIT); return $result; } - - static function unifyResults($results) - { - $res = array(); - foreach($results as $entry){ - if(!isset($res[$entry['dn']])){ - $res[$entry['dn']] = $entry; - } - } - return(array_values($res)); - } - - static function get_list($base, $filter, $attributes, $category, $objectStorage, $method, $flags= GL_SUBSEARCH) + static function get_list($base, $filter, $attributes, $category, $objectStorage, $flags= GL_SUBSEARCH) { $ui= session::global_get('ui'); $config= session::global_get('config'); @@ -33,23 +21,22 @@ class filterLDAP { if (!is_array($category)) { $category= array($category); } - if (!is_array($objectStorage)) { - $objectStorage= array($objectStorage); - } - if(empty($method)){ - $method= (empty($objectStorage) && !($flags & GL_SUBSEARCH))?"ls":"search"; - } + + // Store in base - i.e. is a rdn value empty? + $storeOnBase= count($objectStorage) == 1 && empty($objectStorage[0]); + + $method= ($storeOnBase && !($flags & GL_SUBSEARCH))?"ls":"search"; // Initialize search bases $bases= array(); // Get list of sub bases to search on - if (count($objectStorage) == 0) { + if ($storeOnBase) { $bases[$base]= ""; } else { foreach ($objectStorage as $oc) { $oc= preg_replace('/,$/', '', $oc); - $tmp= split(',', $oc); + $tmp= explode(',', $oc); if (count($tmp) == 1) { preg_match('/([^=]+)=(.*)$/', $oc, $m); if ($flags & GL_SUBSEARCH) {