ui= $ui; $this->config= $config; /* Create dirlist for all plugins */ $this->dirlist= $this->get_plugins ($this->dirlist, $this->config->data); } function get_plugins($list, $config) { /* Error reporting, because I'm getting strange messages in PHP 4.2.x */ error_reporting(0); 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']; } } error_reporting(E_ALL); 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_menu() { if ($this->menu == ""){ $cfg= $this->config->data['MENU']; /* Parse headlines */ foreach ($cfg as $headline => $plug){ $menu= "

"._($headline)."

\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']); $image= get_template_path('images/'.$info['ICON']); $href= "main.php?plug=$index&reset=1"; if ($this->check_access($info['ACL'])){ $entries= $entries."

". "". _($plHeadline)."

\n"; /* Generate icon entry with description */ $this->menuparts[_($headline)][]= ''; } } /* Append to menu */ if ($entries != ""){ $this->menu.= $menu.$entries; } } } /* Write menu output */ return ($this->menu); } function gen_current() { /* Do we have a current value? */ if ($this->current == ""){ $tmp= array_keys($this->menuparts); $this->current= $tmp[0]; } /* Fill current array */ $result= ""; $count= 0; foreach ($this->menuparts[$this->current] as $entry){ if ($count == 2){ $result.= ""; $count= 0; } if ($count == 0){ $result.= ""; } $result.= ""; $count++; } /* Add missing cell? */ if ($count == 1){ $result.= ""; } $result.= "
$entry 
"; return $result; } function show_iconmenu() { if ($this->iconmenu == ""){ $cfg= $this->config->data['MENU']; if (isset($this->config->current['ICONSIZE'])){ list($x, $y)= split("x", $this->config->current['ICONSIZE']); $isize= "width=\"$x\" height=\"$y\""; } else { $isize= ""; } /* Parse headlines */ foreach ($cfg as $headline => $plug){ $col= 1; $menu= "

". _($headline)."

\n\n\n"; $entries= ""; foreach ($plug as $info){ /* Read information from class variable */ $vars= get_class_vars($info['CLASS']); $plHeadline= $vars['plHeadline']; $plDescription= $vars['plDescription']; $index= $this->get_index($info['PATH']); if ($this->check_access($info['ACL'])){ /* Hm this looks doubled */ $image= get_template_path('images/'.$info['ICON']); if ($col > 5){ $entries= $entries.""; $col = 1; } $entries= $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."\n
". "\"*\" ". _($plHeadline)." 
\n"; } } } /* Write menu output */ return ($this->iconmenu); } function get_path($index) { if(!isset($this->dirlist[$index])){ return (""); } return ("../".$this->dirlist[$index]); } function get_index($path) { return (array_search($path, $this->dirlist)); } } ?>