function processStatus()
{
    if (isset($_POST[POST_INTERN_USER_STATUS])) {
        if (Is::Defined("LOGIN") && Server::$Operators[CALLER_SYSTEM_ID]->Status == USER_STATUS_OFFLINE) {
            return;
        }
        if (Server::$Operators[CALLER_SYSTEM_ID]->Status != $_POST[POST_INTERN_USER_STATUS] || !empty($_POST["p_groups_status"]) || isset($_POST[POST_GLOBAL_TYPING]) && Server::$Operators[CALLER_SYSTEM_ID]->Typing != $_POST[POST_GLOBAL_TYPING]) {
            if (isset($_POST[POST_GLOBAL_TYPING])) {
                Server::$Operators[CALLER_SYSTEM_ID]->Typing = $_POST[POST_GLOBAL_TYPING];
            }
            CacheManager::FlushKey(DATA_CACHE_KEY_OPERATORS);
            Server::$Operators[CALLER_SYSTEM_ID]->Status = $_POST[POST_INTERN_USER_STATUS];
            if (!empty($_POST["p_groups_status"])) {
                Server::$Operators[CALLER_SYSTEM_ID]->GroupsAway = array();
                $i = 0;
                while (isset($_POST["p_groups_status_" . $i])) {
                    Server::$Operators[CALLER_SYSTEM_ID]->GroupsAway[] = $_POST["p_groups_status_" . $i++];
                }
            }
        }
    }
}
function getChatVoucherTemplate($html = "")
{
    Server::InitDataBlock(array("DBCONFIG"));
    if (!Is::Defined("DB_CONNECTION") || !empty(Server::$Configuration->Database["ccpp"]["Custom"])) {
        return "";
    }
    if (!empty(Server::$Configuration->File["gl_ccac"])) {
        foreach (Server::$Configuration->Database["cct"] as $type) {
            $html .= $type->GetTemplate();
        }
    }
    $cchtml = IOStruct::GetFile(PATH_TEMPLATES . "chat_voucher_checkout.tpl");
    $mycountry = "";
    $replacements = array("<!--lp_company-->" => "", "<!--lp_firstname-->" => "", "<!--lp_email-->" => "", "<!--lp_lastname-->" => "", "<!--lp_taxid-->" => "", "<!--lp_business_type-->" => "", "<!--lp_address_1-->" => "", "<!--lp_address_2-->" => "", "<!--lp_city-->" => "", "<!--lp_state-->" => "", "<!--lp_country-->" => "", "<!--lp_phone-->" => "", "<!--lp_zip-->" => "");
    $prefillco = !empty($_GET["co"]) ? " OR id='" . DBManager::RealEscape(Encoding::Base64UrlDecode($_GET["co"])) . "'" : "";
    if (!Is::Null(Cookie::Get("userid")) || !empty($prefillco)) {
        $result = DBManager::Execute(true, "SELECT * FROM `" . DB_PREFIX . DATABASE_COMMERCIAL_CHAT_VOUCHERS . "` WHERE `visitor_id`='" . DBManager::RealEscape(Cookie::Get("userid")) . "'" . $prefillco . " ORDER BY `created` DESC LIMIT 1;");
        if ($result) {
            if ($row = DBManager::FetchArray($result)) {
                $replacements = array("<!--lp_company-->" => $row["company"], "<!--lp_firstname-->" => $row["firstname"], "<!--lp_lastname-->" => $row["lastname"], "<!--lp_taxid-->" => $row["tax_id"], "<!--lp_email-->" => $row["email"], "<!--lp_business_type-->" => $row["business_type"], "<!--lp_address_1-->" => $row["address_1"], "<!--lp_address_2-->" => $row["address_2"], "<!--lp_city-->" => $row["city"], "<!--lp_state-->" => $row["state"], "<!--lp_country-->" => $row["country"], "<!--lp_phone-->" => $row["phone"], "<!--lp_zip-->" => $row["zip"]);
                $mycountry = $row["country"];
            }
        }
    }
    $clist = Server::$Countries;
    asort($clist);
    $countrieshtml = "";
    foreach ($clist as $isokey => $value) {
        if (!empty($isokey)) {
            $countrieshtml .= $isokey == $mycountry ? "<option value=\"" . $isokey . "\" SELECTED>" . utf8_encode($value) . "</option>" : "<option value=\"" . $isokey . "\">" . utf8_encode($value) . "</option>";
        }
    }
    $cchtml = str_replace("<!--countries-->", $countrieshtml, $cchtml);
    foreach ($replacements as $key => $value) {
        $cchtml = str_replace($key, $value, $cchtml);
    }
    $cchtml = str_replace("<!--show_VAT-->", !empty(Server::$Configuration->File["gl_ccsv"]) ? "''" : "none", $cchtml);
    $cchtml = str_replace("<!--voucher_form-->", $html, $cchtml);
    if (!empty(Server::$Configuration->Database["ccpp"]["PayPal"]->LogoURL)) {
        $cchtml = str_replace("<!--pp_logo_url-->", " src=\"" . Server::$Configuration->Database["ccpp"]["PayPal"]->LogoURL . "\"", $cchtml);
    } else {
        $cchtml = str_replace("<!--pp_logo_url-->", "", $cchtml);
    }
    $cchtml = str_replace("<!--extends_voucher-->", !empty($_GET["co"]) && strlen(Encoding::Base64UrlDecode($_GET["co"])) == 16 ? Encoding::Base64UrlDecode($_GET["co"]) : "", $cchtml);
    $cchtml = str_replace("<!--ofc-->", !empty($_GET["ofc"]) ? "MQ__" : "", $cchtml);
    $cchtml = str_replace("<!--VAT-->", str_replace("<!--VAT-->", Server::$Configuration->File["gl_ccva"], LocalizationManager::$TranslationStrings["client_voucher_include_vat"]), $cchtml);
    return $cchtml;
}
 static function SpanSet($_value)
 {
     if (Is::Defined("DB_CONNECTION") && @Server::$Configuration->File["gl_db_gtspan"] != $_value) {
         DBManager::Execute(true, "REPLACE INTO `" . DB_PREFIX . DATABASE_CONFIG . "` (`key`, `value`) VALUES ('gl_db_gtspan','" . intval(Server::$Configuration->File["gl_db_gtspan"] = $_value) . "');");
     }
 }
 static function Maintain($_randStandard, $_timeouts)
 {
     if (!Is::Defined("NO_DB_LOG")) {
         define("NO_DB_LOG", true);
     }
     if ($_randStandard == 1) {
         if (!STATS_ACTIVE) {
             DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_VISITORS . "` WHERE `last_active`<" . DBManager::RealEscape(time() - Server::$Configuration->File["gl_dvhd"] * 86400) . ";");
             DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_OPERATOR_STATUS . "` WHERE `" . DB_PREFIX . DATABASE_OPERATOR_STATUS . "`.`confirmed`<" . DBManager::RealEscape(time() - Server::$Configuration->File["gl_dvhd"] * 86400) . ";");
         } else {
             StatisticProvider::DeleteHTMLReports();
         }
         DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_EVENT_TRIGGERS . "` WHERE NOT EXISTS (SELECT * FROM `" . DB_PREFIX . DATABASE_VISITORS . "` WHERE `id` = `" . DB_PREFIX . DATABASE_EVENT_TRIGGERS . "`.`receiver_user_id`)");
         DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_CHAT_ARCHIVE . "` WHERE (`html` = '0' OR `html` = '') AND `time` < " . DBManager::RealEscape(time() - $_timeouts[3]));
         DBManager::Execute(true, "UPDATE `" . DB_PREFIX . DATABASE_CHAT_ARCHIVE . "` SET `closed`='" . time() . "' WHERE `chat_type`<>1 AND `closed`<`endtime` AND `endtime`<" . (time() - 1800) . ";");
         DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_CHAT_ARCHIVE . "` WHERE `closed`=0 AND `chat_type`=1 AND NOT EXISTS (SELECT * FROM `" . DB_PREFIX . DATABASE_VISITOR_CHATS . "` WHERE `chat_id` = `" . DB_PREFIX . DATABASE_CHAT_ARCHIVE . "`.`chat_id`)");
         DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_POSTS . "` WHERE `time` < " . DBManager::RealEscape(time() - $_timeouts[3]));
         DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_POSTS . "` WHERE `persistent` = '0' AND `time` < " . DBManager::RealEscape(time() - $_timeouts[1]));
         DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_POSTS . "` WHERE `repost` = '1' AND `time` < " . DBManager::RealEscape(time() - $_timeouts[0]));
         DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_OPERATOR_LOGINS . "` WHERE `time` < " . DBManager::RealEscape(time() - $_timeouts[1]));
         DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_EVENT_ACTION_INTERNALS . "` WHERE `created` < " . DBManager::RealEscape(time() - $_timeouts[0]));
         DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_PROFILE_PICTURES . "` WHERE `webcam`=1 AND `time` < " . DBManager::RealEscape(time() - $_timeouts[0]));
         $clr = "";
         if (!empty(Server::$Configuration->File["gl_colt"])) {
             $clr = "`create` < " . intval(time() - Server::$Configuration->File["gl_colt"] * 86400) . " AND ";
         }
         DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_USER_DATA . "` WHERE " . $clr . "NOT EXISTS (SELECT * FROM `" . DB_PREFIX . DATABASE_VISITOR_BROWSERS . "` WHERE `data_id` = `" . DB_PREFIX . DATABASE_USER_DATA . "`.`id`) AND NOT EXISTS (SELECT * FROM `" . DB_PREFIX . DATABASE_FEEDBACKS . "` WHERE `data_id` = `" . DB_PREFIX . DATABASE_USER_DATA . "`.`id`);");
         DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_FEEDBACKS . "` WHERE `resource_id` != '' AND NOT EXISTS (SELECT * FROM `" . DB_PREFIX . DATABASE_RESOURCES . "` WHERE `id` = `" . DB_PREFIX . DATABASE_FEEDBACKS . "`.`resource_id`);");
     } else {
         if ($_randStandard == 2) {
             DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_ALERTS . "` WHERE NOT EXISTS (SELECT * FROM `" . DB_PREFIX . DATABASE_VISITORS . "` WHERE `id` = `" . DB_PREFIX . DATABASE_ALERTS . "`.`receiver_user_id`)");
             DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_CHAT_FILES . "` WHERE NOT EXISTS (SELECT * FROM `" . DB_PREFIX . DATABASE_VISITORS . "` WHERE `id` = `" . DB_PREFIX . DATABASE_CHAT_FILES . "`.`visitor_id`)");
             DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_CHAT_FORWARDS . "` WHERE NOT EXISTS (SELECT * FROM `" . DB_PREFIX . DATABASE_VISITOR_CHATS . "` WHERE `chat_id` = `" . DB_PREFIX . DATABASE_CHAT_FORWARDS . "`.`chat_id`)");
             DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_CHAT_REQUESTS . "` WHERE NOT EXISTS (SELECT * FROM `" . DB_PREFIX . DATABASE_VISITOR_BROWSERS . "` WHERE `id` = `" . DB_PREFIX . DATABASE_CHAT_REQUESTS . "`.`receiver_browser_id`)");
             DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_STATS_AGGS_GOALS . "` WHERE NOT EXISTS (SELECT * FROM `" . DB_PREFIX . DATABASE_GOALS . "` WHERE `id` = `" . DB_PREFIX . DATABASE_STATS_AGGS_GOALS . "`.`goal`)");
             DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_STATS_AGGS_PAGES . "` WHERE NOT EXISTS (SELECT * FROM `" . DB_PREFIX . DATABASE_VISITOR_DATA_PAGES . "` WHERE `id` = `" . DB_PREFIX . DATABASE_STATS_AGGS_PAGES . "`.`url`)");
             DBManager::Execute(true, "DELETE `" . DB_PREFIX . DATABASE_TICKETS . "` FROM `" . DB_PREFIX . DATABASE_TICKETS . "` INNER JOIN `" . DB_PREFIX . DATABASE_TICKET_MESSAGES . "` ON `" . DB_PREFIX . DATABASE_TICKETS . "`.`id`=`" . DB_PREFIX . DATABASE_TICKET_MESSAGES . "`.`ticket_id` WHERE `deleted`=1 AND `time` < " . DBManager::RealEscape(time() - $_timeouts[3]) . ";");
             DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_TICKET_CUSTOMS . "` WHERE NOT EXISTS (SELECT * FROM `" . DB_PREFIX . DATABASE_TICKETS . "` WHERE `id` = `" . DB_PREFIX . DATABASE_TICKET_CUSTOMS . "`.`ticket_id`)");
             DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_TICKET_EDITORS . "` WHERE NOT EXISTS (SELECT * FROM `" . DB_PREFIX . DATABASE_TICKETS . "` WHERE `id` = `" . DB_PREFIX . DATABASE_TICKET_EDITORS . "`.`ticket_id`)");
             DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_TICKET_LOGS . "` WHERE NOT EXISTS (SELECT * FROM `" . DB_PREFIX . DATABASE_TICKETS . "` WHERE `id` = `" . DB_PREFIX . DATABASE_TICKET_LOGS . "`.`ticket_id`)");
             DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_TICKET_COMMENTS . "` WHERE NOT EXISTS (SELECT * FROM `" . DB_PREFIX . DATABASE_TICKETS . "` WHERE `id` = `" . DB_PREFIX . DATABASE_TICKET_COMMENTS . "`.`ticket_id`)");
             DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_TICKET_MESSAGES . "` WHERE NOT EXISTS (SELECT * FROM `" . DB_PREFIX . DATABASE_TICKETS . "` WHERE `id` = `" . DB_PREFIX . DATABASE_TICKET_MESSAGES . "`.`ticket_id`)");
             DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_TICKETS . "` WHERE `last_update` < " . DBManager::RealEscape(time() - $_timeouts[1]) . " AND NOT EXISTS (SELECT * FROM `" . DB_PREFIX . DATABASE_TICKET_MESSAGES . "` WHERE `ticket_id` = `" . DB_PREFIX . DATABASE_TICKETS . "`.`id`)");
             DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_TICKET_ATTACHMENTS . "` WHERE NOT EXISTS (SELECT * FROM `" . DB_PREFIX . DATABASE_TICKET_MESSAGES . "` WHERE `id` = `" . DB_PREFIX . DATABASE_TICKET_ATTACHMENTS . "`.`parent_id`) AND NOT EXISTS (SELECT * FROM `" . DB_PREFIX . DATABASE_TICKET_EMAILS . "` WHERE `email_id` = `" . DB_PREFIX . DATABASE_TICKET_ATTACHMENTS . "`.`parent_id`)");
         } else {
             if ($_randStandard == 3) {
                 if (empty(Server::$Configuration->File["gl_vmac"]) && !Is::Defined("STATS_ACTIVE")) {
                     DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_VISITORS . "` WHERE `last_active`<" . (time() - Server::$Configuration->File["timeout_track"]) . " LIMIT 250;");
                 }
                 DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_VISITOR_BROWSERS . "` WHERE NOT EXISTS (SELECT * FROM `" . DB_PREFIX . DATABASE_VISITORS . "` WHERE `id` = `" . DB_PREFIX . DATABASE_VISITOR_BROWSERS . "`.`visitor_id`)");
                 DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_VISITOR_BROWSER_URLS . "` WHERE NOT EXISTS (SELECT * FROM `" . DB_PREFIX . DATABASE_VISITOR_BROWSERS . "` WHERE `id` = `" . DB_PREFIX . DATABASE_VISITOR_BROWSER_URLS . "`.`browser_id`)");
                 DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_VISITOR_CHATS . "` WHERE NOT EXISTS (SELECT * FROM `" . DB_PREFIX . DATABASE_VISITORS . "` WHERE `id` = `" . DB_PREFIX . DATABASE_VISITOR_CHATS . "`.`visitor_id`)");
                 DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_VISITOR_CHAT_OPERATORS . "` WHERE NOT EXISTS (SELECT * FROM `" . DB_PREFIX . DATABASE_VISITOR_CHATS . "` WHERE `chat_id` = `" . DB_PREFIX . DATABASE_VISITOR_CHAT_OPERATORS . "`.`chat_id`)");
                 DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_VISITOR_GOALS . "` WHERE NOT EXISTS (SELECT * FROM `" . DB_PREFIX . DATABASE_VISITORS . "` WHERE `id` = `" . DB_PREFIX . DATABASE_VISITOR_GOALS . "`.`visitor_id`)");
                 DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_WEBSITE_PUSHS . "` WHERE NOT EXISTS (SELECT * FROM `" . DB_PREFIX . DATABASE_VISITOR_BROWSERS . "` WHERE `id` = `" . DB_PREFIX . DATABASE_WEBSITE_PUSHS . "`.`receiver_browser_id`)");
                 DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_OVERLAY_BOXES . "` WHERE NOT EXISTS (SELECT * FROM `" . DB_PREFIX . DATABASE_VISITOR_BROWSERS . "` WHERE `id` = `" . DB_PREFIX . DATABASE_OVERLAY_BOXES . "`.`receiver_browser_id`)");
                 DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_GROUP_MEMBERS . "` WHERE NOT EXISTS (SELECT * FROM `" . DB_PREFIX . DATABASE_GROUPS . "` WHERE `id` = `" . DB_PREFIX . DATABASE_GROUP_MEMBERS . "`.`group_id`)");
                 DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_COMMERCIAL_CHAT_LOCALIZATIONS . "` WHERE NOT EXISTS (SELECT * FROM `" . DB_PREFIX . DATABASE_COMMERCIAL_CHAT_TYPES . "` WHERE `id` = `" . DB_PREFIX . DATABASE_COMMERCIAL_CHAT_LOCALIZATIONS . "`.`tid`)");
                 DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_COMMERCIAL_CHAT_VOUCHERS . "` WHERE NOT EXISTS (SELECT * FROM `" . DB_PREFIX . DATABASE_COMMERCIAL_CHAT_TYPES . "` WHERE `id` = `" . DB_PREFIX . DATABASE_COMMERCIAL_CHAT_VOUCHERS . "`.`tid`)");
                 DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_TICKET_EMAILS . "` WHERE `deleted`=1 AND `edited` < " . DBManager::RealEscape(time() - $_timeouts[3]));
                 DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_VISITOR_COMMENTS . "` WHERE `created` < " . DBManager::RealEscape(time() - max(1, Server::$Configuration->File["gl_colt"]) * 86400));
             } else {
                 if ($_randStandard == 4) {
                     DBManager::Execute(true, "UPDATE `" . DB_PREFIX . DATABASE_RESOURCES . "` SET `discarded`=1,`edited`=UNIX_TIMESTAMP() WHERE NOT EXISTS(SELECT * FROM `" . DB_PREFIX . DATABASE_TICKET_ATTACHMENTS . "` WHERE `res_id` = `" . DB_PREFIX . DATABASE_RESOURCES . "`.`id`) AND `created` < " . intval(time() - 7 * 86400) . " AND `discarded`=0 AND `type`=3 AND `parentid`=100 LIMIT 10;");
                     if (Server::$Configuration->File["gl_adct"] != 1) {
                         if (!empty(Server::$Configuration->File["gl_rm_chats"])) {
                             DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_CHAT_ARCHIVE . "` WHERE `chat_type`=1 AND `time` < " . intval(time() - Server::$Configuration->File["gl_rm_chats_time"]));
                         }
                         if (!empty(Server::$Configuration->File["gl_rm_oc"])) {
                             DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_CHAT_ARCHIVE . "` WHERE `chat_type`=0 AND `time` < " . intval(time() - Server::$Configuration->File["gl_rm_oc_time"]));
                         }
                         if (!empty(Server::$Configuration->File["gl_rm_gc"])) {
                             DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_CHAT_ARCHIVE . "` WHERE `chat_type`=2 AND `time` < " . intval(time() - Server::$Configuration->File["gl_rm_gc_time"]));
                         }
                         if (!empty(Server::$Configuration->File["gl_rm_rt"])) {
                             DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_FEEDBACKS . "` WHERE `created` < " . intval(time() - Server::$Configuration->File["gl_rm_rt_time"]));
                             DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_FEEDBACK_CRITERIA . "` WHERE NOT EXISTS (SELECT * FROM `" . DB_PREFIX . DATABASE_FEEDBACKS . "` WHERE `id` = `" . DB_PREFIX . DATABASE_FEEDBACK_CRITERIA . "`.`fid`)");
                         }
                         if (!empty(Server::$Configuration->File["gl_rm_cf"])) {
                             DBManager::Execute(true, "UPDATE `" . DB_PREFIX . DATABASE_RESOURCES . "` SET `discarded`=1,`edited`=UNIX_TIMESTAMP() WHERE `discarded`=0 AND `type`=4 AND `created` < " . intval(time() - Server::$Configuration->File["gl_rm_cf_time"]) . " ORDER BY `created` ASC LIMIT 5;");
                             if (!empty(Server::$Operators)) {
                                 foreach (Server::$Operators as $sid => $operator) {
                                     if (!$operator->IsBot) {
                                         DBManager::Execute(true, "UPDATE `" . DB_PREFIX . DATABASE_RESOURCES . "` SET `discarded`=1,`edited`=UNIX_TIMESTAMP() WHERE `discarded`=0 AND `type`=3 AND `parentid`='" . DBManager::RealEscape($sid) . "' AND `created` < " . intval(time() - Server::$Configuration->File["gl_rm_cf_time"]) . " ORDER BY `created` ASC LIMIT 5;");
                                     }
                                 }
                             }
                             DBManager::Execute(true, "UPDATE `" . DB_PREFIX . DATABASE_RESOURCES . "` SET `discarded`=1,`edited`=UNIX_TIMESTAMP() WHERE `discarded`=0 AND `type`=0 AND `parentid`=5 AND `created` < " . intval(time() - Server::$Configuration->File["gl_rm_cf_time"]) . " ORDER BY `created` ASC LIMIT 5;");
                         }
                         if (!empty(Server::$Configuration->File["gl_rm_tf"])) {
                             DBManager::Execute(true, "UPDATE `" . DB_PREFIX . DATABASE_RESOURCES . "` SET `discarded`=1,`edited`=UNIX_TIMESTAMP() WHERE `discarded`=0 AND `type`=3 AND `created` < " . intval(time() - Server::$Configuration->File["gl_rm_tf_time"]) . " ORDER BY `created` ASC LIMIT 5;");
                         }
                         if (!empty(Server::$Configuration->File["gl_rm_om"])) {
                             DBManager::Execute(true, "DELETE `" . DB_PREFIX . DATABASE_TICKETS . "` FROM `" . DB_PREFIX . DATABASE_TICKETS . "` INNER JOIN `" . DB_PREFIX . DATABASE_TICKET_MESSAGES . "` ON `" . DB_PREFIX . DATABASE_TICKETS . "`.`id`=`" . DB_PREFIX . DATABASE_TICKET_MESSAGES . "`.`ticket_id` WHERE `" . DB_PREFIX . DATABASE_TICKET_MESSAGES . "`.`time` < " . DBManager::RealEscape(time() - Server::$Configuration->File["gl_rm_om_time"]));
                         }
                         if (!empty(Server::$Configuration->File["gl_rm_tid"])) {
                             DBManager::Execute(true, "DELETE `" . DB_PREFIX . DATABASE_TICKETS . "` FROM `" . DB_PREFIX . DATABASE_TICKETS . "` INNER JOIN `" . DB_PREFIX . DATABASE_TICKET_MESSAGES . "` ON `" . DB_PREFIX . DATABASE_TICKETS . "`.`id`=`" . DB_PREFIX . DATABASE_TICKET_MESSAGES . "`.`ticket_id` INNER JOIN `" . DB_PREFIX . DATABASE_TICKET_EDITORS . "` ON `" . DB_PREFIX . DATABASE_TICKETS . "`.`id`=`" . DB_PREFIX . DATABASE_TICKET_EDITORS . "`.`ticket_id` WHERE `" . DB_PREFIX . DATABASE_TICKET_EDITORS . "`.`status`=3 AND `" . DB_PREFIX . DATABASE_TICKET_MESSAGES . "`.`time` < " . DBManager::RealEscape(time() - Server::$Configuration->File["gl_rm_tid_time"]));
                         }
                         if (!empty(Server::$Operators) && !empty(Server::$Configuration->File["gl_rm_bc"])) {
                             foreach (Server::$Operators as $sid => $operator) {
                                 if ($operator->IsBot) {
                                     DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_CHAT_ARCHIVE . "` WHERE `chat_type`=1 AND `internal_id`='" . DBManager::RealEscape($sid) . "' AND `time` < " . DBManager::RealEscape(time() - Server::$Configuration->File["gl_rm_bc_time"]));
                                 }
                             }
                         }
                     }
                     if ($result = DBManager::Execute(true, "SELECT * FROM `" . DB_PREFIX . DATABASE_RESOURCES . "` WHERE `discarded`=1 AND `type` > 2")) {
                         while ($result && ($row = DBManager::FetchArray($result))) {
                             $resultb = DBManager::Execute(true, "SELECT count(value) as `linked` FROM `" . DB_PREFIX . DATABASE_RESOURCES . "` WHERE `value`='" . DBManager::RealEscape($row["value"]) . "';");
                             $rowb = DBManager::FetchArray($resultb);
                             if ($rowb["linked"] == 1) {
                                 @unlink(PATH_UPLOADS . $row["value"]);
                             }
                         }
                     }
                     DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_RESOURCES . "` WHERE `discarded`='1' AND `edited` < " . DBManager::RealEscape(time() - $_timeouts[3]));
                 }
             }
         }
     }
 }
 function LogStatus($_user)
 {
     if (!$_user->AffectsStatistic()) {
         return;
     }
     if (rand(0, 10) != 0 && !Is::Defined("LOGOFF")) {
         return;
     }
     $minstate = $minuserstate = USER_STATUS_OFFLINE;
     foreach ($_user->Groups as $groupid) {
         $groupstate = USER_STATUS_OFFLINE;
         if (Server::$Groups[$groupid]->IsOpeningHour()) {
             foreach (Server::$Operators as $user) {
                 if ($user->Status != USER_STATUS_OFFLINE && $user->AffectsStatistic() && in_array($groupid, $user->Groups)) {
                     $groupstate = min($groupstate, !in_array($groupid, $user->GroupsAway) ? $user->Status : USER_STATUS_OFFLINE);
                 }
             }
         }
         $identities[$groupid] = $groupstate;
         $minstate = min($minstate, $groupstate);
         $minuserstate = min($minuserstate, !in_array($groupid, $_user->GroupsAway) ? max($_user->Status, $groupstate) : USER_STATUS_OFFLINE);
     }
     $identities[$_user->SystemId] = $minuserstate;
     $identities[GROUP_EVERYONE_INTERN] = $minstate;
     foreach ($identities as $userid => $status) {
         $result = DBManager::Execute(true, "SELECT `status`,`time`,`confirmed` FROM `" . DB_PREFIX . DATABASE_OPERATOR_STATUS . "` WHERE `internal_id`='" . DBManager::RealEscape($userid) . "' ORDER BY `time` DESC LIMIT 1;");
         if ($result && ($row = DBManager::FetchArray($result))) {
             $openUserSpan = DBManager::GetRowCount($result) == 1;
             if (date("z", $row["time"]) > date("z") || date("z", $row["time"]) == date("z") && date("H", $row["time"]) > date("H")) {
                 return;
             }
             if ($openUserSpan && $row["status"] == $status && date("z", $row["time"]) == date("z") && date("H", $row["time"]) == date("H")) {
                 DBManager::Execute(true, "UPDATE `" . DB_PREFIX . DATABASE_OPERATOR_STATUS . "` SET `confirmed`='" . DBManager::RealEscape(time()) . "' WHERE `internal_id`='" . DBManager::RealEscape($userid) . "' ORDER BY `time` DESC LIMIT 1;");
             } else {
                 $time = time() - 1;
                 if ($openUserSpan) {
                     $time = $row["status"] == $status ? mktime(date("H", $row["time"]) + 1, 0, 0, date("n", $row["time"]), date("d", $row["time"]), date("Y", $row["time"])) : time();
                     DBManager::Execute(true, "UPDATE `" . DB_PREFIX . DATABASE_OPERATOR_STATUS . "` SET `confirmed`='" . DBManager::RealEscape($time) . "' WHERE `internal_id`='" . DBManager::RealEscape($userid) . "' ORDER BY `time` DESC LIMIT 1;");
                 }
                 DBManager::Execute(true, "INSERT IGNORE INTO `" . DB_PREFIX . DATABASE_OPERATOR_STATUS . "` (`time` ,`confirmed` ,`internal_id` ,`status`) VALUES ('" . DBManager::RealEscape($time) . "','" . DBManager::RealEscape(time()) . "','" . DBManager::RealEscape($userid) . "','" . DBManager::RealEscape($status) . "');");
             }
         } else {
             DBManager::Execute(true, "INSERT IGNORE INTO `" . DB_PREFIX . DATABASE_OPERATOR_STATUS . "` (`time` ,`confirmed` ,`internal_id` ,`status`) VALUES ('" . DBManager::RealEscape(time() - 1) . "','" . DBManager::RealEscape(time()) . "','" . DBManager::RealEscape($userid) . "','" . DBManager::RealEscape($status) . "');");
         }
     }
 }
 static function GetTranslationData($translation = "")
 {
     global $LZLANG;
     if (OperatorRequest::IsValidated() && Is::Defined("VALIDATED_FULL_LOGIN") && OperatorRequest::IsAdministrator(true)) {
         Logging::SecurityLog("ServerManager::GetTranslationData", serialize($_POST), CALLER_SYSTEM_ID);
         $langid = $_POST["p_int_trans_iso"];
         if (strpos($langid, "..") === false && strlen($langid) <= 6) {
             $mobile = !empty($_POST["p_int_trans_m"]);
             $mobileOriginal = !empty($_POST["p_int_trans_mo"]);
             $path = !$mobileOriginal ? "_language/" : "mobile/php/translation/";
             IOStruct::RequireDynamic(LocalizationManager::GetLocalizationFileString($langid, true, $mobile, $mobileOriginal), LIVEZILLA_PATH . $path);
             $translation .= "<language key=\"" . base64_encode($langid) . "\">\r\n";
             foreach ($LZLANG as $key => $value) {
                 $translation .= "<val key=\"" . base64_encode($key) . "\">" . base64_encode($value) . "</val>\r\n";
             }
             $translation .= "</language>\r\n";
             Server::$Response->SetStandardResponse(1, $translation);
         } else {
             Server::$Response->SetStandardResponse(0, $translation);
         }
     }
 }
