ui= $ui; $this->config= $config; /* Create dirlist for all plugins */ $this->dirlist= $this->get_plugins ($this->dirlist, $this->config->data); /* 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')); } } /* Provide field for 'all' */ $this->info['all']= array(); $this->info['all']['plProvidedAcls']= array(); $this->info['all']['plDescription']= _("All objects in this category"); $this->info['all']['plSelfModify']= FALSE; } function get_plugins($list, $config) { /* Error reporting, because I'm getting strange messages in PHP 4.2.x */ if (!isset($config['PATH']) && !isset($config['CLASS'])){ if (is_array($config)){ foreach ($config as $val){ $list= $this->get_plugins($list, $val); } } } else { if (isset ($config['PATH']) && is_array($config)){ $list[$this->index++]= $config['PATH']; if (isset($config['CLASS'])){ $class= $config['CLASS']; } } } return ($list); } function check_access($modname) { /* This plugin is readable for everyone, return true */ if ($modname == 'default'){ return (TRUE); } /* Look through ACL's */ foreach($this->ui->subtreeACL as $arr){ foreach($arr as $value){ if ($value == ':all' || preg_match("/[,:]$modname#/", $value)){ if (!preg_match('/^!/', $value)){ return (TRUE); } } } } return (FALSE); } function gen_headlines() { $ret = array(); if(count($this->headlines) == 0){ foreach($this->config->data['MENU'] as $headline => $plugins){ foreach( $plugins as $id => $plug){ $attrs = (get_class_vars($plug['CLASS'])); $ret[$id]['HEADLINE'] = $headline; $ret[$id]['NAME'] = $attrs['plHeadline']; } } $this->headlines = $ret; } return($this->headlines); } function gen_menu() { if ($this->menu == ""){ $first= TRUE; $cfg= $this->config->data['MENU']; /* Parse headlines */ foreach ($cfg as $headline => $plug){ if ($first){ $style= ""; $first= FALSE; } else { $style= "style='border-top:1px solid #AAA; margin-top:0.8em;'"; } $menu= "
\n"; $entries= ""; $this->menuparts[_($headline)]= array(); /* Parse sub-plugins */ foreach ($plug as $info){ /* Read information from class variable */ if (!isset($info['CLASS'])){ print_red(_("Your gosa.conf information has changed partly. Please convert it using the contributed script fix_config.sh!")); echo $_SESSION['errors']; exit; } $vars= get_class_vars($info['CLASS']); $plHeadline= $vars['plHeadline']; $plDescription= $vars['plDescription']; $index= $this->get_index($info['PATH'],$info['CLASS']); $image= get_template_path('images/'.$info['ICON']); $href= "main.php?plug=$index&reset=1"; if(!$vars){ $plHeadline = _("Unknown"); $plDescription = _("Unknown"); $href= "main.php?reset=1"; } #if ($this->check_access($info['ACL'])){ $entries= $entries." \n"; } else { $entries.= "". _($plHeadline)."\n"; } /* Generate icon entry with description */ $current= '';
if($_SESSION['js']){
$current.= ''._($plHeadline).' '._($plDescription); } else { $current.= ''._($plHeadline).' '._($plDescription).''; } $current.= ' |
$entry | "; $count++; } /* Add missing cell? */ if ($count == 1){ $result.= ""; } $result.= " |
"; if($_SESSION['js']){ $entries.= " ". _($plHeadline); } else { $entries.= "". " ". _($plHeadline).""; } $entries.= " | \n"; $col++ ; #} } /* Append to menu */ if ($entries != ""){ $this->iconmenu.= $menu.$entries; /* Fill up remaining columns */ if ($col != 1){ $col--; while ($col % 5){ $this->iconmenu= $this->iconmenu. "\n"; $col++; } } /* close table */ $this->iconmenu= $this->iconmenu." |