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);
     }
 }