function UpdateUserStatus($_internalActivated, $_internalClosed, $_internalDeclined, $_externalActivated, $_externalClose) { if (!empty($this->ChatId)) { $this->Status = $_externalClose || $_internalDeclined || $_internalClosed ? CHAT_CLOSED : $this->Status; if ($_internalActivated) { queryDB(true, "UPDATE `" . DB_PREFIX . DATABASE_VISITOR_CHATS . "` SET `internal_active`='1',`allocated`='" . DBManager::RealEscape(time()) . "' WHERE `internal_active`=0 AND `chat_id`='" . DBManager::RealEscape($this->ChatId) . "' LIMIT 1;"); if (DBManager::GetAffectedRowCount() == 1) { queryDB(true, "UPDATE `" . DB_PREFIX . DATABASE_VISITOR_CHAT_OPERATORS . "` SET `status`=0 WHERE `chat_id`='" . DBManager::RealEscape($this->ChatId) . "' AND `user_id`='" . DBManager::RealEscape(CALLER_SYSTEM_ID) . "';"); queryDB(true, "UPDATE `" . DB_PREFIX . DATABASE_VISITOR_CHAT_OPERATORS . "` SET `status`=9,`ltime`=" . time() . ",`jtime`=0 WHERE `chat_id`='" . DBManager::RealEscape($this->ChatId) . "' AND `user_id`!='" . DBManager::RealEscape(CALLER_SYSTEM_ID) . "' AND `status`<=1;"); } } else { if ($_externalClose && empty($this->InternalClosed)) { $update = "`external_close`='1',`exit`='" . DBManager::RealEscape(time() + 1) . "'"; } else { if ($_externalClose && !empty($this->InternalClosed)) { $update = "`external_close`='1'"; } else { if ($_internalClosed && empty($this->InternalClosed)) { $update = "`internal_closed`='1',`exit`='" . DBManager::RealEscape(time() + 1) . "'"; } else { if ($_internalDeclined && empty($this->InternalDeclined)) { $update = "`internal_declined`='1'"; } else { $update = "`external_active`='1'"; } } } } if (($_internalClosed || $_externalClose) && !empty($this->AllocatedTime)) { UserGroup::RemoveNonPersistantMember($this->SystemId); //queryDB(true,"DELETE FROM `".DB_PREFIX.DATABASE_GROUP_MEMBERS."` WHERE `user_id`='".DBManager::RealEscape($this->SystemId)."';"); $params = $this->CalculateChatResponseTime(); $update .= ",`response_time`=" . $params[0] . ",`chat_posts`=" . $params[1]; } queryDB(true, "UPDATE `" . DB_PREFIX . DATABASE_VISITOR_CHATS . "` SET " . $update . " WHERE `chat_id`='" . DBManager::RealEscape($this->ChatId) . "' LIMIT 1;"); } queryDB(true, "UPDATE `" . DB_PREFIX . DATABASE_CHAT_ARCHIVE . "` SET `endtime`=" . $this->LastActive . (!empty($this->AllocatedTime) ? ",`time`=" . $this->AllocatedTime : "") . " WHERE `chat_id`='" . DBManager::RealEscape($this->ChatId) . "' LIMIT 1;"); } if (!empty($this->ChatVoucherId)) { $ticket = new CommercialChatVoucher(null, $this->ChatVoucherId); $ticket->UpdateVoucherChatTime(0); } }