diff --git a/src/messenger/webim/libs/chat.php b/src/messenger/webim/libs/chat.php index 519b8310..d1c5bb59 100644 --- a/src/messenger/webim/libs/chat.php +++ b/src/messenger/webim/libs/chat.php @@ -34,8 +34,6 @@ $kind_events = 6; $kind_to_string = array( $kind_user => "user", $kind_agent => "agent", $kind_for_agent => "hidden", $kind_info => "inf", $kind_conn => "conn", $kind_events => "event" ); - - function next_token() { return rand(99999,99999999); } @@ -48,7 +46,7 @@ function next_revision($link) { function post_message_($threadid,$kind,$message,$link,$from=null,$utime=null,$opid=null) { $query = sprintf( - "insert into chatmessage (threadid,ikind,tmessage,tname,agentId,dtmcreated) values (%s, %s,'%s',%s,%s,%s)", + "insert into chatmessage (threadid,ikind,tmessage,tname,agentId,dtmcreated) values (%s, %s,'%s',%s,%s,%s)", $threadid, $kind, quote_smart($message,$link), @@ -104,20 +102,19 @@ function get_messages($threadid,$meth,$isuser,&$lastid) { $link = connect(); $query = sprintf( - "select messageid,ikind,unix_timestamp(dtmcreated) as created,tname,tmessage from chatmessage ". - "where threadid = %s and messageid > %s %s order by messageid", - $threadid, $lastid, $isuser ? "and ikind <> $kind_for_agent" : "" ); + "select messageid,ikind,unix_timestamp(dtmcreated) as created,tname,tmessage from chatmessage ". + "where threadid = %s and messageid > %s %s order by messageid", + $threadid, $lastid, $isuser ? "and ikind <> $kind_for_agent" : "" ); $messages = array(); - $result = mysql_query($query,$link) or die(' Query failed: ' .mysql_error().": ".$query); - - while ($msg = mysql_fetch_array($result, MYSQL_ASSOC)) { - $message = ""; - if ($meth == 'xml') { - $message = "".myiconv($webim_encoding,"utf-8",escape_with_cdata(message_to_html($msg)))."\n"; - } else { - $message = (($meth == 'text') ? message_to_text($msg) : topage(message_to_html($msg))); - } + $msgs = select_multi_assoc($query, $link); + foreach ($msgs as $msg) { + $message = ""; + if ($meth == 'xml') { + $message = "".myiconv($webim_encoding,"utf-8",escape_with_cdata(message_to_html($msg)))."\n"; + } else { + $message = (($meth == 'text') ? message_to_text($msg) : topage(message_to_html($msg))); + } $messages[] = $message; if( $msg['messageid'] > $lastid ) { @@ -125,98 +122,55 @@ function get_messages($threadid,$meth,$isuser,&$lastid) { } } - mysql_free_result($result); mysql_close($link); return $messages; -} +} function print_thread_messages($thread, $token, $lastid, $isuser,$format) { - global $webim_encoding, $webimroot; + global $webim_encoding, $webimroot, $connection_timeout; $threadid = $thread['threadid']; + $istyping = abs($thread['current']-$thread[$isuser ? "lpagent" : "lpuser"]) < $connection_timeout + && $thread[$isuser?"agentTyping":"userTyping"] == "1" ? "1" : "0"; if( $format == "xml" ) { - $output = get_messages($threadid,"xml",$isuser,$lastid); + $output = get_messages($threadid,"xml",$isuser,$lastid); start_xml_output(); - print(""); + print(""); foreach( $output as $msg ) { print $msg; } print(""); } else if( $format == "html" ) { - $output = get_messages($threadid,"html",$isuser,$lastid); + $output = get_messages($threadid,"html",$isuser,$lastid); start_html_output(); $url = "$webimroot/thread.php?act=refresh&thread=$threadid&token=$token&html=on&user=".($isuser?"true":"false"); print("\n". - "\n". - "\n". - "\n". - "". - "". - "" ); + "\n". + "\n". + "\n". + "". + "". + "" ); foreach( $output as $msg ) { print $msg; } print( - "". - "" ); + "". + "