* @package BcWe core * @license http://opensource.org/licenses/gpl-license.php GNU Public License * @version $Id$ */ If (!defined("IN_BCWE_ADMIN")) { die("Dieses Script kann nicht ausserhalb des Frameworks laufen!"); } $addnav["right"]=FALSE; $session->page_begin("Version", True); $subnav_item="Verwaltung » Systemstatus"; class versions_panel extends admin_module{ function output(){ global $module,$config,$db,$panel,$admin,$module,$root,$core; $files=$this->listdir($root.'/modules'); foreach($files as $file){ $file_object = array( 'name' => substr($file,strlen($root.'/modules/')), 'size' => $this->byteConvert(filesize($file)), 'time' => date("d.m.Y, H:i:s", filemtime($file))); $dir_objects[] = $file_object; } $url="https://webengine.becast.at/index.php?task=versioncheck"; $out = xml2array($url); if(!empty($out)){ $i=0; $max=count($out['release']["mod"]); while($i<=$max){ $versions[$i]["name"]=$out['release']["mod"][$i]["name"]; $versions[$i]["ver"]=$out['release']["mod"][$i]["ver"]; $versions[$i]["file"]=$out['release']["mod"][$i]["file"]; $i++; } $vers=$core->ver_major.".".$core->ver_minor.".".$core->ver_rev; $panel->title="Moduleversionen"; $panel->content.=""; if($out["release"]["version"]>$vers){ $panel->content.=""; }else{ foreach($module as $mod){ $panel->content.=""; foreach($versions as $v){ if($v["name"]==$mod["name"]){ if($mod["ver"]<$v["ver"]){ $panel->content.=""; }elseif($mod["ver"]==$v["ver"]){ $panel->content.=""; }else{ $panel->content.=""; } } } $panel->content.=""; } foreach($core->mod_ as $mod){ $panel->content.=""; foreach($versions as $v){ if($v["name"]==$mod["name"]){ if($mod["version"]<$v["ver"]){ $panel->content.=""; }elseif($mod["version"]==$v["ver"]){ $panel->content.=""; }else{ $panel->content.=""; } } } $panel->content.=""; } } $panel->content.="
Modul Version Update
Diese Version ist nicht mehr aktuell.
Besuche die Projektseite für ein Update
".$mod["name"]." ".$mod["ver"]."Neue Version verfügbar!AktuellModified file?
".$mod["name"]." ".$mod["version"]."Neue Version verfügbar!AktuellModified file?

"; $panel->parse_page(); }else{ $panel->title="Moduleversionen"; $panel->content.="Die Versionprüfung ist fehlgeschlagen."; $panel->content.=""; foreach($module as $mod){ $panel->content.=""; $panel->content.=""; } $panel->content.="
Modul Version
".$mod["name"]." ".$mod["ver"]."

"; $panel->parse_page(); } $panel->title="Datei Infos"; $panel->content.=""; foreach($dir_objects as $files){ $panel->content.=""; } $panel->content.="
Datei Größe zuletzt Geändert
".$files["name"]." ".$files["size"]." ".$files["time"]."
"; } function byteConvert( $bytes ) { if ($bytes<=0) return '0 Byte'; $convention=1000; //[1000->10^x|1024->2^x] $s=array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB'); $e=floor(log($bytes,$convention)); return round($bytes/pow($convention,$e),2).' '.$s[$e]; } function listdir($start_dir='.') { $files = array(); if (is_dir($start_dir)) { $fh = opendir($start_dir); while (($file = readdir($fh)) !== false) { # loop through the files, skipping . and .., and recursing if necessary if (strcmp($file, '.')==0 || strcmp($file, '..')==0) continue; $filepath = $start_dir . '/' . $file; if ( is_dir($filepath) ) $files = array_merge($files, $this->listdir($filepath)); else array_push($files, $filepath); } closedir($fh); } else { # false if the function was called with an invalid non-directory argument $files = false; } return $files; } } function xml2array($url, $get_attributes = 1, $priority = 'tag') { $contents = ""; if (!function_exists('xml_parser_create')) { return array (); } $parser = xml_parser_create(''); if (!($fp = @ fopen($url, 'rb'))) { return array (); } while (!feof($fp)) { $contents .= fread($fp, 8192); } fclose($fp); xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, "UTF-8"); xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1); xml_parse_into_struct($parser, trim($contents), $xml_values); xml_parser_free($parser); if (!$xml_values) return; //Hmm... $xml_array = array (); $parents = array (); $opened_tags = array (); $arr = array (); $current = & $xml_array; $repeated_tag_index = array (); foreach ($xml_values as $data) { unset ($attributes, $value); extract($data); $result = array (); $attributes_data = array (); if (isset ($value)) { if ($priority == 'tag') $result = $value; else $result['value'] = $value; } if (isset ($attributes) and $get_attributes) { foreach ($attributes as $attr => $val) { if ($priority == 'tag') $attributes_data[$attr] = $val; else $result['attr'][$attr] = $val; //Set all the attributes in a array called 'attr' } } if ($type == "open") { $parent[$level -1] = & $current; if (!is_array($current) or (!in_array($tag, array_keys($current)))) { $current[$tag] = $result; if ($attributes_data) $current[$tag . '_attr'] = $attributes_data; $repeated_tag_index[$tag . '_' . $level] = 1; $current = & $current[$tag]; } else { if (isset ($current[$tag][0])) { $current[$tag][$repeated_tag_index[$tag . '_' . $level]] = $result; $repeated_tag_index[$tag . '_' . $level]++; } else { $current[$tag] = array ( $current[$tag], $result ); $repeated_tag_index[$tag . '_' . $level] = 2; if (isset ($current[$tag . '_attr'])) { $current[$tag]['0_attr'] = $current[$tag . '_attr']; unset ($current[$tag . '_attr']); } } $last_item_index = $repeated_tag_index[$tag . '_' . $level] - 1; $current = & $current[$tag][$last_item_index]; } } elseif ($type == "complete") { if (!isset ($current[$tag])) { $current[$tag] = $result; $repeated_tag_index[$tag . '_' . $level] = 1; if ($priority == 'tag' and $attributes_data) $current[$tag . '_attr'] = $attributes_data; } else { if (isset ($current[$tag][0]) and is_array($current[$tag])) { $current[$tag][$repeated_tag_index[$tag . '_' . $level]] = $result; if ($priority == 'tag' and $get_attributes and $attributes_data) { $current[$tag][$repeated_tag_index[$tag . '_' . $level] . '_attr'] = $attributes_data; } $repeated_tag_index[$tag . '_' . $level]++; } else { $current[$tag] = array ( $current[$tag], $result ); $repeated_tag_index[$tag . '_' . $level] = 1; if ($priority == 'tag' and $get_attributes) { if (isset ($current[$tag . '_attr'])) { $current[$tag]['0_attr'] = $current[$tag . '_attr']; unset ($current[$tag . '_attr']); } if ($attributes_data) { $current[$tag][$repeated_tag_index[$tag . '_' . $level] . '_attr'] = $attributes_data; } } $repeated_tag_index[$tag . '_' . $level]++; //0 and 1 index is already taken } } } elseif ($type == 'close') { $current = & $parent[$level -1]; } } return ($xml_array); }