X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=include%2Fclass_config.inc;h=09024297c925fc72e4067c924fd6821d33f0a755;hb=1fac73f3983fd6dc8f75341dbe44637c1d7820fe;hp=b79df2426fb5b024e98e0224029ba8fd9a656748;hpb=478ea60361b0824f073fd6151f1f064c54eb3c52;p=gosa.git diff --git a/include/class_config.inc b/include/class_config.inc index b79df2426..09024297c 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= "") { @@ -93,9 +94,9 @@ class config { /* yes/no to true/false and upper case TRUE to true and so on*/ foreach($attrs as $name => $value){ - if((preg_match("/^yes$/i",$value)) || (preg_match("/^true$/i",$value))){ + if(preg_match("/^(true|yes)$/i",$value)){ $attrs[$name] = "true"; - }elseif((preg_match("/^no$/i",$value)) || (preg_match("/^false$/i",$value))){ + }elseif(preg_match("/^(false|no)$/i",$value)){ $attrs[$name] = "false"; } } @@ -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 (isset($config->current['STRICT_UNITS']) && 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);