From 04973d1fa148381978b1251d10118e6bab86f435 Mon Sep 17 00:00:00 2001 From: Philip Häusler Date: Mon, 13 Jun 2011 18:05:51 +0200 Subject: moved public files to public, old and yet untouched files to directories ending with _old --- includes_old/error_handler.php | 125 ++ includes_old/funktion_SendMessenges.php | 14 + includes_old/funktion_cron.php | 131 ++ includes_old/funktion_db.php | 145 ++ includes_old/funktion_db_list.php | 62 + includes_old/funktion_jabber.php | 1853 ++++++++++++++++++++++++++ includes_old/funktion_modem.php | 34 + includes_old/funktion_schichtplan_beamer.php | 180 +++ includes_old/funktion_xml.php | 152 +++ includes_old/funktion_xml_room.php | 61 + includes_old/funktion_xml_schudle.php | 309 +++++ includes_old/header.php | 102 ++ 12 files changed, 3168 insertions(+) create mode 100644 includes_old/error_handler.php create mode 100644 includes_old/funktion_SendMessenges.php create mode 100644 includes_old/funktion_cron.php create mode 100644 includes_old/funktion_db.php create mode 100644 includes_old/funktion_db_list.php create mode 100644 includes_old/funktion_jabber.php create mode 100644 includes_old/funktion_modem.php create mode 100644 includes_old/funktion_schichtplan_beamer.php create mode 100644 includes_old/funktion_xml.php create mode 100644 includes_old/funktion_xml_room.php create mode 100644 includes_old/funktion_xml_schudle.php create mode 100644 includes_old/header.php (limited to 'includes_old') 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 @@ + $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 "
\n".$message."
"; + } + +} + + 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 @@ + 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 @@ + $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 @@ +"; + $Diff .= ""; + + for ($m = 0 ; $m < $Anzahl_Felder ; $m++) + $Diff .= "". mysql_field_name($Erg, $m). ""; + + $Diff .= ""; + + for ($n = 0 ; $n < $Zeilen ; $n++) { + $Diff .= ""; + + for ($m = 0 ; $m < $Anzahl_Felder ; $m++) + $Diff .= "".mysql_result($Erg, $n, $m). ""; + + $Diff .= ""; + } + + $Diff .= ""; + return $Diff; + } + + function db_querry_getDatenAssocArray($SQL) { + global $con; + + $Erg = mysql_query($SQL, $con); + echo mysql_error($con); + + $Daten = array(); + + for( $i=0; $i $Data1) { + if(isset( $Daten2[$DataKey])) { + $Data2 = $Daten2[$DataKey]; + + foreach($Data1 as $key => $value) + if( $value != $Data2[$key]) { + $Gefunden = true; + $Diff .= "\n$key\n$value\n" . $Data2[$key] . "\n"; + } + } else + foreach($Data1 as $key => $value) { + $Gefunden = true; + $Diff .= "\n$key\n$value\n\n"; + } + } + + $Diff .= "\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("

funktion_db ERROR SQL: '$SQL' nicht OK

"); + + //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:
". htmlentities( $SQL, ENT_QUOTES); + if( strlen($Diff) > 0) + $SQLCommand .= "

Diff:
$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 @@ +"; + $html .= "DB: $Table_Name"; + + $html .= ""; + for ($m = 0; $m < $Anzahl_Felder; $m++) { + $html .= "" . mysql_field_name($Erg, $m) . ""; + } + $html .= ""; + + for ($n = 0; $n < $Zeilen; $n++) { + $html .= ""; + for ($m = 0; $m < $Anzahl_Felder; $m++) { + $html .= "" . mysql_result($Erg, $n, $m) . ""; + } + $html .= ""; + } + $html .= ""; + return $html; +} + +function funktion_db_element_list_2row($TopicName, $SQL) { + $html = ""; + $html .= "\n"; + $html .= ""; + # $html .= "\n"; + + $Erg = sql_query($SQL); + + $html .= ""; + for ($m = 0; $m < mysql_num_fields($Erg); $m++) { + $html .= ""; + } + $html .= ""; + + for ($n = 0; $n < mysql_num_rows($Erg); $n++) { + $html .= ""; + for ($m = 0; $m < mysql_num_fields($Erg); $m++) { + $html .= ""; + } + $html .= ""; + } + $html .= "
$TopicName

$TopicName

" . mysql_field_name($Erg, $m) . "
" . mysql_result($Erg, $n, $m) . "
\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 @@ +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("\n"); + $this->SendPacket("\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(""); + $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 = "{$this->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 = "{$this->username} + {$this->password} + $reg_email + $reg_name\n"; + + $payload .= ($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 = "\n"; + + if (isset($content['subject'])) + { + $xml .= "" . $content['subject'] . "\n"; + } + + if (isset($content['thread'])) + { + $xml .= "" . $content['thread'] . "\n"; + } + + $xml .= "" . $content['body'] . "\n"; + $xml .= $payload; + $xml .= "\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 = "\n" : " />\n"; + + $xml .= ($status) ? " $status\n" : ''; + $xml .= ($show) ? " $show\n" : ''; + $xml .= ($priority) ? " $priority\n" : ''; + + $xml .= ($status || $show || $priority) ? "\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 = "error_codes[$error_number]; + $xml .= "\n"; + $xml .= ""; + + $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 = " 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", ""); + + 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("", 'CruiseControl'); + $this->SendPacket(""); + // ** + + $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 = "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\n" : ''; + foreach ($details as $element => $value) + { + $payload .= "<$element>$value\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 = " + + "; + + $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 "

Logging enabled, logged events have been written to the file {$this->log_filename}.

\n"; + } + else + { + echo "

Logging enabled, logged events below:

\n"; + echo "
\n";
+        echo (count($this->log_array) > 0) ? implode("\n\n\n", $this->log_array) : "No logged events.";
+        echo "
\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 = "{$this->username} + $zerok_hash + {$this->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 = "{$this->username} + {$this->resource} + " . bin2hex(mhash(MHASH_SHA1, $this->stream_id . $this->password)) . ""; + + $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 = "{$this->username} + {$this->password} + {$this->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; + } + + + + // ====================================================================== + // 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; + } + + + + // ====================================================================== + // 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; + } + + + + // ====================================================================== + // 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; + } + + + + // ====================================================================== + // 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"); + } + + + + // ====================================================================== + // 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 = "" . gmdate("Ydm\TH:i:s") . " + " . date("T") . " + " . date("Y/d/m h:i:s A") . ""; + + $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 = "{$this->iq_version_name} + {$this->iq_version_os} + {$this->iq_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.'); + } + } + */ + + + // ====================================================================== + // 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[] = "Presence: (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 "
";
+    }
+
+    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 "
"; + } + } +} + + + +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) . "\";
"; + 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 .= "\n"; + } + } + else + { + $value = htmlspecialchars($value); + $text .= "<$key>$value\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 @@ +$Number' was called
\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: '$Number' was not called
\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 @@ +\n"; + + $Out.= "\n". + "\n". + "\n". + "\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.= "\n"; + + // ausgabe EngelType + $Out.= "". $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.= "\n"; + $Out.= ""; + + foreach( $TempValue["Engel"] as $TempEngelEntry=> $TempEngelID ) + $Out.= UID2Nick( $TempEngelID ). ", "; +// $Out.= UID2Nick( $TempEngelID ). DisplayAvatar( $TempEngelID ). ", "; + $Out = substr( $Out, 0, strlen($Out)-2 ); + } + else + { + $Out.= ":\n"; + $Out.= "\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.= "\n"; + $Out.= "\n"; + + } // FOREACH + + $Out.= "\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= ""; + 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.= "
"; +// $Out.= "
\n"; + + } + else + $Out.= " "; + + $Out.= "\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 @@ +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; + + 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; + + $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 ("

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; + } + } + // 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 @@ +Rooms:\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
"; + else + echo "Aenderung, an Raum ". $_GET["NameXML"]. ", war nicht erfogreich.(". + + mysql_error($con). ")
[$SQL]
"; + } else + echo "Fehler in den Parametern!
"; + } + + if(isset($_GET["RoomUpdate"])) + saveRoomData(); + + // INIT Status counter + $DS_KO = 0; + + // Ausgabe + echo "\n"; + echo "\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 "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + $DS_KO++; + echo "\n"; + echo "\n"; + echo "
"; + } + } + } + } + } + + echo "\n"; + echo "
Namestate
status: $DS_KO nicht vorhanden.
\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 @@ +Schedule:\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
\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 $EngelNeeded_Exist) + { + echo "---->Create Shifts for engeltype: ". TID2Type($EngelTypeID). " ". + ($EngelNeeded-$EngelNeeded_Exist). "x
\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 ". mysql_error($con). + "($SQL3)
\n"; + } + echo "
\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
\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 ". mysql_error($con). + "($SQL3)
\n"; + } + echo "
\n"; + } + else + { +// echo "---->Nothing to do, for engeltype: ". TID2Type($EngelTypeID). "
\n"; + } + } + } + + } + else + echo ", war nicht erfogreich.(". + mysql_error($con). ")
[$SQL]
\n"; + } + else + echo "Fehler in den Parametern!
"; +} /*SaveSchedule*/ + +if( isset($_GET["ScheduleUpdate"])) + SaveSchedule(); + +//INIT Status counter +$DS_OK = 0; +$DS_KO = 0; +$Where = ""; + +//ausgabe +echo "\n"; +echo "". + "\n"; +echo "". + "\n"; + +if( $EnableSchudle) +foreach($XMLmain->sub as $EventKey => $Event) +{ + if( $Event->name == "VEVENT") + { + echo "\n"; + echo "\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 "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + if( !( $PSIDXML==$PSIDDB && + $DateXML==$TimeDB && + $RIDXML==$RIDDB && + $LenXML==$LenDB && + $ManXML==$ManDB && + $URLXML==$URLDB) ) + { + echo "\n"; + $DS_KO++; + } + else + { + echo "\n"; + $DS_OK++; + } + echo "\n"; + echo "\n"; + $Where.= " OR `PSID`='$PSIDXML'"; + } +} +echo "\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\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 "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + } +echo "
PSIDDateRoomLenNamestate
XML - DBXML - DBXML - DBXML - DBXML - DB
\n". + "\n". + "\n". + "\n". + "". funktion_isLinkAllowed_addLink_OrLinkText("admin/schichtplan.php?action=change&SID=".$SIDDB, "edit"). "
status: $DS_KO/$DS_OK nicht Aktuel.
\n". + "\n". + "\n". + "\n". + "". funktion_isLinkAllowed_addLink_OrLinkText( "admin/schichtplan.php?action=change&SID=".$SID, "edit"). + "
"; + + +?> 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 @@ +\n"; +?> + + + +<?php echo $title; ?> - Engelsystem + + + + + + + + + + + + + + +\n"; +} + +if (isset ($Page["AutoReload"])) + echo "\n\n"; + +echo "\n"; + +///////////////////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////// B O D Y +///////////////////////////////////////////////////////////////////////////////////////////// +echo "\n"; + +echo '
'; + +//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 "
" . Get_Text("pub_messages_new1") . + " " . mysql_num_rows($erg) . " " . + Get_Text("pub_messages_new2") . "

"; + } +} +?> +
+ +
+' . (strlen($header) == 0 ? Get_Text($Page["Name"]) : $header) . ''; +echo '
'; + +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ür diesen Bereich.
\n"; + + if (isset ($_SESSION['oldurl'])) + echo "hier gehts zurück...\n"; + else + echo "hier geht's zurück...\n"; + + exit (); +} +?> + + -- cgit v1.2.3-70-g09d2