From: hickert Date: Tue, 27 May 2008 09:00:56 +0000 (+0000) Subject: Fixed displayed bases in department dialog X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=03121aacd5c8f10a9acb8db877d20bfbb4cb01f6;p=gosa.git Fixed displayed bases in department dialog git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@11018 594d385d-05f5-0310-b6e9-bd551577e9d8 --- diff --git a/gosa-core/plugins/admin/departments/class_departmentGeneric.inc b/gosa-core/plugins/admin/departments/class_departmentGeneric.inc index beda40082..b3c8819e3 100644 --- a/gosa-core/plugins/admin/departments/class_departmentGeneric.inc +++ b/gosa-core/plugins/admin/departments/class_departmentGeneric.inc @@ -653,7 +653,47 @@ class department extends plugin @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, "Not removing tag ($tag) $dn - seems to have moved away", "Tagging"); } } + } + + + + /*! \brief Returns a list of all available departments for this object. + If this object is new, all departments we are allowed to create a new user in are returned. + If this is an existing object, return all deps. we are allowed to move tis object too. + + @return Array [dn] => "..name" // All deps. we are allowed to act on. + */ + function get_allowed_bases() + { + $ui = get_userinfo(); + $deps = array(); + + /* Is this a new object ? Or just an edited existing object */ + if(!$this->initially_was_account && $this->is_account){ + $new = true; + }else{ + $new = false; + } + + $ideps = $this->config->idepartments; + if(!isset($ideps[$this->base])){ + $ideps[$this->base] = "."; + } + foreach($deps as $dn => $name){ + if($new && $this->acl_is_createable($dn)){ + $deps[$dn] = $name; + }elseif(!$new && $this->acl_is_moveable($dn)){ + $deps[$dn] = $name; + } + } + /* Add current base */ + if(isset($this->base) && isset($ideps[$this->base])){ + $deps[$this->base] = $ideps[$this->base]; + }else{ + trigger_error("Cannot return list of departments, no default base found in class ".get_class($this).". ".$this->base); + } + return($deps); } }