X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_pluglist.inc;h=714a3afc76a63da0b7d4886586643312e2f6b3eb;hb=dc43e93accd4cbba7c509d879579701e48c9d3be;hp=095620859bb274fa94c9980fad2961105ff08d62;hpb=8aa84e1a1f4d20bcb133c7542965f3cee0b98ee4;p=gosa.git diff --git a/gosa-core/include/class_pluglist.inc b/gosa-core/include/class_pluglist.inc index 095620859..714a3afc7 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,12 +100,28 @@ class pluglist { } foreach($acls_to_check as $acl_to_check){ - $deps = $this->ui->get_module_departments($acl_to_check); - if(count($deps)) 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(); @@ -161,6 +187,8 @@ class pluglist { if ($this->check_access($info['ACL'])){ + $this->allowed_plugins[$index] = $index; + $entries= $entries."

"; if(session::get('js')){ @@ -225,7 +253,6 @@ class pluglist { function show_iconmenu() { global $class_mapping; - if ($this->iconmenu == ""){ $cfg= $this->config->data['MENU']; @@ -279,7 +306,11 @@ class pluglist { if (isset($info['ICON'])){ $image= get_template_path('images/'.$info['ICON']); } else { + if(!preg_match("/\//",$plIcon)){ $image= get_template_path("plugins/".preg_replace('%^.*/([^/]+)/[^/]+$%', '\1', $class_mapping[$info['CLASS']])."/images/$plIcon"); + }else{ + $image = $plIcon; + } } if ($col > 5){ $entries= $entries.""; @@ -352,5 +383,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: ?>