From 586272ccec099913814c0171d7616ad737421ac7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philip=20H=C3=A4usler?= Date: Fri, 3 Jun 2011 16:52:57 +0200 Subject: [PATCH] begin pentabarf import --- includes/funktion_xml.php | 232 ++++++++++++++--------------- includes/pages/admin_import.php | 253 ++++++++++++++++++++++++++++++++ includes/sys_menu.php | 1 + www-ssl/index.php | 4 + 4 files changed, 374 insertions(+), 116 deletions(-) create mode 100644 includes/pages/admin_import.php diff --git a/includes/funktion_xml.php b/includes/funktion_xml.php index 60eb26fa..87fd72d0 100644 --- a/includes/funktion_xml.php +++ b/includes/funktion_xml.php @@ -1,154 +1,154 @@ sub[ $XMLpos[$Tiefe] ]->data .= htmlentities( convertValues($Data), ENT_QUOTES); - - if($XMLDEBUG) - echo "???". $Objekt->sub[ $XMLpos[$Tiefe] ]->name. "|$Data|$Tiefe???
"; - } else - dataXMLmain( $Data, $Objekt->sub[ $XMLpos[$Tiefe] ], $Tiefe+1); + if ($XMLDEBUG) + echo "?$Tiefe$depth"; + + if (($depth -1) == $Tiefe) { + $Objekt->sub[$XMLpos[$Tiefe]]->data .= htmlentities(convertValues($Data), ENT_QUOTES); + + if ($XMLDEBUG) + echo "???" . $Objekt->sub[$XMLpos[$Tiefe]]->name . "|$Data|$Tiefe???
"; + } else + dataXMLmain($Data, $Objekt->sub[$XMLpos[$Tiefe]], $Tiefe +1); } -function startXMLmain( $Data, &$Objekt, $Tiefe ) { - global $XMLpos, $depth, $XMLDEBUG; +function startXMLmain($Data, & $Objekt, $Tiefe) { + global $XMLpos, $depth, $XMLDEBUG; - if( $XMLDEBUG) - if($Tiefe==1) - { print_r(array_values ($XMLpos)); echo "--".$Data->name; - echo " #$Tiefe/$depth#"; - } - - if( $depth==$Tiefe) - { - $Objekt->sub[ $XMLpos[$Tiefe] ] = $Data; - if( $XMLDEBUG) - echo "|". $XMLpos[$Tiefe]."|". $Objekt->sub[ $XMLpos[$Tiefe] ]->name. " ". $Data->name." save|". "#-#
"; - } - else - startXMLmain( $Data, $Objekt->sub[ $XMLpos[$Tiefe] ], $Tiefe+1); + if ($XMLDEBUG) + if ($Tiefe == 1) { + print_r(array_values($XMLpos)); + echo "--" . $Data->name; + echo " #$Tiefe/$depth#"; + } + + if ($depth == $Tiefe) { + $Objekt->sub[$XMLpos[$Tiefe]] = $Data; + if ($XMLDEBUG) + echo "|" . $XMLpos[$Tiefe] . "|" . $Objekt->sub[$XMLpos[$Tiefe]]->name . " " . $Data->name . " save|" . "#-#
"; + } else + startXMLmain($Data, $Objekt->sub[$XMLpos[$Tiefe]], $Tiefe +1); } -function start_element_handler($parser, $name, $attribs) -{ - global $depth, $XMLmain, $XMLpos; +function start_element_handler($parser, $name, $attribs) { + global $depth, $XMLmain, $XMLpos; - $Data = new element; - $Data->name = $name; - while(list($key, $value) = each($attribs)) - $Data->attributes[$key] = convertValues($value); - $Data->depth = $depth; - $XMLpos[$depth]++; + $Data = new element; + $Data->name = $name; + while (list ($key, $value) = each($attribs)) + $Data->attributes[$key] = convertValues($value); + $Data->depth = $depth; + $XMLpos[$depth]++; - if( $depth==0) - $XMLmain= $Data; - else - startXMLmain( $Data, $XMLmain, 1); + if ($depth == 0) + $XMLmain = $Data; + else + startXMLmain($Data, $XMLmain, 1); - $depth++; + $depth++; } -function end_element_handler($parser, $name) -{ - global $depth, $XMLpos; - $XMLpos[$depth]=0; - $depth--; +function end_element_handler($parser, $name) { + global $depth, $XMLpos; + $XMLpos[$depth] = 0; + $depth--; } -function character_data_handler($parser, $data) -{ - global $XMLmain; - if( strlen(trim($data)) ) - dataXMLmain( $data, $XMLmain, 1); +function character_data_handler($parser, $data) { + global $XMLmain; + if (strlen(trim($data))) + dataXMLmain($data, $XMLmain, 1); } /*#######################################################################################*/ -function readXMLfile( $file ) -{ - global $XMLDEBUG; - - //$xml_parser = xml_parser_create_ns(); - $xml_parser = xml_parser_create("UTF-8"); - xml_set_element_handler($xml_parser, "start_element_handler", "end_element_handler"); - xml_set_character_data_handler($xml_parser, "character_data_handler"); - - if (file_exists($file)) - { - if (!($fp = fopen($file, "r"))) - { - echo("

