function thread_to_xml($thread, $link) { global $state_chatting, $threadstate_to_string, $threadstate_key, $mibew_encoding, $operator, $settings, $can_viewthreads, $can_takeover, $mysqlprefix; $state = $threadstate_to_string[$thread['istate']]; $result = "<thread id=\"" . safe_htmlspecialchars(safe_htmlspecialchars($thread['threadid'])) . "\" stateid=\"{$state}\""; if ($state == "closed") { return $result . "/>"; } $state = getstring($threadstate_key[$thread['istate']]); $nextagent = $thread['nextagent'] != 0 ? operator_by_id_($thread['nextagent'], $link) : null; $threadoperator = $nextagent ? get_operator_name($nextagent) : ($thread['agentName'] ? $thread['agentName'] : "-"); if ($threadoperator == "-" && $thread['groupname']) { $threadoperator = "- " . $thread['groupname'] . " -"; } if (!($thread['istate'] == $state_chatting && $thread['agentId'] != $operator['operatorid'] && !is_capable($can_takeover, $operator))) { $result .= " canopen=\"true\""; } if ($thread['agentId'] != $operator['operatorid'] && $thread['nextagent'] != $operator['operatorid'] && is_capable($can_viewthreads, $operator)) { $result .= " canview=\"true\""; } if ($settings['enableban'] == "1") { $result .= " canban=\"true\""; } $banForThread = $settings['enableban'] == "1" ? ban_for_addr_($thread['remote'], $link) : false; if ($banForThread) { $result .= " ban=\"blocked\" banid=\"" . safe_htmlspecialchars(safe_htmlspecialchars($banForThread['banid'])) . "\""; } $result .= " state=\"{$state}\" typing=\"" . safe_htmlspecialchars(safe_htmlspecialchars($thread['userTyping'])) . "\">"; $result .= "<name>"; if ($banForThread) { $result .= safe_htmlspecialchars(getstring('chat.client.spam.prefix')); } $result .= safe_htmlspecialchars(safe_htmlspecialchars(get_user_name($thread['userName'], $thread['remote'], $thread['userid']))) . "</name>"; $result .= "<addr>" . safe_htmlspecialchars(get_user_addr($thread['remote'])) . "</addr>"; $result .= "<agent>" . safe_htmlspecialchars(safe_htmlspecialchars($threadoperator)) . "</agent>"; $result .= "<time>" . safe_htmlspecialchars(safe_htmlspecialchars($thread['unix_timestamp(dtmcreated)'])) . "000</time>"; $result .= "<modified>" . safe_htmlspecialchars(safe_htmlspecialchars($thread['unix_timestamp(dtmmodified)'])) . "000</modified>"; if ($banForThread) { $result .= "<reason>" . safe_htmlspecialchars(safe_htmlspecialchars($banForThread['comment'])) . "</reason>"; } $userAgent = get_useragent_version($thread['userAgent']); $result .= "<useragent>" . safe_htmlspecialchars($userAgent) . "</useragent>"; if ($thread["shownmessageid"] != 0) { $query = "select tmessage from {$mysqlprefix}chatmessage where messageid = " . intval($thread["shownmessageid"]); $line = select_one_row($query, $link); if ($line) { $message = preg_replace("/[\r\n\t]+/", " ", $line["tmessage"]); $result .= "<message>" . safe_htmlspecialchars(safe_htmlspecialchars($message)) . "</message>"; } } $result .= "</thread>"; return $result; }
function tpl_content() { global $page, $webimroot, $errors; $chatthread = $page['thread']; ?> <?php echo getlocal("thread.intro"); ?> <br/><br/> <div class="logpane"> <div class="header"> <div class="wlabel"> <?php echo getlocal("page.analysis.search.head_name"); ?> : </div> <div class="wvalue"> <?php echo topage(htmlspecialchars($chatthread['userName'])); ?> </div> <br clear="all"/> <div class="wlabel"> <?php echo getlocal("page.analysis.search.head_host"); ?> : </div> <div class="wvalue"> <?php echo get_user_addr(topage($chatthread['remote'])); ?> </div> <br clear="all"/> <div class="wlabel"> <?php echo getlocal("page.analysis.search.head_browser"); ?> : </div> <div class="wvalue"> <?php echo get_useragent_version(topage($chatthread['userAgent'])); ?> </div> <br clear="all"/> <?php if ($chatthread['groupName']) { ?> <div class="wlabel"> <?php echo getlocal("page.analysis.search.head_group"); ?> : </div> <div class="wvalue"> <?php echo topage(htmlspecialchars($chatthread['groupName'])); ?> </div> <br clear="all"/> <?php } ?> <?php if ($chatthread['agentName']) { ?> <div class="wlabel"> <?php echo getlocal("page.analysis.search.head_operator"); ?> : </div> <div class="wvalue"> <?php echo topage(htmlspecialchars($chatthread['agentName'])); ?> </div> <br clear="all"/> <?php } ?> <div class="wlabel"> <?php echo getlocal("page.analysis.search.head_time"); ?> : </div> <div class="wvalue"> <?php echo date_diff_to_text($chatthread['modified'] - $chatthread['created']); ?> (<?php echo date_to_text($chatthread['created']); ?> ) </div> <br clear="all"/> </div> <div class="message"> <?php foreach ($page['threadMessages'] as $message) { echo $message; } ?> </div> </div> <br /> <a href="<?php echo $webimroot; ?> /operator/history.php"> <?php echo getlocal("thread.back_to_search"); ?> </a> <br /> <?php }