index 29c8c2ba8a23f952de6808a655894cb9f322ff1e..e929bee90f1781a88cce2a3570b83fab8a901b1a 100644 (file)
static function get_list($base, $filter, $attributes, $category, $objectStorage, $flags= GL_SUBSEARCH)
{
- global $ui;
- global $config;
+ $ui= session::global_get('ui');
+ $config= session::global_get('config');
// Move to arrays for category and objectStorage
if (!is_array($category)) {
if (!is_array($objectStorage)) {
$objectStorage= array($objectStorage);
}
-
- # Test
- $objectStorage= array("ou=printers,ou=systems", "ou=workstations,ou=systems", "ou=servers,ou=systems", "ou=people");
+ $method= empty($objectStorage)?"ls":"search";
// Initialize search bases
$bases= array();
- // Get list of sub bases to search on and fill dn components to search for
- $components= array();
- foreach ($objectStorage as $oc) {
- $oc= preg_replace('/,$/', '', $oc);
- $tmp= split(',', $oc);
- if (count($tmp) == 1) {
- preg_match('/([^=]+)=(.*)$/', $oc, $m);
- $components[]= $m[1].":dn:=".$m[2];
- if ($flags & GL_SUBSEARCH) {
- $bases[$base][]= $m[1].":dn:=".$m[2];
- } else {
- $bases["$oc,$base"][]= $m[1].":dn:=".$m[2];
- }
- } else {
- // No, there's no \, in pre defined RDN values
- preg_match('/^([^,]+),(.*)$/', $oc, $matches);
- preg_match('/([^=]+)=(.*)$/', $matches[1], $m);
- $components[]= $m[1].":dn:=".$m[2];
- if ($flags & GL_SUBSEARCH) {
- $bases[$base][]= $m[1].":dn:=".$m[2];
+ // Get list of sub bases to search on
+ if (count($objectStorage) == 0) {
+ $bases[$base]= "";
+ } else {
+ foreach ($objectStorage as $oc) {
+ $oc= preg_replace('/,$/', '', $oc);
+ $tmp= split(',', $oc);
+ if (count($tmp) == 1) {
+ preg_match('/([^=]+)=(.*)$/', $oc, $m);
+ if ($flags & GL_SUBSEARCH) {
+ $bases[$base][]= $m[1].":dn:=".$m[2];
+ } else {
+ $bases["$oc,$base"][]= $m[1].":dn:=".$m[2];
+ }
} else {
- $bases[$matches[2].",$base"][]= $m[1].":dn:=".$m[2];
+ // No, there's no \, in pre defined RDN values
+ preg_match('/^([^,]+),(.*)$/', $oc, $matches);
+ preg_match('/([^=]+)=(.*)$/', $matches[1], $m);
+ if ($flags & GL_SUBSEARCH) {
+ $bases[$base][]= $m[1].":dn:=".$m[2];
+ } else {
+ $bases[$matches[2].",$base"][]= $m[1].":dn:=".$m[2];
+ }
}
}
}
}
// Switch to new base and search
+ if (is_array($dnFilters)){
+ $dnFilter= "(|";
+ foreach ($dnFilters as $df) {
+ $dnFilter.= "($df)";
+ }
+ $dnFilter.= ")";
+ } else {
+ $dnFilter= "";
+ }
$ldap->cd($base);
- $dnFilter= "(|";
- foreach ($dnFilters as $df) {
- $dnFilter.= "($df)";
+ if ($method == "ls") {
+ $ldap->ls("(&$filter$dnFilter)", $base, $attributes);
+ } else {
+ $ldap->search("(&$filter$dnFilter)", $attributes);
}
- $dnFilter.= ")";
- $ldap->search ("(&$filter$dnFilter)", $attributes);
// Check for size limit exceeded messages for GUI feedback
if (preg_match("/size limit/i", $ldap->get_error())){