Admin Chat Xmlhttp.php:
<?php
//===========================================================================
//* -- ~~ Crafty Syntax Live Help ~~ -- *
//===========================================================================
// URL: http://www.craftysyntax.com/ EMAIL: ericg <at> craftysyntax <dot> com
// Copyright (C) 2003-2005 Eric Gerdes (http://www.craftysyntax.com )
// --------------------------------------------------------------------------
// $ CVS will be released with version 3.1.0 $
// $ Please check http://www.craftysyntax.com/ or REGISTER your program for updates $
// --------------------------------------------------------------------------
// NOTICE: Do NOT remove the copyright and/or license information any files.
// doing so will automatically terminate your rights to use program.
// If you change the program you MUST clause your changes and note
// that the original program is Crafty Syntax Live help or you will
// also be terminating your rights to use program and any segment
// of it.
// --------------------------------------------------------------------------
// LICENSE:
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation;
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program in a file named LICENSE.txt .
// --------------------------------------------------------------------------
// BIG NOTE:
// At the time of the release of this version of CSLH, Version 3.1.0
// which is a more modular, extendable , “skinable” version of CSLH
// was being developed.. please visit http://www.craftysyntax.com to see if it was released!
//===========================================================================
require_once("admin_common.php");
validate_session($identity);
if($serversession)
session_write_close();
// get the info of this user..
$query = "SELECT * FROM livehelp_users WHERE sessionid='".$identity['SESSIONID']."'";
$people = $mydatabase->query($query);
if($people->numrows() != 0){
$people = $people->fetchRow(DB_FETCHMODE_ASSOC);
$UNTRUSTED['myid'] = $people['user_id'];
$operator_id = $UNTRUSTED['myid'];
$channel = $people['onchannel'];
}
$jsrn = get_jsrn($identity);
if(!(isset($UNTRUSTED['cleartonow']))){ $UNTRUSTED['cleartonow'] = ""; }
if(!(isset($UNTRUSTED['offset']))){ $UNTRUSTED['offset'] = ""; }
if(!(isset($UNTRUSTED['clear']))){ $UNTRUSTED['clear'] = ""; }
if(!(isset($UNTRUSTED['channel']))){ $UNTRUSTED['channel'] = 0; }
if(!(isset($UNTRUSTED['myid']))){
$UNTRUSTED['myid'] = 0;
} else {
$myid = intval($UNTRUSTED['myid']);
}
if(!(isset($UNTRUSTED['see']))){
$see = "";
} else {
$see = intval($UNTRUSTED['see']);
}
if(!(isset($UNTRUSTED['starttimeof']))){ $UNTRUSTED['starttimeof'] = 0; }
if(!(empty($UNTRUSTED['setchattype']))){
$query = "UPDATE livehelp_users SET chattype='xmlhttp' WHERE sessionid='".$identity['SESSIONID']."'";
$mydatabase->query($query);
}
$timeof = date("YmdHis");
$timeof_load = $timeof;
$prev = mktime ( date("H"), date("i")-30, date("s"), date("m"), date("d"), date("Y") );
$oldtime = date("YmdHis", $prev);
if(($CSLH_Config['use_flush'] == "no") || ($UNTRUSTED['offset'] != "")){ $timeof = $oldtime; }
if($UNTRUSTED['clear'] == "now"){
// get the timestamp of the last message sent on this channel.
$query = "SELECT * FROM livehelp_messages ORDER BY timeof DESC";
$messages = $mydatabase->query($query);
$message = $messages->fetchRow(DB_FETCHMODE_ASSOC);
$timeof = $message['timeof'] - 2;
$offset = $message['timeof'] - 2;
$starttimeof = $message['timeof'] -2;
}
if(isset($starttimeof)){
$timeof = $starttimeof;
}
?>
<HTML>
<head>
<title>Admin Chat xmlhttp</title>
<link title="new" rel="stylesheet" href="style.css" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo $lang['charset']; ?>" >
<script src="javascript/xmlhttp.js" type="text/javascript"></script>
<script type="text/javascript">
<?php if($UNTRUSTED['cleartonow']==1){ ?>
HTMLtimeof = <?php print date("YmdHis"); ?>;
LAYERtimeof = <?php print date("YmdHis"); ?>;
<?php } else { ?>
var HTMLtimeof = 0;
var LAYERtimeof = 0;
<?php } ?>
/**
* parse the deliminated string of messages from XMLHttpRequest.
* This will be converted to XML in next version of CSLH.
*
*@param string text to parse.
*/
function ExecRes(textstring){
var chatelement = document.getElementById('currentchat');
var messages=new Array();
//textstring = " messages[0] = new Array(); messages[0][0]=2004010101; messages[0][1]=1; messages[0][2]=\"HTML\"; messages[0][3]=\"test\"; ";
// prevent Null textstrings:
textstring = textstring + " ok =1; ";
// alert(textstring);
eval(textstring);
for (var i=0;i<messages.length;i++){
res_timeof = messages[i][0];
res_jsrn = messages[i][1];
res_typeof = messages[i][2];
res_message = messages[i][3];
// skip if we are Null
if(!((res_message == null) || (chatelement.innerHTML==null))){
if(res_typeof=="HTML"){
if( res_timeof>HTMLtimeof ){
chatelement.innerHTML = chatelement.innerHTML + unescape(res_message);
HTMLtimeof = res_timeof;
whatissaid[res_jsrn] = 'nullstring';
update_typing();
up();
}
}
if(res_typeof=="LAYER"){
if(res_timeof>LAYERtimeof){
whatissaid[res_jsrn] = unescape(res_message);
LAYERtimeof = res_timeof;
update_typing();
}
}
}
}
}
/** * loads a XMLHTTP response into parseresponse * *@param string url to
request *@see parseresponse() */
function update_xmlhttp() { // account for cache..
randu=Math.round(Math.random()*9999);
sURL = 'xmlhttp.php';
extra = "";
if( (window.parent.bottomof.loaded) && (window.parent.bottomof.channelset) ){
if(window.parent.bottomof.document.chatter.previewsetting.value<3){
extra = '&includeself=1';
}
}
sPostData = 'op=yes&externalchats=<?php echo $externalchats;?>&whattodo=messages&rand='+ randu + '&HTML=' + HTMLtimeof + '&LAYER=' + LAYERtimeof + extra;
//alert(sPostData);
fullurl = 'xmlhttp.php?' + sPostData;
//PostForm(sURL, sPostData)
GETForm(fullurl);
}
setInterval('update_xmlhttp()', 2100);
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript" SRC="javascript/xLayer.js"></SCRIPT>
<SCRIPT LANGUAGE="JavaScript" SRC="javascript/xBrowser.js"></SCRIPT>
<SCRIPT LANGUAGE="JavaScript" SRC="javascript/staticMenu.js"></SCRIPT>
<script language="JavaScript" src="javascript/dynapi/js/dynlayer.js"></script>
<SCRIPT LANGUAGE="JavaScript">
NS4 = (document.layers) ? 1 : 0;
IE4 = (document.all) ? 1 : 0;
W3C = (document.getElementById) ? 1 : 0;
setTimeout('up();', 1000);
var ismac = navigator.platform.indexOf('Mac');
ismac = 1;
function up(){
scroll(1, 10000000);
if( (window.parent.bottomof.loaded) && (window.parent.rooms.document.mine.auto_focus.checked) )
window.parent.bottomof.shouldifocus();
}
</SCRIPT>
<SCRIPT>
myBrowser = new xBrowser();
NS4 = (document.layers) ? 1 : 0;
IE4 = (document.all) ? 1 : 0;
W3C = (document.getElementById) ? 1 : 0;
starttyping_layer_exists = false;
var whatissaid = new Array(100);
for(i=0;i<100;i++){
whatissaid[i] = 'nullstring';
}
// start up the is typing layer...
//--------------------------------------------------------------
function starttyping(){
if (IE4){
docWidth = document.body.clientWidth;
} else {
docWidth = window.innerWidth;
}
myxvar2 = 50;
istyping_Layer = new DynLayer('UserIsTypingDiv');
CreateStaticMenu2("UserIsTypingDiv", myxvar2, 5);
starttyping_layer_exists = true;
}
// update the istyping layer.
//---------------------------------------------------------------
function update_typing(){
if(starttyping_layer_exists == true){
ouputtext = "";
foundtext = 0;
for(i=0;i<100;i++){
if( (whatissaid[i]!='nullstring') && (whatissaid[i]!='nullstring ')){
ouputtext = ouputtext + whatissaid[i];
foundtext = 1;
}
}
if(foundtext == 1){
fulloutput = '<TABLE BORDER=0 WIDTH=400><TR BGCOLOR=#000000><TD><TABLE BORDER=0 WIDTH=100% CELLPADDING=0 CELLSPACING=0 BORDER=0><TR><TD width=1 BGCOLOR=#D4DCF2><img src=images/blank.gif width=7 height=120></TD><TD BGCOLOR=#D4DCF2 valign=top><table width=400 bgoclor=DFDFDF><tr><td width=90%> </td><td width=10%><a href=javascript:istyping_Layer.hide();><b>X</b></a></td></tr></table><br>' + ouputtext + '</TD></TR></TABLE></TD></TR></TABLE>';
istyping_Layer.show();
istyping_Layer.write(fulloutput);
} else {
istyping_Layer.hide();
}
}
}
setTimeout('starttyping()', 1500);
function delay(gap){ /* gap is in millisecs */
var then, now; then=new Date().getTime();
now=then;
while((now-then)<gap){ now=new Date().getTime();}
}
ns4 = (document.layers)? true:false;
ie4 = (document.all)? true:false;
readyone = ready = false; // ready for onmouse overs (are the layers known yet)
ready = true;
</SCRIPT>
</HEAD>
<body bgcolor="#<?php echo $color_background;?>">
<DIV ID="UserIsTypingDiv" STYLE="position: absolute; z-index: 20; visibility: hidden; top: 0px; left: 0px;"></DIV>
<br>
<pre>
</pre>
<span id="currentchat"><?php print showmessages($operator_id, "", $timeof, $see); ?></span>
<?php if(!(empty($see))){ ?>
<SCRIPT>
var sleeping=false;
HTMLtimeof = <?php print date("YmdHis"); ?>;
LAYERtimeof = <?php print date("YmdHis"); ?>;
</SCRIPT>
<?php }
$mydatabase->close_connect();
exit;
?>
</HTML>
Other Customer Support Scripts: