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= "
\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."\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.= "$entry | ";
$count++;
}
/* Add missing cell? */
if ($count == 1){
$result.= " | ";
}
$result.= "
";
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= "\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
\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));
}
}
?>