From: cajus Date: Tue, 27 Jun 2006 07:48:45 +0000 (+0000) Subject: Fixed handling of tagged departments X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=fd9a01c3e34f47c7f2c26d3c361533ae7fe1236a;p=gosa.git Fixed handling of tagged departments git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@3925 594d385d-05f5-0310-b6e9-bd551577e9d8 --- diff --git a/include/class_config.inc b/include/class_config.inc index 9cca396b6..9c66e8941 100644 --- a/include/class_config.inc +++ b/include/class_config.inc @@ -46,6 +46,7 @@ class config { var $departments= array(); var $idepartments= array(); var $adepartments= array(); + var $tdepartments= array(); function config($filename, $basedir= "") { @@ -489,6 +490,7 @@ class config { $result= array(); $administrative= array(); $result['/']= $this->current['BASE']; + $this->tdepartments= array(); /* Get list of department objects */ $ldap= $this->get_ldap_link(); @@ -496,11 +498,18 @@ class config { $ldap->search ("(objectClass=gosaDepartment)", array("ou", "objectClass", "gosaUnitTag")); while ($attrs= $ldap->fetch()){ $dn= $ldap->getDN(); + $this->tdepartments[$dn]= ""; /* Save administrative departments */ if (in_array_ics("gosaAdministrativeUnit", $attrs['objectClass']) && isset($attrs['gosaUnitTag'][0])){ $administrative[$dn]= $attrs['gosaUnitTag'][0]; + $this->tdepartments[$dn]= $attrs['gosaUnitTag'][0]; + } + + if (in_array_ics("gosaAdministrativeUnitTag", $attrs['objectClass']) && + isset($attrs['gosaUnitTag'][0])){ + $this->tdepartments[$dn]= $attrs['gosaUnitTag'][0]; } if ($dn == $ignore_dn){ @@ -524,12 +533,21 @@ class config { $base = $config->current['BASE']; $arr = array(); + $ui= get_userinfo(); $this->idepartments= array(); /* Create multidimensional array, with all departments. */ foreach ($this->departments as $key => $val){ + /* When using strict_units, filter non relevant parts */ + if (preg_match('/true/i', $config->current['STRICT_UNITS'])){ + if ($ui->gosaUnitTag != "" && isset($this->tdepartments[$val]) && + $this->tdepartments[$val] != $ui->gosaUnitTag){ + continue; + } + } + /* remove base from dn */ $val2 = str_replace($base,"",$val);