could not open XML file \"$file\"

"); - return -1; - } - } - else - { - echo("

XML file \"$file\" not exist

"); - return -1; - } +function readXMLfile($file) { + global $XMLDEBUG; - if( $XMLDEBUG) echo "
";
-  while ($data = fread($fp, 4096)) 
-  {
-    if (!xml_parse($xml_parser, $data, feof($fp))) 
-    {
-      die(sprintf("XML error: %s at line %d",
-            xml_error_string(xml_get_error_code($xml_parser)),
-            xml_get_current_line_number($xml_parser)));
-    }
-  }
-  if( $XMLDEBUG)  echo "
"; - xml_parser_free($xml_parser); - return 0; + //$xml_parser = xml_parser_create_ns(); + $xml_parser = xml_parser_create("UTF-8"); + xml_set_element_handler($xml_parser, "start_element_handler", "end_element_handler"); + xml_set_character_data_handler($xml_parser, "character_data_handler"); + + if (file_exists($file)) { + if (!($fp = fopen($file, "r"))) { + echo ("

could not open XML file \"$file\"

"); + return -1; + } + } else { + echo ("

XML file \"$file\" not exist

"); + return -1; + } + + if ($XMLDEBUG) + echo "
";
+	while ($data = fread($fp, 4096)) {
+		if (!xml_parse($xml_parser, $data, feof($fp))) {
+			die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser)));
+		}
+	}
+	if ($XMLDEBUG)
+		echo "
"; + xml_parser_free($xml_parser); + return 0; } /*#######################################################################################*/ -function getXMLsubPease( $Sourse, $Name ) -{ - foreach($Sourse->sub as $key => $value) { - if ($value->name == $Name) { - return $value; - } - } +function getXMLsubPease($Sourse, $Name) { + foreach ($Sourse->sub as $key => $value) { + if ($value->name == $Name) { + return $value; + } + } - echo "

Fehler: getXMLsubPease( $Sourse, $Name ) not found

"; -// die; + echo "

Fehler: getXMLsubPease( $Sourse, $Name ) not found

"; + // die; } /*#######################################################################################*/ -function getXMLsubData( $Sourse, $Name ) -{ - $XML = getXMLsubPease( $Sourse, $Name); - return $XML->data; +function getXMLsubData($Sourse, $Name) { + $XML = getXMLsubPease($Sourse, $Name); + return $XML->data; } ?> diff --git a/includes/pages/admin_import.php b/includes/pages/admin_import.php new file mode 100644 index 00000000..9b8af2e2 --- /dev/null +++ b/includes/pages/admin_import.php @@ -0,0 +1,253 @@ +\n

XML File:

\n"; + if (isset ($_POST["PentabarfUser"]) && isset ($_POST["password"]) && isset ($_POST["PentabarfURL"])) { + $html .= "Update XCAL-File from Pentabarf.."; + if ($PentabarfGetWith == "fsockopen") { + + //backup error messeges and delate + $Backuperror_messages = $error_messages; + $fp = fsockopen("ssl://$PentabarfXMLhost", 443, $errno, $errstr, 30); + // $error_messages = $Backuperror_messages; + + if (!$fp) { + $html .= "

fail: File 'https://$PentabarfXMLhost/$PentabarfXMLpath" . $_POST["PentabarfURL"] . "' not readable!" . + "[$errstr ($errno)]

