function getDisabledFunctions() { Server::InitDataBlock(array("INTERNAL", "GROUPS")); $currentMIV = @ini_get("max_input_vars"); $currentMIVText = $currentMIV; if (empty($currentMIV)) { $currentMIV = 1000; $currentMIVText = "unknown (default=1000)"; } $message = null; if (count(Server::$Operators) > 0 && ($miv = (count(Server::$Groups) + count(Server::$Operators)) * 75) > $currentMIV) { $message .= "<span class=\"lz_index_error_cat\">PHP Configuration:<br></span> <span class=\"lz_index_red\">PHP configuration \"max_input_vars\" (see php.ini) must be increased to " . $miv . " (or greater).<br><br>Your current configuration is " . $currentMIVText . ".</span><br><br>"; } if (!function_exists("file_get_contents") && ini_get('allow_url_fopen')) { $message .= "<span class=\"lz_index_error_cat\">Disabled function: file_get_contents<br></span> <span class=\"lz_index_red\">LiveZilla requires the PHP function file_get_contents to be activated.</span><br><br>"; } if (!function_exists("fsockopen")) { $message .= "<span class=\"lz_index_error_cat\">Disabled function: fsockopen<br></span> <span class=\"lz_index_orange\">LiveZilla requires the PHP function fsockopen to be activated in order to send and receive emails.</span><br><br>"; } if (!function_exists("iconv_mime_decode")) { $message .= "<span class=\"lz_index_error_cat\">Missing PHP extension: ICONV<br></span> <span class=\"lz_index_orange\">LiveZilla requires the PHP extension iconv to parse incoming emails. Please add the iconv package to your PHP configuration.</span><br><br>"; } if (!ini_get('allow_url_fopen')) { $message .= "<span class=\"lz_index_error_cat\">Disabled wrapper: allow_url_fopen<br></span> <span class=\"lz_index_orange\">LiveZilla requires allow_url_fopen to be activated in order to send PUSH Messages to APPs and to send/receive Social Media updates.</span><br><br>"; } return $message; }
function isChat() { define("SESSION", getSessionId()); Server::InitDataBlock(array("FILTERS")); define("IS_FLOOD", Filter::IsFlood(Communication::GetIP(), null, true)); define("IS_FILTERED", DataManager::$Filters->Match(Communication::GetIP(), 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; }
* Copyright 2014 LiveZilla GmbH * All rights reserved. * LiveZilla is a registered trademark. * * Improper changes to this file may cause critical errors. ***************************************************************************************/ define("IN_LIVEZILLA", true); if (!defined("LIVEZILLA_PATH")) { define("LIVEZILLA_PATH", "./"); } require LIVEZILLA_PATH . "_definitions/definitions.inc.php"; require LIVEZILLA_PATH . "_definitions/definitions.protocol.inc.php"; require LIVEZILLA_PATH . "_lib/functions.global.inc.php"; require LIVEZILLA_PATH . "_definitions/definitions.dynamic.inc.php"; if (isset($_GET["intid"]) && Server::InitDataProvider()) { Server::InitDataBlock(array("INTERNAL")); $id = Operator::GetSystemId($_GET["intid"]); if (isset(Server::$Operators[$id])) { $sysid = $_GET["intid"]; if (!empty(Server::$Operators[$id]->Profile)) { header("Content-Type: application/vcard;"); header("Content-Disposition: attachment; filename=" . utf8_decode($sysid) . ".vcf"); $vcard = IOStruct::GetFile("./templates/vcard.tpl"); $vcard = str_replace("<!--Name-->", qp_encode(Server::$Operators[$id]->Profile->Name), $vcard); $vcard = str_replace("<!--Firstname-->", qp_encode(Server::$Operators[$id]->Profile->Firstname), $vcard); $vcard = str_replace("<!--Company-->", qp_encode(Server::$Operators[$id]->Profile->Company), $vcard); $vcard = str_replace("<!--Comments-->", qp_encode(Server::$Operators[$id]->Profile->Comments), $vcard); $vcard = str_replace("<!--Phone-->", qp_encode(Server::$Operators[$id]->Profile->Phone), $vcard); $vcard = str_replace("<!--Fax-->", qp_encode(Server::$Operators[$id]->Profile->Fax), $vcard); $vcard = str_replace("<!--Street-->", qp_encode(Server::$Operators[$id]->Profile->Street), $vcard); $vcard = str_replace("<!--City-->", qp_encode(Server::$Operators[$id]->Profile->City), $vcard);
function Close() { Server::InitDataBlock(array("INTERNAL")); LocalizationManager::AutoLoad(strtolower(Server::$Configuration->File["gl_default_language"]), true); if ($this->Type == STATISTIC_PERIOD_TYPE_DAY) { $this->CleanDatabases(Server::$Configuration->File["gl_dvhd"] * 2); if ($this->CreateReport) { $this->SaveReportToFile(); } if ($this->CreateVisitorList) { $this->SaveVisitorListToFile(); } $this->CleanDatabases(Server::$Configuration->File["gl_dvhd"]); } else { if ($this->CreateReport) { $this->SaveReportToFile(); } } LocalizationManager::AutoLoad("", true); }
* LiveZilla is a registered trademark. * * Improper changes to this file may cause critical errors. ***************************************************************************************/ define("IN_LIVEZILLA", true); header('Content-Type: text/html; charset=utf-8'); if (!defined("LIVEZILLA_PATH")) { define("LIVEZILLA_PATH", "./"); } require LIVEZILLA_PATH . "_definitions/definitions.inc.php"; require LIVEZILLA_PATH . "_lib/functions.global.inc.php"; require LIVEZILLA_PATH . "_definitions/definitions.dynamic.inc.php"; require LIVEZILLA_PATH . "_definitions/definitions.protocol.inc.php"; @set_error_handler("handleError"); if (Server::InitDataProvider()) { Server::InitDataBlock(array("DBCONFIG", "INTERNAL")); LocalizationManager::AutoLoad(); $fb_html = IOStruct::GetFile(PATH_TEMPLATES . "feedback.tpl"); $chat = VisitorChat::GetByChatId(intval(Communication::ReadParameter("cid", 0))); $ticket = Ticket::GetById(intval(Communication::ReadParameter("tid", ""))); if ($ticket != null) { $ticket->LoadMessages(); $ticket->LoadStatus(); } if (Feedback::IsFlood()) { $fb_html = str_replace("<!--title-->", "<br><br><br>" . str_replace("<!--count-->", MAX_FEEDBACKS_PER_DAY, LocalizationManager::$TranslationStrings["client_feedback_max"]) . "<script>parent.parent.lz_chat_feedback_result();</script>", $fb_html); $fb_html = str_replace("<!--visible-->", "none", $fb_html); } else { if (!empty($_POST)) { $userid = ""; $feedback = new Feedback(getId(32));
function processCancelInvitation() { if (isset($_POST[POST_INTERN_PROCESS_CANCEL_INVITATION])) { $users = explode(POST_ACTION_VALUE_SPLITTER, utf8_decode($_POST[POST_INTERN_PROCESS_CANCEL_INVITATION])); foreach ($users as $uid) { if (isset(Server::$Visitors[$uid])) { Server::$Visitors[$uid]->ForceUpdate(); } DBManager::Execute(true, "UPDATE `" . DB_PREFIX . DATABASE_CHAT_REQUESTS . "` SET `closed`=1,`canceled`='" . DBManager::RealEscape(CALLER_SYSTEM_ID) . "' WHERE `canceled`='' AND `accepted`=0 AND `declined`=0 AND `receiver_user_id`='" . DBManager::RealEscape($uid) . "';"); } Server::$Visitors = null; Server::InitDataBlock(array("VISITOR")); } }
* LiveZilla is a registered trademark. * * Improper changes to this file may cause critical errors. ***************************************************************************************/ define("IN_LIVEZILLA", true); if (!defined("LIVEZILLA_PATH")) { define("LIVEZILLA_PATH", "./"); } require LIVEZILLA_PATH . "_definitions/definitions.inc.php"; require LIVEZILLA_PATH . "_lib/functions.global.inc.php"; require LIVEZILLA_PATH . "_definitions/definitions.dynamic.inc.php"; require LIVEZILLA_PATH . "_definitions/definitions.protocol.inc.php"; Server::DefineURL("checkout.php"); @set_error_handler("handleError"); Server::InitDataProvider(); Server::InitDataBlock(array("DBCONFIG")); if (!empty($_POST["form_visitor_id"]) && !empty($_POST["form_total_price"]) && !empty($_POST["form_currency"]) && is_numeric($_POST["form_total_price"]) && strlen($_POST["form_currency"]) <= 3) { LocalizationManager::AutoLoad(); $ticket = new CommercialChatVoucher($_POST["form_voucher_type"], strtoupper(getId(16))); $ticket->VisitorId = $_POST["form_visitor_id"]; $ticket->Company = $_POST["form_company"]; $ticket->Email = $_POST["form_email"]; $ticket->Firstname = $_POST["form_firstname"]; $ticket->Lastname = $_POST["form_lastname"]; $ticket->Address1 = $_POST["form_address_1"]; $ticket->Address2 = $_POST["form_address_2"]; $ticket->ZIP = $_POST["form_zip"]; $ticket->State = $_POST["form_state"]; $ticket->Country = $_POST["form_country"]; $ticket->Phone = $_POST["form_phone"]; $ticket->City = $_POST["form_city"];
$html = str_replace("<!--alert-->", getAlertTemplate(), $html); $html = str_replace("<!--com_chats-->", getChatVoucherTemplate(), $html); $html = str_replace("<!--ssl_secured-->", Communication::GetScheme() == SCHEME_HTTP_SECURE && !empty(Server::$Configuration->File["gl_sssl"]) ? "" : "display:none;", $html); $html = str_replace("<!--bgc-->", $color = Communication::ReadParameter("epc", "#73be28"), $html); $html = str_replace("<!--color-->", Colors::TransformHEX($color, 30), $html); } else { if ($_GET[GET_EXTERN_TEMPLATE] == "lz_chat_frame_chat") { $html = IOStruct::GetFile(PATH_FRAMES . $_GET[GET_EXTERN_TEMPLATE] . ".tpl"); $html = str_replace("<!--alert-->", getAlertTemplate(), $html); $tlanguages = ""; if (strlen(Server::$Configuration->File["gl_otrs"]) > 1) { $mylang = LocalizationManager::GetBrowserLocalization(); $tlanguages = getLanguageSelects(LocalizationManager::GetBrowserLocalization()); } $html = str_replace("<!--languages-->", $tlanguages, $html); Server::InitDataBlock(array("GROUPS")); $groupid = $_POST["intgroup"]; if (!empty($groupid) && isset(Server::$Groups[$groupid])) { $html = str_replace("<!--SM_HIDDEN-->", empty(Server::$Groups[$groupid]->ChatFunctions[0]) ? "none" : "", $html); $html = str_replace("<!--SO_HIDDEN-->", empty(Server::$Groups[$groupid]->ChatFunctions[1]) ? "none" : "", $html); $html = str_replace("<!--PR_HIDDEN-->", empty(Server::$Groups[$groupid]->ChatFunctions[2]) ? "none" : "", $html); $html = str_replace("<!--FV_HIDDEN-->", empty(Server::$Groups[$groupid]->ChatFunctions[4]) ? "none" : "", $html); $html = str_replace("<!--FU_HIDDEN-->", empty(Server::$Groups[$groupid]->ChatFunctions[5]) || !empty($_GET[GET_EXTERN_DYNAMIC_GROUP]) ? "none" : "", $html); $html = str_replace("<!--post_chat_js-->", base64_encode(Server::$Groups[$groupid]->PostJS), $html); } $html = str_replace("<!--TR_HIDDEN-->", strlen(Server::$Configuration->File["gl_otrs"]) > 1 ? "" : "none", $html); $html = str_replace("<!--ET_HIDDEN-->", !empty(Server::$Configuration->File["gl_retr"]) && !empty(Server::$Configuration->File["gl_soct"]) ? "" : "none", $html); } } } $header = IOStruct::GetFile(PATH_TEMPLATES . "header.tpl");
static function TriggerEvents() { if (count(Server::$Events) == 0) { return; } $actionData = ""; $url = VisitorMonitoring::$Browser->History[count(VisitorMonitoring::$Browser->History) - 1]; $previous = count(VisitorMonitoring::$Browser->History) > 1 ? VisitorMonitoring::$Browser->History[count(VisitorMonitoring::$Browser->History) - 2]->Url->GetAbsoluteUrl() : ""; foreach (Server::$Events->Events as $event) { if (!$event->IsActive || empty($url)) { continue; } $urlor = count($event->FunnelUrls) == 0 && $event->MatchesURLCriterias($url->Url->GetAbsoluteUrl(), $url->Referrer->GetAbsoluteUrl(), $previous, time() - $url->Entrance); $urlfunnel = count($event->FunnelUrls) > 0 && $event->MatchesURLFunnelCriterias(VisitorMonitoring::$Browser->History); $global = $event->MatchesGlobalCriterias(count(VisitorMonitoring::$Browser->History), VisitorMonitoring::$Visitor->ExitTime - VisitorMonitoring::$Visitor->FirstActive, VisitorMonitoring::$Visitor->HasAcceptedChatRequest, VisitorMonitoring::$Visitor->HasDeclinedChatRequest, VisitorMonitoring::$Visitor->WasInChat(), VisitorMonitoring::$Browser->Query, VisitorMonitoring::$IsMobile || VisitorMonitoring::$IsTablet, VisitorMonitoring::$Visitor->GeoCountryISO2); if ($global && ($urlfunnel || $urlor)) { foreach (array($event->Goals, $event->Actions) as $elements) { foreach ($elements as $action) { $EventTrigger = new EventTrigger(CALLER_USER_ID, CALLER_BROWSER_ID, $action->Id, time(), 1); $EventTrigger->Load(); $aexists = $action->Exists(CALLER_USER_ID, CALLER_BROWSER_ID); if (!$EventTrigger->Exists || $EventTrigger->Exists && $event->MatchesTriggerCriterias($EventTrigger)) { if (!$aexists) { if ($event->SaveInCookie) { if (!Is::Null(Cookie::Get("ea_" . $action->Id))) { continue; } else { Cookie::Set("ea_" . $action->Id, time()); } } $EventTrigger->Save($event->Id); if ($action->Type < 2) { foreach ($action->GetInternalReceivers() as $user_id) { $intaction = new EventActionInternal($user_id, $EventTrigger->Id); $intaction->Save(); } } else { if ($action->Type == 2 && !defined("EVENT_INVITATION")) { $sender = getActionSender($action->Invitation->Senders, true); Server::InitDataBlock(array("GROUPS")); if (!empty($sender) && !empty(Server::$Groups[$sender->GroupId]) && Server::$Groups[$sender->GroupId]->IsHumanAvailable(false) && !(VisitorMonitoring::$Browser->ChatRequest != null && !VisitorMonitoring::$Browser->ChatRequest->Closed) && !VisitorMonitoring::$Visitor->IsInChat(false, null, true)) { define("EVENT_INVITATION", true); $chatrequest = new ChatRequest($sender->UserSystemId, $sender->GroupId, CALLER_USER_ID, CALLER_BROWSER_ID, getActionText($sender, $action)); $chatrequest->EventActionId = $action->Id; $chatrequest->Save(); if (!$chatrequest->Displayed) { VisitorMonitoring::$Browser->ForceUpdate(); } VisitorMonitoring::$Browser->ChatRequest = $chatrequest; } } else { if ($action->Type == 3 && !defined("EVENT_ALERT")) { define("EVENT_ALERT", true); $alert = new Alert(CALLER_USER_ID, CALLER_BROWSER_ID, $action->Value); $alert->EventActionId = $action->Id; $alert->Save(); VisitorMonitoring::$Browser->LoadAlerts(); } else { if ($action->Type == 4 && !defined("EVENT_WEBSITE_PUSH")) { define("EVENT_WEBSITE_PUSH", true); $sender = getActionSender($action->WebsitePush->Senders, false); $websitepush = new WebsitePush($sender->UserSystemId, $sender->GroupId, CALLER_USER_ID, CALLER_BROWSER_ID, getActionText($sender, $action), $action->WebsitePush->Ask, $action->WebsitePush->TargetURL); $websitepush->EventActionId = $action->Id; $websitepush->Save(); VisitorMonitoring::$Browser->LoadWebsitePush(); } else { if ($action->Type == 5 && !defined("EVENT_OVERLAY_BOX")) { define("EVENT_OVERLAY_BOX", true); $overlaybox = new OverlayBox(CALLER_USER_ID, CALLER_BROWSER_ID, $action->Value); $overlaybox->EventActionId = $action->Id; $overlaybox->Save(); VisitorMonitoring::$Browser->LoadOverlayBoxes(); } else { if ($action->Type == 9 && STATS_ACTIVE) { Server::$Statistic->ProcessAction(ST_ACTION_GOAL, array(CALLER_USER_ID, $action->Id, VisitorMonitoring::$Visitor->Visits == 1 ? 1 : 0, VisitorMonitoring::$Browser->GetQueryId(Cookie::Get("sp"), null, 255, true))); } } } } } } } } if ($EventTrigger->Exists && $aexists) { $EventTrigger->Update(); } } } } } return $actionData; }
function CommercialChatVoucherCreate() { Server::InitDataBlock(array("DBCONFIG")); $voucher = new CommercialChatVoucher("1", strtoupper(getId(16))); $params = ApiV2::GetObjectFields("CommercialChatVoucher"); if ($voucher = $this->CreateFromJSON($params, json_decode($_POST["p_data"]), $voucher, "CommercialChatVoucher")) { if (!isset(Server::$Configuration->Database["cct"][$voucher->TypeId])) { $this->ErrorField = "TypeId"; } else { if (empty($voucher->Id)) { $voucher->Id = strtoupper(getId(16)); } $voucher->ChatSessionsMax = Server::$Configuration->Database["cct"][$voucher->TypeId]->ChatSessionsMax; $voucher->ChatTimeMax = Server::$Configuration->Database["cct"][$voucher->TypeId]->ChatTimeMax * 60; if ($voucher->Save()) { $voucher->SetVoucherParams($voucher->Voided, $voucher->Paid); $this->JSONOutput = APIV2::Encode(ApiV2::ClearObject($params, $voucher), $this->JSONParams); } else { $this->ErrorField = "Id"; } } } }
define("IN_API", true); define("LIVEZILLA_PATH", "../../"); @set_time_limit(30); require LIVEZILLA_PATH . "_definitions/definitions.inc.php"; require LIVEZILLA_PATH . "_lib/functions.global.inc.php"; require LIVEZILLA_PATH . "_definitions/definitions.dynamic.inc.php"; require LIVEZILLA_PATH . "_definitions/definitions.protocol.inc.php"; require LIVEZILLA_PATH . "_lib/objects.internal.inc.php"; @set_error_handler("handleError"); @error_reporting(E_ALL); header("Pragma: no-cache"); header("Cache-Control: no-cache, must-revalidate"); header("Keep-Alive: timeout=5, max=100"); Server::DefineURL("api.php"); Server::InitDataProvider(); Server::InitDataBlock(array("INTERNAL", "INPUTS", "DBCONFIG")); OperatorRequest::Validate(true); if (OperatorRequest::IsValidated() && Is::Defined("CALLER_SYSTEM_ID")) { if (Server::$Operators[CALLER_SYSTEM_ID]->GetPermission(46) != PERMISSION_NONE) { require "objects.apiv2.inc.php"; $apiv2 = new ApiV2(isset($_POST["p_json_pretty"])); if ($apiv2->RunActions() && empty($apiv2->ErrorField) && !empty($apiv2->JSONOutput)) { exit($apiv2->JSONOutput); } else { APIErrorExit($apiv2->GetErrorCodes()); } } else { APIErrorExit("LZAV20002"); } } else { APIErrorExit("LZAV20001");
function getOperators() { $array = array(); Server::InitDataBlock(array("INTERNAL", "GROUPS")); foreach (Server::$Operators as $sysId => $internaluser) { $internaluser->IsExternal(Server::$Groups); $array[$sysId] = $internaluser; } return $array; }
static function GetMatchingVoucher($_groupId, $_voucherid) { Server::InitDataBlock(array("GROUPS", "DBCONFIG")); $ticket = new CommercialChatVoucher("", $_voucherid); $ticket->Load(); $result = DBManager::Execute(true, $d = "SELECT *,`t1`.`id` AS `voucherid`, SUM(`chat_time_max`) AS `chat_time_max`, SUM(`chat_time`) AS `chat_time`, SUM(`chat_sessions`) AS `chat_sessions`, SUM(`chat_sessions_max`) AS `chat_sessions_max`, MAX(`expires`) AS `expires` FROM `" . DB_PREFIX . DATABASE_COMMERCIAL_CHAT_VOUCHERS . "` AS `t1` INNER JOIN `" . DB_PREFIX . DATABASE_COMMERCIAL_CHAT_TYPES . "` AS `t2` ON `t1`.`tid`=`t2`.`id` WHERE `t1`.`id`='" . DBManager::RealEscape($_voucherid) . "' ORDER BY `created` ASC;"); while ($row = @DBManager::FetchArray($result)) { if (!empty(Server::$Configuration->Database["cct"][$row["tid"]])) { $ticket = new CommercialChatVoucher($row); if (in_array($row["tid"], Server::$Groups[$_groupId]->ChatVouchersRequired)) { return $ticket; } } } return null; }
if (!defined("LIVEZILLA_PATH")) { define("LIVEZILLA_PATH", "./"); } @ini_set('session.use_cookies', '0'); @error_reporting(E_ALL); require_once LIVEZILLA_PATH . "_lib/functions.external.inc.php"; require_once LIVEZILLA_PATH . "_lib/objects.external.inc.php"; @set_time_limit(Server::$Configuration->File["timeout_chats"]); if (!isset($_GET["file"])) { @set_error_handler("handleError"); } if (!isset($_GET[GET_TRACK_BROWSERID])) { exit; } LocalizationManager::AutoLoad(); Server::InitDataBlock(array("INTERNAL", "GROUPS", "FILTERS", "INPUTS")); $OVERLAY = new OverlayChat(); $USER = VisitorMonitoring::$Visitor; $USER->Browsers[0] = new VisitorChat($USER->UserId, $USER->UserId . "_OVL"); $USER->Browsers[1] = VisitorMonitoring::$Browser; $OVERLAY->GroupBuilder = new GroupBuilder($USER->Browsers[0]->DesiredChatGroup, $USER->Browsers[0]->DesiredChatPartner, false); $OVERLAY->GroupBuilder->Generate(null, true); $USER->Browsers[0]->Overlay = true; $USER->Browsers[0]->Load(); $USER->Browsers[0]->LoadUserData(); if ($USER->Browsers[0]->FirstCall) { $USER->AddFunctionCall("lz_chat_init_data_change(null);", false); } $OVERLAY->KnowledgebaseSearch(); if (IS_FILTERED && !FILTER_ALLOW_CHATS) { $USER->Browsers[0]->CloseChat();
function demandTickets($xml = "", $q_filter = "", $q_searchw = "", $q_searchf = "", $c_total = 0, $c_totalread = 0, $c_totalquery = 0, $c_lmc = 0, $c_name = "", $c_text = "", $loads = 0) { $permission = Server::$Operators[CALLER_SYSTEM_ID]->GetPermission(PERMISSION_TICKETS); if ($permission != PERMISSION_NONE) { if (!CacheManager::IsDataUpdate(POST_INTERN_DUT_TICKETS, DATA_UPDATE_KEY_TICKETS) && CacheManager::$DataUpdateTimes[DATA_UPDATE_KEY_TICKETS] != 0) { return; } if (!isset($_POST["p_dt_c_id"])) { $_POST["p_dt_c_id"] = $_POST["p_dt_u_id"] = ""; } if (!empty($_POST["p_dt_q"])) { unset($_POST["p_dt_f"], $_POST["p_dt_fc"], $_POST["p_dt_fp"], $_POST["p_dt_fg"]); } if (!isset($_POST["p_dt_f"])) { $_POST["p_dt_f"] = "0123"; } else { if ($_POST["p_dt_f"] == "") { $_POST["p_dt_f"] = "9"; } } if (!isset($_POST["p_dt_fc"])) { $_POST["p_dt_fc"] = "01234567"; } else { if ($_POST["p_dt_fc"] == "") { $_POST["p_dt_fc"] = "9"; } } $loads = !empty($_POST["p_dt_l"]) && is_numeric($_POST["p_dt_l"]) ? $_POST["p_dt_l"] : DATA_DEMAND_LOADS; $limit = !empty($_POST["p_dt_p"]) && is_numeric($_POST["p_dt_p"]) && $_POST["p_dt_p"] > 1 ? ($_POST["p_dt_p"] - 1) * $loads : 0; $q_sort = array(); $q_sort["id"] = " AND `deleted`=0 GROUP BY `" . DB_PREFIX . DATABASE_TICKETS . "`.`id` ORDER BY `" . DB_PREFIX . DATABASE_TICKETS . "`.`id` " . (!empty($_POST["p_dt_s_d"]) ? $_POST["p_dt_s_d"] : "DESC"); $q_sort["update"] = " AND `deleted`=0 GROUP BY `" . DB_PREFIX . DATABASE_TICKETS . "`.`id` ORDER BY `" . DB_PREFIX . DATABASE_TICKETS . "`.`last_update` " . (!empty($_POST["p_dt_s_d"]) ? $_POST["p_dt_s_d"] : "DESC"); $q_sort["wait"] = " AND `deleted`=0 GROUP BY `" . DB_PREFIX . DATABASE_TICKETS . "`.`id` ORDER BY `" . DB_PREFIX . DATABASE_TICKETS . "`.`wait_begin` " . (!empty($_POST["p_dt_s_d"]) ? $_POST["p_dt_s_d"] : "ASC"); $sort_index = !empty($_POST["p_dt_s"]) && !empty($q_sort[$_POST["p_dt_s"]]) ? $_POST["p_dt_s"] : "id"; if (!(!empty($_POST["p_dt_mr"]) && is_numeric($_POST["p_dt_mr"]))) { $max_last_update_read = time() - 14 * 86400; } else { $max_last_update_read = $_POST["p_dt_mr"]; } $fchars = str_split($_POST["p_dt_f"]); foreach ($fchars as $fchar) { if (is_numeric($fchar)) { if (!empty($fchar)) { $q_filter .= empty($q_filter) ? " `te`.`status`=" . $fchar : " OR `te`.`status`=" . $fchar; } else { $q_filter .= empty($q_filter) ? " `te`.`status` IS NULL OR `te`.`status`=0" : " OR `te`.`status` IS NULL OR `te`.`status`=0"; } } } $fchars = str_split($_POST["p_dt_fc"]); $q_filter_channel = ""; foreach ($fchars as $fchar) { if (is_numeric($fchar)) { if (!empty($fchar)) { $q_filter_channel .= empty($q_filter_channel) ? "`creation_type`=" . $fchar : " OR `creation_type`=" . $fchar; } else { $q_filter_channel .= empty($q_filter_channel) ? "`creation_type` IS NULL OR `creation_type`=0" : " OR `creation_type` IS NULL OR `creation_type`=0"; } } } $q_filter = empty($q_filter) ? $q_filter_channel : "(" . $q_filter . ") AND ( " . $q_filter_channel . ")"; if (!empty($_POST["p_dt_fp"])) { if (empty($q_filter)) { $q_filter .= "`te`.`editor_id`='" . DBManager::RealEscape(CALLER_SYSTEM_ID) . "'"; } else { $q_filter = "(" . $q_filter . ") AND `te`.`editor_id`='" . DBManager::RealEscape(CALLER_SYSTEM_ID) . "'"; } } if (!empty($_POST["p_dt_fg"]) && $permission == PERMISSION_FULL) { if (empty($q_filter)) { $q_filter .= "`target_group_id` IN ('" . implode("','", Server::$Operators[CALLER_SYSTEM_ID]->Groups) . "')"; } else { $q_filter = "(" . $q_filter . ") AND `target_group_id` IN ('" . implode("','", Server::$Operators[CALLER_SYSTEM_ID]->Groups) . "')"; } } if (!empty($_POST["p_dt_q"])) { $q = DBManager::RealEscape(strtolower($_POST["p_dt_q"]), true); $q_searchf = " LEFT JOIN `" . DB_PREFIX . DATABASE_TICKET_CUSTOMS . "` AS `tc` ON `" . DB_PREFIX . DATABASE_TICKETS . "`.`id`=`tc`.`ticket_id`"; $q_searchf .= " LEFT JOIN `" . DB_PREFIX . DATABASE_TICKET_MESSAGES . "` AS `tm` ON `" . DB_PREFIX . DATABASE_TICKETS . "`.`id`=`tm`.`ticket_id` "; $q_searchf .= " LEFT JOIN `" . DB_PREFIX . DATABASE_OPERATORS . "` AS `do` ON `te`.`editor_id`=`do`.`system_id` "; $q_searchw = "LOWER(`" . DB_PREFIX . DATABASE_TICKETS . "`.`hash`) LIKE '%" . $q . "%' OR LOWER(`do`.`fullname`) LIKE '%" . $q . "%' OR `tm`.`sender_id` LIKE '%" . $q . "%' OR `tm`.`ticket_id` LIKE '%" . $q . "%' OR LOWER(`tc`.`value`) LIKE '%" . $q . "%' OR LOWER(`tm`.`text`) LIKE '%" . $q . "%' OR LOWER(`tm`.`fullname`) LIKE '%" . $q . "%' OR LOWER(`tm`.`email`) LIKE '%" . $q . "%' OR LOWER(`tm`.`company`) LIKE '%" . $q . "%' OR LOWER(`tm`.`phone`) LIKE '%" . $q . "%' OR LOWER(`tm`.`subject`) LIKE '%" . $q . "%'"; if (!empty($_POST["p_dt_q_e"])) { $q_e = DBManager::RealEscape(strtolower($_POST["p_dt_q_e"])); $emails = explode(",", $q_e); foreach ($emails as $email) { $q_searchw .= " OR LOWER(`tm`.`email`) LIKE '%" . DBManager::RealEscape(trim($email), true) . "%'"; } } $q_searchw = " AND (" . $q_searchw . ")"; } Server::InitDataBlock(array("INPUTS")); $q_grperm = $permission == PERMISSION_FULL ? "" : "`target_group_id` IN ('" . implode("','", Server::$Operators[CALLER_SYSTEM_ID]->Groups) . "') AND "; $q_inner = "FROM `" . DB_PREFIX . DATABASE_TICKETS . "` LEFT JOIN `" . DB_PREFIX . DATABASE_TICKET_EDITORS . "` AS `te` ON `" . DB_PREFIX . DATABASE_TICKETS . "`.`id`=`te`.`ticket_id` " . $q_searchf . "WHERE " . $q_grperm . "`deleted`=0 AND (" . $q_filter . ")" . $q_searchw . $q_sort[$sort_index]; $result = DBManager::Execute(true, $d = "SELECT * " . $q_inner . " LIMIT " . $limit . "," . DBManager::RealEscape($loads) . ";"); if ($result) { while ($row = DBManager::FetchArray($result)) { $ticket = new Ticket($row, null, null); $ticket->LoadLogs(); if (count($ticket->Messages) > 0) { $xml .= $ticket->GetXML(true, true); } } } $q_grperm = $permission == PERMISSION_FULL ? "" : " WHERE `target_group_id` IN ('" . implode("','", Server::$Operators[CALLER_SYSTEM_ID]->Groups) . "')"; $q_count["total"] = "SELECT COUNT(*) AS `total`"; $q_count["totalperm"] = "(SELECT COUNT(*) FROM (SELECT `" . DB_PREFIX . DATABASE_TICKETS . "`.`id` FROM `" . DB_PREFIX . DATABASE_TICKETS . "`" . $q_grperm . ") AS `sta`) AS `totalperm`"; $q_count["totalquery"] = "(SELECT COUNT(*) FROM (SELECT `" . DB_PREFIX . DATABASE_TICKETS . "`.`id` " . $q_inner . ") AS `stb`) AS `totalquery`"; $q_count["totalread"] = Server::$Operators[CALLER_SYSTEM_ID]->ClientWeb ? ",(SELECT COUNT(*) FROM `" . DB_PREFIX . DATABASE_TICKETS . "` WHERE `deleted`=0 AND `last_update`>" . DBManager::RealEscape($max_last_update_read) . ") AS `totalread`" : ""; $result = DBManager::Execute(true, $q_count["total"] . "," . $q_count["totalperm"] . "," . $q_count["totalquery"] . $q_count["totalread"] . " FROM `" . DB_PREFIX . DATABASE_TICKETS . "` WHERE `deleted`=0;"); $row = DBManager::FetchArray($result); if (!isset($row["totalread"])) { $row["totalread"] = 0; } $c_total = min($row["total"], $row["totalperm"]); $c_totalread = min($row["totalread"], $row["totalperm"]); $c_totalquery = min($row["totalquery"], $row["totalperm"]); $q_grperm = $permission == PERMISSION_FULL ? "" : "`target_group_id` IN ('" . implode("','", Server::$Operators[CALLER_SYSTEM_ID]->Groups) . "') AND "; $result = DBManager::Execute(true, "SELECT `t1`.`last_update` AS `lmc`,`fullname`,`text` FROM `" . DB_PREFIX . DATABASE_TICKETS . "` AS `t1` INNER JOIN `" . DB_PREFIX . DATABASE_TICKET_MESSAGES . "` AS `t2` ON `t1`.`id`=`t2`.`ticket_id` WHERE " . $q_grperm . "(`t2`.`type`=0 OR `t2`.`type`=3) ORDER BY `t1`.`last_update` DESC LIMIT 1;"); if ($result && ($row = DBManager::FetchArray($result))) { $c_lmc = $row["lmc"]; $c_name = cutString($row["fullname"], 90); $c_text = cutString($row["text"], 90); } } Server::$Response->Messages .= "<dt u=\"" . base64_encode($_POST["p_dt_u_id"]) . "\" c=\"" . base64_encode($_POST["p_dt_c_id"]) . "\" dut=\"" . base64_encode(CacheManager::$DataUpdateTimes[DATA_UPDATE_KEY_TICKETS]) . "\" lmc=\"" . base64_encode($c_lmc) . "\" lmn=\"" . base64_encode($c_name) . "\" lmt=\"" . base64_encode($c_text) . "\" p=\"" . base64_encode($loads) . "\" t=\"" . base64_encode($c_total) . "\" r=\"" . base64_encode($c_totalread) . "\" q=\"" . base64_encode($c_totalquery) . "\">\r\n" . $xml . "\r\n</dt>"; }
die; } require LIVEZILLA_PATH . "_lib/objects.external.inc.php"; require LIVEZILLA_PATH . "_lib/functions.external.inc.php"; if (isset($_POST[POST_EXTERN_SERVER_ACTION])) { LocalizationManager::AutoLoad(); Server::InitDataBlock(array("FILTERS", "INPUTS")); VisitorChat::$Router = new ChatRouter(); $externalUser = new Visitor(Encoding::Base64UrlDecode($_POST[POST_EXTERN_USER_USERID])); $externalUser->ExtendSession = true; $externalUser->Load(); array_push($externalUser->Browsers, new VisitorChat($externalUser->UserId, Encoding::Base64UrlDecode($_POST[POST_EXTERN_USER_BROWSERID]))); array_push($externalUser->Browsers, new VisitorBrowser($externalUser->Browsers[0]->BrowserId, $externalUser->Browsers[0]->UserId)); define("IS_FILTERED", DataManager::$Filters->Match(Communication::GetIP(), LocalizationManager::ImplodeLanguages(!empty($_SERVER["HTTP_ACCEPT_LANGUAGE"]) ? $_SERVER["HTTP_ACCEPT_LANGUAGE"] : ""), Encoding::Base64UrlDecode($_POST[POST_EXTERN_USER_USERID]), $externalUser->GeoCountryISO2)); define("IS_FLOOD", $externalUser->Browsers[0]->FirstCall && Filter::IsFlood(Communication::GetIP(), @$_POST[POST_EXTERN_USER_USERID], true)); Server::InitDataBlock(array("INTERNAL", "GROUPS")); VisitorChat::ApplyDynamicGroup($externalUser->Browsers[0]); $externalUser->Browsers[0]->Load(); if ($externalUser->Browsers[0]->Status == CHAT_STATUS_OPEN && IS_FILTERED && !FILTER_ALLOW_CHATS && !FILTER_ALLOW_TICKETS) { $error = buildLoginErrorField(); $externalUser->AddFunctionCall("lz_chat_release(true,'" . $error . "');", false); } else { if ($_POST[POST_EXTERN_SERVER_ACTION] == "search_kb") { $query = Communication::ReadParameter("p_q", ""); $color = ExternalChat::ReadTextColor(); $catcount = 0; $main = $result = $navcats = ""; if ($query == "%ALL%") { $matches = KnowledgeBase::GetEntries(Visitor::$BrowserLanguage); if (count($matches) == 0) { $matches = KnowledgeBase::GetEntries();
static function UpdateUserManagement($_prefix) { if (OperatorRequest::IsValidated() && Is::Defined("VALIDATED_FULL_LOGIN") && OperatorRequest::IsAdministrator(true)) { Logging::SecurityLog("ServerManager::UpdateUserManagement", "", CALLER_SYSTEM_ID); $count = 0; while (isset($_POST["p_operators_" . $count . "_id"])) { if (!empty($_POST["p_operators_" . $count . "_delete"])) { DBManager::Execute(true, "DELETE FROM `" . $_prefix . DATABASE_OPERATORS . "` WHERE `id`='" . DBManager::RealEscape($_POST["p_operators_" . $count . "_id"]) . "' LIMIT 1;"); } else { $did = !empty(Server::$Operators[$_POST["p_operators_" . $count . "_system_id"]]) ? Server::$Operators[$_POST["p_operators_" . $count . "_system_id"]]->AppDeviceId : ""; $abm = !empty(Server::$Operators[$_POST["p_operators_" . $count . "_system_id"]]) ? Server::$Operators[$_POST["p_operators_" . $count . "_system_id"]]->AppBackgroundMode : false; $aos = !empty(Server::$Operators[$_POST["p_operators_" . $count . "_system_id"]]) ? Server::$Operators[$_POST["p_operators_" . $count . "_system_id"]]->AppOS : ""; $lac = !empty(Server::$Operators[$_POST["p_operators_" . $count . "_system_id"]]) ? Server::$Operators[$_POST["p_operators_" . $count . "_system_id"]]->LastActive : 0; $fac = !empty(Server::$Operators[$_POST["p_operators_" . $count . "_system_id"]]) ? Server::$Operators[$_POST["p_operators_" . $count . "_system_id"]]->FirstActive : 0; $wcl = !empty(Server::$Operators[$_POST["p_operators_" . $count . "_system_id"]]) ? Server::$Operators[$_POST["p_operators_" . $count . "_system_id"]]->ClientWeb : 0; $acl = !empty(Server::$Operators[$_POST["p_operators_" . $count . "_system_id"]]) ? Server::$Operators[$_POST["p_operators_" . $count . "_system_id"]]->AppClient : 0; $sta = !empty(Server::$Operators[$_POST["p_operators_" . $count . "_system_id"]]) ? Server::$Operators[$_POST["p_operators_" . $count . "_system_id"]]->Status : 2; $tok = !empty(Server::$Operators[$_POST["p_operators_" . $count . "_system_id"]]) ? Server::$Operators[$_POST["p_operators_" . $count . "_system_id"]]->Token : ""; DBManager::Execute(true, "REPLACE INTO `" . $_prefix . DATABASE_OPERATORS . "` (`id`, `system_id`, `token`, `fullname`, `description`, `email`, `permissions`, `webspace`, `password`, `status`, `level`, `visitor_file_sizes`, `groups`, `groups_status`, `groups_hidden`,`reposts`, `languages`, `auto_accept_chats`, `login_ip_range`, `websites_users`, `websites_config`, `bot`, `wm`, `wmohca`,`first_active`,`last_active`,`sign_off`,`lweb`,`lapp`,`mobile_os`,`mobile_device_id`,`mobile_background`,`mobile_ex`,`max_chats`) VALUES ('" . DBManager::RealEscape($_POST["p_operators_" . $count . "_id"]) . "','" . DBManager::RealEscape($_POST["p_operators_" . $count . "_system_id"]) . "','" . DBManager::RealEscape($tok) . "','" . DBManager::RealEscape($_POST["p_operators_" . $count . "_fullname"]) . "','" . DBManager::RealEscape($_POST["p_operators_" . $count . "_description"]) . "','" . DBManager::RealEscape($_POST["p_operators_" . $count . "_email"]) . "','" . DBManager::RealEscape($_POST["p_operators_" . $count . "_permissions"]) . "','" . DBManager::RealEscape($_POST["p_operators_" . $count . "_webspace"]) . "','" . DBManager::RealEscape($_POST["p_operators_" . $count . "_password"]) . "','" . $sta . "','" . DBManager::RealEscape($_POST["p_operators_" . $count . "_level"]) . "','','" . DBManager::RealEscape($_POST["p_operators_" . $count . "_groups"]) . "','','" . DBManager::RealEscape($_POST["p_operators_" . $count . "_groups_hidden"]) . "','','" . DBManager::RealEscape($_POST["p_operators_" . $count . "_languages"]) . "',0,'" . DBManager::RealEscape($_POST["p_operators_" . $count . "_lipr"]) . "','" . DBManager::RealEscape($_POST["p_operators_" . $count . "_websites_users"]) . "','" . DBManager::RealEscape($_POST["p_operators_" . $count . "_websites_config"]) . "','" . DBManager::RealEscape($_POST["p_operators_" . $count . "_bot"]) . "','" . DBManager::RealEscape($_POST["p_operators_" . $count . "_wm"]) . "','" . DBManager::RealEscape($_POST["p_operators_" . $count . "_wmohca"]) . "'," . $fac . "," . $lac . "," . intval(empty($_POST["p_operators_" . $count . "_deac"]) ? 0 : 2) . "," . intval($wcl ? 1 : 0) . "," . intval($acl ? 1 : 0) . ",'" . DBManager::RealEscape($aos) . "','" . DBManager::RealEscape($did) . "'," . intval($abm ? 1 : 0) . ",'" . DBManager::RealEscape(@$_POST["p_operators_" . $count . "_mobile_ex"]) . "'," . intval(@$_POST["p_operators_" . $count . "_max_chats"]) . ");"); } if (!empty($_POST["p_operators_" . $count . "_pp"])) { DBManager::Execute(true, "DELETE FROM `" . $_prefix . DATABASE_PROFILE_PICTURES . "` WHERE `webcam`='0' AND `internal_id`='" . DBManager::RealEscape($_POST["p_operators_" . $count . "_system_id"]) . "';"); if ($_POST["p_operators_" . $count . "_pp"] != "DEFAULT") { DBManager::Execute(true, "INSERT INTO `" . $_prefix . DATABASE_PROFILE_PICTURES . "` (`id` ,`internal_id`,`time` ,`webcam` ,`data`) VALUES ('" . DBManager::RealEscape(getId(32)) . "','" . DBManager::RealEscape($_POST["p_operators_" . $count . "_system_id"]) . "','" . DBManager::RealEscape(time()) . "',0,'" . DBManager::RealEscape($_POST["p_operators_" . $count . "_pp"]) . "');"); } } $count++; } $count = 0; while (isset($_POST["p_groups_" . $count . "_id"])) { if (!empty($_POST["p_groups_" . $count . "_delete"])) { DBManager::Execute(true, "DELETE FROM `" . $_prefix . DATABASE_GROUPS . "` WHERE `id`='" . DBManager::RealEscape($_POST["p_groups_" . $count . "_id"]) . "' LIMIT 1;"); } else { $f_functions = "000000"; $result = DBManager::Execute(true, "SELECT * FROM `" . $_prefix . DATABASE_GROUPS . "` WHERE `id`='" . DBManager::RealEscape($_POST["p_groups_" . $count . "_id"]) . "' LIMIT 1;"); if ($row = DBManager::FetchArray($result)) { $f_functions = $row["functions"]; } $f_functions = !empty($_POST["p_groups_" . $count . "_functions"]) ? $_POST["p_groups_" . $count . "_functions"] : $f_functions; DBManager::Execute(true, "REPLACE INTO `" . $_prefix . DATABASE_GROUPS . "` (`id`, `dynamic`, `description`, `external`, `internal`, `created`, `email`, `standard`, `opening_hours`, `functions`, `chat_inputs_hidden`, `ticket_inputs_hidden`, `chat_inputs_required`, `ticket_inputs_required`, `chat_inputs_masked`, `ticket_inputs_masked`, `chat_inputs_cap`, `ticket_inputs_cap`, `max_chats`, `visitor_filters`, `chat_vouchers_required`, `pre_chat_js`, `post_chat_js`, `ticket_email_out`, `ticket_email_in`, `ticket_handle_unknown`, `chat_email_out`,`ticket_assignment`,`priorities`,`priority_sleep`) VALUES ('" . DBManager::RealEscape($_POST["p_groups_" . $count . "_id"]) . "',0,'" . DBManager::RealEscape($_POST["p_groups_" . $count . "_description"]) . "','" . DBManager::RealEscape($_POST["p_groups_" . $count . "_external"]) . "','" . DBManager::RealEscape($_POST["p_groups_" . $count . "_internal"]) . "'," . time() . ",'" . DBManager::RealEscape($_POST["p_groups_" . $count . "_email"]) . "','" . DBManager::RealEscape($_POST["p_groups_" . $count . "_standard"]) . "','" . DBManager::RealEscape($_POST["p_groups_" . $count . "_opening_hours"]) . "','" . DBManager::RealEscape($f_functions) . "','" . DBManager::RealEscape($_POST["p_groups_" . $count . "_chat_inputs_hidden"]) . "','" . DBManager::RealEscape($_POST["p_groups_" . $count . "_ticket_inputs_hidden"]) . "','" . DBManager::RealEscape($_POST["p_groups_" . $count . "_chat_inputs_required"]) . "','" . DBManager::RealEscape($_POST["p_groups_" . $count . "_ticket_inputs_required"]) . "','" . DBManager::RealEscape($_POST["p_groups_" . $count . "_chat_inputs_masked"]) . "','" . DBManager::RealEscape($_POST["p_groups_" . $count . "_ticket_inputs_masked"]) . "','" . DBManager::RealEscape($_POST["p_groups_" . $count . "_chat_inputs_cap"]) . "','" . DBManager::RealEscape($_POST["p_groups_" . $count . "_ticket_inputs_cap"]) . "'," . intval($_POST["p_groups_" . $count . "_max_chats"]) . ",'" . DBManager::RealEscape($_POST["p_groups_" . $count . "_visitor_filters"]) . "','" . DBManager::RealEscape($_POST["p_groups_" . $count . "_chat_vouchers_required"]) . "','" . DBManager::RealEscape($_POST["p_groups_" . $count . "_pre_js"]) . "','" . DBManager::RealEscape($_POST["p_groups_" . $count . "_post_js"]) . "','" . DBManager::RealEscape($_POST["p_groups_" . $count . "_ticket_email_out"]) . "','" . DBManager::RealEscape($_POST["p_groups_" . $count . "_ticket_email_in"]) . "','" . DBManager::RealEscape($_POST["p_groups_" . $count . "_ticket_email_handling"]) . "','" . DBManager::RealEscape($_POST["p_groups_" . $count . "_chat_email_out"]) . "','" . DBManager::RealEscape($_POST["p_groups_" . $count . "_ticket_assign"]) . "','" . DBManager::RealEscape($_POST["p_groups_" . $count . "_priorities"]) . "'," . intval($_POST["p_groups_" . $count . "_ps"]) . ");"); } SocialMediaChannel::DeleteByGroup($_prefix, $_POST["p_groups_" . $count . "_id"]); $count++; } DBManager::Execute(true, "DELETE FROM `" . $_prefix . DATABASE_OPERATOR_LOGINS . "`;"); Server::$Operators = Server::$Groups = Server::$Visitors = null; Server::InitDataBlock(array("INTERNAL", "GROUPS", "VISITOR")); ServerManager::UpdatePredefinedMessages($_prefix); ServerManager::UpdateSignatures($_prefix); ServerManager::UpdateSocialMedia($_prefix); if (!empty($_POST["p_operators_0_id"])) { DBManager::Execute(true, "DELETE FROM `" . $_prefix . DATABASE_AUTO_REPLIES . "` WHERE NOT EXISTS (SELECT * FROM `" . $_prefix . DATABASE_OPERATORS . "` WHERE `system_id` = `" . $_prefix . DATABASE_AUTO_REPLIES . "`.`owner_id`) AND NOT EXISTS (SELECT * FROM `" . $_prefix . DATABASE_GROUPS . "` WHERE `id` = `" . $_prefix . DATABASE_AUTO_REPLIES . "`.`owner_id`)"); DBManager::Execute(true, "DELETE FROM `" . $_prefix . DATABASE_PROFILE_PICTURES . "` WHERE NOT EXISTS (SELECT * FROM `" . $_prefix . DATABASE_OPERATORS . "` WHERE `system_id` = `" . $_prefix . DATABASE_PROFILE_PICTURES . "`.`internal_id`);"); DBManager::Execute(true, "DELETE FROM `" . $_prefix . DATABASE_PROFILES . "` WHERE NOT EXISTS (SELECT * FROM `" . $_prefix . DATABASE_OPERATORS . "` WHERE `system_id` = `" . $_prefix . DATABASE_PROFILES . "`.`id`);"); if (isset($_POST[POST_INTERN_EDIT_USER])) { $combos = explode(";", $_POST[POST_INTERN_EDIT_USER]); for ($i = 0; $i < count($combos); $i++) { if (strpos($combos[$i], ",") !== false) { $vals = explode(",", $combos[$i]); if (strlen($vals[1]) > 0) { Server::$Operators[$vals[0]]->ChangePassword($vals[1]); } if ($vals[2] == 1) { Server::$Operators[$vals[0]]->SetPasswordChangeNeeded(); } } } } } CacheManager::Flush(); Server::$Response->SetStandardResponse(1, ""); } }
static function GetBrowserLocalization($country = "") { Server::InitDataBlock(array("LANGUAGES", "COUNTRIES")); $base = @$_SERVER["HTTP_ACCEPT_LANGUAGE"]; $language = str_replace(array(",", "_", " "), array(";", "-", ""), !empty($_GET[GET_EXTERN_USER_LANGUAGE]) ? strtoupper(Encoding::Base64UrlDecode($_GET[GET_EXTERN_USER_LANGUAGE])) : (!empty($base) ? strtoupper($base) : "")); if (strlen($language) > 5 || strpos($language, ";") !== false) { $parts = explode(";", $language); if (count($parts) > 0) { $language = $parts[0]; } else { $language = substr($language, 0, 5); } } if (strlen($language) >= 2) { $parts = explode("-", $language); if (!isset(Server::$Languages[$language])) { $language = $parts[0]; if (!isset(Server::$Languages[$language])) { $language = ""; } } if (count($parts) > 1 && isset(Server::$Countries[$parts[1]])) { $country = $parts[1]; } } else { if (strlen($language) < 2) { $language = ""; } } return array($language, $country); }
* Copyright 2015 LiveZilla GmbH * All rights reserved. * LiveZilla is a registered trademark. * * Improper changes to this file may cause critical errors. ***************************************************************************************/ if (!defined("IN_LIVEZILLA")) { die; } define("LOGIN", $_POST[POST_INTERN_SERVER_ACTION] == INTERN_ACTION_LOGIN); define("LOGOFF", isset($_POST[POST_INTERN_USER_STATUS]) && $_POST[POST_INTERN_USER_STATUS] == USER_STATUS_OFFLINE); define("DB_ACCESS_REQUIRED", DB_CONNECTION && !empty($_POST[POST_INTERN_GET_MANAGEMENT])); define("NO_CLIPPING", LOGIN || isset($_POST["p_ext_u"]) && $_POST["p_ext_u"] == XML_CLIP_NULL); define("SERVERSETUP", Server::IsServerSetup()); define("MANAGEMENT", !empty($_POST[POST_INTERN_GET_MANAGEMENT]) && SERVERSETUP); Server::InitDataBlock(array("INTERNAL", "GROUPS", "VISITOR", "FILTERS", "INPUTS", "DBCONFIG")); require LIVEZILLA_PATH . "_lib/objects.internal.inc.php"; OperatorRequest::Validate(); if (OperatorRequest::IsValidated()) { CacheManager::GetDataUpdateTimes(); if ($_POST[POST_INTERN_SERVER_ACTION] == INTERN_ACTION_LISTEN || $_POST[POST_INTERN_SERVER_ACTION] == INTERN_ACTION_LOGIN) { Server::$Operators[CALLER_SYSTEM_ID]->SaveMobileParameters(); OperatorRequest::Listen(); if (STATS_ACTIVE && !LOGIN) { Server::$Statistic->ProcessAction(ST_ACTION_LOG_STATUS, array(Server::$Operators[CALLER_SYSTEM_ID])); } } else { if ($_POST[POST_INTERN_SERVER_ACTION] == INTERN_ACTION_SEND_FILE) { OperatorRequest::UploadFile(); } else { if ($_POST[POST_INTERN_SERVER_ACTION] == INTERN_ACTION_OPTIMIZE_TABLES) {
function GetFeedbackTemplate() { global $USER; 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($USER->Browsers[0]->ChatId); return $template; }
function BuildChatXML() { global $USER, $BROWSER; Server::InitDataBlock(array("INPUTS")); if ($this->CurrentResponseType == DATA_RESPONSE_TYPE_KEEP_ALIVE) { $this->CurrentResponseType = DATA_RESPONSE_TYPE_BASIC; } if ($this->GetAll) { $this->CurrentResponseType = DATA_RESPONSE_TYPE_STATIC; } if (!$BROWSER->Closed && ($BROWSER->Status > CHAT_STATUS_OPEN || $BROWSER->Waiting)) { if (!empty($BROWSER->DesiredChatGroup)) { $pra = !empty($BROWSER->Members[CALLER_SYSTEM_ID]) ? " pra=\"" . base64_encode($BROWSER->PostsReceived(CALLER_SYSTEM_ID)) . "\"" : ""; $cti = ""; $USER->IsChat = true; $this->XMLCurrentChat = "<chat id=\"" . base64_encode($BROWSER->ChatId) . "\" d=\"" . base64_encode(!empty($BROWSER->Declined) ? 1 : 0) . "\" p=\"" . base64_encode($BROWSER->Priority) . "\" f=\"" . base64_encode($BROWSER->FirstActive) . "\" q=\"" . base64_encode($BROWSER->Status > CHAT_STATUS_OPEN ? "0" : "1") . "\" cmb=\"" . base64_encode($BROWSER->CallMeBack) . "\" st=\"" . base64_encode($BROWSER->Activated) . "\" fn=\"" . base64_encode($BROWSER->UserData->Fullname) . "\" em=\"" . base64_encode($BROWSER->UserData->Email) . "\" eq=\"" . base64_encode($BROWSER->UserData->Text) . "\" gr=\"" . base64_encode($BROWSER->DesiredChatGroup) . "\" dcp=\"" . base64_encode($BROWSER->DesiredChatPartner) . "\" at=\"" . base64_encode($BROWSER->AllocatedTime) . "\" cp=\"" . base64_encode($BROWSER->UserData->Phone) . "\" co=\"" . base64_encode($BROWSER->UserData->Company) . "\"" . $pra . $cti . ">\r\n"; foreach (Server::$Groups as $groupid => $group) { if ($group->IsDynamic) { foreach ($group->Members as $member => $persistent) { if ($member == $BROWSER->SystemId) { $this->XMLCurrentChat .= "<gr p=\"" . base64_encode($persistent ? "1" : "0") . "\">" . base64_encode($groupid) . "</gr>\r\n"; } } } } if (is_array($BROWSER->UserData->Customs)) { foreach ($BROWSER->UserData->Customs as $index => $value) { if (Server::$Inputs[$index]->Active && Server::$Inputs[$index]->Custom) { $value = Server::$Inputs[$index]->Type == "Text" ? $BROWSER->GetInputData($index) : $value; $this->XMLCurrentChat .= " <cf index=\"" . base64_encode($index) . "\">" . base64_encode(Server::$Inputs[$index]->GetClientValue($value)) . "</cf>\r\n"; } } } $this->XMLCurrentChat .= " <pn acc=\"" . base64_encode($BROWSER->Activated ? "1" : "0") . "\">\r\n"; foreach ($BROWSER->Members as $systemid => $member) { $this->XMLCurrentChat .= "<member id=\"" . base64_encode($systemid) . "\" st=\"" . base64_encode($member->Status) . "\" dec=\"" . base64_encode($member->Declined ? 1 : 0) . "\" />\r\n"; } $this->XMLCurrentChat .= " </pn>\r\n"; if (!empty($BROWSER->ChatVoucherId)) { $chatticket = VisitorChat::GetMatchingVoucher($BROWSER->DesiredChatGroup, $BROWSER->ChatVoucherId); if (!empty($chatticket)) { $this->XMLCurrentChat .= "<cticket>" . $chatticket->GetXML(true) . "</cticket>\r\n"; } } $v_tp = 0; if (!empty($BROWSER->Members[CALLER_SYSTEM_ID])) { if ($BROWSER->Activated == 0) { $BROWSER->LoadForward(false, true); if (!empty($BROWSER->Forward) && ($BROWSER->Forward->TargetSessId == CALLER_SYSTEM_ID || empty($BROWSER->Forward->TargetSessId))) { $BROWSER->RepostChatHistory(3, $BROWSER->ChatId, CALLER_SYSTEM_ID, 0, 0, "", "", "", false, false); $BROWSER->Forward->Destroy(); } else { $BROWSER->RepostChatHistory(3, $BROWSER->ChatId, CALLER_SYSTEM_ID, 0, 0, "", "", "", false, false); } } $v_tp = $BROWSER->Typing ? 1 : 0; } if (isset($this->Caller->ExternalChats[$BROWSER->SystemId]) && !empty($this->Caller->ExternalChats[$BROWSER->SystemId]->FileUploadRequest)) { foreach ($this->Caller->ExternalChats[$BROWSER->SystemId]->FileUploadRequest as $request) { if ($request->Error && $request->Permission != PERMISSION_NONE) { if (!$request->Closed) { $request->Close(); } $this->XMLCurrentChat .= " <fupr id=\"" . base64_encode($request->Id) . "\" cr=\"" . base64_encode($request->Created) . "\" fm=\"" . base64_encode($request->FileMask) . "\" fn=\"" . base64_encode($request->FileName) . "\" fid=\"" . base64_encode($request->FileId) . "\" cid=\"" . base64_encode($request->ChatId) . "\" error=\"" . base64_encode(true) . "\" />\r\n"; } else { if ($request->Download) { $this->XMLCurrentChat .= " <fupr pm=\"" . base64_encode($request->Permission) . "\" id=\"" . base64_encode($request->Id) . "\" cr=\"" . base64_encode($request->Created) . "\" fm=\"" . base64_encode($request->FileMask) . "\" fn=\"" . base64_encode($request->FileName) . "\" cid=\"" . base64_encode($request->ChatId) . "\" fid=\"" . base64_encode($request->FileId) . "\" download=\"" . base64_encode(true) . "\" size=\"" . base64_encode(@filesize($request->GetFile())) . "\" />\r\n"; } else { if ($request->Permission == PERMISSION_VOID) { $this->XMLCurrentChat .= " <fupr id=\"" . base64_encode($request->Id) . "\" cr=\"" . base64_encode($request->Created) . "\" fm=\"" . base64_encode($request->FileMask) . "\" fn=\"" . base64_encode($request->FileName) . "\" fid=\"" . base64_encode($request->FileId) . "\" cid=\"" . base64_encode($request->ChatId) . "\" />\r\n"; } else { if ($request->Permission == PERMISSION_NONE) { $this->XMLCurrentChat .= " <fupr pm=\"" . base64_encode($request->Permission) . "\" id=\"" . base64_encode($request->Id) . "\" cr=\"" . base64_encode($request->Created) . "\" fm=\"" . base64_encode($request->FileMask) . "\" fn=\"" . base64_encode($request->FileName) . "\" cid=\"" . base64_encode($request->ChatId) . "\" fid=\"" . base64_encode($request->FileId) . "\" />\r\n"; } else { if ($request->Permission == PERMISSION_CHAT_ARCHIVE) { $this->XMLCurrentChat .= " <fupr pm=\"" . base64_encode($request->Permission) . "\" id=\"" . base64_encode($request->Id) . "\" cr=\"" . base64_encode($request->Created) . "\" fm=\"" . base64_encode($request->FileMask) . "\" fn=\"" . base64_encode($request->FileName) . "\" cid=\"" . base64_encode($request->ChatId) . "\" fid=\"" . base64_encode($request->FileId) . "\" />\r\n"; } } } } } } } $this->XMLCurrentChat .= " </chat>\r\n"; $this->XMLTyping .= "<v id=\"" . base64_encode($BROWSER->UserId . "~" . $BROWSER->BrowserId) . "\" tp=\"" . base64_encode($v_tp) . "\" />\r\n"; } else { $this->XMLCurrentChat = " <chat />\r\n"; } } }