X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_pluglist.inc;h=ba3288a63de2bcf49940029154be2c300c95c3b1;hb=0a8eb52048cd81d884b8e3f63613dc70e444fc27;hp=1b311a778dba2502f1957e87df306c7c3bbeb2a2;hpb=1362094321e59bba759ae88dd250588364e6b9be;p=gosa.git diff --git a/gosa-core/include/class_pluglist.inc b/gosa-core/include/class_pluglist.inc index 1b311a778..ba3288a63 100644 --- a/gosa-core/include/class_pluglist.inc +++ b/gosa-core/include/class_pluglist.inc @@ -31,6 +31,7 @@ class pluglist { var $current= ""; var $info= array(); var $headlines = array(); + var $allowed_plugins = array(); function pluglist(&$config, &$ui) { @@ -80,8 +81,17 @@ class pluglist { } + /*! \brief Check whether we are allowed to modify the given acl or nit.. + This function is used to check which plugins are visible. + + @param The acl tag to test, eg. "users/user:self", "systems", ... + @return Boolean TRUE on success else FALSE + */ function check_access($aclname) { + /* Split given acl string into an array. + e.g. "user,systems" => array("users","systems"); + */ $acls_to_check = array(); if(preg_match("/,/",$aclname)){ $acls_to_check = split(",",$aclname); @@ -90,22 +100,28 @@ class pluglist { } foreach($acls_to_check as $acl_to_check){ - $deps = $this->ui->get_module_departments($acl_to_check); - foreach($deps as $dep){ - if(preg_match("/\//",$acl_to_check)){ - if($this->ui->get_permissions($dep,$acl_to_check) != ""){ - return(TRUE); - } - }else{ - if($this->ui->get_category_permissions($dep,$acl_to_check) != ""){ - return(TRUE); - } + + /* Check if the given acl tag is only valid for self acl entries + ui->get_permissions($this->ui->dn,$acl_to_check,"") != ""){ + return(TRUE); } + return(FALSE); + }else{ + + /* No self acls. Check if we have any acls for the given ACL type + */ + $deps = $this->ui->get_module_departments($acl_to_check,TRUE); + if(count($deps)) return TRUE; } } return (FALSE); } + function gen_headlines() { $ret = array(); @@ -171,6 +187,8 @@ class pluglist { if ($this->check_access($info['ACL'])){ + $this->allowed_plugins[$index] = $index; + $entries= $entries."

"; if(session::get('js')){ @@ -235,7 +253,6 @@ class pluglist { function show_iconmenu() { global $class_mapping; - if ($this->iconmenu == ""){ $cfg= $this->config->data['MENU']; @@ -362,5 +379,25 @@ class pluglist { return (0); } + + /*! \brief This function checks if we are allowed to view the plugin with the given id + @param $plug_id Integer The ID of the plugin. + @return Boolean TRUE if we are allowed to view the plugin else FASLE + */ + function plugin_access_allowed($plug_id) + { + return(isset($this->allowed_plugins[$plug_id])); + } + + + /*! \brief Force the menu to be recreated + */ + function reset_menus() + { + $this->menu = ""; + $this->iconmenu =""; + } + } +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?>