"; + } else { + if (($fileOut = fopen("$Tempdir/engelXML", "w")) != FALSE) { + $head = 'GET /' . $PentabarfXMLpath . $_POST["PentabarfURL"] . ' HTTP/1.1' . "\r\n" . + 'Host: ' . $PentabarfXMLhost . "\r\n" . + 'User-Agent: Engelsystem' . "\r\n" . + 'Authorization: Basic ' . + base64_encode($_POST["PentabarfUser"] . ':' . $_POST["password"]) . "\r\n" . + "\r\n"; + fputs($fp, $head); + $Zeilen = -1; + while (!feof($fp)) { + $Temp = fgets($fp, 1024); + + // ende des headers + if ($Temp == "f20\r\n") { + $Zeilen = 0; + $Temp = ""; + } + + //file ende? + if ($Temp == "0\r\n") + break; + + if (($Zeilen > -1) && ($Temp != "ffb\r\n")) { + //steuerzeichen ausfiltern + if (strpos("#$Temp", "\r\n") > 0) + $Temp = substr($Temp, 0, strlen($Temp) - 2); + if (strpos("#$Temp", "1005") > 0) + $Temp = ""; + if (strpos("#$Temp", "783") > 0) + $Temp = ""; + //schreiben in file + fputs($fileOut, $Temp); + $Zeilen++; + } + } + fclose($fileOut); + + $html .= "
Es wurden $Zeilen Zeilen eingelesen
"; + } else + $html .= "

fail: File '$Tempdir/engelXML' not writeable!

"; + fclose($fp); + } + } + elseif ($PentabarfGetWith == "fopen") { + //user uns password in url einbauen + $FileNameIn = "https://" . $_POST["PentabarfUser"] . ':' . $_POST["password"] . "@" . + $PentabarfXMLhost . "/" . $PentabarfXMLpath . $_POST["PentabarfURL"]; + + if (($fileIn = fopen($FileNameIn, "r")) != FALSE) { + if (($fileOut = fopen("$Tempdir/engelXML", "w")) != FALSE) { + $Zeilen = 0; + while (!feof($fileIn)) { + $Zeilen++; + fputs($fileOut, fgets($fileIn)); + } + fclose($fileOut); + $html .= "
Es wurden $Zeilen Zeilen eingelesen
"; + } else + $html .= "

fail: File '$Tempdir/engelXML' not writeable!

"; + fclose($fileIn); + } else + $html .= "

fail: File 'https://$PentabarfXMLhost/$PentabarfXMLpath" . $_POST["PentabarfURL"] . "' not readable!

"; + } + elseif ($PentabarfGetWith == "wget") { + $Command = "wget --http-user=" . $_POST["PentabarfUser"] . " --http-passwd=" . $_POST["password"] . " " . + "https://$PentabarfXMLhost/$PentabarfXMLpath" . $_POST["PentabarfURL"] . + " --output-file=$Tempdir/engelXMLwgetLog --output-document=$Tempdir/engelXML" . + " --no-check-certificate"; + $html .= system($Command, $Status); + if ($Status == 0) + $html .= "OK.
"; + else + $html .= "fail ($Status)($Command).
"; + } + elseif ($PentabarfGetWith == "lynx") { + $Command = "lynx -auth=" . $_POST["PentabarfUser"] . ":" . $_POST["password"] . " -dump " . + "https://$PentabarfXMLhost/$PentabarfXMLpath" . $_POST["PentabarfURL"] . " > $Tempdir/engelXML"; + $html .= system($Command, $Status); + if ($Status == 0) + $html .= "OK.
"; + else + $html .= "fail ($Status)($Command).
"; + } + elseif ($PentabarfGetWith == "fopen") { + //user uns password in url einbauen + $FileNameIn = "https://" . $_POST["PentabarfUser"] . ':' . $_POST["password"] . "@" . + $PentabarfXMLhost . "/" . $PentabarfXMLpath . $_POST["PentabarfURL"]; + + if (($fileIn = fopen($FileNameIn, "r")) != FALSE) { + if (($fileOut = fopen("$Tempdir/engelXML", "w")) != FALSE) { + $Zeilen = 0; + while (!feof($fileIn)) { + $Zeilen++; + fputs($fileOut, fgets($fileIn)); + } + fclose($fileOut); + $html .= "
Es wurden $Zeilen Zeilen eingelesen
"; + } else + $html .= "

fail: File '$Tempdir/engelXML' not writeable!

"; + fclose($fileIn); + } else + $html .= "

fail: File 'https://$PentabarfXMLhost/$PentabarfXMLpath" . $_POST["PentabarfURL"] . "' not readable!

"; + } + elseif ($PentabarfGetWith == "wget") { + $Command = "wget --http-user=" . $_POST["PentabarfUser"] . " --http-passwd=" . $_POST["password"] . " " . + "https://$PentabarfXMLhost/$PentabarfXMLpath" . $_POST["PentabarfURL"] . + " --output-file=$Tempdir/engelXMLwgetLog --output-document=$Tempdir/engelXML" . + " --no-check-certificate"; + $html .= system($Command, $Status); + if ($Status == 0) + $html .= "OK.
"; + else + $html .= "fail ($Status)($Command).
"; + } + elseif ($PentabarfGetWith == "lynx") { + $Command = "lynx -auth=" . $_POST["PentabarfUser"] . ":" . $_POST["password"] . " -dump " . + "https://$PentabarfXMLhost/$PentabarfXMLpath" . $_POST["PentabarfURL"] . " > $Tempdir/engelXML"; + $html .= system($Command, $Status); + if ($Status == 0) + $html .= "OK.
"; + else + $html .= "fail ($Status)($Command).
"; + } else + $html .= "

