/** * Given a sessionid this function archives off the transcript and stops * a chat session for a given user. * * @param string SessionID */ function stopchat($sessionid) { global $CSLH_Config, $mydatabase; $sqlquery = "SELECT user_id,onchannel,username,lastaction,department,email,sessionid FROM livehelp_users WHERE sessionid='{$sessionid}'"; $rs = $mydatabase->query($sqlquery); $person = $rs->fetchRow(DB_FETCHMODE_ORDERED); $user_id = $person[0]; $onchannel = $person[1]; $oldusername = $person[2]; $lastaction = $person[3]; $userdepartment = $person[4]; $email = $person[5]; $sessionid = $person[6]; $sessiondata = getsessiondata($user_id); $trans_array = gettrans($onchannel); $sqlquery = "UPDATE livehelp_users SET status='stopped',sessiondata='',chattype='',askquestions='Y' WHERE sessionid='{$sessionid}'"; $mydatabase->query($sqlquery); // if we talked to them add them to the transcripts. if ($trans_array['transcript'] != "") { // multiple channels can be created for a single chat.. be sure we do not have // this chat already: $query = "SELECT recno FROM livehelp_transcripts WHERE sessionid='{$sessionid}' AND transcript='" . filter_sql($trans_array['transcript']) . "' ORDER by endtime DESC LIMIT 1"; $data3 = $mydatabase->query($query); if (empty($CSLH_Config['offset'])) { $CSLH_Config['offset'] = 0; } //YYYYMMDDHHIISS // 01234567890123 $when = mktime(substr($trans_array['endtime'], 8, 2), substr($trans_array['endtime'], 10, 2), substr($trans_array['endtime'], 12, 2), substr($trans_array['endtime'], 4, 2), substr($trans_array['endtime'], 6, 2), substr($trans_array['endtime'], 0, 4)); $trans_array['endtime'] = date("YmdHis", $when); $when = mktime(substr($trans_array['starttime'], 8, 2), substr($trans_array['starttime'], 10, 2), substr($trans_array['starttime'], 12, 2), substr($trans_array['starttime'], 4, 2), substr($trans_array['starttime'], 6, 2), substr($trans_array['starttime'], 0, 4)); $trans_array['starttime'] = date("YmdHis", $when); if ($data3->numrows() == 0) { $sqlquery = "INSERT INTO livehelp_transcripts (who,endtime,starttime,transcript,sessionid,sessiondata,department,email,duration,operators) VALUES ('" . filter_sql($oldusername) . "','" . $trans_array['endtime'] . "','" . $trans_array['starttime'] . "','" . filter_sql($trans_array['transcript']) . "','" . $sessionid . "','" . filter_sql($sessiondata) . "'," . intval($userdepartment) . ",'" . filter_sql($email) . "'," . $trans_array['duration'] . ",'" . $trans_array['operators'] . "')"; $mydatabase->query($sqlquery); //MYSQL: $transcriptid = mysql_insert_id(); $query = "SELECT recno FROM livehelp_transcripts ORDER by endtime DESC LIMIT 1"; $data3 = $mydatabase->query($query); $row3 = $data3->fetchRow(DB_FETCHMODE_ASSOC); $transcriptid = $row3['recno']; } else { $row3 = $data3->fetchRow(DB_FETCHMODE_ASSOC); $transcriptid = $row3['recno']; } // get when they startted the chat on this channel in and how many seconds they have been online: $query = "SELECT dateof,opid FROM livehelp_operator_history WHERE action='startchat' AND channel=" . intval($onchannel) . " ORDER by dateof DESC LIMIT 1"; $data3 = $mydatabase->query($query); $row3 = $data3->fetchRow(DB_FETCHMODE_ASSOC); $opid = $row3['opid']; // update history for operator to show login: $query = "INSERT INTO livehelp_operator_history (opid,action,dateof,transcriptid) VALUES ({$opid},'Stopchat','" . date("YmdHis") . "','" . $transcriptid . "')"; $mydatabase->query($query); } // get rid of old messages. $sqlquery = "DELETE FROM livehelp_messages WHERE channel=" . intval($onchannel); $mydatabase->query($sqlquery); // delete operator channels: $sqlquery = "DELETE FROM livehelp_operator_channels WHERE channel=" . intval($onchannel); $mydatabase->query($sqlquery); }
require_once "settings.php"; require_once "functions.php"; while ($input = readline()) { $pid = pcntl_fork(); if ($pid === -1) { die; } elseif ($pid === 0) { $re1 = '\\d (\\S+) \\[.*The new session \\"(.+)\\" has been created.'; if ($c = preg_match_all("/" . $re1 . "/is", $input, $matches)) { $softetherip = $matches[1][0]; $sessid = $matches[2][0]; } if (empty($sessid)) { exit; } $result = getsessiondata($sessid); // get session details from HUB $framedip = getdhcpip($sessid); // get DHCP assigned IP from HUB if ($framedip === FALSE) { // if user could not get ip with dhcp, disconnect it disconnectsession($sessid); exit; } $db = new SQLite3($database); $db->busyTimeout(5000); $db->exec('CREATE TABLE IF NOT EXISTS sessions (sessionid varchar(255), username varchar (255), clientip varchar (255), inputoctets varchar (255), ' . 'outputoctets varchar (255), framedip varchar (255), nasip varchar (255), nasport varchar (255), acctstarttime varchar (255), ' . 'acctsessiontime varchar (255), PRIMARY KEY(sessionid))'); $query = $db->escapeString('INSERT OR REPLACE INTO sessions (sessionid, username, clientip, inputoctets, outputoctets, framedip, nasip, nasport, acctstarttime, acctsessiontime) VALUES ("' . $sessid . '","' . $result["User Name (Authentication)"] . '","' . $result["Client IP Address"] . '",NULL,NULL,"' . $framedip . '","' . $result["Server IP Address (Reported)"] . '","' . $result["Server Port (Reported)"] . '","' . $result["Connection Started at"] . '",NULL)'); $db->exec($query); $sessid = $db->escapeString($sessid); $results = $db->querySingle("SELECT * FROM sessions WHERE sessionid = '" . $sessid . "'", true);
if (!send_message("Contact", $useremail, $departmentname, $messageemail, $subjectline, $comments, "text/plain", $lang['charset'], false)) { send_message("Contact", $useremail, $departmentname, $messageemail, $subjectline, $comments, "text/plain", $lang['charset'], true); } } } // record message in messages database: if ($dbfun != "N") { $dateof = date("YmdHis"); if (empty($CSLH_Config['offset'])) { $CSLH_Config['offset'] = 0; } //YYYYMMDDHHIISS // 01234567890123 $when = mktime(substr($dateof, 8, 2), substr($dateof, 10, 2), substr($dateof, 12, 2), substr($dateof, 4, 2), substr($dateof, 6, 2), substr($dateof, 0, 4)); $dateof = date("YmdHis", $when); $sessiondata = getsessiondata($uid, true); $q = "INSERT INTO livehelp_leavemessage (email,subject,department,dateof,sessiondata,deliminated) VALUES ('" . filter_sql($useremail) . "','" . filter_sql($subjectline) . "',{$department},{$dateof},'" . filter_sql($sessiondata) . "','" . filter_sql($dilimated) . "') "; $mydatabase->query($q); } ##################################################################################### ## No errors, Mail Sent, display message indicating so ##################################################################################### ?> <div id='divMsgSent'> <h2><?php echo $lang['txt73']; ?> </h2> <hr> <p><?php echo $lang['txt71'];