mirror of
				https://github.com/Mibew/java.git
				synced 2025-10-31 18:41:09 +03:00 
			
		
		
		
	All columns in the databse with 'datetime' type were changed to integer type
This commit is contained in:
		
							parent
							
								
									e5ed85ed3f
								
							
						
					
					
						commit
						57f1b175b1
					
				| @ -37,9 +37,9 @@ $dbtables = array( | ||||
| 		"userid" => "varchar(255)", | ||||
| 		"agentName" => "varchar(64)", | ||||
| 		"agentId" => "int NOT NULL DEFAULT 0", | ||||
| 		"dtmcreated" => "datetime DEFAULT 0", | ||||
| 		"dtmchatstarted" => "datetime DEFAULT 0", | ||||
| 		"dtmmodified" => "datetime DEFAULT 0", | ||||
| 		"dtmcreated" => "int NOT NULL DEFAULT 0", | ||||
| 		"dtmchatstarted" => "int NOT NULL DEFAULT 0", | ||||
| 		"dtmmodified" => "int NOT NULL DEFAULT 0", | ||||
| 		"lrevision" => "int NOT NULL DEFAULT 0", | ||||
| 		"istate" => "int NOT NULL DEFAULT 0", | ||||
| 		"ltoken" => "int NOT NULL", | ||||
| @ -47,8 +47,8 @@ $dbtables = array( | ||||
| 		"referer" => "text", | ||||
| 		"nextagent" => "int NOT NULL DEFAULT 0", | ||||
| 		"locale" => "varchar(8)", | ||||
| 		"lastpinguser" => "datetime DEFAULT 0", | ||||
| 		"lastpingagent" => "datetime DEFAULT 0", | ||||
| 		"lastpinguser" => "int NOT NULL DEFAULT 0", | ||||
| 		"lastpingagent" => "int NOT NULL DEFAULT 0", | ||||
| 		"userTyping" => "int DEFAULT 0", | ||||
| 		"agentTyping" => "int DEFAULT 0", | ||||
| 		"shownmessageid" => "int NOT NULL DEFAULT 0", | ||||
| @ -63,7 +63,7 @@ $dbtables = array( | ||||
| 		"ikind" => "int NOT NULL", | ||||
| 		"agentId" => "int NOT NULL DEFAULT 0", | ||||
| 		"tmessage" => "text NOT NULL", | ||||
| 		"dtmcreated" => "datetime DEFAULT 0", | ||||
| 		"dtmcreated" => "int NOT NULL DEFAULT 0", | ||||
| 		"tname" => "varchar(64)" | ||||
| 	), | ||||
| 
 | ||||
| @ -74,13 +74,13 @@ $dbtables = array( | ||||
| 		"vclocalename" => "varchar(64) NOT NULL", | ||||
| 		"vccommonname" => "varchar(64) NOT NULL", | ||||
| 		"vcemail" => "varchar(64)", | ||||
| 		"dtmlastvisited" => "datetime DEFAULT 0", | ||||
| 		"dtmlastvisited" => "int NOT NULL DEFAULT 0", | ||||
| 		"istatus" => "int DEFAULT 0", /* 0 - online, 1 - away */ | ||||
| 		"idisabled" => "int DEFAULT 0", | ||||
| 		"vcavatar" => "varchar(255)", | ||||
| 		"vcjabbername" => "varchar(255)", | ||||
| 		"iperm" => "int DEFAULT 65535", | ||||
| 		"dtmrestore" => "datetime DEFAULT 0", | ||||
| 		"dtmrestore" => "int NOT NULL DEFAULT 0", | ||||
| 		"vcrestoretoken" => "varchar(64)", | ||||
| 	), | ||||
| 
 | ||||
| @ -95,8 +95,8 @@ $dbtables = array( | ||||
| 
 | ||||
| 	"${mysqlprefix}chatban" => array( | ||||
| 		"banid" => "INT NOT NULL auto_increment PRIMARY KEY", | ||||
| 		"dtmcreated" => "datetime DEFAULT 0", | ||||
| 		"dtmtill" => "datetime DEFAULT 0", | ||||
| 		"dtmcreated" => "int NOT NULL DEFAULT 0", | ||||
| 		"dtmtill" => "int NOT NULL DEFAULT 0", | ||||
| 		"address" => "varchar(255)", | ||||
| 		"comment" => "varchar(255)", | ||||
| 		"blockedCount" => "int DEFAULT 0" | ||||
| @ -120,12 +120,12 @@ $dbtables = array( | ||||
| 		"visitorid" => "INT NOT NULL auto_increment PRIMARY KEY", | ||||
| 		"userid" => "varchar(64) NOT NULL", | ||||
| 		"username" => "varchar(255)", | ||||
| 		"firsttime" => "datetime NOT NULL DEFAULT 0", | ||||
| 		"lasttime" => "datetime NOT NULL DEFAULT 0", | ||||
| 		"firsttime" => "int NOT NULL DEFAULT 0", | ||||
| 		"lasttime" => "int NOT NULL DEFAULT 0", | ||||
| 		"entry" => "text NOT NULL", | ||||
| 		"details" => "text NOT NULL", | ||||
| 		"invited" => "tinyint(1) NOT NULL DEFAULT 0", | ||||
| 		"invitationtime" => "datetime", | ||||
| 		"invitationtime" => "int NOT NULL DEFAULT 0", | ||||
| 		"invitedby" => "INT references ${mysqlprefix}chatoperator(operatorid) on delete set null", | ||||
| 		"invitations" => "INT NOT NULL DEFAULT 0", | ||||
| 		"chats" => "INT NOT NULL DEFAULT 0", | ||||
| @ -135,14 +135,14 @@ $dbtables = array( | ||||
| 	"${mysqlprefix}visitedpage" => array( | ||||
| 		"pageid" => "INT NOT NULL auto_increment PRIMARY KEY", | ||||
| 		"address" => "varchar(1024)", | ||||
| 		"visittime" => "datetime NOT NULL DEFAULT 0", | ||||
| 		"visittime" => "int NOT NULL DEFAULT 0", | ||||
| 		"visitorid" => "INT", | ||||
| 	), | ||||
| 
 | ||||
| 	"${mysqlprefix}visitedpagestatistics" => array( | ||||
| 		"pageid" => "INT NOT NULL auto_increment PRIMARY KEY", | ||||
| 		"address" => "varchar(1024)", | ||||
| 		"visittime" => "datetime NOT NULL DEFAULT 0" | ||||
| 		"visittime" => "int NOT NULL DEFAULT 0" | ||||
| 	), | ||||
| ); | ||||
| 
 | ||||
|  | ||||
| @ -86,7 +86,7 @@ if ($act == "silentcreateall") { | ||||
| 		} | ||||
| 
 | ||||
| 		if (in_array("${mysqlprefix}chatthread.dtmchatstarted", $absent_columns)) { | ||||
| 			runsql("ALTER TABLE ${mysqlprefix}chatthread ADD dtmchatstarted datetime DEFAULT 0 AFTER dtmcreated", $link); | ||||
| 			runsql("ALTER TABLE ${mysqlprefix}chatthread ADD dtmchatstarted int NOT NULL DEFAULT 0 AFTER dtmcreated", $link); | ||||
| 			runsql("update ${mysqlprefix}chatthread set dtmchatstarted = dtmcreated", $link); | ||||
| 		} | ||||
| 
 | ||||
| @ -142,7 +142,7 @@ if ($act == "silentcreateall") { | ||||
| 		} | ||||
| 
 | ||||
| 		if (in_array("${mysqlprefix}chatoperator.dtmrestore", $absent_columns)) { | ||||
| 			runsql("ALTER TABLE ${mysqlprefix}chatoperator ADD dtmrestore datetime DEFAULT 0", $link); | ||||
| 			runsql("ALTER TABLE ${mysqlprefix}chatoperator ADD dtmrestore int NOT NULL DEFAULT 0", $link); | ||||
| 		} | ||||
| 
 | ||||
| 		if (in_array("${mysqlprefix}chatoperator.vcrestoretoken", $absent_columns)) { | ||||
|  | ||||
| @ -64,20 +64,21 @@ function next_revision() | ||||
| function post_message_($threadid, $kind, $message, $from = null, $utime = null, $opid = null) | ||||
| { | ||||
| 	$db = Database::getInstance(); | ||||
| 
 | ||||
| 	$query = "insert into {chatmessage} " . | ||||
| 		"(threadid,ikind,tmessage,tname,agentId,dtmcreated) " . | ||||
| 		"values (?,?,?,?,?,".($utime?"FROM_UNIXTIME(?)":"CURRENT_TIMESTAMP").")"; | ||||
| 		"values (:threadid,:kind,:message,:name,:agentid,:created)"; | ||||
| 
 | ||||
| 	 $values = array( | ||||
| 		$threadid, | ||||
| 		$kind, | ||||
| 		$message, | ||||
| 		($from ? $from : "null"), | ||||
| 		($opid ? $opid : 0) | ||||
| 		':threadid' => $threadid, | ||||
| 		':kind' => $kind, | ||||
| 		':message' => $message, | ||||
| 		':name' => ($from ? $from : "null"), | ||||
| 		':agentid' => ($opid ? $opid : 0), | ||||
| 		':created' => ($utime ? $utime : time()) | ||||
| 	); | ||||
| 	if ($utime) { | ||||
| 		$values[] = $utime; | ||||
| 	} | ||||
| 	 $db->query($query, $values); | ||||
| 
 | ||||
| 	$db->query($query, $values); | ||||
| 	return $db->insertedId(); | ||||
| } | ||||
| 
 | ||||
| @ -135,7 +136,7 @@ function get_messages($threadid, $meth, $isuser, &$lastid) | ||||
| 	$db = Database::getInstance(); | ||||
| 
 | ||||
| 	$msgs = $db->query( | ||||
| 		"select messageid,ikind,unix_timestamp(dtmcreated) as created,tname,tmessage from {chatmessage} " . | ||||
| 		"select messageid,ikind,dtmcreated as created,tname,tmessage from {chatmessage} " . | ||||
| 		"where threadid = :threadid and messageid > :lastid " . | ||||
| 		($isuser ? "and ikind <> {$kind_for_agent} " : "") . | ||||
| 		"order by messageid", | ||||
| @ -177,7 +178,7 @@ function print_thread_messages($thread, $token, $lastid, $isuser, $format, $agen | ||||
| { | ||||
| 	global $webim_encoding, $webimroot, $connection_timeout; | ||||
| 	$threadid = $thread['threadid']; | ||||
| 	$istyping = abs($thread['current'] - $thread[$isuser ? "lpagent" : "lpuser"]) < $connection_timeout | ||||
| 	$istyping = abs(time() - $thread[$isuser ? "lpagent" : "lpuser"]) < $connection_timeout | ||||
| 				&& $thread[$isuser ? "agentTyping" : "userTyping"] == "1" ? "1" : "0"; | ||||
| 
 | ||||
| 	if ($format == "xml") { | ||||
| @ -532,11 +533,10 @@ function ping_thread($thread, $isuser, $istyping) | ||||
| 
 | ||||
| 	$db = Database::getInstance(); | ||||
| 
 | ||||
| 	$params = array(($isuser ? "lastpinguser" : "lastpingagent") => "CURRENT_TIMESTAMP", | ||||
| 	$params = array(($isuser ? "lastpinguser" : "lastpingagent") => time(), | ||||
| 					($isuser ? "userTyping" : "agentTyping") => ($istyping ? "1" : "0")); | ||||
| 
 | ||||
| 	$lastping = $thread[$isuser ? "lpagent" : "lpuser"]; | ||||
| 	$current = $thread['current']; | ||||
| 
 | ||||
| 	if ($thread['istate'] == $state_loading && $isuser) { | ||||
| 		$params['istate'] = $state_queue; | ||||
| @ -544,7 +544,7 @@ function ping_thread($thread, $isuser, $istyping) | ||||
| 		return; | ||||
| 	} | ||||
| 
 | ||||
| 	if ($lastping > 0 && abs($current - $lastping) > $connection_timeout) { | ||||
| 	if ($lastping > 0 && abs(time() - $lastping) > $connection_timeout) { | ||||
| 		$params[$isuser ? "lastpingagent" : "lastpinguser"] = "0"; | ||||
| 		if (!$isuser) { | ||||
| 			$message_to_post = getstring_("chat.status.user.dead", $thread['locale']); | ||||
| @ -566,12 +566,8 @@ function ping_thread($thread, $isuser, $istyping) | ||||
| 		if (strlen($clause) > 0) { | ||||
| 			$clause .= ", "; | ||||
| 		} | ||||
| 		if (($k == 'lastpinguser' || $k == 'lastpingagent') && $v == 'CURRENT_TIMESTAMP') { | ||||
| 			$clause .= $k . " = CURRENT_TIMESTAMP"; | ||||
| 		}else{ | ||||
| 			$clause .= $k . "=?"; | ||||
| 			$values[] = $v; | ||||
| 		} | ||||
| 		$clause .= $k . "=?"; | ||||
| 		$values[] = $v; | ||||
| 	} | ||||
| 	$values[] = $thread['threadid']; | ||||
| 
 | ||||
| @ -585,24 +581,18 @@ function commit_thread($threadid, $params) | ||||
| { | ||||
| 	$db = Database::getInstance(); | ||||
| 
 | ||||
| 	$timestamp_allowed_for = array( | ||||
| 		'dtmcreated', | ||||
| 		'dtmchatstarted', | ||||
| 		'dtmmodified', | ||||
| 		'lastpinguser', | ||||
| 		'lastpingagent' | ||||
| 	); | ||||
| 	$query = "update {chatthread} t " . | ||||
| 		"set lrevision = ?, dtmmodified = CURRENT_TIMESTAMP"; | ||||
| 		$values = array(next_revision()); | ||||
| 	foreach ($params as $k => $v) { | ||||
| 		if (in_array($k, $timestamp_allowed_for) && strcasecmp($v,'CURRENT_TIMESTAMP')) { | ||||
| 			$query .= ", " . $k . " = CURRENT_TIMESTAMP"; | ||||
| 		} else { | ||||
| 			$query .= ", " . $k . "=?"; | ||||
| 			$values[] = $v; | ||||
| 		} | ||||
| 		"set lrevision = ?, dtmmodified = ?"; | ||||
| 
 | ||||
| 	$values = array(); | ||||
| 	$values[] = next_revision(); | ||||
| 	$values[] = time(); | ||||
| 
 | ||||
| 	foreach ($params as $name => $value) { | ||||
| 		$query .= ", {$name} = ?" ; | ||||
| 		$values[] = $value; | ||||
| 	} | ||||
| 
 | ||||
| 	$query .= " where threadid = ?"; | ||||
| 	$values[] = $threadid; | ||||
| 
 | ||||
| @ -659,21 +649,22 @@ function close_old_threads() | ||||
| 	$db = Database::getInstance(); | ||||
| 
 | ||||
| 	$query = "update {chatthread} set lrevision = :next_revision, " . | ||||
| 		"dtmmodified = CURRENT_TIMESTAMP, istate = :state_closed " . | ||||
| 		"dtmmodified = :now, istate = :state_closed " . | ||||
| 		"where istate <> :state_closed and istate <> :state_left " . | ||||
| 		"and ((lastpingagent <> 0 and lastpinguser <> 0 and " . | ||||
| 		"(ABS(UNIX_TIMESTAMP(CURRENT_TIMESTAMP) - UNIX_TIMESTAMP(lastpinguser)) > ". | ||||
| 		"(ABS(:now - lastpinguser) > ". | ||||
| 		":thread_lifetime and " . | ||||
| 		"ABS(UNIX_TIMESTAMP(CURRENT_TIMESTAMP) - UNIX_TIMESTAMP(lastpingagent)) > ". | ||||
| 		"ABS(:now - lastpingagent) > ". | ||||
| 		":thread_lifetime)) or " . | ||||
| 		"lastpingagent = 0 and lastpinguser <> 0 and " . | ||||
| 		"ABS(UNIX_TIMESTAMP(CURRENT_TIMESTAMP) - UNIX_TIMESTAMP(lastpinguser)) > ". | ||||
| 		"ABS(:now - lastpinguser) > ". | ||||
| 		":thread_lifetime)"; | ||||
| 
 | ||||
| 	$db->query( | ||||
| 		$query, | ||||
| 		array( | ||||
| 			':next_revision' => next_revision(), | ||||
| 			':now' => time(), | ||||
| 			':state_closed' => $state_closed, | ||||
| 			':state_left' => $state_left, | ||||
| 			':thread_lifetime' => Settings::get('thread_lifetime') | ||||
| @ -686,13 +677,16 @@ function thread_by_id($id) | ||||
| 	$db = Database::getInstance(); | ||||
| 	return $db->query( | ||||
| 		"select threadid,userName,agentName,agentId,lrevision,istate,ltoken,userTyping, " . | ||||
| 		"agentTyping,unix_timestamp(dtmmodified) as modified, " . | ||||
| 		"unix_timestamp(dtmcreated) as created, " . | ||||
| 		"unix_timestamp(dtmchatstarted) as chatstarted,remote,referer,locale," . | ||||
| 		"unix_timestamp(lastpinguser) as lpuser,unix_timestamp(lastpingagent) as lpagent," . | ||||
| 		"unix_timestamp(CURRENT_TIMESTAMP) as current,nextagent,shownmessageid,userid, " . | ||||
| 		"userAgent,groupid from {chatthread} where threadid = ?", | ||||
| 		array($id), | ||||
| 		"agentTyping,dtmmodified as modified, " . | ||||
| 		"dtmcreated as created, " . | ||||
| 		"dtmchatstarted as chatstarted,remote,referer,locale," . | ||||
| 		"lastpinguser as lpuser,lastpingagent as lpagent," . | ||||
| 		"nextagent,shownmessageid,userid, " . | ||||
| 		"userAgent,groupid from {chatthread} where threadid = :threadid", | ||||
| 		array( | ||||
| 			':threadid' => $id, | ||||
| 			':now' => time() | ||||
| 		), | ||||
| 		array('return_rows' => Database::RETURN_ONE_ROW) | ||||
| 	); | ||||
| } | ||||
| @ -702,8 +696,11 @@ function ban_for_addr($addr) | ||||
| 	$db = Database::getInstance(); | ||||
| 	return $db->query( | ||||
| 		"select banid,comment from {chatban} " . | ||||
| 		"where unix_timestamp(dtmtill) > unix_timestamp(CURRENT_TIMESTAMP) AND address = ?", | ||||
| 		array($addr), | ||||
| 		"where dtmtill > :now AND address = :addr", | ||||
| 		array( | ||||
| 			':addr' => $addr, | ||||
| 			':now' => time() | ||||
| 		), | ||||
| 		array('return_rows' => Database::RETURN_ONE_ROW) | ||||
| 	); | ||||
| } | ||||
| @ -712,26 +709,49 @@ function create_thread($groupid, $username, $remoteHost, $referer, $lang, $useri | ||||
| { | ||||
| 	$db = Database::getInstance(); | ||||
| 
 | ||||
| 	$query = "insert into {chatthread} (userName,userid,ltoken,remote,referer, " . | ||||
| 		"lrevision,locale,userAgent,dtmcreated,dtmmodified,istate" . | ||||
| 		($groupid ? ",groupid" : "") . ") values " . | ||||
| 		"(?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,?" . | ||||
| 		($groupid ? ", ?" : "") . ")"; | ||||
| 	$query = "insert into {chatthread} (" . | ||||
| 			"userName, " . | ||||
| 			"userid, " . | ||||
| 			"ltoken, " . | ||||
| 			"remote, " . | ||||
| 			"referer, " . | ||||
| 			"lrevision, " . | ||||
| 			"locale, " . | ||||
| 			"userAgent, " . | ||||
| 			"dtmcreated, " . | ||||
| 			"dtmmodified, " . | ||||
| 			"istate" . | ||||
| 			($groupid ? ", groupid" : "") . | ||||
| 		") values (" . | ||||
| 			":username, " . | ||||
| 			":userid, " . | ||||
| 			":ltoken, " . | ||||
| 			":remote," . | ||||
| 			":referer, " . | ||||
| 			":lrevision, " . | ||||
| 			":locale, " . | ||||
| 			":useragent, " . | ||||
| 			":now, " . | ||||
| 			":now, " . | ||||
| 			":istate" . | ||||
| 			($groupid ? ", :groupid" : "") . | ||||
| 		")"; | ||||
| 
 | ||||
| 	$values = array( | ||||
| 		$username, | ||||
| 		$userid, | ||||
| 		next_token(), | ||||
| 		$remoteHost, | ||||
| 		$referer, | ||||
| 		next_revision(), | ||||
| 		$lang, | ||||
| 		$userbrowser, | ||||
| 		$initialState | ||||
| 		':username' => $username, | ||||
| 		':userid' => $userid, | ||||
| 		':ltoken' => next_token(), | ||||
| 		':remote' => $remoteHost, | ||||
| 		':referer' => $referer, | ||||
| 		':lrevision' => next_revision(), | ||||
| 		':locale' => $lang, | ||||
| 		':useragent' => $userbrowser, | ||||
| 		':now' => time(), | ||||
| 		':istate' => $initialState | ||||
| 	); | ||||
| 
 | ||||
| 	if ($groupid) { | ||||
| 		$values[] = $groupid; | ||||
| 		$values[':groupid'] = $groupid; | ||||
| 	} | ||||
| 
 | ||||
| 	$db->query($query, $values); | ||||
| @ -749,7 +769,7 @@ function do_take_thread($threadid, $operatorId, $operatorName, $chatstart = fals | ||||
| 			"agentId" => $operatorId, | ||||
| 			"agentName" => $operatorName); | ||||
| 	if ($chatstart){ | ||||
| 		$params['dtmchatstarted'] = "CURRENT_TIMESTAMP"; | ||||
| 		$params['dtmchatstarted'] = time(); | ||||
| 	} | ||||
| 	commit_thread($threadid, $params); | ||||
| } | ||||
|  | ||||
| @ -35,9 +35,13 @@ function invitation_invite($visitorid, $operatorid) | ||||
| 	if (!invitation_check($visitorid)) { | ||||
| 		$db = Database::getInstance(); | ||||
| 		$db->query( | ||||
| 			"update {chatsitevisitor} set invited = 1, invitedby = ?, " . | ||||
| 			"invitationtime = now(), invitations = invitations + 1 where visitorid = ?", | ||||
| 			array($operatorid, $visitorid) | ||||
| 			"update {chatsitevisitor} set invited = 1, invitedby = :operatorid, " . | ||||
| 			"invitationtime = :now, invitations = invitations + 1 where visitorid = :visitorid", | ||||
| 			array( | ||||
| 				':operatorid' => $operatorid, | ||||
| 				':visitorid' => $visitorid, | ||||
| 				':now' => time() | ||||
| 			) | ||||
| 		); | ||||
| 		return invitation_check($visitorid); | ||||
| 	} else { | ||||
|  | ||||
| @ -97,7 +97,7 @@ function get_operators_list($options) | ||||
| 		$orderby = "vclogin"; | ||||
| 	} | ||||
| 
 | ||||
| 	$query = "select distinct {chatoperator}.operatorid, vclogin, vclocalename, vccommonname, istatus, idisabled, (unix_timestamp(CURRENT_TIMESTAMP)-unix_timestamp(dtmlastvisited)) as time " . | ||||
| 	$query = "select distinct {chatoperator}.operatorid, vclogin, vclocalename, vccommonname, istatus, idisabled, (:now - dtmlastvisited) as time " . | ||||
| 		 "from {chatoperator}" . | ||||
| 		 ( | ||||
| 		 empty($options['isolated_operator_id']) ? "" : | ||||
| @ -111,13 +111,17 @@ function get_operators_list($options) | ||||
| 		 ) . | ||||
| 		 " order by " . $orderby; | ||||
| 
 | ||||
| 	$values = array( | ||||
| 		':now' => time() | ||||
| 	); | ||||
| 
 | ||||
| 	if (! empty($options['isolated_operator_id'])) { | ||||
| 		$values[':operatorid'] = $options['isolated_operator_id']; | ||||
| 	} | ||||
| 
 | ||||
| 	$operators = $db->query( | ||||
| 		$query, | ||||
| 		( | ||||
| 			empty($options['isolated_operator_id'])  | ||||
| 			? array() | ||||
| 			: array(':operatorid' => $options['isolated_operator_id']) | ||||
| 		), | ||||
| 		$values, | ||||
| 		array('return_rows' => Database::RETURN_ALL_ROWS) | ||||
| 	); | ||||
| 
 | ||||
| @ -129,9 +133,9 @@ function operator_get_all() | ||||
| 	$db = Database::getInstance(); | ||||
| 	return $operators = $db->query( | ||||
| 		"select operatorid, vclogin, vclocalename, vccommonname, istatus, idisabled, " . | ||||
| 		"(unix_timestamp(CURRENT_TIMESTAMP)-unix_timestamp(dtmlastvisited)) as time " . | ||||
| 		"(:now - dtmlastvisited) as time " . | ||||
| 		"from {chatoperator} order by vclogin", | ||||
| 		NULL, | ||||
| 		array(':now' => time()), | ||||
| 		array('return_rows' => Database::RETURN_ALL_ROWS) | ||||
| 	); | ||||
| } | ||||
| @ -141,21 +145,24 @@ function get_operators_from_adjacent_groups($operator) | ||||
| 	$db = Database::getInstance(); | ||||
| 	$query = "select distinct {chatoperator}.operatorid, vclogin, vclocalename,vccommonname, " . | ||||
| 		"istatus, idisabled, " . | ||||
| 		"(unix_timestamp(CURRENT_TIMESTAMP)-unix_timestamp(dtmlastvisited)) as time " . | ||||
| 		"(:now - dtmlastvisited) as time " . | ||||
| 		"from {chatoperator}, {chatgroupoperator} " . | ||||
| 		"where {chatoperator}.operatorid = {chatgroupoperator}.operatorid " . | ||||
| 		"and {chatgroupoperator}.groupid in " . | ||||
| 		"(select g.groupid from {chatgroup} g, " . | ||||
| 		"(select distinct parent from {chatgroup}, {chatgroupoperator} " . | ||||
| 		"where {chatgroup}.groupid = {chatgroupoperator}.groupid " . | ||||
| 		"and {chatgroupoperator}.operatorid = ?) i " . | ||||
| 		"and {chatgroupoperator}.operatorid = :operatorid) i " . | ||||
| 		"where g.groupid = i.parent or g.parent = i.parent " . | ||||
| 		") order by vclogin"; | ||||
| 	 | ||||
| 	 | ||||
| 	return $db->query( | ||||
| 		$query, | ||||
| 		array($operator['operatorid']), | ||||
| 		array( | ||||
| 			':operatorid' => $operator['operatorid'], | ||||
| 			':now' => time() | ||||
| 		), | ||||
| 		array('return_rows' => Database::RETURN_ALL_ROWS) | ||||
| 	); | ||||
| } | ||||
| @ -245,9 +252,13 @@ function notify_operator_alive($operatorid, $istatus) | ||||
| { | ||||
| 	$db = Database::getInstance(); | ||||
| 	$db->query( | ||||
| 		"update {chatoperator} set istatus = ?, dtmlastvisited = CURRENT_TIMESTAMP " . | ||||
| 		"where operatorid = ?", | ||||
| 		array($istatus, $operatorid) | ||||
| 		"update {chatoperator} set istatus = :istatus, dtmlastvisited = :now " . | ||||
| 		"where operatorid = :operatorid", | ||||
| 		array( | ||||
| 			':istatus' => $istatus, | ||||
| 			':now' => time(), | ||||
| 			':operatorid' => $operatorid | ||||
| 		) | ||||
| 	); | ||||
| } | ||||
| 
 | ||||
| @ -255,7 +266,7 @@ function has_online_operators($groupid = "") | ||||
| { | ||||
| 	$db = Database::getInstance(); | ||||
| 
 | ||||
| 	$query = "select count(*) as total, min(unix_timestamp(CURRENT_TIMESTAMP)-unix_timestamp(dtmlastvisited)) as time from {chatoperator}"; | ||||
| 	$query = "select count(*) as total, min(:now - dtmlastvisited) as time from {chatoperator}"; | ||||
| 	if ($groupid) { | ||||
| 		$query .= ", {chatgroupoperator}, {chatgroup} where {chatgroup}.groupid = {chatgroupoperator}.groupid and " . | ||||
| 			"({chatgroup}.groupid = :groupid or {chatgroup}.parent = :groupid) and {chatoperator}.operatorid = " . | ||||
| @ -271,7 +282,10 @@ function has_online_operators($groupid = "") | ||||
| 
 | ||||
| 	$row = $db->query( | ||||
| 		$query, | ||||
| 		array(':groupid'=>$groupid), | ||||
| 		array( | ||||
| 			':groupid'=>$groupid, | ||||
| 			':now' => time() | ||||
| 		), | ||||
| 		array('return_rows' => Database::RETURN_ONE_ROW) | ||||
| 	); | ||||
| 	return $row['time'] < Settings::get('online_timeout') && $row['total'] > 0; | ||||
| @ -282,9 +296,12 @@ function is_operator_online($operatorid) | ||||
| 	$db = Database::getInstance(); | ||||
| 	$row = $db->query( | ||||
| 		"select count(*) as total, " . | ||||
| 		"min(unix_timestamp(CURRENT_TIMESTAMP)-unix_timestamp(dtmlastvisited)) as time " . | ||||
| 		"from {chatoperator} where operatorid = ?", | ||||
| 		array($operatorid), | ||||
| 		"min(:now - dtmlastvisited) as time " . | ||||
| 		"from {chatoperator} where operatorid = :operatorid", | ||||
| 		array( | ||||
| 			':now' => time(), | ||||
| 			':operatorid' => $operatorid | ||||
| 		), | ||||
| 		array('return_rows' => Database::RETURN_ONE_ROW) | ||||
| 	); | ||||
| 	 | ||||
| @ -548,28 +565,32 @@ function get_groups_($checkaway, $operator, $order = NULL) | ||||
| 		$orderby = "iweight, vclocalname"; | ||||
| 	} | ||||
| 
 | ||||
| 	$values = array(); | ||||
| 	$values = array( | ||||
| 		':now' => time() | ||||
| 	); | ||||
| 	$query = "select {chatgroup}.groupid as groupid, {chatgroup}.parent as parent, vclocalname, vclocaldescription, iweight" . | ||||
| 		", (SELECT count(*) from {chatgroupoperator} where {chatgroup}.groupid = " . | ||||
| 		"{chatgroupoperator}.groupid) as inumofagents" . | ||||
| 		", (SELECT min(unix_timestamp(CURRENT_TIMESTAMP)-unix_timestamp(dtmlastvisited)) as time " . | ||||
| 		", (SELECT min(:now - dtmlastvisited) as time " . | ||||
| 		"from {chatgroupoperator}, {chatoperator} where istatus = 0 and " . | ||||
| 		"{chatgroup}.groupid = {chatgroupoperator}.groupid " . | ||||
| 		"and {chatgroupoperator}.operatorid = {chatoperator}.operatorid) as ilastseen" . | ||||
| 		($checkaway | ||||
| 			? ", (SELECT min(unix_timestamp(CURRENT_TIMESTAMP)-unix_timestamp(dtmlastvisited)) as time " . | ||||
| 			? ", (SELECT min(:now - dtmlastvisited) as time " . | ||||
| 			"from {chatgroupoperator}, {chatoperator} where istatus <> 0 and " . | ||||
| 			"{chatgroup}.groupid = {chatgroupoperator}.groupid " . | ||||
| 			"and {chatgroupoperator}.operatorid = {chatoperator}.operatorid) as ilastseenaway" | ||||
| 			: "" | ||||
| 		) . | ||||
| 		" from {chatgroup} "; | ||||
| 
 | ||||
| 	if ($operator) { | ||||
| 		$query .= ", (select distinct parent from {chatgroup}, {chatgroupoperator} " . | ||||
| 			"where {chatgroup}.groupid = {chatgroupoperator}.groupid and {chatgroupoperator}.operatorid = ?) i " . | ||||
| 			"where {chatgroup}.groupid = {chatgroupoperator}.groupid and {chatgroupoperator}.operatorid = :operatorid) i " . | ||||
| 			"where {chatgroup}.groupid = i.parent or {chatgroup}.parent = i.parent "; | ||||
| 		$values[] = $operator['operatorid']; | ||||
| 		$values[':operatorid'] = $operator['operatorid']; | ||||
| 	} | ||||
| 
 | ||||
| 	$query .= " order by " . $orderby; | ||||
| 	$groups = $db->query( | ||||
| 		$query, | ||||
|  | ||||
| @ -27,9 +27,12 @@ function track_visitor($visitorid, $entry, $referer) | ||||
| 	} else { | ||||
| 		$db = Database::getInstance(); | ||||
| 		$db->query( | ||||
| 			"update {chatsitevisitor} set lasttime = CURRENT_TIMESTAMP " . | ||||
| 			"where visitorid=?", | ||||
| 			array($visitor['visitorid']) | ||||
| 			"update {chatsitevisitor} set lasttime = :now " . | ||||
| 			"where visitorid = :visitorid", | ||||
| 			array( | ||||
| 				':vidsitorid' => $visitor['visitorid'], | ||||
| 				':now' => time() | ||||
| 			) | ||||
| 		); | ||||
| 		track_visit_page($visitor['visitorid'], $referer); | ||||
| 		return $visitor['visitorid']; | ||||
| @ -43,12 +46,13 @@ function track_visitor_start($entry, $referer) | ||||
| 	$db = Database::getInstance(); | ||||
| 	$db->query( | ||||
| 		"insert into {chatsitevisitor} (userid,username,firsttime,lasttime,entry,details) ". | ||||
| 		"values (?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, ?, ?)", | ||||
| 		"values (:userid, :username, :now, :now, :entry, :details)", | ||||
| 		array( | ||||
| 			$visitor['id'], | ||||
| 			$visitor['name'], | ||||
| 			$entry, | ||||
| 			track_build_details() | ||||
| 			':userid' => $visitor['id'], | ||||
| 			':username' => $visitor['name'], | ||||
| 			':now' => time(), | ||||
| 			':entry' => $entry, | ||||
| 			':details' => track_build_details() | ||||
| 		) | ||||
| 	); | ||||
| 
 | ||||
| @ -97,13 +101,20 @@ function track_visit_page($visitorid, $page) | ||||
| 	if ( $lastpage['address'] != $page ) { | ||||
| 		$db->query( | ||||
| 			"insert into {visitedpage} (visitorid, address, visittime) " . | ||||
| 			"values (?, ?, CURRENT_TIMESTAMP)", | ||||
| 			array($visitorid, $page) | ||||
| 			"values (:visitorid, :page, :now)", | ||||
| 			array( | ||||
| 				':visitorid' => $visitorid, | ||||
| 				':page' => $page, | ||||
| 				':now' => time() | ||||
| 			) | ||||
| 		); | ||||
| 		$db->query( | ||||
| 			"insert into {visitedpagestatistics} (address, visittime) " . | ||||
| 			"values (?, CURRENT_TIMESTAMP)", | ||||
| 			array($page) | ||||
| 			"values (:page, :now)", | ||||
| 			array( | ||||
| 				':page' =>  $page, | ||||
| 				':now' => time() | ||||
| 			) | ||||
| 		); | ||||
| 	} | ||||
| } | ||||
| @ -112,7 +123,7 @@ function track_get_path($visitor) | ||||
| { | ||||
| 	$db = Database::getInstance(); | ||||
| 	$query_result = $db->query( | ||||
| 		"select address, UNIX_TIMESTAMP(visittime) as visittime from {visitedpage} " . | ||||
| 		"select address, visittime from {visitedpage} " . | ||||
| 		"where visitorid = ?", | ||||
| 		array($visitor['visitorid']), | ||||
| 		array('return_rows' => Database::RETURN_ALL_ROWS) | ||||
|  | ||||
| @ -55,26 +55,28 @@ if (isset($_POST['address'])) { | ||||
| 
 | ||||
| 	if (count($errors) == 0) { | ||||
| 		$db = Database::getInstance(); | ||||
| 		$utime = time() + $days * 24 * 60 * 60; | ||||
| 		$now = time(); | ||||
| 		$till_time = $now + $days * 24 * 60 * 60; | ||||
| 		if (!$banId) { | ||||
| 			$db->query( | ||||
| 				"insert into {chatban} (dtmcreated,dtmtill,address,comment) " . | ||||
| 				"values (CURRENT_TIMESTAMP,FROM_UNIXTIME(?),?,?)", | ||||
| 				"values (:now,:till,:address,:comment)", | ||||
| 				array( | ||||
| 					$utime, | ||||
| 					$address, | ||||
| 					 $comment | ||||
| 					':now' => $now, | ||||
| 					':till' => $till_time, | ||||
| 					':address' => $address, | ||||
| 					':comment' => $comment | ||||
| 				) | ||||
| 			); | ||||
| 		} else { | ||||
| 			$db->query( | ||||
| 				"update {chatban} set dtmtill = FROM_UNIXTIME(?),address = ?, " . | ||||
| 				"comment = ? where banid = ?", | ||||
| 				"update {chatban} set dtmtill = :till,address = :address, " . | ||||
| 				"comment = :comment where banid = :banid", | ||||
| 				array( | ||||
| 					$utime, | ||||
| 					$address, | ||||
| 					$comment, | ||||
| 					$banId | ||||
| 					':till' => $till_time, | ||||
| 					':address' => $address, | ||||
| 					':comment' => $comment, | ||||
| 					':banid' => $banId | ||||
| 				) | ||||
| 			); | ||||
| 		} | ||||
| @ -97,9 +99,12 @@ if (isset($_POST['address'])) { | ||||
| 	$banId = verifyparam('id', "/^\d{1,9}$/"); | ||||
| 	$db = Database::getInstance(); | ||||
| 	$ban = $db->query( | ||||
| 		"select banid,(unix_timestamp(dtmtill)-unix_timestamp(CURRENT_TIMESTAMP))" . | ||||
| 		" as days,address,comment from {chatban} where banid = ?", | ||||
| 		array($banId), | ||||
| 		"select banid,(dtmtill - :now)" . | ||||
| 		" as days,address,comment from {chatban} where banid = :banid", | ||||
| 		array( | ||||
| 			':banid' => $banId, | ||||
| 			':now' => time() | ||||
| 		), | ||||
| 		array('return_rows' => Database::RETURN_ONE_ROW) | ||||
| 	); | ||||
| 
 | ||||
|  | ||||
| @ -43,7 +43,7 @@ if (isset($_GET['act']) && $_GET['act'] == 'del') { | ||||
| } | ||||
| 
 | ||||
| $blockedList = $db->query( | ||||
| 	"select banid,unix_timestamp(dtmtill) as till,address,comment from {chatban}", | ||||
| 	"select banid, dtmtill as till,address,comment from {chatban}", | ||||
| 	NULL, | ||||
| 	array('return_rows' => Database::RETURN_ONE_ROW) | ||||
| ); | ||||
|  | ||||
| @ -47,6 +47,8 @@ if ($query !== false) { | ||||
| 	} | ||||
| 	$page['groupName'] = $groupName; | ||||
| 
 | ||||
| 	$escapedQuery = $escapedQuery?$escapedQuery:''; | ||||
| 
 | ||||
| 	$values = array( | ||||
| 		':query' => "%{$escapedQuery}%" | ||||
| 	); | ||||
| @ -66,8 +68,8 @@ if ($query !== false) { | ||||
| 		$searchConditions[] = "({chatthread}.userName LIKE :query)"; | ||||
| 		$searchConditions[] = "({chatthread}.remote LIKE :query)"; | ||||
| 	} | ||||
| 	select_with_pagintation("DISTINCT unix_timestamp({chatthread}.dtmcreated) as created, " . | ||||
| 		"unix_timestamp({chatthread}.dtmmodified) as modified, {chatthread}.threadid, " . | ||||
| 	select_with_pagintation("DISTINCT {chatthread}.dtmcreated as created, " . | ||||
| 		"{chatthread}.dtmmodified as modified, {chatthread}.threadid, " . | ||||
| 		"{chatthread}.remote, {chatthread}.agentName, {chatthread}.userName, groupid, " . | ||||
| 		"messageCount as size", | ||||
| 		"{chatthread}, {chatmessage}", | ||||
| @ -75,7 +77,7 @@ if ($query !== false) { | ||||
| 			"{chatmessage}.threadid = {chatthread}.threadid", | ||||
| 			"(" . implode(' or ', $searchConditions)  .  ")" | ||||
| 		), | ||||
| 		"order by created DESC", | ||||
| 		"order by {chatthread}.dtmcreated DESC", | ||||
| 		"DISTINCT {chatthread}.dtmcreated", $values); | ||||
| 
 | ||||
| 	$page['formq'] = topage($query); | ||||
|  | ||||
| @ -42,9 +42,13 @@ if (isset($_POST['loginoremail'])) { | ||||
| 
 | ||||
| 		$db = Database::getInstance(); | ||||
| 		$db->query( | ||||
| 			"update {chatoperator} set dtmrestore = CURRENT_TIMESTAMP, " . | ||||
| 			"vcrestoretoken = ? where operatorid = ?", | ||||
| 			array($token, $torestore['operatorid']) | ||||
| 			"update {chatoperator} set dtmrestore = :now, " . | ||||
| 			"vcrestoretoken = :token where operatorid = :operatorid", | ||||
| 			array( | ||||
| 				':now' => time(), | ||||
| 				':token' => $token, | ||||
| 				':operatorid' => $torestore['operatorid'] | ||||
| 			) | ||||
| 		); | ||||
| 
 | ||||
| 		$href = get_app_location(true, false) . "/operator/resetpwd.php?id=" . $torestore['operatorid'] . "&token=$token"; | ||||
|  | ||||
| @ -74,9 +74,9 @@ $activetab = 0; | ||||
| $db = Database::getInstance(); | ||||
| if ($statisticstype == 'bydate') { | ||||
| 	$page['reportByDate'] = $db->query( | ||||
| 		"select DATE(t.dtmcreated) as date, COUNT(distinct t.threadid) as threads, SUM(m.ikind = :kind_agent) as agents, SUM(m.ikind = :kind_user) as users, ROUND(AVG(unix_timestamp(t.dtmchatstarted)-unix_timestamp(t.dtmcreated)),1) as avgwaitingtime, ROUND(AVG(tmp.lastmsgtime - unix_timestamp(t.dtmchatstarted)),1) as avgchattime " . | ||||
| 		"from {chatmessage} m, {chatthread} t, (SELECT i.threadid, unix_timestamp(MAX(i.dtmcreated)) AS lastmsgtime  FROM {chatmessage} i WHERE (ikind = :kind_user OR ikind = :kind_agent) GROUP BY i.threadid) tmp " . | ||||
| 		"where m.threadid = t.threadid AND tmp.threadid = t.threadid AND unix_timestamp(t.dtmchatstarted) <> 0 AND unix_timestamp(m.dtmcreated) >= :start AND unix_timestamp(m.dtmcreated) < :end group by DATE(m.dtmcreated) order by m.dtmcreated desc", | ||||
| 		"select DATE(FROM_UNIXTIME(t.dtmcreated)) as date, COUNT(distinct t.threadid) as threads, SUM(m.ikind = :kind_agent) as agents, SUM(m.ikind = :kind_user) as users, ROUND(AVG(t.dtmchatstarted-t.dtmcreated),1) as avgwaitingtime, ROUND(AVG(tmp.lastmsgtime - t.dtmchatstarted),1) as avgchattime " . | ||||
| 		"from {chatmessage} m, {chatthread} t, (SELECT i.threadid, MAX(i.dtmcreated) AS lastmsgtime  FROM {chatmessage} i WHERE (ikind = :kind_user OR ikind = :kind_agent) GROUP BY i.threadid) tmp " . | ||||
| 		"where m.threadid = t.threadid AND tmp.threadid = t.threadid AND t.dtmchatstarted <> 0 AND m.dtmcreated >= :start AND m.dtmcreated < :end group by DATE(FROM_UNIXTIME(m.dtmcreated)) order by m.dtmcreated desc", | ||||
| 		array( | ||||
| 			':kind_agent' => $kind_agent, | ||||
| 			':kind_user' => $kind_user, | ||||
| @ -87,9 +87,9 @@ if ($statisticstype == 'bydate') { | ||||
| 	); | ||||
| 	 | ||||
| 	$page['reportByDateTotal'] = $db->query( | ||||
| 		"select DATE(t.dtmcreated) as date, COUNT(distinct t.threadid) as threads, SUM(m.ikind = :kind_agent) as agents, SUM(m.ikind = :kind_user) as users, ROUND(AVG(unix_timestamp(t.dtmchatstarted)-unix_timestamp(t.dtmcreated)),1) as avgwaitingtime, ROUND(AVG(tmp.lastmsgtime - unix_timestamp(t.dtmchatstarted)),1) as avgchattime " . | ||||
| 		"from {chatmessage} m, {chatthread} t, (SELECT i.threadid, unix_timestamp(MAX(i.dtmcreated)) AS lastmsgtime FROM {chatmessage} i WHERE (ikind = :kind_user OR ikind = :kind_agent) GROUP BY i.threadid) tmp " . | ||||
| 		"where m.threadid = t.threadid AND tmp.threadid = t.threadid AND unix_timestamp(t.dtmchatstarted) <> 0 AND unix_timestamp(m.dtmcreated) >= :start AND unix_timestamp(m.dtmcreated) < :end", | ||||
| 		"select DATE(FROM_UNIXTIME(t.dtmcreated)) as date, COUNT(distinct t.threadid) as threads, SUM(m.ikind = :kind_agent) as agents, SUM(m.ikind = :kind_user) as users, ROUND(AVG(t.dtmchatstarted-t.dtmcreated),1) as avgwaitingtime, ROUND(AVG(tmp.lastmsgtime - t.dtmchatstarted),1) as avgchattime " . | ||||
| 		"from {chatmessage} m, {chatthread} t, (SELECT i.threadid, MAX(i.dtmcreated) AS lastmsgtime FROM {chatmessage} i WHERE (ikind = :kind_user OR ikind = :kind_agent) GROUP BY i.threadid) tmp " . | ||||
| 		"where m.threadid = t.threadid AND tmp.threadid = t.threadid AND t.dtmchatstarted <> 0 AND m.dtmcreated >= :start AND m.dtmcreated < :end", | ||||
| 		array( | ||||
| 			':kind_agent' => $kind_agent, | ||||
| 			':kind_user' => $kind_user, | ||||
| @ -104,8 +104,8 @@ if ($statisticstype == 'bydate') { | ||||
| 		"select vclocalename as name, COUNT(distinct threadid) as threads, " . | ||||
| 		"SUM(ikind = :kind_agent) as msgs, AVG(CHAR_LENGTH(tmessage)) as avglen " . | ||||
| 		"from {chatmessage}, {chatoperator} " . | ||||
| 		"where agentId = operatorid AND unix_timestamp(dtmcreated) >= :start " . | ||||
| 		"AND unix_timestamp(dtmcreated) < :end group by operatorid", | ||||
| 		"where agentId = operatorid AND dtmcreated >= :start " . | ||||
| 		"AND dtmcreated < :end group by operatorid", | ||||
| 		array( | ||||
| 			':kind_agent' => $kind_agent, | ||||
| 			':start' => $start, | ||||
| @ -117,8 +117,8 @@ if ($statisticstype == 'bydate') { | ||||
| } elseif($statisticstype == 'bypage') { | ||||
| 	$page['reportByPage'] = $db->query( | ||||
| 		"SELECT COUNT(DISTINCT p.pageid) as visittimes, p.address, COUNT(DISTINCT t.threadid) as chattimes " . | ||||
| 		"FROM {visitedpagestatistics} p LEFT OUTER JOIN {chatthread} t ON (p.address = t.referer AND DATE(p.visittime) = DATE(t.dtmcreated)) " . | ||||
| 		"WHERE unix_timestamp(p.visittime) >= :start AND unix_timestamp(p.visittime) < :end GROUP BY p.address", | ||||
| 		"FROM {visitedpagestatistics} p LEFT OUTER JOIN {chatthread} t ON (p.address = t.referer AND DATE(FROM_UNIXTIME(p.visittime)) = DATE(FROM_UNIXTIME(t.dtmcreated))) " . | ||||
| 		"WHERE p.visittime >= :start AND p.visittime < :end GROUP BY p.address", | ||||
| 		array(':start' => $start, ':end' => $end), | ||||
| 		array('return_rows' => Database::RETURN_ALL_ROWS) | ||||
| 	); | ||||
|  | ||||
| @ -31,7 +31,7 @@ function thread_info($id) | ||||
| 	$db = Database::getInstance(); | ||||
| 	return $db->query( | ||||
| 		"select userName,agentName,remote,userAgent," . | ||||
| 		"unix_timestamp(dtmmodified) as modified, unix_timestamp(dtmcreated) as created," . | ||||
| 		"dtmmodified as modified, dtmcreated as created," . | ||||
| 		"vclocalname as groupName " . | ||||
| 		"from {chatthread} left join {chatgroup} on {chatthread}.groupid = {chatgroup}.groupid " . | ||||
| 		"where threadid = ?", | ||||
|  | ||||
| @ -88,8 +88,8 @@ function thread_to_xml($thread) | ||||
| 	$result .= htmlspecialchars(htmlspecialchars(get_user_name($thread['userName'], $thread['remote'], $thread['userid']))) . "</name>"; | ||||
| 	$result .= "<addr>" . htmlspecialchars(get_user_addr($thread['remote'])) . "</addr>"; | ||||
| 	$result .= "<agent>" . htmlspecialchars(htmlspecialchars($threadoperator)) . "</agent>"; | ||||
| 	$result .= "<time>" . $thread['unix_timestamp(dtmcreated)'] . "000</time>"; | ||||
| 	$result .= "<modified>" . $thread['unix_timestamp(dtmmodified)'] . "000</modified>"; | ||||
| 	$result .= "<time>" . $thread['dtmcreated'] . "000</time>"; | ||||
| 	$result .= "<modified>" . $thread['dtmmodified'] . "000</modified>"; | ||||
| 
 | ||||
| 	if ($banForThread) { | ||||
| 		$result .= "<reason>" . $banForThread['comment'] . "</reason>"; | ||||
| @ -119,8 +119,8 @@ function print_pending_threads($groupids, $since) | ||||
| 	$db = Database::getInstance(); | ||||
| 
 | ||||
| 	$revision = $since; | ||||
| 	$query = "select threadid, userName, agentName, unix_timestamp(dtmcreated), userTyping, " . | ||||
| 		"unix_timestamp(dtmmodified), lrevision, istate, remote, nextagent, agentId, " . | ||||
| 	$query = "select threadid, userName, agentName, dtmcreated, userTyping, " . | ||||
| 		"dtmmodified, lrevision, istate, remote, nextagent, agentId, " . | ||||
| 		"userid, shownmessageid, userAgent, (select vclocalname from {chatgroup} where {chatgroup}.groupid = {chatthread}.groupid) as groupname " . | ||||
| 		"from {chatthread} where lrevision > :since " . | ||||
| 		($since <= 0 | ||||
| @ -181,8 +181,8 @@ function visitor_to_xml($visitor) | ||||
| //    $result .= "<userid>" . htmlspecialchars($visitor['userid']) . "</userid>";
 | ||||
|     $result .= "<username>" . htmlspecialchars($visitor['username']) . "</username>"; | ||||
| 
 | ||||
|     $result .= "<time>" . $visitor['unix_timestamp(firsttime)'] . "000</time>"; | ||||
|     $result .= "<modified>" . $visitor['unix_timestamp(lasttime)'] . "000</modified>"; | ||||
|     $result .= "<time>" . $visitor['firsttime'] . "000</time>"; | ||||
|     $result .= "<modified>" . $visitor['lasttime'] . "000</modified>"; | ||||
| //    $result .= "<entry>" . htmlspecialchars($visitor['entry']) . "</entry>";
 | ||||
| 
 | ||||
| //    $result .= "<path>";
 | ||||
| @ -203,7 +203,7 @@ function visitor_to_xml($visitor) | ||||
| 
 | ||||
|     $result .= "<invitation>"; | ||||
|     if ($visitor['invited']) { | ||||
| 	$result .= "<invitationtime>" . $visitor['unix_timestamp(invitationtime)'] . "000</invitationtime>"; | ||||
| 	$result .= "<invitationtime>" . $visitor['invitationtime'] . "000</invitationtime>"; | ||||
| 	$operator = get_operator_name(operator_by_id($visitor['invitedby'])); | ||||
| 	$result .= "<operator>" . htmlspecialchars(htmlspecialchars($operator)) . "</operator>"; | ||||
|     } | ||||
| @ -222,18 +222,24 @@ function print_visitors() | ||||
| // Remove old visitors
 | ||||
| 	$db->query( | ||||
| 		"DELETE FROM {chatsitevisitor} " . | ||||
| 		"WHERE (UNIX_TIMESTAMP(CURRENT_TIMESTAMP) - UNIX_TIMESTAMP(lasttime)) > ? ". | ||||
| 		"WHERE (:now - lasttime) > :lifetime ". | ||||
| 		"AND (threadid IS NULL OR " . | ||||
| 		"(SELECT count(*) FROM {chatthread} WHERE threadid = {chatsitevisitor}.threadid " . | ||||
| 		"AND istate <> {$state_closed} AND istate <> {$state_left}) = 0)", | ||||
| 		array(Settings::get('tracking_lifetime')) | ||||
| 		array( | ||||
| 			':lifetime' => Settings::get('tracking_lifetime'), | ||||
| 			':now' => time() | ||||
| 		) | ||||
| 	); | ||||
| 
 | ||||
| // Remove old invitations
 | ||||
| 	$db->query( | ||||
| 		"UPDATE {chatsitevisitor} SET invited = 0, invitationtime = NULL, invitedby = NULL". | ||||
| 		" WHERE threadid IS NULL AND (UNIX_TIMESTAMP(CURRENT_TIMESTAMP) - UNIX_TIMESTAMP(invitationtime)) > ?", | ||||
| 		array(Settings::get('invitation_lifetime')) | ||||
| 		" WHERE threadid IS NULL AND (:now - invitationtime) > :lifetime", | ||||
| 		array( | ||||
| 			':lifetime' => Settings::get('invitation_lifetime'), | ||||
| 			':now' => time() | ||||
| 		) | ||||
| 	); | ||||
| 
 | ||||
| // Remove associations of visitors with closed threads
 | ||||
| @ -245,13 +251,16 @@ function print_visitors() | ||||
| 
 | ||||
| // Remove old visitors' tracks
 | ||||
| 	$db->query( | ||||
| 		"DELETE FROM {visitedpage} WHERE (UNIX_TIMESTAMP(CURRENT_TIMESTAMP) - UNIX_TIMESTAMP(visittime)) > ? " . | ||||
| 		"DELETE FROM {visitedpage} WHERE (:now - visittime) > :lifetime " . | ||||
| 		" AND visitorid NOT IN (SELECT visitorid FROM {chatsitevisitor})", | ||||
| 		array(Settings::get('tracking_lifetime')) | ||||
| 		array( | ||||
| 			':lifetime' => Settings::get('tracking_lifetime'), | ||||
| 			':now' => time() | ||||
| 		) | ||||
| 	); | ||||
| 
 | ||||
| 	$query = "SELECT visitorid, userid, username, unix_timestamp(firsttime), unix_timestamp(lasttime), " . | ||||
| 			 "entry, details, invited, unix_timestamp(invitationtime), invitedby, invitations, chats " . | ||||
| 	$query = "SELECT visitorid, userid, username, firsttime, lasttime, " . | ||||
| 			 "entry, details, invited, invitationtime, invitedby, invitations, chats " . | ||||
| 			 "FROM {chatsitevisitor} " . | ||||
| 			 "WHERE threadid IS NULL " . | ||||
| 			 "ORDER BY invited, lasttime DESC, invitations"; | ||||
|  | ||||
| @ -40,8 +40,8 @@ function threads_by_userid($userid) | ||||
| 	} | ||||
| 	 | ||||
| 	return $db->query( | ||||
| 		"select unix_timestamp(dtmcreated) as created, " . | ||||
| 		"unix_timestamp(dtmmodified) as modified, threadid, remote, agentName, userName " . | ||||
| 		"select dtmcreated as created, " . | ||||
| 		"dtmmodified as modified, threadid, remote, agentName, userName " . | ||||
| 		"from {chatthread} " . | ||||
| 		"where userid=? order by created DESC", | ||||
| 		array($userid), | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user