The PentabarfGetWith='$PentabarfGetWith' not supported

"; + } else { + $html .= "
\n"; + $html .= "\n"; + $html .= "\t" . + "\n"; + $html .= "\t" . + "\n"; + $html .= "\t" . + "\n"; + $html .= "\t\n"; + $html .= "
XCAL-File: https://$PentabarfXMLhost/$PentabarfXMLpath
Username:
Password:
\n"; + $html .= "
\n"; + } + + //readXMLfile("xml.php.xml"); + if (readXMLfile("$Tempdir/engelXML") == 0) { + $XMLmain = getXMLsubPease($XMLmain, "VCALENDAR"); + + if ($ShowDataStrukture) { + $html .= "

"; + $html .= $XMLmain->name; + $html .= "
"; + print_r(array_values($XMLmain->sub)); + $html .= "
"; + } + + /* + $html .= "
"; + $Feld=7; + $html .= "$Feld#". $XMLmain->sub[$Feld]->name. "
"; + $html .= "$Feld#". $XMLmain->sub[$Feld]->sub; + //print_r(array_values ($XMLmain->sub[$Feld]->sub)); + while(list($key, $value) = each($XMLmain->sub[$Feld]->sub)) + $html .= "?ID".$value->sub[1]->data. "=". $value->sub[2]->data. "\n"; + $html .= ""; + */ + + /*############################################################################################## + V e r s i o n + ##############################################################################################*/ + + $html .= "
\n"; + $XMLrelease = getXMLsubPease($XMLmain, "X-WR-CALDESC"); + $html .= "release: " . $XMLrelease->data . "
\n"; + //$XMLreleaseDate = getXMLsubPease( $XMLmain, "RELEASE-DATE"); + //$html .= "release date: ". $XMLreleaseDate->data. "
\n"; + $html .= "
\n"; + + /*############################################################################################## + V e r s i o n + ##############################################################################################*/ + if ($EnableRoomFunctions) + include ("includes/funktion_xml_room.php"); + + if ($EnableSchudleFunctions) + include ("includes/funktion_xml_schudle.php"); + + /*############################################################################################## + U P D A T E A L L + ##############################################################################################*/ + $html .= "\n\n
\n

Update ALL:

\n"; + + $html .= "
\n"; + $html .= "\t\n"; + $html .= "
\n"; + + } //if XMLopenOOK + return $html; +} + +/*############################################################################################## + erstellt Arrays der Reume + ##############################################################################################*/ +function CreateRoomArrays() { + global $Room, $RoomID, $RoomName, $con; + + $sql = "SELECT `RID`, `Name` FROM `Room` " . + "WHERE `Show`='Y'" . + "ORDER BY `Number`, `Name`;"; + $Erg = mysql_query($sql, $con); + $rowcount = mysql_num_rows($Erg); + + for ($i = 0; $i < $rowcount; $i++) { + $Room[$i]["RID"] = mysql_result($Erg, $i, "RID"); + $Room[$i]["Name"] = mysql_result($Erg, $i, "Name"); + $RoomID[mysql_result($Erg, $i, "RID")] = mysql_result($Erg, $i, "Name"); + $RoomName[mysql_result($Erg, $i, "Name")] = mysql_result($Erg, $i, "RID"); + } +} +?> + diff --git a/includes/sys_menu.php b/includes/sys_menu.php index b651a002..dfe33216 100644 --- a/includes/sys_menu.php +++ b/includes/sys_menu.php @@ -42,6 +42,7 @@ function make_navigation() { "admin_groups", "admin_faq", "admin_language", + "admin_import", "admin_log" )); return $menu; diff --git a/www-ssl/index.php b/www-ssl/index.php index 71c13d15..e1a4496f 100644 --- a/www-ssl/index.php +++ b/www-ssl/index.php @@ -106,6 +106,10 @@ if (in_array($p, $privileges)) { require_once ('includes/pages/admin_language.php'); $content = admin_language(); } + elseif ($p == "admin_import") { + require_once ('includes/pages/admin_import.php'); + $content = admin_import(); + } elseif ($p == "admin_log") { require_once ('includes/pages/admin_log.php'); $content = admin_log();