示例#7
0
@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");
}
APIErrorExit("LZAV20000");
 function RemoteActivate($_internalUser)
 {
     if (!Is::Defined("CALLER_SYSTEM_ID")) {
         define("CALLER_SYSTEM_ID", $_internalUser->SystemId);
         $this->InternalActivate();
         if ($_internalUser->IsBot) {
             $this->ExternalActivate();
         } else {
             $this->ExternalWindowActivate();
         }
         $this->SetStatus(CHAT_STATUS_ACTIVE);
     }
 }
            $response = utf8_encode("<?xml version=\"1.0\" encoding=\"UTF-8\" ?><livezilla_js>" . base64_encode(isset($EXTERNSCRIPT) ? $EXTERNSCRIPT : "") . "</livezilla_js>");
        } else {
            if (isset($_POST[POST_INTERN_REQUEST]) && $_POST[POST_INTERN_REQUEST] == CALLER_TYPE_INTERNAL) {
                define("CALLER_TYPE", CALLER_TYPE_INTERNAL);
                define("CALLER_TIMEOUT", Server::$Configuration->File["timeout_clients"]);
                header("Connection: close");
                header("Cache-Control: no-cache, must-revalidate");
                header("Content-Type: text/xml; charset=UTF-8");
                require LIVEZILLA_PATH . "intern.php";
                $response = utf8_encode($response);
            } else {
                if ($getRequest == "cronjob" && !empty($_GET["cjid"]) && $_GET["cjid"] == Server::$Configuration->File["gl_cjid"]) {
                    define("CALLER_TYPE", "cronjob");
                    define("CALLER_TIMEOUT", 360);
                    Server::InitDataBlock(array("INTERNAL", "GROUPS"));
                    $response = DB_CONNECTION ? "Success" : "No database connection";
                }
            }
        }
    }
    //if(DB_CONNECTION && Is::Defined("CALLER_TYPE") && (!empty(Server::$Configuration->File["gl_cjfs"])||CALLER_TYPE=="cronjob") && !Is::Defined("SERVERSETUP") && !Is::Defined("LOGIN"))
    if (DB_CONNECTION && Is::Defined("CALLER_TYPE") && !Is::Defined("SERVERSETUP") && !Is::Defined("LOGIN")) {
        Server::RunCronJobs(false);
    }
}
if (!isset($response)) {
    exit(IOStruct::GetFile(TEMPLATE_HTML_SUPPORT));
}
Communication::SendPushMessages();
Server::UnloadDataProvider();
exit($response);
 static function Validate($_basic = false)
 {
     if (!empty(Server::$Configuration->File["gl_rhts"]) && Communication::GetScheme() != SCHEME_HTTP_SECURE) {
         define("AUTH_RESULT", LOGIN_REPLY_HTTPS);
     } else {
         if (DB_CONNECTION || SERVERSETUP) {
             if (!empty($_POST[POST_INTERN_AUTHENTICATION_USER])) {
                 foreach (Server::$Operators as $sysId => $operator) {
                     if (strtolower($operator->UserId) == strtolower($_POST[POST_INTERN_AUTHENTICATION_USER])) {
                         if (!$operator->IsBot && $operator->ValidateLoginAttempt()) {
                             if (!empty(CacheManager::$ActiveManager)) {
                                 $operator->LoadUnCacheables();
                             }
                             if ($operator->ValidateLoginAuthentication()) {
                                 define("CALLER_SYSTEM_ID", $sysId);
                                 if ($_basic) {
                                     define("VALIDATED", true);
                                     return;
                                 }
                                 if (!empty($_POST[POST_INTERN_AUTHENTICATION_CLIENT_SYSTEM_ID])) {
                                     if (empty($_POST["p_db_no_req"]) && !DB_CONNECTION) {
                                         define("AUTH_RESULT", LOGIN_REPLY_DB);
                                         break;
                                     }
                                     if (!LOGIN && !SERVERSETUP) {
                                         if ($operator->Deactivated) {
                                             define("AUTH_RESULT", LOGIN_REPLY_ACCOUNT_DEACTIVATED);
                                             break;
                                         }
                                         if (!$operator->ClientWeb && $operator->LastActive < time() - Server::$Configuration->File["timeout_clients"] && $_POST[POST_INTERN_AUTHENTICATION_CLIENT_SYSTEM_ID] == $operator->ClientSystemId) {
                                             define("AUTH_RESULT", LOGIN_REPLY_SESSION_TIMEOUT);
                                             break;
                                         }
                                         if ($operator->SignOffRequest || !empty($_POST["p_app_device_id"]) && $operator->AppDeviceId != "LOGIN" && $operator->AppDeviceId != $_POST["p_app_device_id"]) {
                                             $operator->SignOff(false);
                                             define("AUTH_RESULT", LOGIN_REPLY_SIGN_OFF_REQUEST);
                                             break;
                                         }
                                         if (!empty($operator->ClientSystemId) && !empty($_POST[POST_INTERN_AUTHENTICATION_CLIENT_SYSTEM_ID]) && $_POST[POST_INTERN_AUTHENTICATION_CLIENT_SYSTEM_ID] != $operator->ClientSystemId) {
                                             define("AUTH_RESULT", LOGIN_REPLY_BAD_COMBINATION);
                                             break;
                                         }
                                     } else {
                                         if (LOGIN && !SERVERSETUP) {
                                             $operator->AppClient = !empty($_POST["p_app"]);
                                             $operator->ClientWeb = !empty($_POST["p_web"]);
                                             if ($operator->ClientWeb) {
                                                 UserGroup::RemoveFromAllDynamicGroups($sysId);
                                             }
                                             if (($operator->AppClient || $operator->ClientWeb) && $operator->GetPermission(45, PERMISSION_FULL) == PERMISSION_NONE) {
                                                 define("AUTH_RESULT", LOGIN_REPLY_NO_MOBILE_ACCESS);
                                                 break;
                                             } else {
                                                 if ($operator->Deactivated) {
                                                     define("AUTH_RESULT", LOGIN_REPLY_ACCOUNT_DEACTIVATED);
                                                     break;
                                                 } else {
                                                     if ($operator->SignOffRequest) {
                                                         $operator->SignOff(false);
                                                         define("AUTH_RESULT", LOGIN_REPLY_SIGN_OFF_REQUEST);
                                                         break;
                                                     } else {
                                                         if (empty($_POST[POST_INTERN_IGNORE_SIGNED_ON]) && $operator->LastActive > time() - Server::$Configuration->File["timeout_clients"] && !empty($operator->ClientSystemId) && $_POST[POST_INTERN_AUTHENTICATION_CLIENT_SYSTEM_ID] != $operator->ClientSystemId) {
                                                             define("AUTH_RESULT", LOGIN_REPLY_ALREADY_ONLINE);
                                                             break;
                                                         } else {
                                                             if ($operator->PasswordChangeRequest && empty($_POST[POST_INTERN_NEW_PASSWORD])) {
                                                                 define("AUTH_RESULT", LOGIN_REPLY_CHANGE_PASS);
                                                                 break;
                                                             }
                                                         }
                                                     }
                                                 }
                                             }
                                         } else {
                                             if (SERVERSETUP && $operator->Level != USER_LEVEL_ADMIN) {
                                                 if (!(in_array(Server::$Configuration->File["gl_host"], $operator->WebsitesUsers) && !empty($_POST[POST_INTERN_GET_MANAGEMENT])) && !(in_array(Server::$Configuration->File["gl_host"], $operator->WebsitesConfig) && empty($_POST[POST_INTERN_GET_MANAGEMENT]))) {
                                                     define("AUTH_RESULT", LOGIN_REPLY_NOADMIN);
                                                     break;
                                                 }
                                             }
                                         }
                                     }
                                     define("VALIDATED", true);
                                     if (isset($_POST[POST_INTERN_NEW_PASSWORD])) {
                                         $operator->ChangePassword($_POST[POST_INTERN_NEW_PASSWORD]);
                                         Server::$Response->Authentications = "<val userid=\"" . base64_encode(CALLER_SYSTEM_ID) . "\" />\r\n";
                                     }
                                     if (Is::Defined("VALIDATED_FULL_LOGIN") && Is::Defined("LOGIN") && !Is::Defined("SERVERSETUP") && !Is::Defined("MANAGEMENT")) {
                                         $operator->ValidateUpdateSession(getId(32), $_POST[POST_INTERN_AUTHENTICATION_CLIENT_SYSTEM_ID]);
                                     } else {
                                         if (LOGOFF) {
                                             $operator->ValidateUpdateSession("", "");
                                         }
                                     }
                                     define("AUTH_RESULT", LOGIN_REPLY_SUCCEEDED);
                                     break;
                                 }
                             } else {
                                 $operator->DeleteLoginAttempts();
                                 if (!empty($_POST[POST_INTERN_AUTHENTICATION_PASSWORD])) {
                                     $operator->SaveLoginAttempt(md5($_POST[POST_INTERN_AUTHENTICATION_PASSWORD]));
                                 }
                                 break;
                             }
                         }
                     }
                 }
             }
         } else {
             define("AUTH_RESULT", LOGIN_REPLY_DB);
         }
     }
     if (OperatorRequest::IsValidated() && LOGIN) {
         Server::$Operators[CALLER_SYSTEM_ID]->IP = Communication::GetIP();
         Server::$Operators[CALLER_SYSTEM_ID]->FirstActive = time();
         Server::$Operators[CALLER_SYSTEM_ID]->VisitorFileSizes = array();
         Server::$Operators[CALLER_SYSTEM_ID]->VisitorStaticReload = array();
         $isex = !empty(Server::$Operators[CALLER_SYSTEM_ID]->Groups) && Server::$Groups[Server::$Operators[CALLER_SYSTEM_ID]->Groups[0]]->IsExternal;
         Server::$Response->Login = Server::$Operators[CALLER_SYSTEM_ID]->GetLoginReply($isex, SystemTime::GetTimeDifference($_POST[POST_INTERN_CLIENT_TIME]));
     }
     if (!defined("AUTH_RESULT")) {
         define("AUTH_RESULT", LOGIN_REPLY_BAD_COMBINATION);
     }
 }