uawdijnntqw1x1x1
IP : 216.73.216.26
Hostname : server.wtmmart.in
Kernel : Linux server.wtmmart.in 4.18.0-553.45.1.el8_10.x86_64 #1 SMP Wed Mar 19 09:44:46 EDT 2025 x86_64
Disable Function : exec,passthru,shell_exec,system
OS : Linux
PATH:
/
home2
/
wtmwscom
/
public_html
/
DOCS
/
..
/
livezila
/
_lib
/
functions.external.inc.php
/
/
<?php /**************************************************************************************** * LiveZilla functions.external.inc.php * * Copyright 2018 LiveZilla GmbH * All rights reserved. * LiveZilla is a registered trademark. * * Improper changes to this file may cause critical errors. ***************************************************************************************/ if(!defined("IN_LIVEZILLA")) die(); function processPost($id,$post,$systemid,$counter,$rgroup,$chatid,$_received=false) { $post->Id = $id; if(isset($_POST["p_pt" . $counter])) { $post->Translation = Encoding::Base64UrlDecode($_POST["p_pt" . $counter]); $post->TranslationISO = Encoding::Base64UrlDecode($_POST["p_ptiso" . $counter]); } $post->ChatId = $chatid; $post->ReceiverOriginal = $post->Receiver = $systemid; $post->ReceiverGroup = $rgroup; $post->Received=$_received; $post->Save(); if((!empty(Server::$Configuration->File["gl_sfc"]) && Visitor::CreateSPAMFilter(VisitorMonitoring::$Visitor->UserId))) return false; return true; } function refreshPicture() { if(!empty(Server::$Operators[VisitorMonitoring::$Visitor->Browsers[0]->OperatorId]->WebcamPicture)) $edited = Server::$Operators[VisitorMonitoring::$Visitor->Browsers[0]->OperatorId]->WebcamPictureTime; else if(!empty(Server::$Operators[VisitorMonitoring::$Visitor->Browsers[0]->OperatorId]->ProfilePicture)) $edited = Server::$Operators[VisitorMonitoring::$Visitor->Browsers[0]->OperatorId]->ProfilePictureTime; else $edited = 0; VisitorMonitoring::$Visitor->AddFunctionCall("lz_chat_set_intern_image(".$edited.",'" . Server::$Operators[VisitorMonitoring::$Visitor->Browsers[0]->OperatorId]->GetOperatorPictureFile() . "',false);",false); VisitorMonitoring::$Visitor->AddFunctionCall("lz_chat_set_config(".Server::$Configuration->File["timeout_chats"].",".Server::$Configuration->File["poll_frequency_clients"].");",false); } function updateMembers($_dgroup="") { Server::InitDataBlock(array("DBCONFIG")); $groupname = addslashes(Server::$Groups[VisitorMonitoring::$Visitor->Browsers[0]->DesiredChatGroup]->GetDescription(VisitorMonitoring::$Visitor->Language)); foreach(Server::$Groups as $group) if($group->IsDynamic && isset($group->Members[VisitorMonitoring::$Visitor->Browsers[0]->SystemId])) { $_dgroup = $group->Descriptions["EN"]; foreach($group->Members as $member => $persistent) if(true || $member != VisitorMonitoring::$Visitor->Browsers[0]->SystemId) { $isOperator = false; $isBusyAway = false; if(!empty(Server::$Operators[$member])) { $isOperator = true; if(Server::$Operators[$member]->Status==USER_STATUS_OFFLINE) continue; if(Server::$Operators[$member]->Status != USER_STATUS_ONLINE || Server::$Operators[$member]->IsBot) $isBusyAway = true; $name = Server::$Operators[$member]->Fullname; } else { $data = UserData::FromSystemId($member); $name = $data->Fullname; if(empty($name)) $name = LocalizationManager::$TranslationStrings["client_guest"]; if($member != VisitorMonitoring::$Visitor->Browsers[0]->SystemId) { $chatobj = VisitorChat::GetBySystemId($member); if(!($chatobj != null && !$chatobj->ExternalClosed && !$chatobj->InternalClosed)) continue; } } VisitorMonitoring::$Visitor->AddFunctionCall("lz_chat_set_room_member('".base64_encode($member)."','".base64_encode($name)."',".To::BoolString($isOperator).",".To::BoolString($isBusyAway).",true);",false); } } foreach(VisitorMonitoring::$Visitor->Browsers[0]->Members as $sysid => $chatm) if($chatm->Status < 2 && empty($chatm->Declined) && Server::$Operators[$sysid]->Status!=USER_STATUS_OFFLINE) VisitorMonitoring::$Visitor->AddFunctionCall("lz_chat_set_room_member('".base64_encode($sysid)."','".base64_encode(Server::$Operators[$sysid]->Fullname)."',true,".To::BoolString(Server::$Operators[$sysid]->Status!=USER_STATUS_ONLINE).",false);",false); /* $fb = !empty(Server::$Groups[VisitorMonitoring::$Visitor->Browsers[0]->DesiredChatGroup]->ChatFunctions[3]) && !empty(Server::$Configuration->Database["gl_fb"]); if(isset(Server::$Configuration->File["gl_sfnc"]) && Server::$Configuration->File["gl_sfnc"] === "0") $name = Server::$Operators[VisitorMonitoring::$Visitor->Browsers[0]->OperatorId]->Firstname; else $name = Server::$Operators[VisitorMonitoring::$Visitor->Browsers[0]->OperatorId]->Fullname; //VisitorMonitoring::$Visitor->AddFunctionCall("OverlayChatWidgetV2.SetHost(\"".base64_encode(Server::$Operators[VisitorMonitoring::$Visitor->Browsers[0]->OperatorId]->UserId)."\",".To::BoolString(Server::$Operators[VisitorMonitoring::$Visitor->Browsers[0]->OperatorId]->IsBot).",\"".base64_encode(addslashes($name))."\",\"". base64_encode($groupname)."\",\"".base64_encode(strtolower(Server::$Operators[VisitorMonitoring::$Visitor->Browsers[0]->OperatorId]->Language))."\",".To::BoolString(Server::$Operators[VisitorMonitoring::$Visitor->Browsers[0]->OperatorId]->Typing==VisitorMonitoring::$Visitor->Browsers[0]->SystemId).",false,\"". base64_encode($_dgroup)."\",".To::BoolString($fb).",null);",false); */ } function getSessionId() { if(!Is::Null(Cookie::Get("userid"))) $session = Cookie::Get("userid"); else if(!empty($_GET[GET_TRACK_USERID])) $session = Encoding::Base64UrlDecode(getParam(GET_TRACK_USERID)); else Cookie::Set("userid",$session = Visitor::IDValidate()); return Visitor::IDValidate($session); } function isTicketFlood() { $result = DBManager::Execute(true, "SELECT count(id) as ticket_count FROM `" . DB_PREFIX . DATABASE_TICKET_MESSAGES . "` WHERE time>" . DBManager::RealEscape(time() - 86400) . " AND ip='" . DBManager::RealEscape(Communication::GetIP()) . "';"); if($result) { $row = DBManager::FetchArray($result); return ($row["ticket_count"] > MAX_TICKETS_PER_DAY); } else return true; } function isChat() { define("SESSION",getSessionId()); Server::InitDataBlock(array("FILTERS")); define("IS_FLOOD",Filter::IsFlood(Communication::GetIP(),null,true)); define("IS_FILTERED",Server::$Filters->MatchUser(LocalizationManager::ImplodeLanguages(((!empty($_SERVER["HTTP_ACCEPT_LANGUAGE"])) ? $_SERVER["HTTP_ACCEPT_LANGUAGE"] : "")),SESSION)); $parameters = Communication::GetTargetParameters(); if(operatorsAvailable(0,$parameters["exclude"],$parameters["include_group"],$parameters["include_user"]) > 0) return true; return false; } class OverlayChat { public $Botmode; public $Human; public $HumanGeneral; public $RepollRequired; public $OperatorCount; public $Flags; public $LastMessageReceived; public $LastPostReceived; public $IsHumanChatAvailable; public $IsChatAvailable; public $ChatHTML; public $NewMessages = array(); public $Posts = array(); public $FullLoad; public $LastPoster; public $EyeCatcher; public $GroupBuilder; public $CurrentOperatorId; public $BotTitle; public $OperatorPostCount = 0; public $ChatInviteCount = 0; public $PlaySound; public $SpeakingToHTML; public $SpeakingToAdded; public $Version = 1; public static $MaxPosts = 50; public static $Response; function __construct() { $this->Flags = array(); VisitorChat::$Router = new ChatRouter(); } function GetChatStatus() { if(VisitorMonitoring::$Visitor->Browsers[0]->Declined) return 0; else if($this->Botmode && !empty(VisitorMonitoring::$Visitor->Browsers[0]->OperatorId) && Server::$Operators[VisitorMonitoring::$Visitor->Browsers[0]->OperatorId]->IsBot) return 1; else if(VisitorMonitoring::$Visitor->Browsers[0]->Waiting || VisitorMonitoring::$Visitor->Browsers[0]->Status>0) return max(VisitorMonitoring::$Visitor->Browsers[0]->Status,VisitorMonitoring::$Visitor->Browsers[0]->Waiting); else return 0; } function GetWaitingMessage() { $wmsg = "null"; if(!empty(Server::$Configuration->File["gl_wmes"]) && Server::$Configuration->File["gl_wmes"]>-1 /*&& isset($_GET["ovltwo"])*/) { $wmsg = LocalizationManager::$TranslationStrings["client_waiting_message"]; $wmsg = "'".base64_encode($this->GetStatusHTML($wmsg))."'"; } return $wmsg; } function GetDeclinedMessage() { $dmsg = LocalizationManager::$TranslationStrings["client_chat_declined"]; if(!empty(Server::$Configuration->File["gl_actt"]) && !empty(VisitorMonitoring::$Visitor->VisitorData->Email)) { $dmsg .= "<br><br><b>" . LocalizationManager::$TranslationStrings["client_chat_declined_get_back"] . "</b>"; } else if(!empty(Server::$Configuration->File["gl_actt"])) { if(isset($_GET["ovltwo"])) $dmsg .= "<br><br><div onclick=\"OverlayChatWidgetV2.SetMode('ticket',true);\" class=\"lz_chat_bot_button keep_alive\">".LocalizationManager::$TranslationStrings["client_leave_a_message"]."</div>"; } return $dmsg; } function Init() { if(empty(VisitorMonitoring::$Visitor->Browsers[0]->ChatId)) { if(VisitorMonitoring::$Visitor->Browsers[0]->SetChatId()) VisitorMonitoring::$Visitor->AddFunctionCall("OverlayChatWidgetV2.__CurrentChatId='".VisitorMonitoring::$Visitor->Browsers[0]->ChatId."';",false); else { //VisitorMonitoring::$Visitor->AddFunctionCall("lz_closed=false;",false); return false; } } if(VisitorMonitoring::$Visitor->Browsers[0]->Status == CHAT_STATUS_OPEN) { VisitorMonitoring::$Visitor->Browsers[0]->SetTargetOperatorId(VisitorChat::$Router,VisitorMonitoring::$Visitor,$this->Botmode,$this->Botmode,null,true,false,$this->Botmode); if((count(VisitorChat::$Router->OperatorsAvailable) + count(VisitorChat::$Router->OperatorsBusy)) > 0) { $chatPosition = VisitorChat::$Router->GetQueuePosition(VisitorMonitoring::$Visitor->Browsers[0]->DesiredChatGroup); $chatWaitingTime = VisitorChat::$Router->GetQueueWaitingTime($chatPosition); VisitorMonitoring::$Visitor->Browsers[0]->SetWaiting(!$this->Botmode && !($chatPosition == 1 && count(VisitorChat::$Router->OperatorsAvailable) > 0 && !(!empty(VisitorMonitoring::$Visitor->Browsers[0]->OperatorId) && Server::$Operators[VisitorMonitoring::$Visitor->Browsers[0]->OperatorId]->Status == USER_STATUS_BUSY))); if(isset($_GET[GET_EXTERN_PUBLIC_CHAT_GROUP])) { $pgcid = Encoding::Base64UrlDecode($_GET[GET_EXTERN_PUBLIC_CHAT_GROUP]); if(strlen($pgcid)==32) { $sysop = Operator::GetSystemOperator(); VisitorMonitoring::$Visitor->Browsers[0]->CreateChat($sysop,VisitorMonitoring::$Visitor,true,"","",false); VisitorMonitoring::$Visitor->Browsers[0]->SetPublicGroup($pgcid); $room = new UserGroup(); $room->Id = $pgcid; $room->AddMember(VisitorMonitoring::$Visitor->Browsers[0]->SystemId, false); VisitorMonitoring::$Visitor->Browsers[0]->RemoteActivate($sysop); $this->RepollRequired = true; return false; } } else if(!VisitorMonitoring::$Visitor->Browsers[0]->Waiting) { if(Server::$Configuration->File["gl_alloc_mode"] != ALLOCATION_MODE_ALL || !empty(VisitorMonitoring::$Visitor->Browsers[0]->DesiredChatPartner)) { VisitorMonitoring::$Visitor->Browsers[0]->CreateChat(Server::$Operators[VisitorMonitoring::$Visitor->Browsers[0]->DesiredChatPartner],VisitorMonitoring::$Visitor,true,"","",false); } else { foreach(VisitorChat::$Router->OperatorsAvailable as $intid => $am) if(!VisitorMonitoring::$Visitor->Browsers[0]->CreateChat(Server::$Operators[$intid],VisitorMonitoring::$Visitor,false,"","",false)) break; } VisitorMonitoring::$Visitor->Browsers[0]->LoadMembers(); } else { if(VisitorMonitoring::$Visitor->Browsers[0]->IsMaxWaitingTime(true)) { VisitorMonitoring::$Visitor->AddFunctionCall("OverlayChatWidgetV2.__NoBotChat = false;",false); VisitorMonitoring::$Visitor->Browsers[0]->UpdateUserStatus(false,false,true); } $qtext = (!empty(Server::$Configuration->File["gl_sho_qu_inf"]) ? LocalizationManager::$TranslationStrings["client_ints_are_busy"]." ".LocalizationManager::$TranslationStrings["client_queue_message"] : LocalizationManager::$TranslationStrings["client_ints_are_busy"]); VisitorMonitoring::$Visitor->Browsers[0]->ShowQueueInformation(VisitorMonitoring::$Visitor,$chatPosition,$chatWaitingTime,$this->GetStatusHTML($qtext)); if(!VisitorChat::$Router->WasTarget && !empty(VisitorMonitoring::$Visitor->Browsers[0]->DesiredChatPartner)) VisitorMonitoring::$Visitor->Browsers[0]->SetDesiredChatPartner(""); VisitorMonitoring::$Visitor->Browsers[0]->CreateArchiveEntry(null,VisitorMonitoring::$Visitor); } } else { // no operator available - back to bot mode VisitorMonitoring::$Visitor->AddFunctionCall("OverlayChatWidgetV2.__NoBotChat = false;",false); } } else { if(empty(VisitorMonitoring::$Visitor->Browsers[0]->ArchiveCreated) && !empty(VisitorMonitoring::$Visitor->Browsers[0]->DesiredChatPartner)) { VisitorMonitoring::$Visitor->Browsers[0]->CreateChat(Server::$Operators[VisitorMonitoring::$Visitor->Browsers[0]->DesiredChatPartner],VisitorMonitoring::$Visitor,true); } } return true; } function BuildElements() { $this->SpeakingToHTML = empty(VisitorMonitoring::$Visitor->Browsers[0]->GroupChat) ? $this->GetSpeakingToHTML($this->CurrentOperatorId) : "";; $this->Posts = array(); $pstrchngreq = $this->PlaySound = $this->SpeakingToAdded = false; $this->OperatorPostCount = 0; $this->Flags["LPP"] = $this->LastPoster; if(!VisitorMonitoring::$Visitor->FirstCall && !VisitorMonitoring::$Visitor->Browsers[0]->Declined && !empty(VisitorMonitoring::$Visitor->Browsers[0]->ChatId) && $result = DBManager::Execute(true, "SELECT * FROM `" . DB_PREFIX . DATABASE_POSTS . "` WHERE `chat_id`='" . DBManager::RealEscape(VisitorMonitoring::$Visitor->Browsers[0]->ChatId) . "' AND `chat_id`!='' AND `chat_id`!='0' AND (`receiver`='" . DBManager::RealEscape(VisitorMonitoring::$Visitor->Browsers[0]->SystemId) . "' OR (`sender`='" . DBManager::RealEscape(VisitorMonitoring::$Visitor->Browsers[0]->SystemId) . "' AND `repost`=0)) GROUP BY `id` ORDER BY `time` ASC, `micro` ASC;")) { $all = DBManager::GetRowCount($result); if($all > 0) { $count = OverlayChat::$MaxPosts-$all; while($row = DBManager::FetchArray($result)) { if($count++ >= 0) { $postobj = new Post($row); if(empty(Server::$Operators[$postobj->Sender])) { $postobj->Text = htmlentities($postobj->Text,ENT_QUOTES,'UTF-8'); $postobj->Translation = htmlentities($postobj->Translation,ENT_QUOTES,'UTF-8'); } if(VisitorMonitoring::$Visitor->Browsers[0]->AllocatedTime > 0 && VisitorMonitoring::$Visitor->Browsers[0]->AllocatedTime && !$this->SpeakingToAdded) { $this->Flags["LPP"] = "sys"; $this->SpeakingToAdded = true; } $post = $this->GetPostHTML($postobj->Text, $postobj->Translation, ($this->Flags["LPP"] != $postobj->Sender || $pstrchngreq), (($postobj->Sender != VisitorMonitoring::$Visitor->Browsers[0]->SystemId) ? $postobj->SenderName : VisitorMonitoring::$Visitor->VisitorData->Fullname), $postobj->Created, $postobj->Sender, VisitorMonitoring::$Visitor->Browsers[0]->SystemId); $pstrchngreq = false; if($postobj->Sender != VisitorMonitoring::$Visitor->Browsers[0]->SystemId) $this->OperatorPostCount++; if(!$postobj->Received && $postobj->Sender != VisitorMonitoring::$Visitor->Browsers[0]->SystemId) $this->PlaySound = true; if($this->FullLoad || $postobj->Sender != VisitorMonitoring::$Visitor->Browsers[0]->SystemId || $postobj->BrowserId != VisitorMonitoring::$Browser->BrowserId) $this->Flags["LPP"] = $postobj->Sender; if(empty($_GET["full"]) && $postobj->Id == $this->Flags["LPR"]) { $this->PlaySound = false; $this->Posts = array(); //$this->Posts[] = $this->SpeakingToHTML; $this->SpeakingToAdded = true; $this->OperatorPostCount = 0; $this->Flags["LPP"] = (!empty($this->SpeakingToHTML)) ? "sys" : $this->LastPoster; if(VisitorMonitoring::$Visitor->Browsers[0]->AllocatedTime > 0 && $postobj->Created < VisitorMonitoring::$Visitor->Browsers[0]->AllocatedTime) $pstrchngreq = true; } else { if($this->FullLoad || $postobj->Sender != VisitorMonitoring::$Visitor->Browsers[0]->SystemId || $postobj->BrowserId != VisitorMonitoring::$Browser->BrowserId) { $this->Posts[] = $post; } } $this->LastPostReceived = "'".base64_encode($postobj->Id)."'"; } } } } } function RemoveTicketFile() { $tfitd = Communication::ReadParameter("tra","",false); if(strlen($tfitd)==32) KnowledgeBase::RemoveTicketFile($tfitd,true); } function ProcessTicket($_visitor) { if(!empty($_GET["tid"])) { if($ticket = $_visitor->SaveTicket(UserGroup::ReadParams(),$_visitor->GeoCountryISO2,Communication::GetParameter("cmb","",$c)=="1",true,BaseURL::GetInputURL())) { $ticket->SendAutoresponder($_visitor,$_visitor->Browsers[0]); } } } function CreateChatTemplate() { $this->ChatHTML = ""; if(Visitor::$PollCount == 1) { $this->ChatHTML = str_replace("<!--server-->",LIVEZILLA_URL,IOStruct::GetFile(TEMPLATE_SCRIPT_OVERLAY_CHAT . "chat.tpl")); $this->ChatHTML = str_replace("<!--file_upload_template-->",IOStruct::GetFile(PATH_TEMPLATES."file_upload.tpl"),$this->ChatHTML); $this->ChatHTML = str_replace("<!--dir-->",LocalizationManager::$Direction,$this->ChatHTML); $this->ChatHTML = DataInput::GetChatLoginInputs($this->ChatHTML,MAX_INPUT_LENGTH_OVERLAY,true); $this->ChatHTML = str_replace("<!--tr_vis-->",((strlen(Server::$Configuration->File["gl_otrs"])>1) ? "block" : "none"),$this->ChatHTML); $this->ChatHTML = str_replace("<!--overlay_input_max_length-->",MAX_INPUT_LENGTH_OVERLAY,$this->ChatHTML); $this->ChatHTML = str_replace("<!--ocpd-->",(empty(Server::$Configuration->File["gl_ocpd"]) ? "display:none" : ""),$this->ChatHTML); $this->ChatHTML = Server::Replace($this->ChatHTML,true,false); $this->ChatHTML = OverlayChat::ReplaceColors($this->ChatHTML,false); $this->ChatHTML = str_replace("<!--tc-->",Communication::ReadParameter("ovlct","#fff"),$this->ChatHTML); $this->ChatHTML = str_replace("<!--apo-->",((!empty($_GET["ovlapo"])) ? "" : "display:none;"),$this->ChatHTML); $this->ChatHTML = str_replace("<!--et_vis-->",((!empty(Server::$Configuration->File["gl_retr"]) && !empty(Server::$Configuration->File["gl_soct"])) ? "block":"none"),$this->ChatHTML); $this->ChatHTML = str_replace("<!--activate_transcript-->",((empty(Server::$Configuration->File["gl_soct"])) ? "":"CHECKED"),$this->ChatHTML); $this->ChatHTML = str_replace("<!--param-->",@Server::$Configuration->File["gl_cpas"],$this->ChatHTML); $this->ChatHTML = str_replace("<!--languages-->",GroupBuilder::GetLanguageSelects(LocalizationManager::GetBrowserLocalization()),$this->ChatHTML); } } function DefineTargets() { if(!empty($_GET["tth"]) || VisitorMonitoring::$Visitor->IsInChat(true,VisitorMonitoring::$Visitor->Browsers[0]) || Visitor::$OpenChatExternal) { define("IGNORE_WM",true); } if(defined("IGNORE_WM") && !empty(VisitorMonitoring::$Visitor->Browsers[0]->DesiredChatPartner) && Server::$Operators[VisitorMonitoring::$Visitor->Browsers[0]->DesiredChatPartner]->IsBot) VisitorMonitoring::$Visitor->Browsers[0]->SetDesiredChatPartner(""); $groupSelected = false; if(UserGroup::ReadParams() != "" /*&& VisitorMonitoring::$Visitor->Browsers[0]->Status == 0*/) { VisitorMonitoring::$Visitor->Browsers[0]->DesiredChatGroup = UserGroup::ReadParams(); $groupSelected = true; } if(!empty($_GET["operator"])) { VisitorMonitoring::$Visitor->Browsers[0]->SetDesiredChatPartner(Operator::GetSystemId(Operator::ReadParams())); } if(!empty(VisitorMonitoring::$Visitor->Browsers[0]->InitChatWith)) { VisitorMonitoring::$Visitor->Browsers[0]->SetDesiredChatPartner(VisitorMonitoring::$Visitor->Browsers[0]->InitChatWith); } if(!$groupSelected && !(!empty(VisitorMonitoring::$Visitor->Browsers[0]->DesiredChatPartner) && !empty(VisitorMonitoring::$Visitor->Browsers[0]->DesiredChatGroup) && !empty(VisitorMonitoring::$Visitor->Browsers[0]->OperatorId))) { VisitorMonitoring::$Visitor->Browsers[0]->DesiredChatGroup = $this->GroupBuilder->GetTargetGroup($this->OperatorCount,VisitorMonitoring::$Visitor->Browsers[0]->DesiredChatPartner,VisitorMonitoring::$Visitor->Browsers[0]->DesiredChatGroup); } else $this->OperatorCount = 1; ChatRouter::$WelcomeManager = false; $this->Human = $this->HumanGeneral = false; $this->RepollRequired = false; } function DefineModes() { $humancount = 0; $botcount = 0; foreach(Server::$Operators as $sysId => $internaluser) { $isex = $internaluser->IsExternal(Server::$Groups, null, array(VisitorMonitoring::$Visitor->Browsers[0]->DesiredChatGroup), VisitorMonitoring::$Visitor->Browsers[0]->DesiredChatPartner==$sysId, false); if($isex && $internaluser->Status < USER_STATUS_OFFLINE && !$internaluser->Deactivated) { if(!$internaluser->IsBot) { $this->HumanGeneral = true; $humancount++; } else $botcount++; if(!$internaluser->IsBot && !ChatRouter::$WelcomeManager) { $this->Botmode = false; } else if($internaluser->IsBot && $internaluser->WelcomeManager && !defined("IGNORE_WM")) { $this->Botmode = ChatRouter::$WelcomeManager = true; } if(!$internaluser->IsBot) { $this->Human = true; if(!empty(VisitorMonitoring::$Visitor->Browsers[0]->InitChatWith) && $sysId == VisitorMonitoring::$Visitor->Browsers[0]->InitChatWith) { $this->Botmode = ChatRouter::$WelcomeManager = false; break; } } } else if($internaluser->Status < USER_STATUS_OFFLINE && !$internaluser->Deactivated && !$internaluser->IsBot && $isex) $this->HumanGeneral = true; } if($humancount == 0 && $botcount == 0) { $this->Botmode = false; $this->Human = false; $this->OperatorCount = 0; } else if($humancount == 0 && $botcount > 0) { $this->Botmode = true; $this->Human = false; } //logit(defined("IGNORE_WM")); //logit("Defined; " . $this->Botmode); } function SetHost($_systemId) { $groupId = (!empty($_systemId)) ? "'".base64_encode(VisitorMonitoring::$Visitor->Browsers[0]->DesiredChatGroup)."'" : "null"; $groupDescription = (!empty($_systemId)) ? "'".base64_encode(Server::$Groups[VisitorMonitoring::$Visitor->Browsers[0]->DesiredChatGroup]->GetDescription(VisitorMonitoring::$Visitor->Language))."'" : "null"; $userId = (!empty($_systemId)) ? "'".base64_encode(Server::$Operators[$_systemId]->UserId)."'" : "null"; $opname = (!empty($_systemId)) ? "'".base64_encode(Server::$Operators[$_systemId]->Fullname)."'" : "null"; $language = (!empty($_systemId)) ? "'".base64_encode(Server::$Operators[$_systemId]->Language)."'" : "null"; $bot = (!empty($_systemId)) ? To::BoolString(Server::$Operators[$_systemId]->IsBot) : "false"; $image = (!empty($_systemId)) ? "'".base64_encode(LIVEZILLA_URL . Server::$Operators[$_systemId]->GetOperatorPictureFile())."'" : "null"; $functions = (!empty($_systemId) && is_array(Server::$Groups[VisitorMonitoring::$Visitor->Browsers[0]->DesiredChatGroup]->ChatFunctions)) ? "[".implode(",",Server::$Groups[VisitorMonitoring::$Visitor->Browsers[0]->DesiredChatGroup]->ChatFunctions)."]" : "null"; $_systemId = (!empty($_systemId)) ? "'".base64_encode($_systemId)."'" : "null"; if($opname != "null" && isset(Server::$Configuration->File["gl_sfnc"]) && Server::$Configuration->File["gl_sfnc"] === "0") if(!empty(VisitorMonitoring::$Visitor->Browsers[0]->OperatorId)) $opname = "'".base64_encode(Server::$Operators[VisitorMonitoring::$Visitor->Browsers[0]->OperatorId]->Firstname)."'"; VisitorMonitoring::$Visitor->AddFunctionCall("OverlayChatWidgetV2.SetHost(".$_systemId.",".$bot.",".$groupId.",".$groupDescription.",".$userId.",".$language.",".$image.",".$opname.",".$functions.");",false); } function SetMembers() { $list = ""; if(!empty(VisitorMonitoring::$Visitor->Browsers[0]->GroupChat)) { $pcgobj = new UserGroup(); $pcgobj->Id = VisitorMonitoring::$Visitor->Browsers[0]->GroupChat; $pcgobj->LoadMembers(); foreach($pcgobj->Members as $id => $member) { if(!empty($list)) $list .= ','; $op = false; if(isset(Server::$Operators[$id])) { $name = Server::$Operators[$id]->GetPublicName(); $op = true; if(Server::$Operators[$id]->Status == USER_STATUS_OFFLINE) continue; } else { $vd = UserData::FromSystemId($id); $name = $vd->Fullname; $vc = VisitorChat::GetBySystemId($id); if($vc==null) continue; } $list .= "{id:'".$id."',name:'".Encoding::Base64UrlEncode($name)."',op:".To::BoolString($op)."}"; } VisitorMonitoring::$Visitor->AddFunctionCall("lz_chat_set_members('".Encoding::Base64UrlEncode($pcgobj->Id)."',true,[".$list."]);",false); } else if(VisitorMonitoring::$Visitor->Browsers[0]->Activated == CHAT_STATUS_ACTIVE) { $count = 0; foreach(VisitorMonitoring::$Visitor->Browsers[0]->Members as $member) { if(!empty($list)) $list .= ','; $op = false; if($member->Status == 2) continue; $id = $member->SystemId; if(isset(Server::$Operators[$id])) { $name = Server::$Operators[$id]->GetPublicName(); $op = true; if(Server::$Operators[$id]->Status == USER_STATUS_OFFLINE) continue; if(Server::$Operators[$id]->IsBot) continue; } else { $vd = UserData::FromSystemId($id); $name = $vd->Fullname; $vc = VisitorChat::GetBySystemId($id); if($vc==null) continue; } $list .= "{id:'".$id."',name:'".Encoding::Base64UrlEncode($name)."',op:".To::BoolString($op)."}"; $count++; } // add myself if(!empty($list)) $list .= ","; $list .= "{id:'".VisitorMonitoring::$Visitor->Browsers[0]->SystemId."',name:'".Encoding::Base64UrlEncode(VisitorMonitoring::$Visitor->VisitorData->Fullname)."',op:".To::BoolString(false)."}"; VisitorMonitoring::$Visitor->AddFunctionCall("lz_chat_set_members('',".To::BoolString($count>1).",[".$list."]);",false); } else { VisitorMonitoring::$Visitor->AddFunctionCall("lz_chat_set_members('',".To::BoolString(false).",[]);",false); } } function AddHTML($_html,$_poster,$_lmr="",$_showInPreview=true,$_chatInvite=false,$_onlineOnly=false) { if(!empty($_lmr)) $this->LastMessageReceived = "'".base64_encode($_lmr)."'"; $_html = str_replace("<!--server-->",LIVEZILLA_URL,$_html); $this->NewMessages[] = array(base64_encode($_html),$_lmr,$_showInPreview ? 1 : 0,$_chatInvite ? 1 : 0,$_onlineOnly ? 1 : 0); $this->LastPoster = $_poster; } function GetPostHTML($_text, $_translation, $_add, $_name, $_time, $_senderId, $myId="", $_postUniqueId="") { $isOperator = isset(Server::$Operators[$_senderId]); if(empty($_postUniqueId)) $_postUniqueId = getId(10); $myPost = $myId==$_senderId && $myId != ""; $bot = (!empty($_senderId) && isset(Server::$Operators[$_senderId]) && Server::$Operators[$_senderId]->IsBot); $exchtmpl = IOStruct::GetFile(TEMPLATE_SCRIPT_OVERLAY_CHAT . "messageexternal.tpl"); $exchtmpl = str_replace("<!--ocpd-->",(empty(Server::$Configuration->File["gl_ocpd"]) ? "display:none" : ""),$exchtmpl); $post = ($_add) ? ((!$isOperator) ? $exchtmpl : IOStruct::GetFile(TEMPLATE_SCRIPT_OVERLAY_CHAT . "messageoperator.tpl")) : ((!$isOperator) ? IOStruct::GetFile(TEMPLATE_SCRIPT_OVERLAY_CHAT . "messageexternaladd.tpl") : IOStruct::GetFile(TEMPLATE_SCRIPT_OVERLAY_CHAT . "messageoperatoradd.tpl")); $image = ($bot) ? "<td rowspan=\"2\" style=\"vertical-align:top;\"><img style=\"border-radius:2px;margin:4px 0 0 4px;\" src=\"".LIVEZILLA_URL.Server::$Operators[$_senderId]->GetOperatorPictureFile()."\" width=\"60\" height=\"45\"></td>" : ""; $name = ($isOperator) ? Str::Cut($_name,32,true) : ((!empty($_name)) ? Str::Cut($_name,28,true) : LocalizationManager::$TranslationStrings["client_guest"]); $post = str_replace("<!--name-->",htmlentities($name,ENT_QUOTES,"UTF-8"),$post); $post = str_replace("<!--ename-->",Encoding::Base64UrlEncode($name),$post); $post = str_replace("<!--time-->",$_time,$post); $post = str_replace("<!--id-->",$_postUniqueId,$post); $post = str_replace("<!--picture-->",$image,$post); $post = str_replace("<!--sender_id-->",urlencode($_senderId),$post); $post = str_replace("<!--my-->",$myPost?1:0,$post); $post = str_replace("<!--lang_client_edit-->",LocalizationManager::$TranslationStrings["client_edit"],$post); $post = str_replace("<!--edit_display-->",($myPost && !empty(Server::$Configuration->File["gl_ocpd"])) ? "inline" : "none",$post); $post = str_replace("<!--bgce-->",($myPost) ? "<!--bgce-->" : Encoding::Base64UrlEncode("#bebebe"),$post); $post = OverlayChat::ReplaceColors($post,$isOperator); if(!$bot) { //$_text = preg_replace('/(<(?!img)\w+[^>]+)(style="[^"]+")([^>]*)(>)/', '${1}${3}${4}', strip_tags($_text,"<div><a><br><b><ul><li><ol><b><i><u><strong><img><iframe>")); if(!empty($_translation)) { $_translation = preg_replace('/(<(?!img)\w+[^>]+)(style="[^"]+")([^>]*)(>)/', '${1}${3}${4}', strip_tags($_translation,"<a><br><b><ul><li><ol><b><i><u><strong><img><iframe>")); $_text = $_translation . "<div class='lz_overlay_translation'>" . $_text . "</div>"; } if(strpos($_text,"[__[screenshot:") !== false) { $parts = explode("[__[",str_replace("]__]","",$_text)); $row_post["text"] = $parts[0]; if(strpos($parts[1],"screenshot:") === 0) { $fid = str_replace("screenshot:","",$parts[1]); if(!$this->FullLoad) $sc = "<div style=\"width:<!--fw-->px;height:<!--fh-->px;padding: 0;overflow: hidden;\"><div style=\"position:absolute; width:<!--fw-->px;height:<!--fh-->px; z-index:1;\"></div><iframe style=\"z-index: 2;width: <!--ifw-->px;height: <!--ifh-->px;transform:scale(<!--ifsc-->);transform-origin:0 0;\" scrolling=\"no\" src=\"" . LIVEZILLA_URL . "getfile.php?file=screenshot.lzsc&noresize=1&id=".$fid."\"></iframe></div>"; else $sc = "Screenshot " . substr($_time,strlen($_time)-4,4); $_text = "<a target=\"_blank\" href=\"" . LIVEZILLA_URL . "getfile.php?file=screenshot.lzsc&id=".$fid."\">".$sc."</a>"; } } if(strpos($_text,"[__[file:") !== false) { $parts = explode("[__[",str_replace("]__]","",$_text)); $row_post["text"] = $parts[0]; $fid = str_replace("file:","",$parts[1]); if(strpos($parts[1],"file:") === 0) if(!Is::Null($res = KnowledgeBaseEntry::GetById($fid))) { if(Is::ImageFilename($res["title"])) { $sc = "<img style=\"max-width: <!--fw-->px;height: auto;\" scrolling=\"no\" src=\"" . LIVEZILLA_URL . "getfile.php?file=screenshot.lzsc&id=".$fid."\">"; $_text = "<a target=\"_blank\" href=\"" . LIVEZILLA_URL . "getfile.php?file=&id=".$fid."\">".$sc."</a>"; } else $_text = "<a target=\"_blank\" href=\"" . LIVEZILLA_URL . "getfile.php?file=&id=".$fid."\">".$res["title"]."</a>"; } } $_text = preg_replace('/\[\_\_\[(.*?)\]\_\_\]/','',$_text); } return str_replace("<!--message-->",$_text,$post); } function GetStatusHTML($_text) { $body = IOStruct::GetFile(TEMPLATE_HTML_MESSAGE_OVERLAY_CHAT_STATUS); return str_replace("<!--message-->",$_text,$body); } function GetSpeakingToHTML($_opId) { $html = ""; if(!empty(VisitorMonitoring::$Visitor->Browsers[0]->OperatorId)) { if(!empty($_opId) && $_opId != VisitorMonitoring::$Visitor->Browsers[0]->OperatorId) $_opId = ""; if(VisitorMonitoring::$Visitor->Browsers[0]->DesiredChatPartner != VisitorMonitoring::$Visitor->Browsers[0]->OperatorId) { VisitorMonitoring::$Visitor->Browsers[0]->SetDesiredChatPartner(VisitorMonitoring::$Visitor->Browsers[0]->OperatorId); VisitorMonitoring::$Visitor->Browsers[0]->Save(); } if(!VisitorMonitoring::$Visitor->Browsers[0]->Closed && VisitorMonitoring::$Visitor->Browsers[0]->InternalActivation && empty($_opId)) { //$text = LocalizationManager::$TranslationStrings["client_now_speaking_to"]; //if(Server::$Operators[VisitorMonitoring::$Visitor->Browsers[0]->OperatorId]->IsBot) // return ""; //$html .= $this->GetStatusHTML(str_replace("<!--operator_name-->",Server::$Operators[VisitorMonitoring::$Visitor->Browsers[0]->OperatorId]->Fullname,$text)); $this->SetHost(VisitorMonitoring::$Visitor->Browsers[0]->OperatorId); } } return $html; } function GetInviteHTML($_operatorID,$_text,$_crid) { if(strpos($_text,"URL|||") === 0) $html = "<img src=\"".str_replace("URL|||","",$_text)."\" />"; else $html = IOStruct::GetFile(TEMPLATE_SCRIPT_OVERLAY_CHAT . "messageinvite.tpl"); $html = str_replace("<!--display_image-->","''",$html); $html = str_replace("<!--sender_id-->",urlencode($_operatorID),$html); $html = str_replace("<!--image-->","<img style=\"border-radius:2px;\" align=\"left\" src=\"".LIVEZILLA_URL.Server::$Operators[$_operatorID]->GetOperatorPictureFile()."\" width=\"80\" height=\"60\">",$html); $html = str_replace("<!--font_color-->","#000000",$html); $html = str_replace("<!--id-->",$_crid,$html); $html = OverlayChat::ReplaceColors($html,true); $html = str_replace("<!--message-->",str_replace("<!--intern_name-->",Server::$Operators[$_operatorID]->Fullname,$_text),$html); return $html; } function ProcessPosts() { $pc = 0; $this->NewMessages = array(); if(!empty($_GET["mi".$pc]) || isset($_GET["ic"]) || VisitorMonitoring::$Visitor->Browsers[0]->Waiting || !empty(VisitorMonitoring::$Visitor->Browsers[0]->InitChatWith)) { if(!$this->Init()) { $this->RepollRequired = true; return false; } else { VisitorMonitoring::$Visitor->AddFunctionCall("OverlayChatWidgetV2.ChatInitiated = false;",false); } } if(!empty(VisitorMonitoring::$Visitor->Browsers[0]->ChatId)) VisitorMonitoring::$Visitor->AddFunctionCall("OverlayChatWidgetV2.__CurrentChatId='".VisitorMonitoring::$Visitor->Browsers[0]->ChatId."';",false); while(!empty($_GET["mi".$pc])) { $id = Communication::ReadParameter("mrid".$pc,md5(VisitorMonitoring::$Visitor->Browsers[0]->SystemId . VisitorMonitoring::$Visitor->Browsers[0]->ChatId . $_GET["mi".$pc])); $senderName = (!empty(VisitorMonitoring::$Visitor->VisitorData->Fullname)) ? VisitorMonitoring::$Visitor->VisitorData->Fullname : (LocalizationManager::$TranslationStrings["client_guest"] . " " . Visitor::GetNoName(VisitorMonitoring::$Visitor->UserId.Communication::GetIP())); $post = new Post($id,VisitorMonitoring::$Visitor->Browsers[0]->SystemId,"",Encoding::Base64UrlDecode($_GET["mp".$pc]),Communication::ReadParameter("mc".$pc,time()),VisitorMonitoring::$Visitor->Browsers[0]->ChatId,$senderName); $post->BrowserId = VisitorMonitoring::$Browser->BrowserId; if(!empty($_GET["mpti".$pc])) { $post->Translation = Encoding::Base64UrlDecode($_GET["mpt".$pc]); $post->TranslationISO = Encoding::Base64UrlDecode($_GET["mpti".$pc]); } $saved = false; if(!VisitorMonitoring::$Visitor->Browsers[0]->Waiting) { foreach(Server::$Groups as $groupid => $group) if($group->IsDynamic && VisitorMonitoring::$Visitor->Browsers[0]->Status == CHAT_STATUS_ACTIVE && isset($group->Members[VisitorMonitoring::$Visitor->Browsers[0]->SystemId])) { foreach($group->Members as $member => $persistent) if($member != VisitorMonitoring::$Visitor->Browsers[0]->SystemId) { if(!empty(Server::$Operators[$member])) processPost($id,$post,$member,$pc,$groupid,VisitorMonitoring::$Visitor->Browsers[0]->ChatId); else processPost($id,$post,$member,$pc,$groupid,CacheManager::GetValueBySystemId($member,"chat_id","")); $saved = true; } $pGroup=$group; } foreach(VisitorMonitoring::$Visitor->Browsers[0]->Members as $systemid => $member) { if(!empty($member->Declined)) continue; if(!empty(Server::$Operators[$systemid]) && !empty($pGroup) && isset($pGroup->Members[$systemid])) continue; if(!(!empty($pGroup) && !empty(Server::$Operators[$systemid]))) $saved = processPost($id,$post,$systemid,$pc,VisitorMonitoring::$Visitor->Browsers[0]->SystemId,VisitorMonitoring::$Visitor->Browsers[0]->ChatId,Server::$Operators[$systemid]->IsBot); } if(!empty(VisitorMonitoring::$Visitor->Browsers[0]->OperatorId) && Server::$Operators[VisitorMonitoring::$Visitor->Browsers[0]->OperatorId]->IsBot) $saved = $this->FeedBot(Server::$Operators[VisitorMonitoring::$Visitor->Browsers[0]->OperatorId],$post,$saved); if($saved) VisitorMonitoring::$Visitor->AddFunctionCall("OverlayChatWidgetV2.ReleasePost('".Encoding::Base64UrlDecode($_GET["mi".$pc])."',".time().");",false); } else { processPost($id,$post,"",$pc,VisitorMonitoring::$Visitor->Browsers[0]->SystemId,VisitorMonitoring::$Visitor->Browsers[0]->ChatId,false); VisitorMonitoring::$Visitor->AddFunctionCall("OverlayChatWidgetV2.ReleasePost('".Encoding::Base64UrlDecode($_GET["mi".$pc])."',".time().");",false); } $pc++; } return true; } function ProcessIdleExit($_chat,$_visitor) { if(!empty(Server::$Configuration->File["gl_acco"]) || !empty(Server::$Configuration->File["gl_accc"])) { $lpo = Chat::GetLastPost($_chat->ChatId,true); $lpc = Chat::GetLastPost($_chat->ChatId,false); } else return; if(!$_chat->InternalActivation) return; $lastposttime = $_chat->AllocatedTime; if($lpo != null && $lpc != null) { $lastposttime = max($lpo->Created,$lpc->Created); $lastposter = ($lpo->Created > $lpc->Created) ? $lpo : $lpc; } else if($lpo != null) { $lastposttime = $lpo->Created; $lastposter = $lpo; } else if($lpc != null) { $lastposttime = $lpc->Created; $lastposter = $lpc; } else $lastposter = "none"; $lang = ($_visitor != null) ? $_visitor->Language : ""; if(!empty(Server::$Configuration->File["gl_acco"])) { if($lastposter != $lpo && !($lpo != null && $lpo->Created > (time() - Server::$Configuration->File["gl_ccoa"]))) { if($lastposttime < (time() - Server::$Configuration->File["gl_ccoa"])) { $pdm = PredefinedMessage::GetByLanguage(Server::$Groups[$_chat->DesiredChatGroup]->PredefinedMessages,$lang); if($pdm != null && !empty($pdm->AutoCloseOperator)) { $lastOp = $_chat->GetHostOperator(); $text = $pdm->AutoCloseOperator; if($_visitor != null) $text = $_visitor->TextReplace($text); $text = Server::$Groups[$_chat->DesiredChatGroup]->TextReplace($text,$lang); $text = Server::$Operators[$lastOp]->TextReplace($text); $text = Configuration::Replace($text); Post::ProcessPostForExternal(Server::$Operators[$lastOp],getId(32),$_chat->SystemId,$_chat->SystemId,$text,time(),true,"",""); } $_chat->UpdateUserStatus(false, true, false, false, true); return; } } } if(!empty(Server::$Configuration->File["gl_accc"])) { if($lastposter != $lpc && !($lpc != null && $lpc->Created > (time() - Server::$Configuration->File["gl_ccca"]))) { if(!empty(VisitorMonitoring::$Visitor->Browsers[0]->Typing)) return; if($lastposttime < (time() - Server::$Configuration->File["gl_ccca"])) { $pdm = PredefinedMessage::GetByLanguage(Server::$Groups[$_chat->DesiredChatGroup]->PredefinedMessages,$lang); if($pdm != null && !empty($pdm->AutoCloseCustomer)) { $lastOp = $_chat->GetHostOperator(); $text = $pdm->AutoCloseCustomer; if($_visitor != null) $text = $_visitor->TextReplace($text); $text = Server::$Groups[$_chat->DesiredChatGroup]->TextReplace($text,$lang); $text = Server::$Operators[$lastOp]->TextReplace($text); $text = Configuration::Replace($text); Post::ProcessPostForExternal(Server::$Operators[$lastOp],getId(32),$_chat->SystemId,$_chat->SystemId,$text,time(),true,"",""); } $_chat->UpdateUserStatus(false, false, false, true, true); return; } } } } function FeedBot($bot,$post,$saved) { $api_res_obj = null; $api_req_obj = null; $answer = $bot->GetAutoReplies($post->Text,VisitorMonitoring::$Visitor->Browsers[0],VisitorMonitoring::$Visitor,$api_req_obj,$api_res_obj); if(!empty($answer)) { $rpost = new Post($id = getId(32),$bot->SystemId,VisitorMonitoring::$Visitor->Browsers[0]->SystemId,$answer,time(),VisitorMonitoring::$Visitor->Browsers[0]->ChatId,$bot->Fullname); $rpost->ReceiverOriginal = $rpost->ReceiverGroup = VisitorMonitoring::$Visitor->Browsers[0]->SystemId; $rpost->APIObject = $api_res_obj; $rpost->Save(); $saved = true; foreach(VisitorMonitoring::$Visitor->Browsers[0]->Members as $opsysid => $member) { if($opsysid != Server::$Operators[VisitorMonitoring::$Visitor->Browsers[0]->OperatorId]->SystemId) { $rpost = new Post($id,$bot->SystemId,$opsysid,$answer,time(),VisitorMonitoring::$Visitor->Browsers[0]->ChatId,Server::$Operators[$opsysid]->Fullname); $rpost->ReceiverOriginal = $rpost->ReceiverGroup = VisitorMonitoring::$Visitor->Browsers[0]->SystemId; $rpost->Save(); } } if($api_req_obj != null) { $post->SetAPIObject($api_req_obj); } } VisitorMonitoring::$Visitor->AddFunctionCall("OverlayChatWidgetV2.InputState(false);",false); return $saved; } function InitFeedback($_userInitiated=true) { Server::InitDataBlock(array("DBCONFIG")); if(empty(Server::$Configuration->Database["gl_fb"]) || Feedback::IsFlood()) return; $cid = VisitorMonitoring::$Visitor->Browsers[0]->GetLastActiveChatId(); if($_userInitiated || !empty($cid)) if($_userInitiated || Feedback::GetByChatId($cid)==null) if($this->Version == 2) VisitorMonitoring::$Visitor->AddFunctionCall("OverlayChatWidgetV2.ToggleFeedback(false,true);",false); } function GetFeedbackTemplate() { Server::InitDataBlock(array("DBCONFIG")); $template = new OverlayElement(); $template->Style = "rounded"; $template->Height = 180; foreach(Server::$Configuration->Database["gl_fb"] as $fc) $template->Height += $fc->GetHeight(); $template->Id = md5(VisitorMonitoring::$Visitor->Browsers[0]->ChatId); return $template; } function AutoCloseChat($_chat,$_operator){ /* $closeafterseconds = max(15,30); $mess = ""; if($closeafterseconds > 0) { $lpi = Chat::GetLastPost($_chat->ChatId,true); $lpe = Chat::GetLastPost($_chat->ChatId,false); $lmsi = ($lpi != null) ? $lpi->Created : 0; $lmse = ($lpe != null) ? $lpe->Created : $_chat->AllocatedTime; } $lm = max($lmsi,$lmse); $lastMessageExternal = ($lmse > $lmsi && !empty($lm)); $lastMessageInternal = ($lmsi >= $lmse || $lpe == null); if(empty($lm)) $lm = $_chat->AllocatedTime; if(!empty($lm)) { if($lastMessageInternal > $lastMessageExternal) { if($lm < (time()-$closeafterseconds)) { $npost = new Post(getId(32),$_operator->SystemId,$_chat->SystemId,$mess,time(),$_chat->ChatId,$_operator->Fullname); $npost->ReceiverGroup = $_chat->SystemId; $npost->Save(); $_chat->InternalClose($_operator->SystemId); } } } */ } function Listen() { $members = array(); $isOp = false; if(VisitorMonitoring::$Visitor->Browsers[0]->Status == CHAT_STATUS_ACTIVE) { $result = DBManager::Execute(true, "SELECT * FROM `" . DB_PREFIX . DATABASE_VISITOR_CHAT_OPERATORS . "` WHERE `chat_id`='" . DBManager::RealEscape(VisitorMonitoring::$Visitor->Browsers[0]->ChatId) . "' ORDER BY `status` DESC, `dtime` DESC;"); while($row = DBManager::FetchArray($result)) if(isset(Server::$Operators[$row["user_id"]])) { $ChatMember = new ChatMember($row["user_id"],$row["status"],!empty($row["declined"]),$row["jtime"],$row["ltime"]); if($ChatMember->Status == 1 && $ChatMember->Joined >= VisitorMonitoring::$Visitor->Browsers[0]->LastActive) { $isOp = true; } if($ChatMember->Status == 0) { $isOp = true; } $members[] = $ChatMember; } } else $isOp = true; if(Communication::ReadParameter("ovlif")) $this->InitFeedback(); VisitorMonitoring::$Visitor->Browsers[0]->Typing = isset($_GET["typ"]) ? Encoding::Base64UrlDecode($_GET["typ"]) : ""; if(VisitorMonitoring::$CreateUserObject) { if(!VisitorMonitoring::$Visitor->Browsers[0]->Declined) VisitorMonitoring::$Visitor->Browsers[0]->Save(); } VisitorMonitoring::$Visitor->Browsers[0]->ValidateOperator(); $this->CurrentOperatorId = Communication::GetParameter("op","",$c,FILTER_SANITIZE_SPECIAL_CHARS,null,32); $a = VisitorMonitoring::$Visitor->Browsers[0]->Waiting && $this->Botmode; $b = empty(VisitorMonitoring::$Visitor->Browsers[0]->OperatorId) && !empty($this->CurrentOperatorId) && isset(Server::$Operators[$this->CurrentOperatorId]) && !Server::$Operators[$this->CurrentOperatorId]->IsBot; $c = (!empty($this->CurrentOperatorId) && empty(VisitorMonitoring::$Visitor->Browsers[0]->ChatId) && !$this->Botmode); $d = !$isOp; $e = VisitorMonitoring::$Visitor->Browsers[0]->Closed; if($a || $b || $c || $d || $e) { if(!VisitorMonitoring::$Visitor->Browsers[0]->ExternalClosed) { VisitorMonitoring::$Visitor->Browsers[0]->ExternalClose(); VisitorMonitoring::$Visitor->Browsers[0]->Save(); VisitorMonitoring::$Visitor->Browsers[0]->Load(); } VisitorMonitoring::$Visitor->Browsers[0]->Members = array(); if(!empty($this->CurrentOperatorId) && isset(Server::$Operators[$this->CurrentOperatorId]) && $isOp) { $this->SetHost(null); if(!empty(Server::$Configuration->File["gl_fboe"]) && !Server::$Operators[$this->CurrentOperatorId]->IsBot) if(!empty(Server::$Groups[VisitorMonitoring::$Visitor->Browsers[0]->DesiredChatGroup]->ChatFunctions[3])) $this->InitFeedback(false); $this->Flags["LMR"] = "null"; VisitorMonitoring::$Visitor->Browsers[0]->OperatorId = null; $this->CurrentOperatorId = ""; $this->RepollRequired = true; } } } function KnowledgebaseSearch() { if(!empty($_GET["skb"])) { $root = Communication::ReadParameter("ckf",""); $c = count(KnowledgeBase::GetMatches($root,Communication::ReadParameter("skb",""),Visitor::$BrowserLanguage)); VisitorMonitoring::$Visitor->AddFunctionCall("lz_chat_search_result(false,".$c.");",false); } } function GetEyeCatcherV2(){ $dcp = ""; $catcher = array(); $catcher["operator_name"] = ""; $catcher["html"] = IOStruct::GetFile(TEMPLATE_SCRIPT_OVERLAY_CHAT."eyecatcher_bubble.tpl"); if(!Visitor::$IsActiveOverlayChat) { VisitorMonitoring::$Visitor->Browsers[0]->FindOperator(VisitorChat::$Router,VisitorMonitoring::$Visitor,$this->Botmode,$this->Botmode,null,true,false); if(Server::$Configuration->File["gl_alloc_mode"] == ALLOCATION_MODE_ALL && !empty(VisitorChat::$Router->OperatorsAvailable)) { VisitorMonitoring::$Visitor->Browsers[0]->SetDesiredChatPartner(array_rand(VisitorChat::$Router->OperatorsAvailable,1)); } if(empty(VisitorMonitoring::$Visitor->Browsers[0]->DesiredChatPartner) && !empty(VisitorChat::$Router->OperatorsBusy)) { VisitorMonitoring::$Visitor->Browsers[0]->SetDesiredChatPartner(array_rand(VisitorChat::$Router->OperatorsBusy,1)); } } else { // queue if(empty(VisitorMonitoring::$Visitor->Browsers[0]->DesiredChatPartner) && !empty(VisitorChat::$Router->OperatorsBusy)) { $dcp = array_rand(VisitorChat::$Router->OperatorsBusy,1); } } if(empty($dcp)) $dcp = VisitorMonitoring::$Visitor->Browsers[0]->DesiredChatPartner; if(!empty($dcp)) { $catcher["html"] = str_replace("<!--avatar_src-->",LIVEZILLA_URL.Server::$Operators[$dcp]->GetOperatorPictureFile(),$catcher["html"]); $catcher["html"] = str_replace("<!--avatar_visible-->","block",$catcher["html"]); $catcher["html"] = str_replace("<!--avatar_bg_col-->",Server::$Operators[$dcp]->Color,$catcher["html"]); $catcher["operator_name"] = Server::$Operators[$dcp]->Fullname; if(empty(Server::$Operators[$dcp]->ProfilePicture)) $catcher["html"] = str_replace("<!--bg_size-->","56px 42px",$catcher["html"]); else $catcher["html"] = str_replace("<!--bg_size-->","80px 60px",$catcher["html"]); if(!isset($_GET["echst"])) { $ptext = LocalizationManager::$TranslationStrings["client_ec_sub_text_personal"]; $ptext = str_replace(array("<!--operator_name-->","%operator_name%"),Server::$Operators[$dcp]->Fullname,$ptext); $ptext = str_replace(array("<!--operator_firstname-->","%operator_firstname%"),Server::$Operators[$dcp]->Firstname,$ptext); $ptext = str_replace(array("<!--operator_lastname-->","%operator_lastname%"),Server::$Operators[$dcp]->Lastname,$ptext); VisitorMonitoring::$Visitor->AddFunctionCall("lz_ec_sub_header_p='".base64_encode($ptext)."';",false); } if(Server::$Configuration->File["gl_alloc_mode"] != ALLOCATION_MODE_ALL) VisitorMonitoring::$Visitor->AddFunctionCall("OverlayChatWidgetV2.TargetOperatorId='".Encoding::Base64UrlEncode(Server::$Operators[$dcp]->UserId)."';",false); } else { $catcher["html"] = str_replace("<!--avatar_visible-->","none",$catcher["html"]); } return $catcher; } function UpdatePostStatus() { $lastPostId = Communication::ReadParameter("lpr",""); $lastPostNoticed = Communication::ReadParameter("lps",""); if(!empty($lastPostNoticed)) { $markAllBelow = false; if($result = DBManager::Execute(true, "SELECT * FROM `" . DB_PREFIX . DATABASE_POSTS . "` WHERE (`noticed`=0 OR `received`=0) AND `receiver`='".DBManager::RealEscape(VisitorMonitoring::$Visitor->Browsers[0]->SystemId)."' ORDER BY `time` DESC, `micro` DESC;")) while($row = DBManager::FetchArray($result)) { if($row["id"] == $lastPostId) { $markAllBelow = true; } if($markAllBelow) { if($lastPostNoticed=='2') { DBManager::Execute(true, "UPDATE `" . DB_PREFIX . DATABASE_POSTS . "` SET `updated`=".time().",`noticed`=1,`received`=1 WHERE `id`='".DBManager::RealEscape($row["id"])."' LIMIT 1"); } else if($row["received"]==0) { DBManager::Execute(true, "UPDATE `" . DB_PREFIX . DATABASE_POSTS . "` SET `updated`=".time().",`received`=1 WHERE `id`='".DBManager::RealEscape($row["id"])."' LIMIT 1"); } } } } } function IsBotChat() { $ibc = !empty(VisitorMonitoring::$Visitor->Browsers[0]->OperatorId) && Server::$Operators[VisitorMonitoring::$Visitor->Browsers[0]->OperatorId]->IsBot; return $ibc; } function CloseChat(){ VisitorMonitoring::$Visitor->Browsers[0]->ExternalClose(); VisitorMonitoring::$Visitor->Browsers[0]->Destroy(); VisitorMonitoring::$Visitor->AddFunctionCall("lz_leave_chat=false;",false); VisitorMonitoring::$Visitor->AddFunctionCall("LiveZilla.Engine.Poll(1732);",false); if($this->IsBotChat()) { $post = new Post(getId(32),VisitorMonitoring::$Visitor->Browsers[0]->SystemId,"","[__[EXIT]__]","",VisitorMonitoring::$Visitor->Browsers[0]->ChatId,""); $this->FeedBot(Server::$Operators[VisitorMonitoring::$Visitor->Browsers[0]->OperatorId],$post,true); } } static function GetDefaultScript($_fullScreen=false,$_scriptID="lzdefsc"){ require_once(LIVEZILLA_PATH . "_lib/functions.tracking.inc.php"); $script = str_replace("<!--fs-->",To::BoolString($_fullScreen),IOStruct::GetFile(PATH_TEMPLATES . "default.tpl")); $params = "&" . Communication::GetTargetParameterString(""); $script = str_replace("<!--f_kb-->",To::BoolString(!isset($_GET["hfk"])),$script); $script = str_replace("<!--f_chat-->",To::BoolString(!isset($_GET["hfc"])),$script); $script = str_replace("<!--f_ticket-->",To::BoolString(!isset($_GET["nct"])),$script); $script = str_replace("<!--f_phone-->",To::BoolString(isset($_GET["ofc"])),$script); $script = str_replace("<!--params-->",$params,$script); $script = str_replace("<!--scriptid-->",$_scriptID,$script); $script = str_replace("<!--offline_message_mode-->",Server::$Configuration->File["gl_om_mode"],$script); $script = str_replace("<!--offline_message_http-->",Server::$Configuration->File["gl_om_http"],$script); $script = str_replace("<!--offline_message_external-->",To::BoolString(Server::$Configuration->File["gl_om_pop_up"]),$script); return $script; } static function GetPassThruObjectKeys(){ $paramList = ""; Server::InitDataBlock(array("INPUTS")); if(isset($_GET["pto"])) $paramList = "overwrite:true"; foreach(Server::$Inputs as $dinput) { $input = $dinput->GetServerInput(); if(!empty($input)) { if(!empty($paramList)) $paramList .= ","; $paramList .= $dinput->Index . ":'" . htmlentities($input,ENT_NOQUOTES,"UTF-8") . "'"; } } return $paramList; } static function ReplaceColors($_html,$_operator) { if(isset($_GET["ovlv"])) { $primary = Communication::ReadParameter("epc","#3091f2"); $secondary = Communication::ReadParameter("esc","#2e8ae5"); } else { $primary = Communication::ReadParameter("ovlc","#3091f2"); $secondary = Communication::ReadParameter("ovlct","#fff"); } $textshadow = Communication::ReadParameter("ovlts",1); $_html = str_replace(array("<!--pc-->","<!--bgc-->"),$primary,$_html); $_html = str_replace(array("<!--iboc-->"),"hsl(".Colors::TransformHexToHSL($primary)["H"].",10%,85%)",$_html); $_html = str_replace(array("<!--ibgc-->"),"hsl(".Colors::TransformHexToHSL($primary)["H"].",30%,99%)",$_html); $_html = str_replace(array("<!--texc-->"),"hsl(".Colors::TransformHexToHSL($primary)["H"].",30%,30%)",$_html); $_html = str_replace(array("<!--icoc-->"),"hsl(".Colors::TransformHexToHSL($primary)["H"].",10%,80%)",$_html); $_html = str_replace(array("<!--borc-->"),"hsl(".Colors::TransformHexToHSL($primary)["H"].",20%,95%)",$_html); $_html = str_replace(array("<!--lc-->"),"hsl(".Colors::TransformHexToHSL($primary)["H"].",10%,98%)",$_html); $_html = str_replace(array("<!--sc-->","<!--tc-->","<!--tch-->"),$secondary,$_html); $_html = str_replace(array("<!--bgcd-->","<!--pcd-->"),Colors::TransformBrightness($primary,-0.15),$_html); //depr $_html = str_replace("<!--bgce-->",Encoding::Base64UrlEncode($primary),$_html); $_html = str_replace("<!--bgcm-->",Colors::TransformBrightness($primary,-0.1),$_html); $_html = str_replace("<!--bgcl-->",Colors::TransformBrightness($primary,0.98),$_html); $_html = str_replace("<!--ts-->",($textshadow==1) ? "text-shadow:1px 1px 0 #6b6b6b;" : "",$_html); return str_replace("<!--color-->",($_operator) ? Colors::TransformBrightness($secondary,-0.2) : "#000000",$_html); } } ?>
/home2/wtmwscom/public_html/DOCS/../livezila/_lib/functions.external.inc.php