From 2ea54af6f77c974ce55beb3b7516a048c63d5ffe Mon Sep 17 00:00:00 2001 From: genuineparts Date: Tue, 24 Jun 2025 21:05:13 +0200 Subject: [PATCH] updates --- admin/versions.apnl.php | 598 ++++++++--------------- modules/news/admin/editcategory.apnl.php | 24 +- 2 files changed, 223 insertions(+), 399 deletions(-) diff --git a/admin/versions.apnl.php b/admin/versions.apnl.php index d9f24f1..89d08cf 100644 --- a/admin/versions.apnl.php +++ b/admin/versions.apnl.php @@ -1,4 +1,4 @@ -parse($data, NULL); + $url="https://webengine.becast.at/index.php?task=versioncheck"; + $out = xml2array($url); + if(!empty($out)){ $i=0; - $max=count($out["mod"]); + $max=count($out['release']["mod"]); while($i<=$max){ - $versions[$i]["name"]=$out["mod"][$i]; - $versions[$i]["ver"]=$out["ver"][$i]; + $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.=" + $panel->content.="
- - - + + + "; - if($out["relase"]["version"]>$vers){ - $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($module 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.=""; - } + if($v["name"]==$mod["name"]){ + if($mod["ver"]<$v["ver"]){ + $panel->content.=""; + }elseif($mod["ver"]==$v["ver"]){ + $panel->content.=""; + }else{ + $panel->content.=""; } } - $panel->content.=""; - } - } - $panel->content.="
ModulVersionUpdateModulVersionUpdate
Diese Version ist nicht mehr aktuell.
Besuche die Projektseite für ein 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"]."
".$mod["name"]."".$mod["ver"]."Neue Version verfügbar!AktuellModified file?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.="
ModulVersion
".$mod["name"]."".$mod["ver"]."

"; - $panel->parse_page(); - } - $panel->title="Datei Infos"; - $panel->content.=" - - - - - "; - foreach($dir_objects as $files){ - $panel->content.=" - - - - "; - } + } + $panel->content.=""; - $panel->content.="
DateiGrößezuletzt Geändert
".$files["name"]."".$files["size"]."".$files["time"]."
"; + } + foreach($core->mod_ as $mod){ + $panel->content.=" + ".$mod["name"]." + ".$mod["version"].""; + foreach($versions as $v){ + if($v["name"]==$mod["name"]){ + if($mod["version"]<$v["ver"]){ + $panel->content.="Neue Version verfügbar!"; + }elseif($mod["version"]==$v["ver"]){ + $panel->content.="Aktuell"; + }else{ + $panel->content.="Modified file?"; + } + } + } + $panel->content.=""; + } + } + $panel->content.="
"; + $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.="
ModulVersion
".$mod["name"]."".$mod["ver"]."

"; + $panel->parse_page(); + } + $panel->title="Datei Infos"; + $panel->content.=" + + + + + "; + foreach($dir_objects as $files){ + $panel->content.=" + + + + "; + } + + $panel->content.="
DateiGrößezuletzt Geändert
".$files["name"]."".$files["size"]."".$files["time"]."
"; } function byteConvert( $bytes ) { @@ -180,315 +177,142 @@ class versions_panel extends admin_module{ } -class Xml { - - /** - * Xml parser container. - * - * @var resource parser - */ - var $parser; - - /** - * Parse result. - * - * @var array pOut - */ - var $pOut = array(); - - /** - * Contain the overlap tag temporarily . - * - * @var array track - */ - var $track = array(); - - /** - * Current tag level. - * - * @var string tmpLevel - */ - var $tmpLevel = ''; - - /** - * Attribut of current tag. - * - * @var array tmpAttrLevel - */ - var $tmpAttrLevel = array(); - - /** - * Write result. - * - * @var string wOut - */ - var $wOut = ''; - - - - - /** - * parse - * Set the parser Xml and theses options. - * Xml file could be a string, a file, or curl. - * When the source is loaded, we run the parse. - * After, we clean all the memory and variables, - * and return the result in an array. - * - * @access public - * @param src string Source - * @param typeof string Source type : NULL, FILE, CURL. - * @param encoding string Encoding type. - * @return array - */ - function parse ( $src, $typeof = 'FILE', $encoding = 'UTF-8' ) { - - // ini; - // (re)set array; - $this->pOut = array(); - $this->parser = xml_parser_create(); - - xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, 0); - xml_parser_set_option($this->parser, XML_OPTION_TARGET_ENCODING, $encoding); - - xml_set_object($this->parser, $this); - xml_set_element_handler($this->parser, 'startHandler', 'endHandler'); - xml_set_character_data_handler($this->parser, 'contentHandler'); - - if(empty($src)) - trigger_error('Source could not be empty.', E_USER_ERROR); - - // format source; - if($typeof == NULL) - $data = $src; - elseif($typeof == 'FILE') { - $fop = fopen($src, 'r'); - $data = null; - while(!feof($fop)) - $data .= fread($fop, 1024); - fclose($fop); + function xml2array($url, $get_attributes = 1, $priority = 'tag') + { + $contents = ""; + if (!function_exists('xml_parser_create')) + { + return array (); } - elseif($typeof == 'CURL') { - $curl = curl_init(); - curl_setopt($curl, CURLOPT_URL, $src); - curl_setopt($curl, CURLOPT_HEADER, 0); - $data = curl_exec($curl); - curl_close($curl); + $parser = xml_parser_create(''); + if (!($fp = @ fopen($url, 'rb'))) + { + return array (); } - else - return trigger_error('Xml parser need data.', E_USER_ERROR); - - // parse $data; - $parse = xml_parse($this->parser, $data); - if(!$parse) - return trigger_error('XML Error : %s at line %d.', E_USER_ERROR, - array(xml_error_string(xml_get_error_code($this->parser)), - xml_get_current_line_number($this->parser))); - - // destroy parser; - xml_parser_free($this->parser); - - // unset extra vars; - unset($data, - $this->track, - $this->tmpLevel); - - // remove global tag and return the result; - return $this->pOut[0][key($this->pOut[0])]; - } - - - - /** - * startHandler - * Manage the open tag, and these attributs by callback. - * The purpose is to create a pointer : {{int ptr}}. - * If the pointer exists, we have a multi-tag situation. - * Tag name is stocked like : '' - * Attributs is stocked like : '-ATTR' - * Return true but built $this->pOut. - * - * @access private - * @param parser resource Parser resource. - * @param tag string Tag name. - * @param attr array Attribut. - * @return bool - */ - function startHandler ( $parser, $tag, $attr ) { - - // built $this->track; - $this->track[] = $tag; - // place pointer to the end; - end($this->track); - // temp level; - $this->tmpLevel = key($this->track); - - // built attrLevel into $this->tmpAttrLevel - if(isset($this->tmpAttrLevel[$this->tmpLevel]['attrLevel'])) - $this->tmpAttrLevel[$this->tmpLevel]['attrLevel']++; - - // built $this->pOut; - if(!isset($this->pOut[key($this->track)][$tag])) { - $this->pOut[key($this->track)][$tag] = '{{'.key($this->track).'}}'; - - if(!isset($this->tmpAttrLevel[$this->tmpLevel]['attrLevel'])) - $this->tmpAttrLevel[$this->tmpLevel]['attrLevel'] = 0; + while (!feof($fp)) + { + $contents .= fread($fp, 8192); } - - // built attributs; - if(!empty($attr)) { - - $this->tmpAttrLevel[$this->tmpLevel][] = $this->tmpAttrLevel[$this->tmpLevel]['attrLevel']; - end($this->tmpAttrLevel[$this->tmpLevel]); - - // it's the first attribut; - if(!isset($this->pOut[key($this->track)][$tag.'-ATTR'])) - $this->pOut[key($this->track)][$tag.'-ATTR'] = $attr; - - // or it's not the first; - else { - // so it's the second; - if(!prev($this->tmpAttrLevel[$this->tmpLevel])) { - $this->pOut[key($this->track)][$tag.'-ATTR'] = array( - current($this->tmpAttrLevel[$this->tmpLevel]) => $this->pOut[key($this->track)][$tag.'-ATTR'], - next($this->tmpAttrLevel[$this->tmpLevel]) => $attr - ); - } - // or one other; + 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 - $this->pOut[key($this->track)][$tag.'-ATTR'][$this->tmpAttrLevel[$this->tmpLevel]['attrLevel']] = $attr; + $result['value'] = $value; } - } - - return true; - } - - - - /** - * contentHandler - * Detect the pointer, or the multi-tag by callback. - * If we have a pointer, the method replaces this pointer by the content. - * Else we have a multi-tag, the method add a element to this array. - * Return true but built $this->pOut. - * - * @access private - * @param parser resource Parser resource. - * @param contentHandler string Tag content. - * @return bool - */ - function contentHandler ( $parser, $contentHandler ) { - - // remove all spaces; - if(!preg_match('#^\\\\s*$#', $contentHandler)) { - - // $contentHandler is a string; - if(is_string($this->pOut[key($this->track)][current($this->track)])) { - - // then $contentHandler is a pointer : {{int ptr}} case 1; - if(preg_match('#{{([0-9]+)}}#', $this->pOut[key($this->track)][current($this->track)])) - $this->pOut[key($this->track)][current($this->track)] = $contentHandler; - - // or then $contentHandler is a multi-tag content case 2; - else { - $this->pOut[key($this->track)][current($this->track)] = array( - 0 => $this->pOut[key($this->track)][current($this->track)], - 1 => $contentHandler - ); - } - } - // or $contentHandler is an array; - else { - - // then $contentHandler is the multi-tag array case 1; - if(isset($this->pOut[key($this->track)][current($this->track)][0])) - $this->pOut[key($this->track)][current($this->track)][] = $contentHandler; - - // or then $contentHandler is a node-tag case 2; - else - $this->pOut[key($this->track)][current($this->track)] = array( - 0 => $this->pOut[key($this->track)][current($this->track)], - 1 => $contentHandler - ); - } - - } - - return true; - } - - - - /** - * endHandler - * Detect the last pointer by callback. - * Move the last tags block up. - * And reset some temp variables. - * Return true but built $this->pOut. - * - * @access private - * @param parser resource Parser resource. - * @param tag string Tag name. - * @return bool - */ - function endHandler ( $parser, $tag ) { - - // if level--; - if(key($this->track) == $this->tmpLevel-1) { - // search up tag; - // use array_keys if an empty tag exists (taking the last tag); - - // if it's a normal framaset; - $keyBack = array_keys($this->pOut[key($this->track)], '{{'.key($this->track).'}}'); - $count = count($keyBack); - - if($count != 0) { - $keyBack = $keyBack[$count-1]; - // move this level up; - $this->pOut[key($this->track)][$keyBack] = $this->pOut[key($this->track)+1]; - } - - // if we have a multi-tag framaset ($count == 0); - else { - // if place is set; - if(isset($this->pOut[key($this->track)][current($this->track)][0])) { - - // if it's a string, we built an array; - if(is_string($this->pOut[key($this->track)][current($this->track)])) - $this->pOut[key($this->track)][current($this->track)] = array( - 0 => $this->pOut[key($this->track)][current($this->track)], - 1 => $this->pOut[key($this->track)+1] - ); - - // else add an index into the array; + if (isset ($attributes) and $get_attributes) + { + foreach ($attributes as $attr => $val) + { + if ($priority == 'tag') + $attributes_data[$attr] = $val; else - $this->pOut[key($this->track)][current($this->track)][] = $this->pOut[key($this->track)+1]; + $result['attr'][$attr] = $val; //Set all the attributes in a array called 'attr' } - // else set the place; - else - $this->pOut[key($this->track)][current($this->track)] = array( - 0 => $this->pOut[key($this->track)][current($this->track)], - 1 => $this->pOut[key($this->track)+1] - ); } - - // kick $this->pOut level out; - array_pop($this->pOut); - end($this->pOut); + 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]; + } } - - // re-temp level; - $this->tmpLevel = key($this->track); - - while(isset($this->tmpAttrLevel[$this->tmpLevel+1])) - array_pop($this->tmpAttrLevel); - - // kick $this->track level out; - array_pop($this->track); - end($this->track); - - return true; + return ($xml_array); } -} -?> diff --git a/modules/news/admin/editcategory.apnl.php b/modules/news/admin/editcategory.apnl.php index 19b5456..a653ac8 100644 --- a/modules/news/admin/editcategory.apnl.php +++ b/modules/news/admin/editcategory.apnl.php @@ -1,4 +1,4 @@ -title="Vorhandene Kategorien"; $panel->content.=" - - - - - + + + + + "; if(!empty($articles)){ foreach($articles as $u){ $panel->content.=" - - - "; + + + "; if($u["active"]=="true"){ - $panel->content.=""; + $panel->content.=""; }else{ - $panel->content.=""; + $panel->content.=""; } - $panel->content.=" + $panel->content.=""; } }else{
IDNameBildAktivAktionenIDNameBildAktivAktionen
".$u["id"]."".$u["name"]."".$u["picture"]."".$u["id"]."".$u["name"]."".$u["picture"]."JaJaNeinNein