summaryrefslogtreecommitdiff
path: root/includes_old
diff options
context:
space:
mode:
authorPhilip Häusler <msquare@notrademark.de>2011-06-13 18:05:51 +0200
committerPhilip Häusler <msquare@notrademark.de>2011-06-13 18:05:51 +0200
commit04973d1fa148381978b1251d10118e6bab86f435 (patch)
tree39f5a304342054e9da8c0452866b4f6eb69f87af /includes_old
parent89fd736f36dc89becacc30dc250d7a3e93e9569f (diff)
moved public files to public, old and yet untouched files to directories ending with _old
Diffstat (limited to 'includes_old')
-rw-r--r--includes_old/error_handler.php125
-rw-r--r--includes_old/funktion_SendMessenges.php14
-rw-r--r--includes_old/funktion_cron.php131
-rw-r--r--includes_old/funktion_db.php145
-rw-r--r--includes_old/funktion_db_list.php62
-rw-r--r--includes_old/funktion_jabber.php1853
-rw-r--r--includes_old/funktion_modem.php34
-rw-r--r--includes_old/funktion_schichtplan_beamer.php180
-rw-r--r--includes_old/funktion_xml.php152
-rw-r--r--includes_old/funktion_xml_room.php61
-rw-r--r--includes_old/funktion_xml_schudle.php309
-rw-r--r--includes_old/header.php102
12 files changed, 3168 insertions, 0 deletions
diff --git a/includes_old/error_handler.php b/includes_old/error_handler.php
new file mode 100644
index 00000000..42e561fc
--- /dev/null
+++ b/includes_old/error_handler.php
@@ -0,0 +1,125 @@
+<?php
+ require_once "funktion_jabber.php";
+
+ // global array for collected error_messages
+ $error_messages = array();
+
+ // general error handler collecting all messages in an array
+ function Error_Handler($error_number, $error_string, $error_file, $error_line, $error_context) {
+ global $error_messages, $con;
+
+ // SQL error genauer analysiert
+ $Temp = "";
+ foreach ($error_context as $k => $v)
+ if((strpos( "0$k", "sql") > 0) || (strpos( "0$k", "SQL") > 0))
+ $Temp .= "Error Context: $k = $v\n";
+
+ if((strpos( "0$error_string", "MySQL") > 0))
+ $Temp .= "Error MySQL: ". mysql_error($con). "\n";
+
+ // Uebergeben des arrays
+ array_push($error_messages, "Error Number: " . $error_number . "\n".
+ "Error String: " . $error_string . "\n".
+ "Error File: " . $error_file . "\n".
+ "Error Line: " . $error_line . "\n".
+ (strlen($Temp)? "$Temp": ""));
+ }
+
+ // register error handler
+ set_error_handler("Error_Handler");
+
+ error_reporting(E_ALL);
+
+ if($debug) {
+ ini_set("display_errors", "On");
+ ini_set("display_startup_errors", "On");
+ ini_set("html_errors", "On");
+ }
+
+ // send errors
+ function send_errors() {
+ global $error_messages;
+
+ if(!$error_messages)
+ return;
+
+ $message = "";
+ foreach($error_messages as $value)
+ $message .= $value."\n";
+
+ $message .= "\n";
+
+ if(isset($_POST)) {
+ foreach ($_POST as $k => $v)
+ $message .= "_POST: $k = ". ( $k!="password"? $v : "???..."). "\n";
+
+ $message .= "\n";
+ }
+
+ if(isset($_GET)) {
+ foreach ($_GET as $k => $v)
+ $message .= "_GET: $k = $v\n";
+
+ $message .= "\n";
+ }
+
+ $message .= "\n\n";
+
+ if( isset( $_SESSION))
+ {
+ foreach ($_SESSION as $k => $v )
+ $message .= "_SESSION: $k = $v\n";
+ $message .= "\n";
+ }
+
+ if( isset( $_SESSION['CVS']))
+ {
+ foreach ($_SESSION['CVS'] as $k => $v )
+ if( strlen($k)>3 )
+ $message .= "_SESSION['CVS']: $k = $v\n";
+ $message .= "\n";
+ }
+
+ foreach ($_SERVER as $k => $v )
+ if( strpos( "0$k", "SERVER_")==0)
+ $message .= "_SERVER: $k = $v\n";
+
+ send_message($message);
+
+ // display error messages on screen too for developers
+ if ($_SESSION['CVS']['admin/debug.php']=='Y')
+ {
+ echo "<pre id='error'>\n".$message."</pre>";
+ }
+
+}
+
+ register_shutdown_function("send_errors");
+
+ // send jabber message and email
+ function send_message(&$message)
+ {
+ chdir(dirname(__FILE__));
+ require_once('../config/config_jabber.php');
+
+ if (isset($jabber_recipient) && count($jabber_recipient)) {
+ $jabber = new Jabber($server, $port, $username, $password, $resource);
+ if ($jabber->Connect() && $jabber->SendAuth()) {
+ foreach($jabber_recipient as $value)
+ {
+ $jabber->SendMessage($value, "normal", NULL, array("body" => $message, "subject" => "Error in Pentabarf"), NULL);
+ }
+ $jabber->Disconnect();
+ } else {
+ array_push($message, "Couldn't connect to Jabber Server.");
+ }
+ }
+
+ if (isset($mail_recipient) && count($mail_recipient)) {
+ foreach($mail_recipient as $to) {
+ mail($to, isset($mail_subject) ? $mail_subject : "Pentabarf Error", $message);
+ }
+ }
+ }
+
+?>
diff --git a/includes_old/funktion_SendMessenges.php b/includes_old/funktion_SendMessenges.php
new file mode 100644
index 00000000..b6de67cc
--- /dev/null
+++ b/includes_old/funktion_SendMessenges.php
@@ -0,0 +1,14 @@
+<?php
+ function SendData($Data) {
+ include "config_MessegeServer.php";
+ // Create a UDP socket
+ $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
+
+ //send packed
+ socket_sendto($sock, $Data, 9999, 0x4, SERVER_ADDRESS, SERVER_PORT);
+ }
+
+ function SendMessageJabber($Adresse, $Nachricht) {
+ SendData( "#message $Adresse $Nachricht");
+ }
+?>
diff --git a/includes_old/funktion_cron.php b/includes_old/funktion_cron.php
new file mode 100644
index 00000000..3a0e984b
--- /dev/null
+++ b/includes_old/funktion_cron.php
@@ -0,0 +1,131 @@
+<?php
+ function UID2DECT($UID) {
+ global $con;
+ $SQL = "SELECT DECT FROM `User` WHERE UID='$UID'";
+ $Erg = mysql_query($SQL, $con);
+
+ if(mysql_num_rows( $Erg) == 1)
+ return mysql_result($Erg, 0);
+ else
+ return "";
+ }
+
+ function RID2Room($RID) {
+ global $con;
+ $SQL = "SELECT Name FROM `Room` WHERE RID='$RID'";
+ $Erg = mysql_query($SQL, $con);
+
+ if(mysql_num_rows( $Erg) == 1)
+ return mysql_result($Erg, 0);
+ else
+ return "";
+ }
+
+ function TID2Engeltype($TID) {
+ global $con;
+ $SQL = "SELECT Name FROM `EngelType` WHERE TID='$TID'";
+ $Erg = mysql_query($SQL, $con);
+
+ if(mysql_num_rows( $Erg) == 1)
+ return mysql_result($Erg, 0);
+ else
+ return "";
+ }
+
+
+ function DialNumberIAX( $DECTnumber, $Time, $RID, $TID) {
+ global $IAXenable, $IAXcontent, $IAXserver, $AnrufDelay, $DebugDECT, $Tempdir, $AsteriskOutputDir;
+
+ // Parameter verarbeiten
+ $TimeH = substr( $Time, 11, 2);
+ $TimeM = substr( $Time, 14, 2);
+ $TimeM = substr( $Time, 14, 2) + $AnrufDelay;
+
+ if($TimeM < 0) {
+ $TimeM += 60;
+ $TimeH -= 1;
+ }
+
+ if($TimeH < 0)
+ $TimeH += 24;
+
+ if(strlen( $TimeH) == 1)
+ $TimeH = "0" . $TimeH;
+
+ if($IAXenable) {
+ $Message = "die-nee shisht beh-kinned, in where-neegin me-nooten . . . your shift beginns in a few minutes";
+
+ if(isset($SetHttpIAX)) {
+ $post_data = array();
+ $post_data['code'] = "89o8eu9cg4";
+ $post_data['callerid'] = "1023";
+ $post_data['nr'] = "$DECTnumber";
+ //$post_data['message'] = "Deine schicht beginnt in ein paar minuten . . . your shift beginns in a few minutes ";
+ $post_data['message'] = "die-nee shisht beh-kinned , in where-neegin me-nooten . . . your shift beginns in a few minutes ";
+ $url = "https://23c3.eventphone.de/~bef/call.php";
+
+ $o = "";
+ foreach ($post_data as $k => $v) {
+ $o.= "$k=" . urlencode(utf8_encode($v)) . "&";
+ }
+
+ $post_data = substr($o, 0, -1);
+
+ $ch = curl_init();
+ curl_setopt($ch, CURLOPT_POST, 1);
+ curl_setopt($ch, CURLOPT_HEADER, 0);
+ curl_setopt($ch, CURLOPT_URL, $url);
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
+ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
+ $result = curl_exec($ch);
+ echo curl_error($ch);
+ curl_close($ch);
+ } else {
+ // IAX file Schareiebn
+ $CallFile = $Tempdir. "/call_". date("Ymd_His"). "_$DECTnumber";
+
+ if($DebugDECT)
+ echo "IAX create file for dialing Number $DECTnumber\n";
+
+ $file = fopen( $CallFile, 'w');
+
+ if($file != false) {
+ fputs($file, "Channel: SIP/$DECTnumber@$IAXserver\n");
+ fputs($file, "Callerid: Engelserver\n");
+ fputs($file, "Extension: s\n");
+ fputs($file, "MaxRetries: 1\n");
+ fputs($file, "RetryTime: 10\n");
+ fputs($file, "SetVar: msg=$Message\n");
+ fclose($file);
+ system("chmod 777 " . $CallFile);
+ system("mv " . $CallFile . " " . $AsteriskOutputDir);
+ } else
+ echo "error: $CallFile not created";
+ }
+ } else
+ if($DebugDECT)
+ echo "IAX is disable\n";
+ }
+
+ function DialNumberModem($DECTnumber, $Time) {
+ global $AnrufDelay;
+
+ // Parameter verarbeiten
+ $TimeH = substr($Time, 11, 2);
+ $TimeM = substr($Time, 14, 2);
+ $TimeM = substr($Time, 14, 2) + $AnrufDelay;
+
+ if($TimeM < 0) {
+ $TimeM += 60;
+ $TimeH -= 1;
+ }
+
+ if($TimeH < 0)
+ $TimeH += 24;
+
+ if(strlen( $TimeH) == 1)
+ $TimeH = "0" . $TimeH;
+
+ SetWackeup($DECTnumber, $TimeH, $TimeM);
+ }
+?>
diff --git a/includes_old/funktion_db.php b/includes_old/funktion_db.php
new file mode 100644
index 00000000..ffd7d6a2
--- /dev/null
+++ b/includes_old/funktion_db.php
@@ -0,0 +1,145 @@
+<?php
+ if( !function_exists("db_query")) {
+ function Ausgabe_Daten($SQL) {
+ global $con;
+ $Erg = mysql_query($SQL, $con);
+
+ echo mysql_error($con);
+
+ $Zeilen = mysql_num_rows($Erg);
+ $Anzahl_Felder = mysql_num_fields($Erg);
+
+ $Diff = "<table border=1>";
+ $Diff .= "<tr>";
+
+ for ($m = 0 ; $m < $Anzahl_Felder ; $m++)
+ $Diff .= "<th>". mysql_field_name($Erg, $m). "</th>";
+
+ $Diff .= "</tr>";
+
+ for ($n = 0 ; $n < $Zeilen ; $n++) {
+ $Diff .= "<tr>";
+
+ for ($m = 0 ; $m < $Anzahl_Felder ; $m++)
+ $Diff .= "<td>".mysql_result($Erg, $n, $m). "</td>";
+
+ $Diff .= "</tr>";
+ }
+
+ $Diff .= "</table>";
+ return $Diff;
+ }
+
+ function db_querry_getDatenAssocArray($SQL) {
+ global $con;
+
+ $Erg = mysql_query($SQL, $con);
+ echo mysql_error($con);
+
+ $Daten = array();
+
+ for( $i=0; $i<mysql_num_rows($Erg); $i++)
+ $Daten[$i] = mysql_fetch_assoc($Erg);
+
+ return $Daten;
+ }
+
+ function db_querry_diffDaten($Daten1, $Daten2) {
+ $Gefunden = false;
+
+ $Diff = "\n<table border=1>\n";
+ $Diff .= "<tr>\n<th>Feldname</th>\n<th>old Value</th>\n<th>new Value</th>\n";
+ $Diff .= "</tr>\n";
+
+ foreach($Daten1 as $DataKey => $Data1) {
+ if(isset( $Daten2[$DataKey])) {
+ $Data2 = $Daten2[$DataKey];
+
+ foreach($Data1 as $key => $value)
+ if( $value != $Data2[$key]) {
+ $Gefunden = true;
+ $Diff .= "<tr>\n<td>$key</td>\n<td>$value</td>\n<td>" . $Data2[$key] . "</rd>\n</tr>";
+ }
+ } else
+ foreach($Data1 as $key => $value) {
+ $Gefunden = true;
+ $Diff .= "<tr>\n<td>$key</td>\n<td>$value</td>\n<td></rd>\n</tr>";
+ }
+ }
+
+ $Diff .= "</table>\n";
+
+ if($Gefunden)
+ return $Diff;
+ else
+ return "\nno changes Fount\n";
+ }
+
+ function db_query( $SQL, $comment) {
+ global $con, $Page;
+ $Diff = "";
+
+ // commed anlyse udn daten sicherung
+ if(strpos("#$SQL", "UPDATE") > 0) {
+ // Tabellen name ermitteln
+ $Table_Start = strpos( $SQL, "`");
+ $Table_End = strpos( $SQL, "`", $Table_Start+1);
+ $Table = substr( $SQL, $Table_Start, ($Table_End-$Table_Start+1));
+
+ //SecureTest
+ if( $Table_Start == 0 || $Table_End == 0) die("<h1>funktion_db ERROR SQL: '$SQL' nicht OK</h1>");
+
+ //WHERE ermitteln
+ $Where_Start = strpos( $SQL, "WHERE");
+ $Where = substr( $SQL, $Where_Start);
+ if( $Where_Start == 0) $Where = ";";
+
+ if( strlen( $Where) < 2)
+ {
+ $Diff = "can't show, too mutch data (no filter was set)";
+ $querry_erg = mysql_query($SQL, $con);
+ }
+ else
+ {
+ $Daten1 = db_querry_getDatenAssocArray( "SELECT * FROM $Table $Where");
+ $querry_erg = mysql_query($SQL, $con);
+ $Daten2 = db_querry_getDatenAssocArray( "SELECT * FROM $Table $Where");
+ $Diff = db_querry_diffDaten($Daten1, $Daten2);
+ }
+ }
+ elseif( strpos( "#$SQL", "DELETE") > 0)
+ {
+ $TableWhere = substr( $SQL, 6);
+ $Diff .= Ausgabe_Daten( "SELECT * $TableWhere");
+
+ //execute command
+ $querry_erg = mysql_query($SQL, $con);
+ }
+ elseif( strpos( "#$SQL", "INSERT") > 0)
+ {
+ //execute command
+ $querry_erg = mysql_query($SQL, $con);
+ }
+ else
+ {
+ //execute command
+ $querry_erg = mysql_query($SQL, $con);
+ }
+
+ $SQLCommand = "SQL:<br />". htmlentities( $SQL, ENT_QUOTES);
+ if( strlen($Diff) > 0)
+ $SQLCommand .= "<br /><br />Diff:<br />$Diff";
+
+ $Commend = htmlentities( ($Page["Name"]. ": ". $comment), ENT_QUOTES);
+ //LOG commands in DB
+ $SQL_SEC = "INSERT INTO `ChangeLog` ( `UID` , `SQLCommad` , `Commend` ) ".
+ " VALUES ( '". $_SESSION['UID']. "', ".
+ "'". mysql_escape_string( $SQLCommand). "', ".
+ "'". mysql_escape_string( $Commend). "' );";
+ $erg = mysql_query($SQL_SEC, $con);
+ echo mysql_error($con);
+ return $querry_erg;
+ }//function db_query(
+}
+
+?>
diff --git a/includes_old/funktion_db_list.php b/includes_old/funktion_db_list.php
new file mode 100644
index 00000000..35bb7255
--- /dev/null
+++ b/includes_old/funktion_db_list.php
@@ -0,0 +1,62 @@
+<?php
+
+
+// Gibt eine Tabelle generisch als HTML aus
+function funktion_db_list($Table_Name) {
+ global $con;
+
+ $html = "";
+
+ $SQL = "SELECT * FROM `" . $Table_Name . "`";
+ $Erg = mysql_query($SQL, $con);
+
+ // anzahl zeilen
+ $Zeilen = mysql_num_rows($Erg);
+
+ $Anzahl_Felder = mysql_num_fields($Erg);
+
+ $html .= "<table class=\"border\" cellpadding=\"2\" cellspacing=\"1\">";
+ $html .= "<caption>DB: $Table_Name</caption>";
+
+ $html .= "<tr class=\"contenttopic\">";
+ for ($m = 0; $m < $Anzahl_Felder; $m++) {
+ $html .= "<th>" . mysql_field_name($Erg, $m) . "</th>";
+ }
+ $html .= "</tr>";
+
+ for ($n = 0; $n < $Zeilen; $n++) {
+ $html .= "<tr class=\"content\">";
+ for ($m = 0; $m < $Anzahl_Felder; $m++) {
+ $html .= "<td>" . mysql_result($Erg, $n, $m) . "</td>";
+ }
+ $html .= "</tr>";
+ }
+ $html .= "</table>";
+ return $html;
+}
+
+function funktion_db_element_list_2row($TopicName, $SQL) {
+ $html = "";
+ $html .= "<table class=\"border\" cellpadding=\"2\" cellspacing=\"1\">\n";
+ $html .= "<caption>$TopicName</caption>";
+ # $html .= "<tr class=\"contenttopic\"> <td><h1>$TopicName</h1></td> </tr>\n";
+
+ $Erg = sql_query($SQL);
+
+ $html .= "<tr class=\"contenttopic\">";
+ for ($m = 0; $m < mysql_num_fields($Erg); $m++) {
+ $html .= "<th>" . mysql_field_name($Erg, $m) . "</th>";
+ }
+ $html .= "</tr>";
+
+ for ($n = 0; $n < mysql_num_rows($Erg); $n++) {
+ $html .= "<tr class=\"content\">";
+ for ($m = 0; $m < mysql_num_fields($Erg); $m++) {
+ $html .= "<td>" . mysql_result($Erg, $n, $m) . "</td>";
+ }
+ $html .= "</tr>";
+ }
+ $html .= "</table>\n";
+ return $html;
+}
+?>
diff --git a/includes_old/funktion_jabber.php b/includes_old/funktion_jabber.php
new file mode 100644
index 00000000..9c699d70
--- /dev/null
+++ b/includes_old/funktion_jabber.php
@@ -0,0 +1,1853 @@
+<?php
+
+/***************************************************************************
+
+ Class.Jabber.PHP v0.4.2
+ (c) 2004 Nathan "Fritzy" Fritz
+ http://cjphp.netflint.net *** fritzy@netflint.net
+
+ This is a bugfix version, specifically for those who can't get
+ 0.4 to work on Jabberd2 servers.
+
+ last modified: 24.03.2004 13:01:53
+
+ ***************************************************************************/
+
+/***************************************************************************
+ *
+
+ *
+ ***************************************************************************/
+
+/*
+ Jabber::Connect()
+ Jabber::Disconnect()
+ Jabber::SendAuth()
+ Jabber::AccountRegistration($reg_email {string}, $reg_name {string})
+
+ Jabber::Listen()
+ Jabber::SendPacket($xml {string})
+
+ Jabber::RosterUpdate()
+ Jabber::RosterAddUser($jid {string}, $id {string}, $name {string})
+ Jabber::RosterRemoveUser($jid {string}, $id {string})
+ Jabber::RosterExistsJID($jid {string})
+
+ Jabber::Subscribe($jid {string})
+ Jabber::Unsubscribe($jid {string})
+
+ Jabber::CallHandler($message {array})
+ Jabber::CruiseControl([$seconds {number}])
+
+ Jabber::SubscriptionApproveRequest($to {string})
+ Jabber::SubscriptionDenyRequest($to {string})
+
+ Jabber::GetFirstFromQueue()
+ Jabber::GetFromQueueById($packet_type {string}, $id {string})
+
+ Jabber::SendMessage($to {string}, $id {number}, $type {string}, $content {array}[, $payload {array}])
+ Jabber::SendIq($to {string}, $type {string}, $id {string}, $xmlns {string}[, $payload {string}])
+ Jabber::SendPresence($type {string}[, $to {string}[, $status {string}[, $show {string}[, $priority {number}]]]])
+
+ Jabber::SendError($to {string}, $id {string}, $error_number {number}[, $error_message {string}])
+
+ Jabber::TransportRegistrationDetails($transport {string})
+ Jabber::TransportRegistration($transport {string}, $details {array})
+
+ Jabber::GetvCard($jid {string}[, $id {string}]) -- EXPERIMENTAL --
+
+ Jabber::GetInfoFromMessageFrom($packet {array})
+ Jabber::GetInfoFromMessageType($packet {array})
+ Jabber::GetInfoFromMessageId($packet {array})
+ Jabber::GetInfoFromMessageThread($packet {array})
+ Jabber::GetInfoFromMessageSubject($packet {array})
+ Jabber::GetInfoFromMessageBody($packet {array})
+ Jabber::GetInfoFromMessageError($packet {array})
+
+ Jabber::GetInfoFromIqFrom($packet {array})
+ Jabber::GetInfoFromIqType($packet {array})
+ Jabber::GetInfoFromIqId($packet {array})
+ Jabber::GetInfoFromIqKey($packet {array})
+ Jabber::GetInfoFromIqError($packet {array})
+
+ Jabber::GetInfoFromPresenceFrom($packet {array})
+ Jabber::GetInfoFromPresenceType($packet {array})
+ Jabber::GetInfoFromPresenceStatus($packet {array})
+ Jabber::GetInfoFromPresenceShow($packet {array})
+ Jabber::GetInfoFromPresencePriority($packet {array})
+
+ Jabber::AddToLog($string {string})
+ Jabber::PrintLog()
+
+ MakeXML::AddPacketDetails($string {string}[, $value {string/number}])
+ MakeXML::BuildPacket([$array {array}])
+*/
+
+
+
+class Jabber
+{
+ function Jabber($server, $port, $username, $password, $resource)
+ {
+
+ $this->server = $server;
+ $this->port = $port;
+
+ $this->username = $username;
+ $this->password = $password;
+ $this->resource = $resource;
+
+ $this->enable_logging = FALSE;
+ $this->log_array = array();
+ $this->log_filename = '';
+ $this->log_filehandler = FALSE;
+
+ $this->packet_queue = array();
+ $this->subscription_queue = array();
+
+ $this->iq_sleep_timer = 1;
+ $this->delay_disconnect = 1;
+
+ $this->returned_keep_alive = TRUE;
+ $this->txnid = 0;
+
+ $this->iq_version_name = "Class.Jabber.PHP -- http://cjphp.netflint.net -- by Nathan 'Fritzy' Fritz, fritz@netflint.net";
+ $this->iq_version_version = "0.4";
+ $this->iq_version_os = $_SERVER['SERVER_SOFTWARE'];
+
+ $this->connection_class = "CJP_StandardConnector";
+
+ $this->error_codes = array(400 => "Bad Request",
+ 401 => "Unauthorized",
+ 402 => "Payment Required",
+ 403 => "Forbidden",
+ 404 => "Not Found",
+ 405 => "Not Allowed",
+ 406 => "Not Acceptable",
+ 407 => "Registration Required",
+ 408 => "Request Timeout",
+ 409 => "Conflict",
+ 500 => "Internal Server Error",
+ 501 => "Not Implemented",
+ 502 => "Remove Server Error",
+ 503 => "Service Unavailable",
+ 504 => "Remove Server Timeout",
+ 510 => "Disconnected");
+ }
+
+
+
+ function Connect()
+ {
+ $this->_create_logfile();
+
+ $this->CONNECTOR = new $this->connection_class;
+
+ if ($this->CONNECTOR->OpenSocket($this->server, $this->port))
+ {
+ $this->SendPacket("<?xml version='1.0' encoding='UTF-8' ?" . ">\n");
+ $this->SendPacket("<stream:stream to='{$this->server}' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>\n");
+
+ sleep(2);
+
+ if ($this->_check_connected())
+ {
+ $this->connected = TRUE; // Nathan Fritz
+ return TRUE;
+ }
+ else
+ {
+ $this->AddToLog("ERROR: Connect() #1");
+ return FALSE;
+ }
+ }
+ else
+ {
+ $this->AddToLog("ERROR: Connect() #2");
+ return FALSE;
+ }
+ }
+
+
+
+ function Disconnect()
+ {
+ if (is_int($this->delay_disconnect))
+ {
+ sleep($this->delay_disconnect);
+ }
+
+ $this->SendPacket("</stream:stream>");
+ $this->CONNECTOR->CloseSocket();
+
+ $this->_close_logfile();
+ $this->PrintLog();
+ }
+
+
+
+ function SendAuth()
+ {
+ $this->auth_id = "auth_" . md5(time() . $_SERVER['REMOTE_ADDR']);
+
+ $this->resource = ($this->resource != NULL) ? $this->resource : ("Class.Jabber.PHP " . md5($this->auth_id));
+ $this->jid = "{$this->username}@{$this->server}/{$this->resource}";
+
+ // request available authentication methods
+ $payload = "<username>{$this->username}</username>";
+ $packet = $this->SendIq(NULL, 'get', $this->auth_id, "jabber:iq:auth", $payload);
+
+ // was a result returned?
+ if ($this->GetInfoFromIqType($packet) == 'result' && $this->GetInfoFromIqId($packet) == $this->auth_id)
+ {
+ // yes, now check for auth method availability in descending order (best to worst)
+
+ if (!function_exists('mhash'))
+ {
+ $this->AddToLog("ATTENTION: SendAuth() - mhash() is not available; screw 0k and digest method, we need to go with plaintext auth");
+ }
+
+ // auth_0k
+ if (function_exists('mhash') && isset($packet['iq']['#']['query'][0]['#']['sequence'][0]["#"]) && isset($packet['iq']['#']['query'][0]['#']['token'][0]["#"]))
+ {
+ return $this->_sendauth_0k($packet['iq']['#']['query'][0]['#']['token'][0]["#"], $packet['iq']['#']['query'][0]['#']['sequence'][0]["#"]);
+ }
+ // digest
+ elseif (function_exists('mhash') && isset($packet['iq']['#']['query'][0]['#']['digest']))
+ {
+ return $this->_sendauth_digest();
+ }
+ // plain text
+ elseif ($packet['iq']['#']['query'][0]['#']['password'])
+ {
+ return $this->_sendauth_plaintext();
+ }
+ // dude, you're fucked
+ {
+ $this->AddToLog("ERROR: SendAuth() #2 - No auth method available!");
+ return FALSE;
+ }
+ }
+ else
+ {
+ // no result returned
+ $this->AddToLog("ERROR: SendAuth() #1");
+ return FALSE;
+ }
+ }
+
+
+
+ function AccountRegistration($reg_email = NULL, $reg_name = NULL)
+ {
+ $packet = $this->SendIq($this->server, 'get', 'reg_01', 'jabber:iq:register');
+
+ if ($packet)
+ {
+ $key = $this->GetInfoFromIqKey($packet); // just in case a key was passed back from the server
+ unset($packet);
+
+ $payload = "<username>{$this->username}</username>
+ <password>{$this->password}</password>
+ <email>$reg_email</email>
+ <name>$reg_name</name>\n";
+
+ $payload .= ($key) ? "<key>$key</key>\n" : '';
+
+ $packet = $this->SendIq($this->server, 'set', "reg_01", "jabber:iq:register", $payload);
+
+ if ($this->GetInfoFromIqType($packet) == 'result')
+ {
+ if (isset($packet['iq']['#']['query'][0]['#']['registered'][0]['#']))
+ {
+ $return_code = 1;
+ }
+ else
+ {
+ $return_code = 2;
+ }
+
+ if ($this->resource)
+ {
+ $this->jid = "{$this->username}@{$this->server}/{$this->resource}";
+ }
+ else
+ {
+ $this->jid = "{$this->username}@{$this->server}";
+ }
+
+ }
+ elseif ($this->GetInfoFromIqType($packet) == 'error' && isset($packet['iq']['#']['error'][0]['#']))
+ {
+ // "conflict" error, i.e. already registered
+ if ($packet['iq']['#']['error'][0]['@']['code'] == '409')
+ {
+ $return_code = 1;
+ }
+ else
+ {
+ $return_code = "Error " . $packet['iq']['#']['error'][0]['@']['code'] . ": " . $packet['iq']['#']['error'][0]['#'];
+ }
+ }
+
+ return $return_code;
+
+ }
+ else
+ {
+ return 3;
+ }
+ }
+
+
+
+ function SendPacket($xml)
+ {
+ $xml = trim($xml);
+
+ if ($this->CONNECTOR->WriteToSocket($xml))
+ {
+ $this->AddToLog("SEND: $xml");
+ return TRUE;
+ }
+ else
+ {
+ $this->AddToLog('ERROR: SendPacket() #1');
+ return FALSE;
+ }
+ }
+
+
+
+ function Listen()
+ {
+ $incoming = "";
+
+ while ($line = $this->CONNECTOR->ReadFromSocket(4096))
+ {
+ $incoming .= $line;
+ }
+
+ $incoming = trim($incoming);
+
+ if ($incoming != "")
+ {
+ $this->AddToLog("RECV: $incoming");
+ }
+
+ if ($incoming != "")
+ {
+ $temp = $this->_split_incoming($incoming);
+
+ for ($a = 0; $a < count($temp); $a++)
+ {
+ $this->packet_queue[] = $this->xmlize($temp[$a]);
+ }
+ }
+
+ return TRUE;
+ }
+
+
+
+ function StripJID($jid = NULL)
+ {
+ preg_match("/(.*)\/(.*)/Ui", $jid, $temp);
+ return ($temp[1] != "") ? $temp[1] : $jid;
+ }
+
+
+
+ function SendMessage($to, $type = "normal", $id = NULL, $content = NULL, $payload = NULL)
+ {
+ if ($to && is_array($content))
+ {
+ if (!$id)
+ {
+ $id = $type . "_" . time();
+ }
+
+ $content = $this->_array_htmlspecialchars($content);
+
+ $xml = "<message to='$to' type='$type' id='$id'>\n";
+
+ if (isset($content['subject']))
+ {
+ $xml .= "<subject>" . $content['subject'] . "</subject>\n";
+ }
+
+ if (isset($content['thread']))
+ {
+ $xml .= "<thread>" . $content['thread'] . "</thread>\n";
+ }
+
+ $xml .= "<body>" . $content['body'] . "</body>\n";
+ $xml .= $payload;
+ $xml .= "</message>\n";
+
+
+ if ($this->SendPacket($xml))
+ {
+ return TRUE;
+ }
+ else
+ {
+ $this->AddToLog("ERROR: SendMessage() #1");
+ return FALSE;
+ }
+ }
+ else
+ {
+ $this->AddToLog("ERROR: SendMessage() #2");
+ return FALSE;
+ }
+ }
+
+
+
+ function SendPresence($type = NULL, $to = NULL, $status = NULL, $show = NULL, $priority = NULL)
+ {
+ $xml = "<presence";
+ $xml .= ($to) ? " to='$to'" : '';
+ $xml .= ($type) ? " type='$type'" : '';
+ $xml .= ($status || $show || $priority) ? ">\n" : " />\n";
+
+ $xml .= ($status) ? " <status>$status</status>\n" : '';
+ $xml .= ($show) ? " <show>$show</show>\n" : '';
+ $xml .= ($priority) ? " <priority>$priority</priority>\n" : '';
+
+ $xml .= ($status || $show || $priority) ? "</presence>\n" : '';
+
+ if ($this->SendPacket($xml))
+ {
+ return TRUE;
+ }
+ else
+ {
+ $this->AddToLog("ERROR: SendPresence() #1");
+ return FALSE;
+ }
+ }
+
+
+
+ function SendError($to, $id = NULL, $error_number, $error_message = NULL)
+ {
+ $xml = "<iq type='error' to='$to'";
+ $xml .= ($id) ? " id='$id'" : '';
+ $xml .= ">\n";
+ $xml .= " <error code='$error_number'>";
+ $xml .= ($error_message) ? $error_message : $this->error_codes[$error_number];
+ $xml .= "</error>\n";
+ $xml .= "</iq>";
+
+ $this->SendPacket($xml);
+ }
+
+
+
+ function RosterUpdate()
+ {
+ $roster_request_id = "roster_" . time();
+
+ $incoming_array = $this->SendIq(NULL, 'get', $roster_request_id, "jabber:iq:roster");
+
+ if (is_array($incoming_array))
+ {
+ if ($incoming_array['iq']['@']['type'] == 'result'
+ && $incoming_array['iq']['@']['id'] == $roster_request_id
+ && $incoming_array['iq']['#']['query']['0']['@']['xmlns'] == "jabber:iq:roster")
+ {
+ $number_of_contacts = count($incoming_array['iq']['#']['query'][0]['#']['item']);
+ $this->roster = array();
+
+ for ($a = 0; $a < $number_of_contacts; $a++)
+ {
+ $this->roster[$a] = array( "jid" => strtolower($incoming_array['iq']['#']['query'][0]['#']['item'][$a]['@']['jid']),
+ "name" => $incoming_array['iq']['#']['query'][0]['#']['item'][$a]['@']['name'],
+ "subscription" => $incoming_array['iq']['#']['query'][0]['#']['item'][$a]['@']['subscription'],
+ "group" => $incoming_array['iq']['#']['query'][0]['#']['item'][$a]['#']['group'][0]['#']
+ );
+ }
+
+ return TRUE;
+ }
+ else
+ {
+ $this->AddToLog("ERROR: RosterUpdate() #1");
+ return FALSE;
+ }
+ }
+ else
+ {
+ $this->AddToLog("ERROR: RosterUpdate() #2");
+ return FALSE;
+ }
+ }
+
+
+
+ function RosterAddUser($jid = NULL, $id = NULL, $name = NULL)
+ {
+ $id = ($id) ? $id : "adduser_" . time();
+
+ if ($jid)
+ {
+ $payload = " <item jid='$jid'";
+ $payload .= ($name) ? " name='" . htmlspecialchars($name) . "'" : '';
+ $payload .= "/>\n";
+
+ $packet = $this->SendIq(NULL, 'set', $id, "jabber:iq:roster", $payload);
+
+ if ($this->GetInfoFromIqType($packet) == 'result')
+ {
+ $this->RosterUpdate();
+ return TRUE;
+ }
+ else
+ {
+ $this->AddToLog("ERROR: RosterAddUser() #2");
+ return FALSE;
+ }
+ }
+ else
+ {
+ $this->AddToLog("ERROR: RosterAddUser() #1");
+ return FALSE;
+ }
+ }
+
+
+
+ function RosterRemoveUser($jid = NULL, $id = NULL)
+ {
+ $id = ($id) ? $id : 'deluser_' . time();
+
+ if ($jid && $id)
+ {
+ $packet = $this->SendIq(NULL, 'set', $id, "jabber:iq:roster", "<item jid='$jid' subscription='remove'/>");
+
+ if ($this->GetInfoFromIqType($packet) == 'result')
+ {
+ $this->RosterUpdate();
+ return TRUE;
+ }
+ else
+ {
+ $this->AddToLog("ERROR: RosterRemoveUser() #2");
+ return FALSE;
+ }
+ }
+ else
+ {
+ $this->AddToLog("ERROR: RosterRemoveUser() #1");
+ return FALSE;
+ }
+ }
+
+
+
+ function RosterExistsJID($jid = NULL)
+ {
+ if ($jid)
+ {
+ if ($this->roster)
+ {
+ for ($a = 0; $a < count($this->roster); $a++)
+ {
+ if ($this->roster[$a]['jid'] == strtolower($jid))
+ {
+ return $a;
+ }
+ }
+ }
+ else
+ {
+ $this->AddToLog("ERROR: RosterExistsJID() #2");
+ return FALSE;
+ }
+ }
+ else
+ {
+ $this->AddToLog("ERROR: RosterExistsJID() #1");
+ return FALSE;
+ }
+ }
+
+
+
+ function GetFirstFromQueue()
+ {
+ return array_shift($this->packet_queue);
+ }
+
+
+
+ function GetFromQueueById($packet_type, $id)
+ {
+ $found_message = FALSE;
+
+ foreach ($this->packet_queue as $key => $value)
+ {
+ if ($value[$packet_type]['@']['id'] == $id)
+ {
+ $found_message = $value;
+ unset($this->packet_queue[$key]);
+
+ break;
+ }
+ }
+
+ return (is_array($found_message)) ? $found_message : FALSE;
+ }
+
+
+
+ function CallHandler($packet = NULL)
+ {
+ $packet_type = $this->_get_packet_type($packet);
+
+ if ($packet_type == "message")
+ {
+ $type = $packet['message']['@']['type'];
+ $type = ($type != "") ? $type : "normal";
+ $funcmeth = "Handler_message_$type";
+ }
+ elseif ($packet_type == "iq")
+ {
+ $namespace = $packet['iq']['#']['query'][0]['@']['xmlns'];
+ $namespace = str_replace(":", "_", $namespace);
+ $funcmeth = "Handler_iq_$namespace";
+ }
+ elseif ($packet_type == "presence")
+ {
+ $type = $packet['presence']['@']['type'];
+ $type = ($type != "") ? $type : "available";
+ $funcmeth = "Handler_presence_$type";
+ }
+
+
+ if ($funcmeth != '')
+ {
+ if (function_exists($funcmeth))
+ {
+ call_user_func($funcmeth, $packet);
+ }
+ elseif (method_exists($this, $funcmeth))
+ {
+ call_user_func(array(&$this, $funcmeth), $packet);
+ }
+ else
+ {
+ $this->Handler_NOT_IMPLEMENTED($packet);
+ $this->AddToLog("ERROR: CallHandler() #1 - neither method nor function $funcmeth() available");
+ }
+ }
+ }
+
+
+
+ function CruiseControl($seconds = -1)
+ {
+ $count = 0;
+
+ while ($count != $seconds)
+ {
+ $this->Listen();
+
+ do {
+ $packet = $this->GetFirstFromQueue();
+
+ if ($packet) {
+ $this->CallHandler($packet);
+ }
+
+ } while (count($this->packet_queue) > 1);
+
+ $count += 0.25;
+ usleep(250000);
+
+ if ($this->last_ping_time + 180 < time())
+ {
+ // Modified by Nathan Fritz
+ if ($this->returned_keep_alive == FALSE)
+ {
+ $this->connected = FALSE;
+ $this->AddToLog('EVENT: Disconnected');
+ }
+ if ($this->returned_keep_alive == TRUE)
+ {
+ $this->connected = TRUE;
+ }
+
+ $this->returned_keep_alive = FALSE;
+ $this->keep_alive_id = 'keep_alive_' . time();
+ //$this->SendPacket("<iq id='{$this->keep_alive_id}'/>", 'CruiseControl');
+ $this->SendPacket("<iq type='get' from='" . $this->username . "@" . $this->server . "/" . $this->resource . "' to='" . $this->server . "' id='" . $this->keep_alive_id . "'><query xmlns='jabber:iq:time' /></iq>");
+ // **
+
+ $this->last_ping_time = time();
+ }
+ }
+
+ return TRUE;
+ }
+
+
+
+ function SubscriptionAcceptRequest($to = NULL)
+ {
+ return ($to) ? $this->SendPresence("subscribed", $to) : FALSE;
+ }
+
+
+
+ function SubscriptionDenyRequest($to = NULL)
+ {
+ return ($to) ? $this->SendPresence("unsubscribed", $to) : FALSE;
+ }
+
+
+
+ function Subscribe($to = NULL)
+ {
+ return ($to) ? $this->SendPresence("subscribe", $to) : FALSE;
+ }
+
+
+
+ function Unsubscribe($to = NULL)
+ {
+ return ($to) ? $this->SendPresence("unsubscribe", $to) : FALSE;
+ }
+
+
+
+ function SendIq($to = NULL, $type = 'get', $id = NULL, $xmlns = NULL, $payload = NULL, $from = NULL)
+ {
+ if (!preg_match("/^(get|set|result|error)$/", $type))
+ {
+ unset($type);
+
+ $this->AddToLog("ERROR: SendIq() #2 - type must be 'get', 'set', 'result' or 'error'");
+ return FALSE;
+ }
+ elseif ($id && $xmlns)
+ {
+ $xml = "<iq type='$type' id='$id'";
+ $xml .= ($to) ? " to='" . htmlspecialchars($to) . "'" : '';
+ $xml .= ($from) ? " from='$from'" : '';
+ $xml .= ">
+ <query xmlns='$xmlns'>
+ $payload
+ </query>
+ </iq>";
+
+ $this->SendPacket($xml);
+ sleep($this->iq_sleep_timer);
+ $this->Listen();
+
+ return (preg_match("/^(get|set)$/", $type)) ? $this->GetFromQueueById("iq", $id) : TRUE;
+ }
+ else
+ {
+ $this->AddToLog("ERROR: SendIq() #1 - to, id and xmlns are mandatory");
+ return FALSE;
+ }
+ }
+
+
+
+ // get the transport registration fields
+ // method written by Steve Blinch, http://www.blitzaffe.com
+ function TransportRegistrationDetails($transport)
+ {
+ $this->txnid++;
+ $packet = $this->SendIq($transport, 'get', "reg_{$this->txnid}", "jabber:iq:register", NULL, $this->jid);
+
+ if ($packet)
+ {
+ $res = array();
+
+ foreach ($packet['iq']['#']['query'][0]['#'] as $element => $data)
+ {
+ if ($element != 'instructions' && $element != 'key')
+ {
+ $res[] = $element;
+ }
+ }
+
+ return $res;
+ }
+ else
+ {
+ return 3;
+ }
+ }
+
+
+
+ // register with the transport
+ // method written by Steve Blinch, http://www.blitzaffe.com
+ function TransportRegistration($transport, $details)
+ {
+ $this->txnid++;
+ $packet = $this->SendIq($transport, 'get', "reg_{$this->txnid}", "jabber:iq:register", NULL, $this->jid);
+
+ if ($packet)
+ {
+ $key = $this->GetInfoFromIqKey($packet); // just in case a key was passed back from the server
+ unset($packet);
+
+ $payload = ($key) ? "<key>$key</key>\n" : '';
+ foreach ($details as $element => $value)
+ {
+ $payload .= "<$element>$value</$element>\n";
+ }
+
+ $packet = $this->SendIq($transport, 'set', "reg_{$this->txnid}", "jabber:iq:register", $payload);
+
+ if ($this->GetInfoFromIqType($packet) == 'result')
+ {
+ if (isset($packet['iq']['#']['query'][0]['#']['registered'][0]['#']))
+ {
+ $return_code = 1;
+ }
+ else
+ {
+ $return_code = 2;
+ }
+ }
+ elseif ($this->GetInfoFromIqType($packet) == 'error')
+ {
+ if (isset($packet['iq']['#']['error'][0]['#']))
+ {
+ $return_code = "Error " . $packet['iq']['#']['error'][0]['@']['code'] . ": " . $packet['iq']['#']['error'][0]['#'];
+ $this->AddToLog('ERROR: TransportRegistration()');
+ }
+ }
+
+ return $return_code;
+ }
+ else
+ {
+ return 3;
+ }
+ }
+
+
+
+ function GetvCard($jid = NULL, $id = NULL)
+ {
+ if (!$id)
+ {
+ $id = "vCard_" . md5(time() . $_SERVER['REMOTE_ADDR']);
+ }
+
+ if ($jid)
+ {
+ $xml = "<iq type='get' to='$jid' id='$id'>
+ <vCard xmlns='vcard-temp'/>
+ </iq>";
+
+ $this->SendPacket($xml);
+ sleep($this->iq_sleep_timer);
+ $this->Listen();
+
+ return $this->GetFromQueueById("iq", $id);
+ }
+ else
+ {
+ $this->AddToLog("ERROR: GetvCard() #1 - to and id are mandatory");
+ return FALSE;
+ }
+ }
+
+
+
+ function PrintLog()
+ {
+ if ($this->enable_logging)
+ {
+ if ($this->log_filehandler)
+ {
+ echo "<h2>Logging enabled, logged events have been written to the file {$this->log_filename}.</h2>\n";
+ }
+ else
+ {
+ echo "<h2>Logging enabled, logged events below:</h2>\n";
+ echo "<pre>\n";
+ echo (count($this->log_array) > 0) ? implode("\n\n\n", $this->log_array) : "No logged events.";
+ echo "</pre>\n";
+ }
+ }
+ }
+
+
+
+ // ======================================================================
+ // private methods
+ // ======================================================================
+
+
+
+ function _sendauth_0k($zerok_token, $zerok_sequence)
+ {
+ // initial hash of password
+ $zerok_hash = mhash(MHASH_SHA1, $this->password);
+ $zerok_hash = bin2hex($zerok_hash);
+
+ // sequence 0: hash of hashed-password and token
+ $zerok_hash = mhash(MHASH_SHA1, $zerok_hash . $zerok_token);
+ $zerok_hash = bin2hex($zerok_hash);
+
+ // repeat as often as needed
+ for ($a = 0; $a < $zerok_sequence; $a++)
+ {
+ $zerok_hash = mhash(MHASH_SHA1, $zerok_hash);
+ $zerok_hash = bin2hex($zerok_hash);
+ }
+
+ $payload = "<username>{$this->username}</username>
+ <hash>$zerok_hash</hash>
+ <resource>{$this->resource}</resource>";
+
+ $packet = $this->SendIq(NULL, 'set', $this->auth_id, "jabber:iq:auth", $payload);
+
+ // was a result returned?
+ if ($this->GetInfoFromIqType($packet) == 'result' && $this->GetInfoFromIqId($packet) == $this->auth_id)
+ {
+ return TRUE;
+ }
+ else
+ {
+ $this->AddToLog("ERROR: _sendauth_0k() #1");
+ return FALSE;
+ }
+ }
+
+
+
+ function _sendauth_digest()
+ {
+ $payload = "<username>{$this->username}</username>
+ <resource>{$this->resource}</resource>
+ <digest>" . bin2hex(mhash(MHASH_SHA1, $this->stream_id . $this->password)) . "</digest>";
+
+ $packet = $this->SendIq(NULL, 'set', $this->auth_id, "jabber:iq:auth", $payload);
+
+ // was a result returned?
+ if ($this->GetInfoFromIqType($packet) == 'result' && $this->GetInfoFromIqId($packet) == $this->auth_id)
+ {
+ return TRUE;
+ }
+ else
+ {
+ $this->AddToLog("ERROR: _sendauth_digest() #1");
+ return FALSE;
+ }
+ }
+
+
+
+ function _sendauth_plaintext()
+ {
+ $payload = "<username>{$this->username}</username>
+ <password>{$this->password}</password>
+ <resource>{$this->resource}</resource>";
+
+ $packet = $this->SendIq(NULL, 'set', $this->auth_id, "jabber:iq:auth", $payload);
+
+ // was a result returned?
+ if ($this->GetInfoFromIqType($packet) == 'result' && $this->GetInfoFromIqId($packet) == $this->auth_id)
+ {
+ return TRUE;
+ }
+ else
+ {
+ $this->AddToLog("ERROR: _sendauth_plaintext() #1");
+ return FALSE;
+ }
+ }
+
+
+
+ function _listen_incoming()
+ {
+ $incoming = "";
+
+ while ($line = $this->CONNECTOR->ReadFromSocket(4096))
+ {
+ $incoming .= $line;
+ }
+
+ $incoming = trim($incoming);
+
+ if ($incoming != "")
+ {
+ $this->AddToLog("RECV: $incoming");
+ }
+
+ return $this->xmlize($incoming);
+ }
+
+
+
+ function _check_connected()
+ {
+ $incoming_array = $this->_listen_incoming();
+
+ if (is_array($incoming_array))
+ {
+ if ($incoming_array["stream:stream"]['@']['from'] == $this->server
+ && $incoming_array["stream:stream"]['@']['xmlns'] == "jabber:client"
+ && $incoming_array["stream:stream"]['@']["xmlns:stream"] == "http://etherx.jabber.org/streams")
+ {
+ $this->stream_id = $incoming_array["stream:stream"]['@']['id'];
+
+ return TRUE;
+ }
+ else
+ {
+ $this->AddToLog("ERROR: _check_connected() #1");
+ return FALSE;
+ }
+ }
+ else
+ {
+ $this->AddToLog("ERROR: _check_connected() #2");
+ return FALSE;
+ }
+ }
+
+
+
+ function _get_packet_type($packet = NULL)
+ {
+ if (is_array($packet))
+ {
+ reset($packet);
+ $packet_type = key($packet);
+ }
+
+ return ($packet_type) ? $packet_type : FALSE;
+ }
+
+
+
+ function _split_incoming($incoming)
+ {
+ $temp = preg_split("/<(message|iq|presence|stream)/", $incoming, -1, PREG_SPLIT_DELIM_CAPTURE);
+ $array = array();
+
+ for ($a = 1; $a < count($temp); $a = $a + 2)
+ {
+ $array[] = "<" . $temp[$a] . $temp[($a + 1)];
+ }
+
+ return $array;
+ }
+
+
+
+ function _create_logfile()
+ {
+ if ($this->log_filename != '' && $this->enable_logging)
+ {
+ $this->log_filehandler = fopen($this->log_filename, 'w');
+ }
+ }
+
+
+
+ function AddToLog($string)
+ {
+ if ($this->enable_logging)
+ {
+ if ($this->log_filehandler)
+ {
+ #fwrite($this->log_filehandler, $string . "\n\n");
+ print "$string \n\n";
+ }
+ else
+ {
+ $this->log_array[] = htmlspecialchars($string);
+ }
+ }
+ }
+
+
+
+ function _close_logfile()
+ {
+ if ($this->log_filehandler)
+ {
+ fclose($this->log_filehandler);
+ }
+ }
+
+
+
+ // _array_htmlspecialchars()
+ // applies htmlspecialchars() to all values in an array
+
+ function _array_htmlspecialchars($array)
+ {
+ if (is_array($array))
+ {
+ foreach ($array as $k => $v)
+ {
+ if (is_array($v))
+ {
+ $v = $this->_array_htmlspecialchars($v);
+ }
+ else
+ {
+ $v = htmlspecialchars($v);
+ }
+ }
+ }
+
+ return $array;
+ }
+
+
+
+ // ======================================================================
+ // <message/> parsers
+ // ======================================================================
+
+
+
+ function GetInfoFromMessageFrom($packet = NULL)
+ {
+ return (is_array($packet)) ? $packet['message']['@']['from'] : FALSE;
+ }
+
+
+
+ function GetInfoFromMessageType($packet = NULL)
+ {
+ return (is_array($packet)) ? $packet['message']['@']['type'] : FALSE;
+ }
+
+
+
+ function GetInfoFromMessageId($packet = NULL)
+ {
+ return (is_array($packet)) ? $packet['message']['@']['id'] : FALSE;
+ }
+
+
+
+ function GetInfoFromMessageThread($packet = NULL)
+ {
+ return (is_array($packet)) ? $packet['message']['#']['thread'][0]['#'] : FALSE;
+ }
+
+
+
+ function GetInfoFromMessageSubject($packet = NULL)
+ {
+ return (is_array($packet)) ? $packet['message']['#']['subject'][0]['#'] : FALSE;
+ }
+
+
+
+ function GetInfoFromMessageBody($packet = NULL)
+ {
+ return (is_array($packet)) ? $packet['message']['#']['body'][0]['#'] : FALSE;
+ }
+
+ function GetInfoFromMessageXMLNS($packet = NULL)
+ {
+ return (is_array($packet)) ? $packet['message']['#']['x'] : FALSE;
+ }
+
+
+
+ function GetInfoFromMessageError($packet = NULL)
+ {
+ $error = preg_replace("/^\/$/", "", ($packet['message']['#']['error'][0]['@']['code'] . "/" . $packet['message']['#']['error'][0]['#']));
+ return (is_array($packet)) ? $error : FALSE;
+ }
+
+
+
+ // ======================================================================
+ // <iq/> parsers
+ // ======================================================================
+
+
+
+ function GetInfoFromIqFrom($packet = NULL)
+ {
+ return (is_array($packet)) ? $packet['iq']['@']['from'] : FALSE;
+ }
+
+
+
+ function GetInfoFromIqType($packet = NULL)
+ {
+ return (is_array($packet)) ? $packet['iq']['@']['type'] : FALSE;
+ }
+
+
+
+ function GetInfoFromIqId($packet = NULL)
+ {
+ return (is_array($packet)) ? $packet['iq']['@']['id'] : FALSE;
+ }
+
+
+
+ function GetInfoFromIqKey($packet = NULL)
+ {
+ return (is_array($packet)) ? $packet['iq']['#']['query'][0]['#']['key'][0]['#'] : FALSE;
+ }
+
+
+
+ function GetInfoFromIqError($packet = NULL)
+ {
+ $error = preg_replace("/^\/$/", "", ($packet['iq']['#']['error'][0]['@']['code'] . "/" . $packet['iq']['#']['error'][0]['#']));
+ return (is_array($packet)) ? $error : FALSE;
+ }
+
+
+
+ // ======================================================================
+ // <presence/> parsers
+ // ======================================================================
+
+
+
+ function GetInfoFromPresenceFrom($packet = NULL)
+ {
+ return (is_array($packet)) ? $packet['presence']['@']['from'] : FALSE;
+ }
+
+
+
+ function GetInfoFromPresenceType($packet = NULL)
+ {
+ return (is_array($packet)) ? $packet['presence']['@']['type'] : FALSE;
+ }
+
+
+
+ function GetInfoFromPresenceStatus($packet = NULL)
+ {
+ return (is_array($packet)) ? $packet['presence']['#']['status'][0]['#'] : FALSE;
+ }
+
+
+
+ function GetInfoFromPresenceShow($packet = NULL)
+ {
+ return (is_array($packet)) ? $packet['presence']['#']['show'][0]['#'] : FALSE;
+ }
+
+
+
+ function GetInfoFromPresencePriority($packet = NULL)
+ {
+ return (is_array($packet)) ? $packet['presence']['#']['priority'][0]['#'] : FALSE;
+ }
+
+
+
+ // ======================================================================
+ // <message/> handlers
+ // ======================================================================
+
+
+
+ function Handler_message_normal($packet)
+ {
+ $from = $packet['message']['@']['from'];
+ $this->AddToLog("EVENT: Message (type normal) from $from");
+ }
+
+
+
+ function Handler_message_chat($packet)
+ {
+ $from = $packet['message']['@']['from'];
+ $this->AddToLog("EVENT: Message (type chat) from $from");
+ }
+
+
+
+ function Handler_message_groupchat($packet)
+ {
+ $from = $packet['message']['@']['from'];
+ $this->AddToLog("EVENT: Message (type groupchat) from $from");
+ }
+
+
+
+ function Handler_message_headline($packet)
+ {
+ $from = $packet['message']['@']['from'];
+ $this->AddToLog("EVENT: Message (type headline) from $from");
+ }
+
+
+
+ function Handler_message_error($packet)
+ {
+ $from = $packet['message']['@']['from'];
+ $this->AddToLog("EVENT: Message (type error) from $from");
+ }
+
+
+
+ // ======================================================================
+ // <iq/> handlers
+ // ======================================================================
+
+
+
+ // application version updates
+ function Handler_iq_jabber_iq_autoupdate($packet)
+ {
+ $from = $this->GetInfoFromIqFrom($packet);
+ $id = $this->GetInfoFromIqId($packet);
+
+ $this->SendError($from, $id, 501);
+ $this->AddToLog("EVENT: jabber:iq:autoupdate from $from");
+ }
+
+
+
+ // interactive server component properties
+ function Handler_iq_jabber_iq_agent($packet)
+ {
+ $from = $this->GetInfoFromIqFrom($packet);
+ $id = $this->GetInfoFromIqId($packet);
+
+ $this->SendError($from, $id, 501);
+ $this->AddToLog("EVENT: jabber:iq:agent from $from");
+ }
+
+
+
+ // method to query interactive server components
+ function Handler_iq_jabber_iq_agents($packet)
+ {
+ $from = $this->GetInfoFromIqFrom($packet);
+ $id = $this->GetInfoFromIqId($packet);
+
+ $this->SendError($from, $id, 501);
+ $this->AddToLog("EVENT: jabber:iq:agents from $from");
+ }
+
+
+
+ // simple client authentication
+ function Handler_iq_jabber_iq_auth($packet)
+ {
+ $from = $this->GetInfoFromIqFrom($packet);
+ $id = $this->GetInfoFromIqId($packet);
+
+ $this->SendError($from, $id, 501);
+ $this->AddToLog("EVENT: jabber:iq:auth from $from");
+ }
+
+
+
+ // out of band data
+ function Handler_iq_jabber_iq_oob($packet)
+ {
+ $from = $this->GetInfoFromIqFrom($packet);
+ $id = $this->GetInfoFromIqId($packet);
+
+ $this->SendError($from, $id, 501);
+ $this->AddToLog("EVENT: jabber:iq:oob from $from");
+ }
+
+
+
+ // method to store private data on the server
+ function Handler_iq_jabber_iq_private($packet)
+ {
+ $from = $this->GetInfoFromIqFrom($packet);
+ $id = $this->GetInfoFromIqId($packet);
+
+ $this->SendError($from, $id, 501);
+ $this->AddToLog("EVENT: jabber:iq:private from $from");
+ }
+
+
+
+ // method for interactive registration
+ function Handler_iq_jabber_iq_register($packet)
+ {
+ $from = $this->GetInfoFromIqFrom($packet);
+ $id = $this->GetInfoFromIqId($packet);
+
+ $this->SendError($from, $id, 501);
+ $this->AddToLog("EVENT: jabber:iq:register from $from");
+ }
+
+
+
+ // client roster management
+ function Handler_iq_jabber_iq_roster($packet)
+ {
+ $from = $this->GetInfoFromIqFrom($packet);
+ $id = $this->GetInfoFromIqId($packet);
+
+ $this->SendError($from, $id, 501);
+ $this->AddToLog("EVENT: jabber:iq:roster from $from");
+ }
+
+
+
+ // method for searching a user database
+ function Handler_iq_jabber_iq_search($packet)
+ {
+ $from = $this->GetInfoFromIqFrom($packet);
+ $id = $this->GetInfoFromIqId($packet);
+
+ $this->SendError($from, $id, 501);
+ $this->AddToLog("EVENT: jabber:iq:search from $from");
+ }
+
+
+
+ // method for requesting the current time
+ function Handler_iq_jabber_iq_time($packet)
+ {
+ if ($this->keep_alive_id == $this->GetInfoFromIqId($packet))
+ {
+ $this->returned_keep_alive = TRUE;
+ $this->connected = TRUE;
+ $this->AddToLog('EVENT: Keep-Alive returned, connection alive.');
+ }
+ $type = $this->GetInfoFromIqType($packet);
+ $from = $this->GetInfoFromIqFrom($packet);
+ $id = $this->GetInfoFromIqId($packet);
+ $id = ($id != "") ? $id : "time_" . time();
+
+ if ($type == 'get')
+ {
+ $payload = "<utc>" . gmdate("Ydm\TH:i:s") . "</utc>
+ <tz>" . date("T") . "</tz>
+ <display>" . date("Y/d/m h:i:s A") . "</display>";
+
+ $this->SendIq($from, 'result', $id, "jabber:iq:time", $payload);
+ }
+
+ $this->AddToLog("EVENT: jabber:iq:time (type $type) from $from");
+ }
+
+
+
+ // method for requesting version
+ function Handler_iq_jabber_iq_version($packet)
+ {
+ $type = $this->GetInfoFromIqType($packet);
+ $from = $this->GetInfoFromIqFrom($packet);
+ $id = $this->GetInfoFromIqId($packet);
+ $id = ($id != "") ? $id : "version_" . time();
+
+ if ($type == 'get')
+ {
+ $payload = "<name>{$this->iq_version_name}</name>
+ <os>{$this->iq_version_os}</os>
+ <version>{$this->iq_version_version}</version>";
+
+ #$this->SendIq($from, 'result', $id, "jabber:iq:version", $payload);
+ }
+
+ $this->AddToLog("EVENT: jabber:iq:version (type $type) from $from -- DISABLED");
+ }
+
+
+
+ // keepalive method, added by Nathan Fritz
+ /*
+ function Handler_jabber_iq_time($packet)
+ {
+ if ($this->keep_alive_id == $this->GetInfoFromIqId($packet))
+ {
+ $this->returned_keep_alive = TRUE;
+ $this->connected = TRUE;
+ $this->AddToLog('EVENT: Keep-Alive returned, connection alive.');
+ }
+ }
+ */
+
+
+ // ======================================================================
+ // <presence/> handlers
+ // ======================================================================
+
+
+
+ function Handler_presence_available($packet)
+ {
+ $from = $this->GetInfoFromPresenceFrom($packet);
+
+ $show_status = $this->GetInfoFromPresenceStatus($packet) . " / " . $this->GetInfoFromPresenceShow($packet);
+ $show_status = ($show_status != " / ") ? " ($addendum)" : '';
+
+ $this->AddToLog("EVENT: Presence (type: available) - $from is available $show_status");
+ }
+
+
+
+ function Handler_presence_unavailable($packet)
+ {
+ $from = $this->GetInfoFromPresenceFrom($packet);
+
+ $show_status = $this->GetInfoFromPresenceStatus($packet) . " / " . $this->GetInfoFromPresenceShow($packet);
+ $show_status = ($show_status != " / ") ? " ($addendum)" : '';
+
+ $this->AddToLog("EVENT: Presence (type: unavailable) - $from is unavailable $show_status");
+ }
+
+
+
+ function Handler_presence_subscribe($packet)
+ {
+ $from = $this->GetInfoFromPresenceFrom($packet);
+ $this->SubscriptionAcceptRequest($from);
+ $this->RosterUpdate();
+
+ $this->log_array[] = "<b>Presence:</b> (type: subscribe) - Subscription request from $from, was added to \$this->subscription_queue, roster updated";
+ }
+
+
+
+ function Handler_presence_subscribed($packet)
+ {
+ $from = $this->GetInfoFromPresenceFrom($packet);
+ $this->RosterUpdate();
+
+ $this->AddToLog("EVENT: Presence (type: subscribed) - Subscription allowed by $from, roster updated");
+ }
+
+
+
+ function Handler_presence_unsubscribe($packet)
+ {
+ $from = $this->GetInfoFromPresenceFrom($packet);
+ $this->SendPresence("unsubscribed", $from);
+ $this->RosterUpdate();
+
+ $this->AddToLog("EVENT: Presence (type: unsubscribe) - Request to unsubscribe from $from, was automatically approved, roster updated");
+ }
+
+
+
+ function Handler_presence_unsubscribed($packet)
+ {
+ $from = $this->GetInfoFromPresenceFrom($packet);
+ $this->RosterUpdate();
+
+ $this->AddToLog("EVENT: Presence (type: unsubscribed) - Unsubscribed from $from's presence");
+ }
+
+
+
+ // Added By Nathan Fritz
+ function Handler_presence_error($packet)
+ {
+ $from = $this->GetInfoFromPresenceFrom($packet);
+ $this->AddToLog("EVENT: Presence (type: error) - Error in $from's presence");
+ }
+
+
+
+ // ======================================================================
+ // Generic handlers
+ // ======================================================================
+
+
+
+ // Generic handler for unsupported requests
+ function Handler_NOT_IMPLEMENTED($packet)
+ {
+ $packet_type = $this->_get_packet_type($packet);
+ $from = call_user_func(array(&$this, "GetInfoFrom" . ucfirst($packet_type) . "From"), $packet);
+ $id = call_user_func(array(&$this, "GetInfoFrom" . ucfirst($packet_type) . "Id"), $packet);
+
+ $this->SendError($from, $id, 501);
+ $this->AddToLog("EVENT: Unrecognized <$packet_type/> from $from");
+ }
+
+
+
+ // ======================================================================
+ // Third party code
+ // m@d pr0ps to the coders ;)
+ // ======================================================================
+
+
+
+ // xmlize()
+ // (c) Hans Anderson / http://www.hansanderson.com/php/xml/
+
+ function xmlize($data)
+ {
+ $vals = $index = $array = array();
+ $parser = xml_parser_create('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, $data, $vals, $index);
+ xml_parser_free($parser);
+
+ $i = 0;
+
+ $tagname = $vals[$i]['tag'];
+ $array[$tagname]['@'] = $vals[$i]['attributes'];
+ $array[$tagname]['#'] = $this->_xml_depth($vals, $i);
+
+ return $array;
+ }
+
+
+
+ // _xml_depth()
+ // (c) Hans Anderson / http://www.hansanderson.com/php/xml/
+
+ function _xml_depth($vals, &$i)
+ {
+ $children = array();
+
+ if (isset($vals[$i]['value']))
+ {
+ array_push($children, trim($vals[$i]['value']));
+ }
+
+ while (++$i < count($vals))
+ {
+ switch ($vals[$i]['type'])
+ {
+ case 'cdata':
+ array_push($children, trim($vals[$i]['value']));
+ break;
+
+ case 'complete':
+ $tagname = $vals[$i]['tag'];
+ $size = isset($children[$tagname]) ? sizeof($children[$tagname]) : 0;
+ $children[$tagname][$size]['#'] = isset($vals[$i]['value']) ? trim($vals[$i]['value']) : "";
+ if (isset($vals[$i]['attributes']))
+ {
+ $children[$tagname][$size]['@'] = $vals[$i]['attributes'];
+ }
+ break;
+
+ case 'open':
+ $tagname = $vals[$i]['tag'];
+ $size = isset($children[$tagname]) ? sizeof($children[$tagname]) : 0;
+ if ($vals[$i]['attributes'])
+ {
+ $children[$tagname][$size]['@'] = $vals[$i]['attributes'];
+ $children[$tagname][$size]['#'] = $this->_xml_depth($vals, $i);
+ }
+ else
+ {
+ $children[$tagname][$size]['#'] = $this->_xml_depth($vals, $i);
+ }
+ break;
+
+ case 'close':
+ return $children;
+ break;
+ }
+ }
+
+ return $children;
+ }
+
+
+
+ // TraverseXMLize()
+ // (c) acebone@f2s.com, a HUGE help!
+
+ function TraverseXMLize($array, $arrName = "array", $level = 0)
+ {
+ if ($level == 0)
+ {
+ echo "<pre>";
+ }
+
+ while (list($key, $val) = @each($array))
+ {
+ if (is_array($val))
+ {
+ $this->TraverseXMLize($val, $arrName . "[" . $key . "]", $level + 1);
+ }
+ else
+ {
+ echo '$' . $arrName . '[' . $key . '] = "' . $val . "\"\n";
+ }
+ }
+
+ if ($level == 0)
+ {
+ echo "</pre>";
+ }
+ }
+}
+
+
+
+class MakeXML extends Jabber
+{
+
+ function MakeXML()
+ {
+ $nodes = array();
+ }
+
+
+
+ function AddPacketDetails($string, $value = NULL)
+ {
+ if (preg_match("/\(([0-9]*)\)$/i", $string))
+ {
+ $string .= "/[\"#\"]";
+ }
+
+ $temp = @explode("/", $string);
+
+ for ($a = 0; $a < count($temp); $a++)
+ {
+ $temp[$a] = preg_replace("/^[@]{1}([a-z0-9_]*)$/i", "[\"@\"][\"\\1\"]", $temp[$a]);
+ $temp[$a] = preg_replace("/^([a-z0-9_]*)\(([0-9]*)\)$/i", "[\"\\1\"][\\2]", $temp[$a]);
+ $temp[$a] = preg_replace("/^([a-z0-9_]*)$/i", "[\"\\1\"]", $temp[$a]);
+ }
+
+ $node = implode("", $temp);
+
+ // Yeahyeahyeah, I know it's ugly... get over it. ;)
+ echo "\$this->nodes$node = \"" . htmlspecialchars($value) . "\";<br/>";
+ eval("\$this->nodes$node = \"" . htmlspecialchars($value) . "\";");
+ }
+
+
+
+ function BuildPacket($array = NULL)
+ {
+
+ if (!$array)
+ {
+ $array = $this->nodes;
+ }
+
+ if (is_array($array))
+ {
+ array_multisort($array, SORT_ASC, SORT_STRING);
+
+ foreach ($array as $key => $value)
+ {
+ if (is_array($value) && $key == "@")
+ {
+ foreach ($value as $subkey => $subvalue)
+ {
+ $subvalue = htmlspecialchars($subvalue);
+ $text .= " $subkey='$subvalue'";
+ }
+
+ $text .= ">\n";
+
+ }
+ elseif ($key == "#")
+ {
+ $text .= htmlspecialchars($value);
+ }
+ elseif (is_array($value))
+ {
+ for ($a = 0; $a < count($value); $a++)
+ {
+ $text .= "<$key";
+
+ if (!$this->_preg_grep_keys("/^@/", $value[$a]))
+ {
+ $text .= ">";
+ }
+
+ $text .= $this->BuildPacket($value[$a]);
+
+ $text .= "</$key>\n";
+ }
+ }
+ else
+ {
+ $value = htmlspecialchars($value);
+ $text .= "<$key>$value</$key>\n";
+ }
+ }
+
+ return $text;
+ }
+ }
+
+
+
+ function _preg_grep_keys($pattern, $array)
+ {
+ while (list($key, $val) = each($array))
+ {
+ if (preg_match($pattern, $key))
+ {
+ $newarray[$key] = $val;
+ }
+ }
+ return (is_array($newarray)) ? $newarray : FALSE;
+ }
+}
+
+
+
+class CJP_StandardConnector
+{
+ function OpenSocket($server, $port)
+ {
+ if ($this->active_socket = fsockopen($server, $port))
+ {
+ socket_set_blocking($this->active_socket, 0);
+ socket_set_timeout($this->active_socket, 31536000);
+
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+ }
+
+
+
+ function CloseSocket()
+ {
+ return fclose($this->active_socket);
+ }
+
+
+
+ function WriteToSocket($data)
+ {
+ return fwrite($this->active_socket, $data);
+ }
+
+
+
+ function ReadFromSocket($chunksize)
+ {
+ set_magic_quotes_runtime(0);
+ $buffer = fread($this->active_socket, $chunksize);
+ set_magic_quotes_runtime(get_magic_quotes_gpc());
+
+ return $buffer;
+ }
+}
+
+
+
+?>
diff --git a/includes_old/funktion_modem.php b/includes_old/funktion_modem.php
new file mode 100644
index 00000000..8e93ebf4
--- /dev/null
+++ b/includes_old/funktion_modem.php
@@ -0,0 +1,34 @@
+<?php
+ include "config_modem.php";
+
+ function DialNumber($Number) {
+ global $Dev, $ModemEnable;
+
+ if($ModemEnable) {
+ echo "Dial number: '<u>$Number</u>' was called<br />\n";
+
+ $fp = fopen( $ModemDev, "w");
+ sleep(1);
+ fwrite( $fp, "+++");
+ sleep(1);
+ fwrite( $fp, "ATZ\n");
+ sleep(1);
+ fwrite( $fp, "ATX1\n");
+ sleep(1);
+ fwrite( $fp, "ATD $Number \n");
+ sleep(8);
+ fclose($fp);
+ sleep(1);
+ }
+ else
+ echo "Modem is Disable, number: '<u>$Number</u>' was not called<br />\n";
+}
+
+
+function SetWackeup( $Number, $TimeH, $TimeM)
+{
+ global $WakeupNumber;
+ DialNumber( "$WakeupNumber$TimeH$TimeM$Number");
+}
+
+?>
diff --git a/includes_old/funktion_schichtplan_beamer.php b/includes_old/funktion_schichtplan_beamer.php
new file mode 100644
index 00000000..85c5ffe8
--- /dev/null
+++ b/includes_old/funktion_schichtplan_beamer.php
@@ -0,0 +1,180 @@
+<?php
+
+/*#######################################################
+# Aufbau von Standart Feldern #
+#######################################################*/
+
+// erstellt ein Array der Reume
+ $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");
+ }
+
+// erstellt ein Aray der Engeltypen
+ $sql = "SELECT `TID`, `Name` FROM `EngelType` ORDER BY `Name`";
+ $Erg = mysql_query($sql, $con);
+ $rowcount = mysql_num_rows($Erg);
+ for ($i=0; $i<$rowcount; $i++)
+ {
+ $EngelType[$i]["TID"] = mysql_result($Erg, $i, "TID");
+ $EngelType[$i]["Name"] = mysql_result($Erg, $i, "Name").Get_Text("inc_schicht_engel");
+
+ $EngelTypeID[ mysql_result($Erg, $i, "TID") ] =
+ mysql_result($Erg, $i, "Name").Get_Text("inc_schicht_engel");
+ }
+
+
+/*#######################################################
+# gibt die engelschischten aus #
+#######################################################*/
+function ausgabe_Feld_Inhalt( $SID, $Man )
+{
+// gibt, nach übergabe der der SchichtID (SID) und der RaumBeschreibung,
+// die eingetragenden und und offenden Schichteintäge zurück
+ global $EngelType, $EngelTypeID, $con;
+ //form Config
+ global $debug;
+
+ $Out = "";
+
+ $Out.= "<table border=\"0\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" frame=\"void\">\n";
+
+ $Out.= "<colgroup span=\"2\" align=\"left\" valign=\"center\">\n".
+ "<col width=\"45%\">\n".
+ "<col width=\"*\">\n".
+ "</colgroup>\n";
+
+ ///////////////////////////////////////////////////////////////////
+ // SQL abfrage für die benötigten schichten
+ ///////////////////////////////////////////////////////////////////
+ $SQL = "SELECT * FROM `ShiftEntry` WHERE (`SID` = '$SID') ORDER BY `TID`, `UID` DESC ;";
+ $Erg = mysql_query($SQL, $con);
+
+ $Anzahl = mysql_num_rows($Erg);
+ $Feld=-1;
+ for( $i = 0; $i < $Anzahl; $i++ )
+ {
+
+ $Temp_TID = mysql_result($Erg, $i, "TID");
+
+ // wenn sich der Type ändert wird zumnästen feld geweckselt
+ if( ($i==0) || ($Temp_TID_old != $Temp_TID) )
+ {
+ $Feld++;
+ $Temp[$Feld]["free"]=0;
+ $Temp[$Feld]["Engel"]=array();
+ }
+
+ $Temp[$Feld]["TID"] = $Temp_TID;
+ $Temp[$Feld]["UID"] = mysql_result($Erg, $i, "UID");
+
+ // ist es eine zu vergeben schicht?
+ if( $Temp[$Feld]["UID"] == 0 )
+ $Temp[$Feld]["free"]++;
+ else
+ $Temp[$Feld]["Engel"][] = $Temp[$Feld]["UID"];
+
+ $Temp_TID_old = $Temp[$Feld]["TID"];
+ } // FOR
+
+
+ ///////////////////////////////////////////////////////////////////
+ // Aus gabe der Schicht
+ ///////////////////////////////////////////////////////////////////
+ if( isset($Temp) && count($Temp) )
+ foreach( $Temp as $TempEntry => $TempValue )
+ {
+ $Out.= "<tr>\n";
+
+ // ausgabe EngelType
+ $Out.= "<td>". $EngelTypeID[ $TempValue["TID"] ];
+
+ // ausgabe Eingetragener Engel
+ if( count($TempValue["Engel"]) > 0 )
+ {
+ if( count($TempValue["Engel"]) == 1 )
+ $Out.= " ". trim(Get_Text("inc_schicht_ist")). ":";
+ else
+ $Out.= " ". trim(Get_Text("inc_schicht_sind")). ":";
+ $Out.= "</td>\n";
+ $Out.= "<td>";
+
+ foreach( $TempValue["Engel"] as $TempEngelEntry=> $TempEngelID )
+ $Out.= UID2Nick( $TempEngelID ). ", ";
+// $Out.= UID2Nick( $TempEngelID ). DisplayAvatar( $TempEngelID ). ", ";
+ $Out = substr( $Out, 0, strlen($Out)-2 );
+ }
+ else
+ {
+ $Out.= ":</td>\n";
+ $Out.= "<td>\n";
+ }
+
+
+ // ausgabe benötigter Engel
+ ////////////////////////////
+ if( $_SESSION['CVS']["nonpublic/schichtplan_add.php"] == "Y")
+ {
+ if ( $TempValue["free"] > 0)
+ {
+ if( count($TempValue["Engel"]) > 0)
+ $Out.= ", ";
+ $Out.= $TempValue["free"]. "x free ";
+ }
+ }
+ $Out.= "</td>\n";
+ $Out.= "</tr>\n";
+
+ } // FOREACH
+
+ $Out.= "</table>\n";
+
+ return $Out;
+} // function Ausgabe_Feld_Inhalt
+
+
+
+/*#######################################################
+# gibt die engelschischten für einen Ruam aus #
+#######################################################*/
+function ausgabe_Zeile( $RID, $Time, &$AnzahlEintraege )
+{
+ global $con;
+
+ $SQL = "SELECT `SID`, `Len`, `Man` FROM `Shifts` ".
+ "WHERE ( (`RID` = '$RID') AND ".
+ "((`DateE` like '". gmdate("Y-m-d H", $Time+3600). "%') OR ".
+ " (`DateS` like '". gmdate("Y-m-d H", $Time). "%')) ) ORDER BY `DateS`;";
+
+ $ErgRoom = mysql_query($SQL, $con);
+ $Out= "<td>";
+ if( mysql_num_rows( $ErgRoom)>0 )
+ for( $i=1; $i<=mysql_num_rows( $ErgRoom); $i++ )
+ {
+ $AnzahlEintraege++;
+ $Out.= ausgabe_Feld_Inhalt( mysql_result( $ErgRoom, $i-1, "SID"),
+ mysql_result( $ErgRoom, $i-1, "Man"));
+ if( (mysql_num_rows( $ErgRoom) > 1) && !($i==mysql_num_rows( $ErgRoom)) )
+ $Out.= "<br />";
+// $Out.= "<hr width=\"95%\" align=\"center\">\n";
+
+ }
+ else
+ $Out.= "&nbsp;";
+
+ $Out.= "</td>\n";
+
+ return $Out;
+}
+
+?>
diff --git a/includes_old/funktion_xml.php b/includes_old/funktion_xml.php
new file mode 100644
index 00000000..4ab3bfd5
--- /dev/null
+++ b/includes_old/funktion_xml.php
@@ -0,0 +1,152 @@
+<?php
+class element {
+ var $name = '';
+ var $attributes = array ();
+ var $data = '';
+ var $depth = 0;
+ var $sub = array ();
+}
+
+$XMLDEBUG = 0;
+$depth = 0;
+$XMLmain = new element;
+$XMLpos = array (
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0
+);
+//$XMLpos = array( 0, 0, 0, 0, 0, 0);
+
+function convertValues($Data) {
+ global $XMLDEBUG;
+
+ if ($XMLDEBUG) {
+ $Data = htmlspecialchars($Data);
+ $Data = mysql_escape_string($Data);
+ $Data = htmlentities($Data);
+ }
+
+ $Data = utf8_decode($Data);
+ return $Data;
+}
+
+function dataXMLmain($Data, & $Objekt, $Tiefe) {
+ global $XMLmain, $XMLpos, $depth, $XMLDEBUG;
+
+ 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???<br />";
+ } else
+ dataXMLmain($Data, $Objekt->sub[$XMLpos[$Tiefe]], $Tiefe +1);
+}
+
+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|" . "#-#<br />";
+ } else
+ startXMLmain($Data, $Objekt->sub[$XMLpos[$Tiefe]], $Tiefe +1);
+}
+
+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]++;
+
+ if ($depth == 0)
+ $XMLmain = $Data;
+ else
+ startXMLmain($Data, $XMLmain, 1);
+
+ $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 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 (" <h1>could not open XML file \"$file\"</h1>");
+ return -1;
+ }
+ } else {
+ echo (" <h1>XML file \"$file\" not exist</h1>");
+ return -1;
+ }
+
+ if ($XMLDEBUG)
+ echo "<pre>";
+ 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 "</pre>";
+ xml_parser_free($xml_parser);
+ return 0;
+}
+
+/*#######################################################################################*/
+function getXMLsubPease($Sourse, $Name) {
+ foreach ($Sourse->sub as $key => $value) {
+ if ($value->name == $Name) {
+ return $value;
+ }
+ }
+ // die;
+}
+
+/*#######################################################################################*/
+function getXMLsubData($Sourse, $Name) {
+ $XML = getXMLsubPease($Sourse, $Name);
+ return $XML->data;
+}
+?>
diff --git a/includes_old/funktion_xml_room.php b/includes_old/funktion_xml_room.php
new file mode 100644
index 00000000..f31d5661
--- /dev/null
+++ b/includes_old/funktion_xml_room.php
@@ -0,0 +1,61 @@
+<?php
+ echo "<h1>Rooms:</h1>\n";
+
+ function saveRoomData() {
+ global $con;
+
+ if(isset($_GET["NameXML"])) {
+ $SQL = "INSERT INTO `Room` ( `Name`, `FromPentabarf` ) ".
+ "VALUES ('". mysql_escape_string($_GET["NameXML"]). "', 'Y');";
+ $Erg = mysql_query($SQL, $con);
+
+ if($Erg)
+ echo "Aenderung, an Raum ". $_GET["NameXML"]. ", war erfogreich<br />";
+ else
+ echo "Aenderung, an Raum ". $_GET["NameXML"]. ", war <u>nicht</u> erfogreich.(".
+
+ mysql_error($con). ")<br />[$SQL]<br />";
+ } else
+ echo "Fehler in den Parametern!<br />";
+ }
+
+ if(isset($_GET["RoomUpdate"]))
+ saveRoomData();
+
+ // INIT Status counter
+ $DS_KO = 0;
+
+ // Ausgabe
+ echo "<table border=\"0\">\n";
+ echo "<tr><th>Name</th><th>state</th></tr>\n";
+
+ if($EnableSchudle) {
+ foreach($XMLmain->sub as $EventKey => $Event) {
+ if( $Event->name == "VEVENT") {
+ $NameXML = getXMLsubData( $Event, "LOCATION");
+
+ if( !isset( $RoomName[$NameXML])) {
+ $RoomName[$NameXML] = "";
+
+ if(isset($_GET["UpdateALL"])) {
+ $_GET["NameXML"] = $NameXML;
+ saveRoomData();
+ CreateRoomArrays();
+ } else {
+ echo "<form action=\"dbUpdateFromXLS.php\">\n";
+ echo "<tr>\n";
+ echo "<td><input name=\"NameXML\" type=\"text\" value=\"$NameXML\" readonly></td>\n";
+ echo "<td><input type=\"submit\" name=\"RoomUpdate\" value=\"update\"></td>\n";
+ $DS_KO++;
+ echo "</tr>\n";
+ echo "</form>\n";
+ echo "<br />";
+ }
+ }
+ }
+ }
+ }
+
+ echo "<tr><td colspan=\"6\">status: $DS_KO nicht vorhanden.</td></tr>\n";
+ echo "</table>\n";
+?>
diff --git a/includes_old/funktion_xml_schudle.php b/includes_old/funktion_xml_schudle.php
new file mode 100644
index 00000000..f73f11ad
--- /dev/null
+++ b/includes_old/funktion_xml_schudle.php
@@ -0,0 +1,309 @@
+<?php
+
+/*##############################################################################################
+ s c h e d u l e
+ ##############################################################################################*/
+echo "\n\n<h1>Schedule:</h1>\n";
+
+
+function SaveSchedule()
+{
+ global $RoomID, $RoomName;
+ global $con;
+
+ if( isset($_GET["PSIDXML"]) &&
+ isset($_GET["DateXML"]) &&
+ isset($_GET["RIDXML"]) &&
+ isset($_GET["LenXML"]) &&
+ isset($_GET["ManXML"]) &&
+ isset($_GET["URLXML"]) )
+ {
+ //erzeuge von `DateE`
+ $TimeStart = substr( $_GET["DateXML"], 11, 2) + (substr($_GET["DateXML"], 14, 2)/60);
+ $TimeEnd = ($_GET["LenXML"] + $TimeStart) * 60;
+ $TimeM = $TimeEnd % 60;
+ $TimeH = ($TimeEnd - $TimeM)/60;
+ if( $TimeH>=24 )
+ {
+ $TimeH -= 24;
+ $DateEnd = substr($_GET["DateXML"], 0, 8).
+ (substr($_GET["DateXML"], 8, 2)+1). " ";
+ }
+ else
+ $DateEnd = substr($_GET["DateXML"], 0, 11);
+ $DateEnd .= "$TimeH:$TimeM:00";
+
+ //Namen ermitteln
+ $_GET["RIDXML"] = $RoomName[$_GET["RIDXML"]];
+
+ //Update OR insert ?
+ $SQL1 = "Select `SID` FROM `Shifts` WHERE `PSID`='". $_GET["PSIDXML"]. "';";
+ $Erg1 = mysql_query($SQL1, $con);
+
+ if( mysql_num_rows($Erg1)==0)
+ {
+ echo "Aenderung, am Schedule '". $_GET["PSIDXML"]. "'";
+ $SQL= "INSERT INTO `Shifts` (`PSID`, `DateS`, `DateE`, `Len`, `RID`, `Man`, `URL`) ".
+ "VALUES ('". $_GET["PSIDXML"]. "', ".
+ "'". $_GET["DateXML"]. "', ".
+ "'". $DateEnd. "', ".
+ "'". $_GET["LenXML"]. "', ".
+ "'". $_GET["RIDXML"]. "', ".
+ "'". mysql_escape_string($_GET["ManXML"]). "', ".
+ "'". $_GET["URLXML"]. "'".
+ ");";
+ }
+ else
+ {
+ echo "Aenderung, am Schedule '". $_GET["PSIDXML"]. "' (SID ".
+ mysql_result( $Erg1, 0, "SID"). ")";
+ $SQL= "UPDATE `Shifts` SET ".
+ "`DateS` = '". $_GET["DateXML"]. "', ".
+ "`DateE` = '". $DateEnd. "', ".
+ "`Len` = '". $_GET["LenXML"]. "', ".
+ "`RID` = '". $_GET["RIDXML"]. "', ".
+ "`Man` = '". mysql_escape_string($_GET["ManXML"]). "', ".
+ "`URL`= '". $_GET["URLXML"]. "' ".
+ "WHERE `PSID` = '". $_GET["PSIDXML"]. "' LIMIT 1;";
+ }
+ $Erg = mysql_query($SQL, $con);
+ if( $Erg )
+ {
+ echo ", war erfogreich<br />\n";
+
+ //SID auslesen
+ $SQL1 = "Select `SID` FROM `Shifts` WHERE `PSID`='". $_GET["PSIDXML"]. "';";
+ $Erg1 = mysql_query($SQL1, $con);
+ $newSID = mysql_result($Erg1, 0, 0);
+
+ // erstellt ein Array der Reume
+ $sql2 = "SELECT * FROM `Room` ".
+ "WHERE `RID`='".$_GET["RIDXML"]. "' ".
+ "ORDER BY `Number`, `Name`;";
+ $Erg2 = mysql_query( $sql2, $con);
+ for( $j=0; $j<mysql_num_fields( $Erg2); $j++)
+ {
+ if( substr( mysql_field_name($Erg2, $j), 0, 12)=="DEFAULT_EID_" )
+ {
+ // extract db values
+ $EngelNeeded = mysql_result($Erg2, 0, $j);
+ $EngelTypeID = substr( mysql_field_name($Erg2, $j), 12);
+
+
+ // chech exist shifts
+ $sqlShifts = "SELECT * FROM `ShiftEntry` ".
+ "WHERE `SID`='". $newSID. "' AND ".
+ "`TID` = '". $EngelTypeID. "';";
+ $ErgShifts = mysql_query( $sqlShifts, $con);
+ $EngelNeeded_Exist = mysql_num_rows( $ErgShifts);
+
+ // check for not empty shifts
+ $sqlShiftsNotEmpty = "SELECT * FROM `ShiftEntry` ".
+ "WHERE `SID`='". $newSID. "' AND ".
+ "`TID` = '". $EngelTypeID. "' AND ".
+ "`UID` != 0 ;";
+ $ErgShiftsNotEmpty = mysql_query( $sqlShiftsNotEmpty, $con);
+ $EngelNeeded_NotEmpty = mysql_num_rows( $ErgShiftsNotEmpty);
+
+ // Angel create/delte?
+ if( $EngelNeeded > $EngelNeeded_Exist)
+ {
+ echo "---->Create Shifts for engeltype: ". TID2Type($EngelTypeID). " ".
+ ($EngelNeeded-$EngelNeeded_Exist). "x<br />\n------>\n";
+ for( $i=0; $i < ($EngelNeeded-$EngelNeeded_Exist); $i++ )
+ {
+ $SQL3 = "INSERT INTO `ShiftEntry` (`SID`, `TID`) VALUES (".
+ "'". $newSID. "', ".
+ "'". $EngelTypeID. "');";
+ $Erg3 = mysql_query($SQL3, $con);
+ if ($Erg3 == 1)
+ echo "pass ";
+ else
+ echo "fail <u>". mysql_error($con).
+ "</u>($SQL3)<br />\n";
+ }
+ echo "<br />\n";
+ }
+ else if ($EngelNeeded < $EngelNeeded_Exist)
+ {
+ if( $EngelNeeded > $EngelNeeded_NotEmpty)
+ {
+ $EngelMin = $EngelNeeded;
+ }
+ else
+ {
+ $EngelMin = $EngelNeeded_NotEmpty;
+ echo "---> WARING ". $EngelNeeded_NotEmpty.
+ " shift is used, can't del ". TID2Type($EngelTypeID). " shifts";
+ }
+
+ echo "---->Delete empty Shifts for engeltype: ". TID2Type($EngelTypeID). " ".
+ ($EngelNeeded_Exist-$EngelMin)."x<br />\n------>\n";
+ for( $i=$EngelMin; $i<$EngelNeeded_Exist; $i++ )
+ {
+ $SQL3 = "DELETE FROM `ShiftEntry` ".
+ "WHERE `SID` = ". $newSID. " AND ".
+ "`TID` = ". $EngelTypeID. " AND ".
+ "`UID` = 0 ".
+ "LIMIT 1;";
+ $Erg3 = mysql_query($SQL3, $con);
+ if ($Erg3 == 1)
+ echo "pass ";
+ else
+ echo "fail <u>". mysql_error($con).
+ "</u>($SQL3)<br />\n";
+ }
+ echo "<br />\n";
+ }
+ else
+ {
+// echo "---->Nothing to do, for engeltype: ". TID2Type($EngelTypeID). "<br />\n";
+ }
+ }
+ }
+
+ }
+ else
+ echo ", war <u>nicht</u> erfogreich.(".
+ mysql_error($con). ")<br />[$SQL]<br />\n";
+ }
+ else
+ echo "Fehler in den Parametern!<br />";
+} /*SaveSchedule*/
+
+if( isset($_GET["ScheduleUpdate"]))
+ SaveSchedule();
+
+//INIT Status counter
+$DS_OK = 0;
+$DS_KO = 0;
+$Where = "";
+
+//ausgabe
+echo "<table border=\"0\">\n";
+echo "<tr><th>PSID</th><th>Date</th>".
+ "<th>Room</th><th>Len</th><th>Name</th><th>state</th></tr>\n";
+echo "<tr align=\"center\"><td>XML - DB</td><td>XML - DB</td>".
+ "<td>XML - DB</td><td>XML - DB</td><td>XML - DB</td><td></td></tr>\n";
+
+if( $EnableSchudle)
+foreach($XMLmain->sub as $EventKey => $Event)
+{
+ if( $Event->name == "VEVENT")
+ {
+ echo "<form action=\"dbUpdateFromXLS.php\">\n";
+ echo "<tr>\n";
+
+ $PSIDXML = getXMLsubData( $Event, "UID");
+ $DateXML =
+ substr( getXMLsubData( $Event, "DTSTART"), 0, 4). "-".
+ substr( getXMLsubData( $Event, "DTSTART"), 4, 2). "-".
+ substr( getXMLsubData( $Event, "DTSTART"), 6, 2). " ".
+ substr( getXMLsubData( $Event, "DTSTART"), 9, 2). ":".
+ substr( getXMLsubData( $Event, "DTSTART"), 11,2). ":00";
+ $LenXML = substr( getXMLsubData( $Event, "DURATION"), 0, 2) + ( substr( getXMLsubData( $Event, "DURATION"), 3, 2)/60);
+ $RIDXML = getXMLsubData( $Event, "LOCATION");
+ $ManXML = getXMLsubData( $Event, "SUMMARY");
+ $URLXML = getXMLsubData( $Event, "URL");
+
+ if( isset($_GET["UpdateALL"]))
+ {
+ $_GET["PSIDXML"] = $PSIDXML;
+ $_GET["DateXML"] = $DateXML;
+ $_GET["LenXML"] = $LenXML;
+ $_GET["RIDXML"] = $RIDXML;
+ $_GET["ManXML"] = $ManXML;
+ $_GET["URLXML"] = $URLXML;
+ SaveSchedule();
+ }
+
+ $SQL = "SELECT * FROM `Shifts` WHERE `PSID`='$PSIDXML'";
+ $Erg = mysql_query($SQL, $con);
+ if(mysql_num_rows($Erg)>0)
+ {
+ $SIDDB = mysql_result($Erg, 0, "SID");
+ $PSIDDB = mysql_result($Erg, 0, "PSID");
+ $TimeDB = mysql_result($Erg, 0, "DateS");
+ $LenDB = mysql_result($Erg, 0, "Len");
+ if( isset($RoomID[mysql_result($Erg, 0, "RID")]))
+ $RIDDB = $RoomID[mysql_result($Erg, 0, "RID")];
+ else
+ $RIDDB = "RID". mysql_result($Erg, 0, "RID");
+
+ $ManDB = mysql_result($Erg, 0, "Man");
+ $URLDB = mysql_result($Erg, 0, "URL");
+ }
+ else
+ $SIDDB = $PSIDDB = $TimeDB = $LenDB = $RIDDB = $ManDB = $URLDB = "";
+
+ echo "<td><input name=\"PSIDXML\" type=\"text\" value=\"$PSIDXML\" size=\"2\" eadonly></td>\n";
+ echo "<td><input name=\"DateXML\" type=\"text\" value=\"$DateXML\" size=\"17\" readonly>\n".
+ "<input name=\"DateDB\" type=\"text\" value=\"$TimeDB\" size=\"17\" readonly></td>\n";
+ echo "<td><input name=\"RIDXML\" type=\"text\" value=\"$RIDXML\" size=\"15\" readonly>\n".
+ "<input name=\"RIDDB\" type=\"text\" value=\"$RIDDB\" size=\"15\" readonly></td>\n";
+ echo "<td><input name=\"LenXML\" type=\"text\" value=\"$LenXML\" size=\"1\"readonly>\n".
+ "<input name=\"LenDB\" type=\"text\" value=\"$LenDB\" size=\"1\"readonly></td>\n";
+ echo "<td><input name=\"ManXML\" type=\"text\" value=\"$ManXML\" size=\"40\"readonly>\n".
+ "<input name=\"ManDB\" type=\"text\" value=\"$ManDB\" size=\"40\"readonly></td>\n";
+ echo "<td><input name=\"URLXML\" type=\"hidden\" value=\"$URLXML\"></td>\n";
+ echo "<td><input name=\"URLDB\" type=\"hidden\" value=\"$URLDB\"></td>\n";
+ if( !( $PSIDXML==$PSIDDB &&
+ $DateXML==$TimeDB &&
+ $RIDXML==$RIDDB &&
+ $LenXML==$LenDB &&
+ $ManXML==$ManDB &&
+ $URLXML==$URLDB) )
+ {
+ echo "<td><input type=\"submit\" name=\"ScheduleUpdate\" value=\"update\"></td>\n";
+ $DS_KO++;
+ }
+ else
+ {
+ echo "<td>". funktion_isLinkAllowed_addLink_OrLinkText("admin/schichtplan.php?action=change&SID=".$SIDDB, "edit"). "</td>\n";
+ $DS_OK++;
+ }
+ echo "</tr>\n";
+ echo "</form>\n";
+ $Where.= " OR `PSID`='$PSIDXML'";
+ }
+}
+echo "<tr><td colspan=\"6\">status: $DS_KO/$DS_OK nicht Aktuel.</td></tr>\n";
+
+
+//Anzeige von nicht im XML File vorkommende entraege
+if( $Where =="")
+ $SQL2 = "SELECT * FROM `Shifts` WHERE NOT `PSID`='';";
+else
+ $SQL2 = "SELECT * FROM `Shifts` WHERE NOT (".substr( $Where, 4). ") AND NOT PSID = '';";
+
+$Erg2 = mysql_query($SQL2, $con);
+echo mysql_error($con);
+if(mysql_num_rows($Erg2)>0 && $EnableSchudleDB )
+ for( $i=0; $i<mysql_num_rows( $Erg2); $i++)
+ {
+ echo "<tr>\n";
+ $SID = mysql_result($Erg2, $i, "SID");
+ $Time = mysql_result($Erg2, $i, "DateS");
+ $Len = mysql_result($Erg2, $i, "Len");
+ if( isset($RoomID[ mysql_result($Erg2, $i, "RID")]))
+ $RID = $RoomID[ mysql_result($Erg2, $i, "RID")];
+ else
+ $RID = "RID.". mysql_result($Erg2, $i, "RID");
+ $Man = mysql_result($Erg2, $i, "Man");
+ echo "<td><input name=\"SIDXML\" type=\"text\" value=\"$SID\" size=\"2\" eadonly></td>\n";
+ echo "<td><input name=\"DateXML\" type=\"text\" value=\"\" size=\"17\" readonly>\n".
+ "<input name=\"DateDB\" type=\"text\" value=\"$Time\" size=\"17\" readonly></td>\n";
+ echo "<td><input name=\"RIDXML\" type=\"text\" value=\"\" size=\"15\" readonly>\n".
+ "<input name=\"RIDDB\" type=\"text\" value=\"$RID\" size=\"15\" readonly></td>\n";
+ echo "<td><input name=\"LenXML\" type=\"text\" value=\"\" size=\"1\"readonly>\n".
+ "<input name=\"LenDB\" type=\"text\" value=\"$Len\" size=\"1\"readonly></td>\n";
+ echo "<td><input name=\"ManXML\" type=\"text\" value=\"\" size=\"40\"readonly>\n".
+ "<input name=\"ManDB\" type=\"text\" value=\"$Man\" size=\"40\"readonly></td>\n";
+ echo "<td>". funktion_isLinkAllowed_addLink_OrLinkText( "admin/schichtplan.php?action=change&SID=".$SID, "edit").
+ "</td>\n";
+ echo "<tr>\n";
+ }
+echo "</table>";
+
+
+?>
diff --git a/includes_old/header.php b/includes_old/header.php
new file mode 100644
index 00000000..9cd2e51d
--- /dev/null
+++ b/includes_old/header.php
@@ -0,0 +1,102 @@
+<?php
+include "header_start.php";
+
+echo "<!DOCTYPE html>\n";
+?>
+<html>
+<head>
+
+<title><?php echo $title; ?> - Engelsystem</title>
+<meta charset="UTF-8" />
+<meta http-equiv="content-type" content="text/html;charset=utf-8" />
+<meta name="content-style-type" content="text/css" />
+<meta name="keywords" content="Engel, Himmelsverwaltung" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<meta http-equiv="expires" content="0" />
+<meta name="robots" content="index" />
+<meta name="revisit-after" content="1 days" />
+<script type="text/javascript" src="css/grossbild.js"></script>
+<link rel="stylesheet" type="text/css" href="css/base.css" />
+<link rel="stylesheet" type="text/css" href="css/style<?php echo isset($_SESSION['color']) ? $_SESSION['color'] : $default_theme ?>.css" />
+<link rel="stylesheet" type="text/css" href="../css/base.css" />
+<link rel="stylesheet" type="text/css" href="../css/style<?php echo isset($_SESSION['color']) ? $_SESSION['color'] : $default_theme ?>.css" />
+
+<?php
+if (isset ($reload)) {
+ if ($reload == "")
+ $reload = 3330;
+
+ echo "\n<meta http-equiv=\"refresh\" content=\"" . $reload . "; URL=./?reload=" . $reload . "\">\n";
+}
+
+if (isset ($Page["AutoReload"]))
+ echo "\n<meta http-equiv=\"refresh\" content=\"" . $Page["AutoReload"] .
+ "; URL=" . $url . $ENGEL_ROOT . $Page["Name"] . "\">\n";
+
+echo "</head>\n";
+
+/////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////// B O D Y
+/////////////////////////////////////////////////////////////////////////////////////////////
+echo "<body class=\"background\">\n";
+
+echo '<header><a href="' . $url . $ENGEL_ROOT . '" id="logo"></a></header>';
+
+//ausgabe new message
+if (isset ($_SESSION['CVS']["nonpublic/messages.php"])) {
+ if ($_SESSION['CVS']["nonpublic/messages.php"] == "Y") {
+ $SQL = "SELECT `Datum` FROM `Messages` WHERE `RUID`=" . $_SESSION["UID"] . " AND `isRead`='N'";
+ $erg = mysql_query($SQL, $con);
+ if (mysql_num_rows($erg) > 0)
+ echo "<br /><a href=\"" . $url . $ENGEL_ROOT .
+ "nonpublic/messages.php\">" . Get_Text("pub_messages_new1") .
+ " " . mysql_num_rows($erg) . " " .
+ Get_Text("pub_messages_new2") . "</a><br /><br />";
+ }
+}
+?>
+<div id="body">
+<div id="menu">
+<?php
+
+
+//ausgaeb Menu
+if (!isset ($_SESSION['Menu']))
+ $_SESSION['Menu'] = "L";
+if ($_SESSION['Menu'] == "L")
+ include ("menu.php");
+?>
+</div>
+<div id="content" class="container">
+<?php
+
+
+echo '<h1>' . (strlen($header) == 0 ? Get_Text($Page["Name"]) : $header) . '</h1>';
+echo '<article class="content">';
+
+if (isset ($_SESSION['UID'])) {
+ if (isset ($_SESSION['oldurl']))
+ $BACKUP_SESSION_OLDURL = $_SESSION['oldurl'];
+ if (isset ($_SESSION['newurl']))
+ $_SESSION['oldurl'] = $_SESSION['newurl'];
+ $_SESSION['newurl'] = $_SERVER["REQUEST_URI"];
+}
+
+function SetHeaderGo2Back() {
+ global $BACKUP_SESSION_OLDURL;
+ $_SESSION['oldurl'] = $BACKUP_SESSION_OLDURL;
+}
+
+if ($Page["CVS"] != "Y") {
+ echo "Du besitzt kein Rechte f&uuml;r diesen Bereich.<br />\n";
+
+ if (isset ($_SESSION['oldurl']))
+ echo "<a href=\"" . $_SESSION["oldurl"] . "\">hier</a> gehts zur&uuml;ck...\n";
+ else
+ echo "<a href=\"" . $url . $ENGEL_ROOT . "\">hier</a> geht's zur&uuml;ck...\n";
+
+ exit ();
+}
+?>
+
+<!-- ende des header parts //-->