index 114ab5ddd21fe3cbf8b58558f1fcbee4e1c429ee..0bed2a8a7ae3f57587e54cb9a422fa5cd9a15cfc 100644 (file)
var $info= array();
var $headlines = array();
var $allowed_plugins = array();
+ var $silly_cache= array();
function pluglist(&$config, &$ui)
{
/* 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();
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){
}
}
} 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++]= "";
}
- /*! \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", ...
*/
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");
*/
}
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
- <plugin acl="users/user:self" class="user"...
- */
+ <plugin acl="users/user:self" class="user"... */
if(preg_match("/:self$/",$acl_to_check)){
$acl_to_check = preg_replace("/:self$/","",$acl_to_check);
if($this->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);
}
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'];
$entries= $entries."<p class=\"menuitem\" ".
"onClick='return question(\""._("You are currently editing a database entry. Do you want to dismiss the changes?")."\", \"$href\");'>";
- if(session::get('js')){
+ if(session::global_get('js')){
$entries.= _($plHeadline)."</p>\n";
} else {
$entries.= "<a class=\"menuitem\" ".
function show_iconmenu()
{
global $class_mapping;
-
- /* 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->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= "";
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."</tr><tr>";
}
$entries= $entries."<td class=\"iconmenu\" style=\"width:20%;\" onClick='location.href=\"".$href."\"'".
">";
- if(session::get('js')){
+ if(session::global_get('js')){
$entries.= "<img $isize border=0 align=middle src=\"$image".
"\" alt=\"*\"> ".
_($plHeadline);
{
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:
?>