X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_pluglist.inc;h=528052a875c054e5d28e3f98bd51f356a48c0b1e;hb=30d939bbc772a9b8cdd9704e8034101e957ab972;hp=114ab5ddd21fe3cbf8b58558f1fcbee4e1c429ee;hpb=888516587f0cda06601ab943d2851bfaf5b23578;p=gosa.git diff --git a/gosa-core/include/class_pluglist.inc b/gosa-core/include/class_pluglist.inc index 114ab5ddd..528052a87 100644 --- a/gosa-core/include/class_pluglist.inc +++ b/gosa-core/include/class_pluglist.inc @@ -31,7 +31,8 @@ class pluglist { var $current= ""; var $info= array(); var $headlines = array(); - var $allowed_plugins = array(); + var $allowed_plugins = array(); + var $silly_cache= array(); function pluglist(&$config, &$ui) { @@ -41,15 +42,15 @@ class pluglist { /* Create dirlist for all plugins */ $this->dirlist= $this->get_plugins ($this->dirlist, $this->config->data['MENU']); - /* Fill info part of pluglist */ - $classes= get_declared_classes(); + /* Fill info part of pluglist */ + $classes= get_declared_classes(); - foreach ($classes as $cname){ - $cmethods = get_class_methods($cname); - if (in_array_ics('plInfo',$cmethods)){ - $this->info[$cname]= @call_user_func(array($cname, 'plInfo')); - } - } + foreach ($classes as $cname){ + $cmethods = get_class_methods($cname); + if (in_array_ics('plInfo',$cmethods)){ + $this->info[$cname]= call_user_func(array($cname, 'plInfo')); + } + } /* Provide field for 'all' */ $this->info['all']= array(); @@ -60,9 +61,8 @@ class pluglist { function get_plugins($list, &$config) { - global $class_mapping; + global $class_mapping; - /* Error reporting, because I'm getting strange messages in PHP 4.2.x */ if (!isset($config['CLASS'])){ if (is_array($config)){ foreach ($config as $val){ @@ -70,7 +70,7 @@ class pluglist { } } } else { - if (is_array($config) && isset($class_mapping[$config['CLASS']])){ + if (is_array($config) && isset($class_mapping[$config['CLASS']])){ $list[$this->index++]= dirname($class_mapping[$config['CLASS']]); } else { $list[$this->index++]= ""; @@ -81,7 +81,7 @@ class pluglist { } - /*! \brief Check whether we are allowed to modify the given acl or nit.. + /*! \brief Check whether we are allowed to modify the given acl or not.. This function is used to check which plugins are visible. @param The acl tag to test, eg. "users/user:self", "systems", ... @@ -89,6 +89,10 @@ class pluglist { */ function check_access($aclname) { + if (isset($this->silly_cache[$aclname])) { + return $this->silly_cache[$aclname]; + } + /* Split given acl string into an array. e.g. "user,systems" => array("users","systems"); */ @@ -100,24 +104,30 @@ class pluglist { } foreach($acls_to_check as $acl_to_check){ + $acl_to_check = trim($acl_to_check); /* Check if the given acl tag is only valid for self acl entries - ui->get_permissions($this->ui->dn,$acl_to_check,"") != ""){ + $this->silly_cache[$aclname]= TRUE; return(TRUE); } + $this->silly_cache[$aclname]= FALSE; return(FALSE); }else{ - /* No self acls. Check if we have any acls for the given ACL type - */ + /* 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; + if(count($deps)){ + $this->silly_cache[$aclname]= TRUE; + return TRUE; + } } } + + $this->silly_cache[$aclname]= FALSE; return (FALSE); } @@ -142,19 +152,6 @@ class pluglist { function gen_menu() { - /* Check if class_location.inc has changed, this is the case - if we have installed or removed plugins. - */ - if(!session::is_set("class_location.inc:timestamp")){ - $tmp = stat("../include/class_location.inc"); - session::set("class_location.inc:timestamp",$tmp['mtime']); - }else{ - $tmp = stat("../include/class_location.inc"); - if($tmp['mtime'] != session::get("class_location.inc:timestamp")){ - $this->menu = ""; - } - } - if ($this->menu == ""){ $first= TRUE; $cfg= $this->config->data['MENU']; @@ -186,7 +183,11 @@ class pluglist { continue; } $vars= get_class_vars($info['CLASS']); - $plHeadline= $vars['plHeadline']; + if (isset($info['NAME'])){ + $plHeadline= _($info['NAME']); + } else { + $plHeadline= $vars['plHeadline']; + } $plDescription= $vars['plDescription']; $index= $this->get_index($info['CLASS']); @@ -204,7 +205,7 @@ class pluglist { $entries= $entries."

"; - if(session::get('js')){ + if(session::global_get('js')){ $entries.= _($plHeadline)."

\n"; } else { $entries.= "iconmenu = ""; - } - } - if ($this->iconmenu == ""){ $cfg= $this->config->data['MENU']; if (isset($this->config->current['ICONSIZE'])){ - list($x, $y)= split("x", $this->config->current['ICONSIZE']); + list($x, $y)= split("x", $this->config->get_cfg_value("iconsize")); $isize= "width=\"$x\" height=\"$y\""; } else { $isize= ""; @@ -333,7 +320,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.""; @@ -341,7 +332,7 @@ class pluglist { } $entries= $entries.""; - if(session::get('js')){ + if(session::global_get('js')){ $entries.= "\"*\" ". _($plHeadline); @@ -415,6 +406,16 @@ class pluglist { { 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: ?>