static function CloseChats()
 {
     $result = DBManager::Execute(false, "SELECT * FROM `" . DB_PREFIX . DATABASE_CHAT_ARCHIVE . "` WHERE `chat_type`=1 AND `closed`=0 AND `transcript_sent`=0;");
     while ($row = DBManager::FetchArray($result)) {
         $results = DBManager::Execute(false, "SELECT * FROM `" . DB_PREFIX . DATABASE_VISITOR_CHATS . "` WHERE `chat_id`='" . DBManager::RealEscape($row["chat_id"]) . "' AND (`exit`>0 OR `last_active`<" . (time() - Server::$Configuration->File["timeout_track"]) . ");");
         if ($results && ($rows = DBManager::FetchArray($results))) {
             $botchat = !empty($row["internal_id"]) && Server::$Operators[$row["internal_id"]]->IsBot;
             $chat = new VisitorChat($rows);
             $chat->LoadMembers();
             $startResult = 0;
             $endResult = 0;
             if ($botchat) {
                 $chat->CloseChat();
                 $lastOp = $row["internal_id"];
                 $waitingtime = 1;
                 $startResult = 1;
             } else {
                 $lastOp = $chat->GetLastOperator();
                 $waitingtime = $chat->GetTotalWaitingTime($startResult, $endResult);
             }
             $chatBrowser = new VisitorBrowser($chat->BrowserId, $chat->UserId, false);
             $chatBrowser->LoadUserData();
             Chat::SaveToArchive($row["chat_id"], $chatBrowser->UserData->Fullname, $rows["visitor_id"], $lastOp, $rows["request_group"], $chatBrowser->UserData->Email, $chatBrowser->UserData->Company, $chatBrowser->UserData->Phone, $row["host"], $row["ip"], $chatBrowser->UserData->Text, empty(Server::$Configuration->File["gl_sctb"]) && $botchat, $waitingtime, $startResult, $endResult);
         }
     }
 }
function closeChats()
{
    global $INTERNAL, $CONFIG;
    $result = queryDB(false, "SELECT * FROM `" . DB_PREFIX . DATABASE_CHAT_ARCHIVE . "` WHERE `chat_type`=1 AND `closed`=0 AND `transcript_sent`=0;");
    while ($row = DBManager::FetchArray($result)) {
        $results = queryDB(false, "SELECT * FROM `" . DB_PREFIX . DATABASE_VISITOR_CHATS . "` WHERE `chat_id`='" . DBManager::RealEscape($row["chat_id"]) . "' AND (`exit`>0 OR `last_active`<" . (time() - $CONFIG["timeout_track"]) . ");");
        if ($results && ($rows = DBManager::FetchArray($results))) {
            $botchat = !empty($row["internal_id"]) && $INTERNAL[$row["internal_id"]]->IsBot;
            $chat = new VisitorChat($rows);
            $chat->LoadMembers();
            $startResult = 0;
            $endResult = 0;
            $waitingtime = 0;
            if ($botchat) {
                $chat->CloseChat();
                $lastOp = $row["internal_id"];
                $waitingtime = 1;
                $startResult = 1;
            } else {
                $lastOp = $chat->GetLastOperator($waitingtime, $startResult, $endResult);
            }
            closeArchiveEntry($row["chat_id"], $rows["fullname"], $rows["visitor_id"], $lastOp, $rows["request_group"], $rows["email"], $rows["company"], $rows["phone"], $row["host"], $row["ip"], $rows["question"], empty($CONFIG["gl_sctb"]) && $botchat, $waitingtime, $startResult, $endResult);
        }
    }
}
 function CreateBrowser($_row, $_loadHistory = false)
 {
     global $CONFIG;
     if (empty($_row["is_chat"])) {
         $browser = new VisitorBrowser($_row["id"], $_row["visitor_id"], $_loadHistory);
         $browser->Query = !empty($_row["query"]) ? getIdValue(DATABASE_VISITOR_DATA_QUERIES, "query", $_row["query"]) : "";
         $browser->Email = $_row["email"];
         $browser->Fullname = $_row["fullname"];
         $browser->Company = $_row["company"];
         $browser->Customs = @unserialize($_row["customs"]);
         $browser->LastUpdate = $_row["last_update"];
     } else {
         $browser = new VisitorChat($_row["visitor_id"], $_row["id"]);
         $browser->Load();
         if ($browser->LastActive < time() - $CONFIG["timeout_chats"] && !empty($browser->InternalUser) && !$browser->InternalUser->IsBot) {
             $browser->CloseChat();
             $browser->CloseWindow();
         }
     }
     $browser->Overlay = !empty($_row["overlay"]);
     $browser->OverlayContainer = !empty($_row["overlay_container"]);
     $browser->LastActive = $_row["last_active"];
     return $browser;
 }
 function CreateBrowser($_row, $_loadHistory = false, $_loadChat = true)
 {
     if (empty($_row["is_chat"])) {
         $browser = new VisitorBrowser($_row["id"], $_row["visitor_id"], $_loadHistory);
         $browser->Query = !empty($_row["query"]) ? CacheManager::GetDataTableValueFromId(DATABASE_VISITOR_DATA_QUERIES, "query", $_row["query"]) : "";
         $browser->LastUpdate = $_row["last_update"];
     } else {
         $browser = new VisitorChat($_row["visitor_id"], $_row["id"], false);
         if ($_loadChat) {
             $browser->Load();
             if ($browser->LastActive < time() - Server::$Configuration->File["timeout_chats"] && !empty($browser->OperatorId) && !Server::$Operators[$browser->OperatorId]->IsBot) {
                 $browser->CloseChat();
                 $browser->CloseWindow();
             }
         }
     }
     $browser->UserData = new UserData();
     if (isset($_row["h_fullname"])) {
         $browser->UserData->SetDetails($_row);
     }
     $browser->Created = $_row["created"];
     $browser->Overlay = !empty($_row["overlay"]);
     $browser->OverlayContainer = !empty($_row["overlay_container"]);
     $browser->LastActive = $_row["last_active"];
     return $browser;
 }