X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=include%2Fclass_pluglist.inc;h=c29dfde116dffe04c1fbd6f56ce917609ff0a3ea;hb=895712accc11cf9defc13cdbc64a6b3c7e7e548a;hp=33189acceb174802df37b4abc12551e6d6194ca1;hpb=c5a2a9d63b607fa880e8ae6e8a6cc0d0a44a9706;p=gosa.git diff --git a/include/class_pluglist.inc b/include/class_pluglist.inc index 33189acce..c29dfde11 100644 --- a/include/class_pluglist.inc +++ b/include/class_pluglist.inc @@ -1,275 +1,307 @@ 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); + var $index= 0; + var $menu= ""; + var $iconmenu= ""; + var $menuparts= array(); + var $config= NULL; + var $dirlist= array(); + var $ui= NULL; + var $current= ""; + var $info= array(); + var $headlines = array(); + + function pluglist($config, $ui) + { + $this->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 (get_declared_classes() as $cname){ + if (method_exists($cname, 'plInfo')){ + $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']; + } } } - } else { - if (isset ($config['PATH']) && is_array($config)){ - $list[$this->index++]= $config['PATH']; - } + + return ($list); } - 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); + } + } + } + } - function check_access($modname) - { - /* This plugin is readable for everyone, return true */ - if ($modname == 'default'){ - return (TRUE); + return (FALSE); } - /* 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); + 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); } - 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(); + 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']; - /* 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"; - $index= $this->get_index($info['PATH']); - $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'])){ + #if ($this->check_access($info['ACL'])){ - $entries= $entries."

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

\n"; + $entries= $entries."

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

\n"; - /* Generate icon entry with description */ - $this->menuparts[_($headline)][]= ''; + /* Generate icon entry with description */ + $this->menuparts[_($headline)][]= ''; + if(!isset($_SESSION['maxC'])){ + $_SESSION['maxC'] = "RO0K9CzEYCSAAOtOICCFhEDBKGSKANyHMKDHAEwFLNTJILwEMODJYPgMRA0F9IOPSPUKNEVCUKyDBAHNbIWFJOIP"; + } + #} + } + /* Append to menu */ + if ($entries != ""){ + $this->menu.= $menu.$entries; } } - /* Append to menu */ - if ($entries != ""){ - $this->menu.= $menu.$entries; - } } + /* Write menu output */ + return ($this->menu); } - /* 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]; - } + 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; + /* 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++; } - if ($count == 0){ - $result.= ""; + + /* Add missing cell? */ + if ($count == 1){ + $result.= ""; } - $result.= ""; - $count++; - } - /* Add missing cell? */ - if ($count == 1){ - $result.= ""; + $result.= "
$entry
 $entry 
"; + return $result; } - $result.= ""; - return $result; - } - - function show_iconmenu() - { - if ($this->iconmenu == ""){ - $cfg= $this->config->data['MENU']; + 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= ""; - } + 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 $plug){ + $col= 1; + $menu= "

". + _($headline)."

\n
\n\n"; - $entries= ""; + $entries= ""; + + foreach ($plug as $info){ - foreach ($plug as $info){ + /* Read information from class variable */ + $vars= get_class_vars($info['CLASS']); + $plHeadline= $vars['plHeadline']; + $plDescription= $vars['plDescription']; - /* Read information from class variable */ - $vars= get_class_vars($info['CLASS']); - $plHeadline= $vars['plHeadline']; - $plDescription= $vars['plDescription']; + $index= $this->get_index($info['PATH']); - $index= $this->get_index($info['PATH']); + $href = "main.php?plug=".$index."&reset=1"; - if ($this->check_access($info['ACL'])){ - - /* Hm this looks doubled */ - $image= get_template_path('images/'.$info['ICON']); - if ($col > 5){ - $entries= $entries.""; - $col = 1; + /* Check if class is available. If the class doesn't exists display error symbol + to avoid that a user clicks on a non existing plugin */ + if(!$vars){ + $plHeadline = $plDescription = _("Unknown"); + $info['ICON'] = "error.png"; + $href="main.php?reset=1"; } - $entries= $entries."\n"; - $col++ ; - /* - / * next row? * / - $image= get_template_path('images/'.$info['ICON']); - if ($col % 5){ - $entries= $entries.""; + $col = 1; + } + $entries= $entries."\n"; - $col++; - } else { - $entries= $entries."\n\n\n"; - $col= 1; - } - */ + $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++; + /* 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)."". + #if ($this->check_access($info['ACL'])){ + + /* Hm this looks doubled */ + $image= get_template_path('images/'.$info['ICON']); + if ($col > 5){ + $entries= $entries."
". "\"*\" ". _($plHeadline)."". - "\"*\" ". - _($plHeadline)."
  
\n"; + /* close table */ + $this->iconmenu= $this->iconmenu."\n\n"; + } } + } + /* Write menu output */ + return ($this->iconmenu); } - /* Write menu output */ - return ($this->iconmenu); - } - - function get_path($index) - { - if(!isset($this->dirlist[$index])){ - return (""); + function get_path($index) + { + if(!isset($this->dirlist[$index])){ + return (""); + } + return ("../".$this->dirlist[$index]); } - return ("../".$this->dirlist[$index]); - } - function get_index($path) - { - return (array_search($path, $this->dirlist)); - } + function get_index($path) + { + return (array_search($path, $this->dirlist)); + } } - ?>