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
/
www
/
livezila
/
_lib
/
functions.internal.build.inc.php
/
/
<?php /**************************************************************************************** * LiveZilla intern.build.inc.php * * Copyright 2019 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 demandEvents() { Server::InitDataBlock(array("EVENTS")); if(!CacheManager::IsDataUpdate(POST_INTERN_DUT_EVENTS,DATA_UPDATE_KEY_EVENTS)) { Server::$Response->Events = "<ev dut=\"".base64_encode(CacheManager::$DataUpdateTimes[DATA_UPDATE_KEY_EVENTS])."\" nu=\"".base64_encode(1)."\" />"; return; } Server::$Response->Events = ""; if(!empty(Server::$Events)) { foreach(Server::$Events->Events as $event) Server::$Response->Events .= $event->GetXML(); Server::$Response->Events = "<ev dut=\"".base64_encode(CacheManager::$DataUpdateTimes[DATA_UPDATE_KEY_EVENTS])."\">\r\n" . Server::$Response->Events . "</ev>"; } } function buildActions() { $ac = ""; if(count(Server::$Events->Events)>0 && Server::$Events->IsInternalAction()) { if($result = DBManager::Execute(true, "SELECT `trigger_id`,`action_id`,`dbtr`.`receiver_user_id`,`dbtr`.`receiver_browser_id` FROM `" . DB_PREFIX . DATABASE_EVENT_ACTION_INTERNALS . "` INNER JOIN `" . DB_PREFIX . DATABASE_EVENT_TRIGGERS . "` AS `dbtr` ON `" . DB_PREFIX . DATABASE_EVENT_ACTION_INTERNALS . "`.`trigger_id`=`dbtr`.`id` WHERE `" . DB_PREFIX . DATABASE_EVENT_ACTION_INTERNALS . "`.`receiver_user_id` = '" . DBManager::RealEscape(CALLER_SYSTEM_ID) . "' GROUP BY `action_id` ORDER BY `" . DB_PREFIX . DATABASE_EVENT_ACTION_INTERNALS . "`.`created` ASC")) while($row = DBManager::FetchArray($result)) { $internalaction = new EventActionInternal($row); $ac .= $internalaction->GetXML($row["receiver_user_id"],$row["receiver_browser_id"]); } DBManager::Execute(true, "DELETE FROM `" . DB_PREFIX . DATABASE_EVENT_ACTION_INTERNALS . "` WHERE `" . DB_PREFIX . DATABASE_EVENT_ACTION_INTERNALS . "`.`receiver_user_id` = '" . DBManager::RealEscape(CALLER_SYSTEM_ID) . "';"); } if(!empty($ac)) { Server::$Response->XML .= "<int_ac>" . $ac . "</int_ac>"; } } function buildResources($xml = "", $last = 0) { if(isset($_POST[POST_INTERN_XMLCLIP_RESOURCES_END_TIME])) { if($_POST[POST_INTERN_XMLCLIP_RESOURCES_END_TIME] == XML_CLIP_NULL) $_POST[POST_INTERN_XMLCLIP_RESOURCES_END_TIME] = 0; $count = 0; if($result = DBManager::Execute(true, "SELECT * FROM `" . DB_PREFIX . DATABASE_RESOURCES . "` WHERE `edited` > '" . DBManager::RealEscape($_POST[POST_INTERN_XMLCLIP_RESOURCES_END_TIME]) . "' AND `discarded`<2 AND `edited`<=" . DBManager::RealEscape(time()) . " AND `parentid` NOT IN (100,101,102) ORDER BY `edited` ASC")) { while($row = DBManager::FetchArray($result)) { $res = new KnowledgeBaseEntry($row); if(++$count <= DATA_ITEM_LOADS || $res->Edited == $last) $xml .= $res->GetXML(); else break; $last = $res->Edited; } } } Server::$Response->Resources = (strlen($xml) > 0) ? $xml : null; } function demandFilters() { if(!CacheManager::IsDataUpdate(POST_INTERN_DUT_FILTERS,DATA_UPDATE_KEY_FILTERS)) return; $xml = ""; foreach(Server::$Filters->Filters as $filter) { if($filter->Expiredate != -1 && ($filter->Expiredate + $filter->Created) < time()) $filter->Destroy(); else if($filter->Filtername != "OOTF") $xml .= $filter->GetXML(); } Server::$Response->Filters = "<dfi t=\"".base64_encode(count(Server::$Filters->Filters))."\" dut=\"".base64_encode(CacheManager::$DataUpdateTimes[DATA_UPDATE_KEY_FILTERS])."\">".$xml."</dfi>"; } function demandObjectData() { if(isset($_POST[POST_INTERN_DUT_VISITORS_FULL_DATA])) { // visits $visitor = new Visitor($_POST[POST_INTERN_DUT_VISITORS_FULL_DATA]); $visitor->Load(); $visitor->LoadRecentVisits(); Server::$Response->Visitors .= $visitor->GetRecentXML(); //browsers $_recentBrowserList = array(); $result = DBManager::Execute(true, "SELECT * FROM `" . DB_PREFIX . DATABASE_VISITOR_BROWSERS . "` WHERE `visitor_id`= '" . DBManager::RealEscape($_POST[POST_INTERN_DUT_VISITORS_FULL_DATA]) . "' ORDER BY `created` ASC;"); if($result) { while($row = DBManager::FetchArray($result)) { $browser = new VisitorBrowser("","",false); $browser->SetValues($row); $_recentBrowserList[] = $row["id"]; Server::$Response->VisitorBrowsers .= $browser->GetXMLV2($row["visitor_id"]); } $_recentBrowserList = implode("','",$_recentBrowserList); } // urls if($result = DBManager::Execute(true, "SELECT * FROM `" . DB_PREFIX . DATABASE_VISITOR_BROWSER_URLS . "` WHERE `browser_id` IN ('" . $_recentBrowserList . "') ORDER BY `entrance` ASC")) while($row = DBManager::FetchArray($result)) { $hu = new HistoryURL($row, true); Server::$Response->VisitorBrowserURLs .= $hu->GetXML($row["browser_id"]); } // tickets $result = DBManager::Execute(true, "SELECT * FROM `" . DB_PREFIX . DATABASE_TICKETS . "` LEFT JOIN `".DB_PREFIX.DATABASE_TICKET_EDITORS."` AS `te` ON `".DB_PREFIX.DATABASE_TICKETS."`.`id`=`te`.`ticket_id` LEFT JOIN `".DB_PREFIX.DATABASE_TICKET_WATCHER."` AS `twl` ON `".DB_PREFIX.DATABASE_TICKETS."`.`id`=`twl`.`ticket_id` WHERE `deleted`=0 AND `user_id`= '" . DBManager::RealEscape($_POST[POST_INTERN_DUT_VISITORS_FULL_DATA]) . "' ORDER BY `id` DESC;"); if($result) { $arTickets = ""; while($row = DBManager::FetchArray($result)) { $ticket = new Ticket($row,null,null); $ticket->LoadLogs(); if(count($ticket->Messages) > 0) $arTickets .= $ticket->GetXML(true,true); } if(!empty($arTickets)) Server::$Response->Messages .= "<at id=\"".base64_encode($_POST[POST_INTERN_DUT_VISITORS_FULL_DATA])."\">" . $arTickets . "</at>"; } // chats $result = DBManager::Execute(true, "SELECT * FROM `" . DB_PREFIX . DATABASE_CHAT_ARCHIVE . "` WHERE (`external_id`='" . DBManager::RealEscape($_POST[POST_INTERN_DUT_VISITORS_FULL_DATA]) . "' OR (`group_id`='" . DBManager::RealEscape($_POST[POST_INTERN_DUT_VISITORS_FULL_DATA]) . "' AND `internal_id`='' AND `external_id`='') OR `internal_id`='" . DBManager::RealEscape($_POST[POST_INTERN_DUT_VISITORS_FULL_DATA]) . "') AND `closed`>0 ORDER BY `time` DESC LIMIT 50;"); if($result) { $arChats = ""; while($row = DBManager::FetchArray($result)) { $chat = new Chat(); $chat->SetValues($row); $arChats .= $chat->GetXML($chat->Permission(CALLER_SYSTEM_ID),true,false); } if(!empty($arChats)) Server::$Response->Archive .= "<ac id=\"".base64_encode($_POST[POST_INTERN_DUT_VISITORS_FULL_DATA])."\">" . $arChats . "</ac>"; } // feedbacks $result = DBManager::Execute(true, "SELECT * FROM `" . DB_PREFIX . DATABASE_FEEDBACKS . "` WHERE `user_id`='" . DBManager::RealEscape($_POST[POST_INTERN_DUT_VISITORS_FULL_DATA]) . "' ORDER BY `created` DESC LIMIT 50;"); if($result) { $arFeedbacks = ""; while($row = DBManager::FetchArray($result)) { $fb = new Feedback($row["id"],$row); $fb->LoadCriteriaList(); $arFeedbacks .= $fb->GetXML(); } if(!empty($arFeedbacks)) Server::$Response->Feedbacks .= "<af id=\"".base64_encode($_POST[POST_INTERN_DUT_VISITORS_FULL_DATA])."\">" . $arFeedbacks . "</af>"; } } } function demandVisitors() { if(!isset($_POST[POST_INTERN_DUT_VISITORS])) return; $dut = intval($_POST[POST_INTERN_DUT_VISITORS]); $where = "`t1`.`entrance`<" . time(). " AND `t1`.`edited`<" . time() . " AND "; if($dut == 0) { $where .= "`t1`.`closed`=0"; } else { $where .= "`t1`.`closed`=0 AND (`t1`.`entrance` > " . intval($dut) . " OR `t1`.`edited` > " . intval($dut) .")"; } $xml = ""; $result = DBManager::Execute(true, "SELECT *,`t1`.`id` AS `id` FROM `" . DB_PREFIX . DATABASE_VISITORS . "` AS `t1` INNER JOIN `" . DB_PREFIX . DATABASE_VISITOR_DATA_CITIES . "` AS `t3` ON `t1`.`city`=`t3`.`id` INNER JOIN `" . DB_PREFIX . DATABASE_VISITOR_DATA_REGIONS . "` AS `t4` ON `t1`.`region`=`t4`.`id` INNER JOIN `" . DB_PREFIX . DATABASE_VISITOR_DATA_ISPS . "` AS `t5` ON `t1`.`isp`=`t5`.`id` INNER JOIN `" . DB_PREFIX . DATABASE_VISITOR_DATA_SYSTEMS . "` AS `t6` ON `t1`.`system`=`t6`.`id` INNER JOIN `" . DB_PREFIX . DATABASE_VISITOR_DATA_RESOLUTIONS . "` AS `t8` ON `t1`.`resolution`=`t8`.`id` INNER JOIN `" . DB_PREFIX . DATABASE_USER_DATA . "` AS `t9` ON `t1`.`data_id`=`t9`.`id` INNER JOIN `" . DB_PREFIX . DATABASE_VISITOR_DATA_BROWSERS . "` AS `t10` ON `t1`.`browser`=`t10`.`id` WHERE " . $where . " ORDER BY `t1`.`entrance` ASC;"); if($result) { while($row = DBManager::FetchArray($result)) { $visitor = new Visitor($row["id"]); $visitor->SetDetails($row,false); $dut = max($dut,$visitor->FirstActive); $dut = max($dut,$visitor->Edited); $xml .= $visitor->GetXML($row); } } if($dut>=time()) Logging::ErrorLog("Invalid VISITOR DUT=time"); if(!empty($xml)) $xml .= "<dut e=\"".base64_encode($dut)."\" />"; Server::$Response->Visitors = $xml; } function demandVisitorBrowsers() { if(!isset($_POST[POST_INTERN_DUT_VISITOR_BROWSERS_ENTRANCE])) return; $dut = intval($_POST[POST_INTERN_DUT_VISITOR_BROWSERS_ENTRANCE]); if($dut == 0) { $where = "`closed`=0 AND `created`<" . time(); } else { $where = "`closed`<" . time(). " AND `created`<" . time(); $where .= " AND (`closed`>" . intval($dut). " OR `created`>" . intval($dut). ")"; } $xml = ""; $result = DBManager::Execute(true, "SELECT * FROM `" . DB_PREFIX . DATABASE_VISITOR_BROWSERS . "` WHERE " . $where . " ORDER BY `created` ASC;"); if($result) { while($row = DBManager::FetchArray($result)) { $browser = new VisitorBrowser("","",false); $browser->SetValues($row); $dut = max($dut,$browser->Closed); $dut = max($dut,$browser->Created); $xml .= $browser->GetXMLV2($row["visitor_id"]); } } if($dut==time()) Logging::ErrorLog("Invalid BROWSER DUT=time"); if(!empty($xml)) $xml .= "<dut e=\"".base64_encode($dut)."\" />"; Server::$Response->VisitorBrowsers = $xml; } function demandVisitorBrowserURLs() { if(!isset($_POST[POST_INTERN_DUT_VISITOR_BROWSER_URLS])) return; if($_POST[POST_INTERN_DUT_VISITOR_BROWSER_URLS] == 0) { $where = "`closed`=0"; } else { $where = "`entrance`>" . intval($_POST[POST_INTERN_DUT_VISITOR_BROWSER_URLS]); } $xml = ""; if($result = DBManager::Execute(true, "SELECT * FROM `" . DB_PREFIX . DATABASE_VISITOR_BROWSER_URLS . "` WHERE " . $where . " AND `entrance`<" . intval(time()) . " ORDER BY `entrance` ASC")) while($row = DBManager::FetchArray($result)) { $hu = new HistoryURL($row, true); $xml .= $hu->GetXML($row["browser_id"]); } Server::$Response->VisitorBrowserURLs = $xml; } function demandFeedback($xml="") { $permission = Server::$Operators[CALLER_SYSTEM_ID]->GetPermission(PERMISSION_FEEDBACK); if($permission == PERMISSION_NONE) return; if(!CacheManager::IsDataUpdate(POST_INTERN_DUT_FEEDBACKS,DATA_UPDATE_KEY_FEEDBACKS)) return; $loads = (!empty($_POST["p_fb_l"]) && is_numeric($_POST["p_fb_l"])) ? $_POST["p_fb_l"] : DATA_DEMAND_LOADS; $limit = (!empty($_POST["p_fb_p"]) && is_numeric($_POST["p_fb_p"]) && $_POST["p_fb_p"]>1) ? ($_POST["p_fb_p"]-1)*$loads : 0; $sql_joined = array(); $sort_direction = (!empty($_POST["p_fb_sd"]) && $_POST["p_fb_sd"]!="1") ? "ASC" : "DESC"; $sort_column = (isset($_POST["p_fb_si"])) ? $_POST["p_fb_si"] : "created"; $search_value = (isset($_POST["p_fb_q"])) ? $_POST["p_fb_q"] : null; $sql_search_ijoin = $sql_sort_ijoin = $sql_sort_where = $sql_search_where = $sql_order = ""; // sort if($sort_column !== null && isset(Server::$Configuration->Database["gl_fb"][$sort_column])) { $sql_sort_where = " WHERE `cid`='".DBManager::RealEscape($sort_column)."' "; $sql_order = " ORDER BY `value` ".$sort_direction." "; } else if(in_array($sort_column,array("h_fullname","h_email","h_company","h_phone"))) { $sql_joined[DATABASE_USER_DATA] = true; $sql_sort_ijoin = " INNER JOIN `".DB_PREFIX.DATABASE_USER_DATA."` AS `t3` ON `t1`.`data_id`=`t3`.`id` "; $sql_order = " ORDER BY LOWER(`t3`.`".$sort_column."`) ".$sort_direction." "; } else if($sort_column == "o_fullname") { $sql_joined[DATABASE_OPERATORS] = true; $sql_sort_ijoin = " INNER JOIN `".DB_PREFIX.DATABASE_OPERATORS."` AS `t3` ON `t1`.`operator_id`=`t3`.`system_id` "; $sql_order = " ORDER BY LOWER(`t3`.`firstname`) ".$sort_direction." "; } else if($sort_column == "group") { $sql_order = " ORDER BY LOWER(`group_id`) ".$sort_direction." "; } else if(!empty($sort_column)) { $sql_order = " ORDER BY `".$sort_column."` ".$sort_direction." "; } // search if(!empty($search_value)) { if(!isset($sql_joined[DATABASE_USER_DATA])) $sql_search_ijoin = " INNER JOIN `".DB_PREFIX.DATABASE_USER_DATA."` AS `t4` ON `t1`.`data_id`=`t4`.`id` "; if(!isset($sql_joined[DATABASE_OPERATORS])) $sql_search_ijoin .= " INNER JOIN `".DB_PREFIX.DATABASE_OPERATORS."` AS `t5` ON `t1`.`operator_id`=`t5`.`system_id` "; if(empty($sql_sort_where)) $sql_search_where = " WHERE "; else $sql_search_where .= " AND "; $q = DBManager::RealEscape(strtolower($search_value),true); $sql_search_where .= "(LOWER(`value`) LIKE '%".$q."%' OR LOWER(`group_id`) LIKE '%".$q."%' OR LOWER(`fullname`) LIKE '%".$q."%' OR LOWER(`h_fullname`) LIKE '%".$q."%' OR LOWER(`h_email`) LIKE '%".$q."%' OR LOWER(`h_company`) LIKE '%".$q."%' OR LOWER(`h_phone`) LIKE '%".$q."%')"; } $sql_perm_where = ($permission==1) ? (" AND `operator_id`='".DBManager::RealEscape(CALLER_SYSTEM_ID)."'") : ""; $sql_query = "SELECT t1.*,t2.* FROM `".DB_PREFIX.DATABASE_FEEDBACKS."` AS `t1` INNER JOIN `".DB_PREFIX.DATABASE_FEEDBACK_CRITERIA."` AS `t2` ON `t1`.`id`=`t2`.`fid`".$sql_sort_ijoin.$sql_search_ijoin.$sql_sort_where.$sql_search_where."AND `resource_id`=''".$sql_perm_where." GROUP BY `fid`".$sql_order; $result = DBManager::Execute(true, ($sql_query . "LIMIT " . intval($limit) . "," . intval($loads) . ";")); if($result) while($row = DBManager::FetchArray($result)) { $fb = new Feedback($row["id"],$row); $fb->LoadCriteriaList(); $xml .= $fb->GetXML(); } $q_count["total"] = "SELECT COUNT(*) AS `total`"; $q_count["totalquery"] = "(SELECT COUNT(*) FROM (".$sql_query.") AS `stb`) AS `totalquery`"; $result = DBManager::Execute(true, $q_count["total"] . "," . $q_count["totalquery"] . " FROM `" . DB_PREFIX . DATABASE_FEEDBACKS . "` WHERE `resource_id`=''" . $sql_perm_where); $row = DBManager::FetchArray($result); Server::$Response->Feedbacks = "<dfb t=\"".base64_encode($row["total"])."\" l=\"".base64_encode($loads)."\" q=\"".base64_encode($row["totalquery"])."\" dut=\"".base64_encode(CacheManager::$DataUpdateTimes[DATA_UPDATE_KEY_FEEDBACKS])."\">".$xml."</dfb>"; } function demandReports() { if(!STATS_ACTIVE || !isset($_POST["p_dr_p"]) || Server::$Operators[CALLER_SYSTEM_ID]->GetPermission(PERMISSION_REPORTS) == PERMISSION_NONE) return; if(!CacheManager::IsDataUpdate(POST_INTERN_DUT_REPORTS,DATA_UPDATE_KEY_REPORTS)) return; $limit = (!empty($_POST["p_dr_p"]) && is_numeric($_POST["p_dr_p"]) && $_POST["p_dr_p"]>1) ? ($_POST["p_dr_p"]-1)*DATA_DEMAND_LOADS : 0; $type = (!empty($_POST["p_dr_t"]) && in_array($_POST["p_dr_t"],array(STATISTIC_PERIOD_TYPE_DAY,STATISTIC_PERIOD_TYPE_MONTH,STATISTIC_PERIOD_TYPE_YEAR))) ? $_POST["p_dr_t"] : STATISTIC_PERIOD_TYPE_DAY; $xml = ""; if($type == STATISTIC_PERIOD_TYPE_DAY) $gcrit = "`day` > 0"; else if($type == STATISTIC_PERIOD_TYPE_MONTH) $gcrit = "`month` > 0 AND `day`=0"; else if($type == STATISTIC_PERIOD_TYPE_YEAR) $gcrit = "`year` > 0 AND `day`=0 AND `month`=0"; $result = DBManager::Execute(true, "SELECT * FROM `" . DB_PREFIX . DATABASE_STATS_AGGS . "` WHERE " . $gcrit . " ORDER BY `time` DESC,`mtime` DESC LIMIT " . $limit . "," . DBManager::RealEscape(DATA_DEMAND_LOADS) . ";"); if($result) { while($row = DBManager::FetchArray($result)) { if($row["month"]== 0 && $row["day"]==0) $report = new StatisticYear($row["year"],0,0,$row["aggregated"],$row["mtime"]); else if($row["day"]==0) $report = new StatisticMonth($row["year"],$row["month"],0,$row["aggregated"],$row["mtime"]); else $report = new StatisticDay($row["year"],$row["month"],$row["day"],$row["aggregated"],$row["mtime"]); $chats = 0; $qmonth = ($report->Type == STATISTIC_PERIOD_TYPE_YEAR) ? "" : " AND `month`='".DBManager::RealEscape($row["month"])."'"; $qday = ($report->Type != STATISTIC_PERIOD_TYPE_DAY) ? "" : " AND `day`='".DBManager::RealEscape($row["day"])."'"; if($results = DBManager::Execute(true, "SELECT (SUM(`amount`)-SUM(`multi`)) AS `samount` FROM `" . DB_PREFIX . DATABASE_STATS_AGGS_CHATS . "` WHERE `user_id`='' AND `year`='" . DBManager::RealEscape($row["year"]) . "'" . $qmonth . $qday . "")) if(DBManager::GetRowCount($results) == 1) { $rows = DBManager::FetchArray($results); if(is_numeric($rows["samount"])) $chats = $rows["samount"]; } $convrate = ($row["sessions"]>0) ? round(((100*$row["conversions"])/$row["visitors_unique"]),StatisticProvider::$RoundPrecision) : 0; $convrate = min(100,$convrate); // tickets if($type == STATISTIC_PERIOD_TYPE_DAY) $ticrit = "`year`=".intval($row["year"])." AND `day`=".intval($row["day"])." AND `month`=".intval($row["month"]); else if($type == STATISTIC_PERIOD_TYPE_MONTH) $ticrit = "`year`=".intval($row["year"])." AND `month`=".intval($row["month"]); else if($type == STATISTIC_PERIOD_TYPE_YEAR) $ticrit = "`year`=".intval($row["year"]); $resultt = DBManager::Execute(true, "SELECT SUM(`amount`) AS `tamount` FROM `" . DB_PREFIX . DATABASE_STATS_AGGS_TICKETS . "` WHERE `group_id`!='' AND " . $ticrit); $tamount = 0; if($resultt) { if($rowt = DBManager::FetchArray($resultt)) { $tamount = $rowt["tamount"]; } } $xml .= "<r i=\"".base64_encode($report->GetHash())."\" a=\"".base64_encode($row["aggregated"])."\" ti=\"".base64_encode($tamount)."\" ch=\"".base64_encode($chats)."\" c=\"".base64_encode($convrate)."\" r=\"".base64_encode($report->Type)."\" s=\"".base64_encode($row["sessions"])."\" v=\"".base64_encode($row["visitors_unique"])."\" t=\"".base64_encode($row["time"])."\" mt=\"".base64_encode($row["mtime"])."\" y=\"".base64_encode($row["year"])."\" m=\"".base64_encode($row["month"])."\" d=\"".base64_encode($row["day"])."\"></r>\r\n"; } } $result = DBManager::Execute(true, "SELECT count(`time`) AS `total` FROM `" . DB_PREFIX . DATABASE_STATS_AGGS . "`;"); $trow = DBManager::FetchArray($result); $result = DBManager::Execute(true, "SELECT count(`time`) AS `ttotal` FROM `" . DB_PREFIX . DATABASE_STATS_AGGS . "` WHERE " . $type . ";"); $ttrow = DBManager::FetchArray($result); Server::$Response->Reports = "<dr dut=\"".base64_encode(CacheManager::$DataUpdateTimes[DATA_UPDATE_KEY_REPORTS])."\" p=\"".base64_encode(DATA_ITEM_LOADS)."\" t=\"".base64_encode($trow["total"])."\" q=\"".base64_encode($ttrow["ttotal"])."\">\r\n" . $xml . "\r\n</dr>"; } function demandEmails($xml="",$countActive=0,$countDeleted=0,$lmc=0,$c_name="",$c_text="") { if(!CacheManager::IsDataUpdate(POST_INTERN_DUT_EMAILS,DATA_UPDATE_KEY_EMAILS)) return; $permissione = Server::$Operators[CALLER_SYSTEM_ID]->GetPermission(22); $full = $permissione != PERMISSION_NONE; $groupPermissionSQL_W = ($permissione == PERMISSION_RELATED) ? " WHERE `group_id` IN ('".implode("','",Server::$Operators[CALLER_SYSTEM_ID]->Groups)."')" : ""; $groupPermissionSQL_A = ($permissione == PERMISSION_RELATED) ? " AND `group_id` IN ('".implode("','",Server::$Operators[CALLER_SYSTEM_ID]->Groups)."')" : ""; if($full) { $result = DBManager::Execute(true, "SELECT `t1`.`email_id`,`t1`.`deleted`,`t1`.`editor_id` FROM `" . DB_PREFIX . DATABASE_TICKET_EMAILS . "` AS `t1` INNER JOIN `" . DB_PREFIX . DATABASE_MAILBOXES . "` AS `t2` ON `t1`.`mailbox_id`=`t2`.`id`" . $groupPermissionSQL_W); if($result) { while($row = DBManager::FetchArray($result)) { if(empty($row["deleted"])) $countActive++; else if(!empty($row["editor_id"])) $countDeleted++; } } } if($countActive>0 || $countDeleted>0) { // active if(!empty($_POST["p_de_a"]) && is_numeric($_POST["p_de_a"])) { $result = DBManager::Execute(true, "SELECT `t1`.*,`t2`.`email` AS `receiver_mail` FROM `" . DB_PREFIX . DATABASE_TICKET_EMAILS . "` AS `t1` INNER JOIN `" . DB_PREFIX . DATABASE_MAILBOXES . "` AS `t2` ON `t1`.`mailbox_id`=`t2`.`id` WHERE `t1`.`deleted`=0".$groupPermissionSQL_A." ORDER BY `created` ASC" . " LIMIT 0," . $_POST["p_de_a"] . ";"); if($result) while($row = DBManager::FetchArray($result)) { $full = $permissione != PERMISSION_NONE; $email = new TicketEmail($row); $email->LoadAttachments(); $xml .= $email->GetXML($full); } } // deleted if(!empty($_POST["p_de_ad"]) && is_numeric($_POST["p_de_ad"])) { $result = DBManager::Execute(true, "SELECT `t1`.*,`t2`.`email` AS `receiver_mail` FROM `" . DB_PREFIX . DATABASE_TICKET_EMAILS . "` AS `t1` INNER JOIN `" . DB_PREFIX . DATABASE_MAILBOXES . "` AS `t2` ON `t1`.`mailbox_id`=`t2`.`id` WHERE `t1`.`deleted`=1 AND `t1`.`editor_id`!=''".$groupPermissionSQL_A." ORDER BY `created` DESC" . " LIMIT 0," . $_POST["p_de_ad"] . ";"); if($result) while($row = DBManager::FetchArray($result)) { $email = new TicketEmail($row); $xml .= $email->GetXML(false); } } $result = DBManager::Execute(true, "SELECT `created` AS `lmc`,`sender_name`,`sender_email`,`body` FROM `" . DB_PREFIX . DATABASE_TICKET_EMAILS . "`".$groupPermissionSQL_W." ORDER BY `created` DESC LIMIT 1;"); if($result && $row = DBManager::FetchArray($result)) { $lmc = $row["lmc"]; $sn = DBManager::DecodeField($row["sender_name"]); $c_name = (!empty($sn) ? $sn : $row["sender_email"]); $c_text = DBManager::DecodeField($row["body"]); } } Server::$Response->Messages .= "<de dut=\"".base64_encode(CacheManager::$DataUpdateTimes[DATA_UPDATE_KEY_EMAILS])."\" lmc=\"".base64_encode($lmc)."\" elmn=\"".base64_encode($c_name)."\" elmt=\"".base64_encode(Str::Cut($c_text,5000,true))."\" c=\"".base64_encode($countActive)."\" cd=\"".base64_encode($countDeleted)."\">\r\n" . $xml . "\r\n</de>"; } function demandChatArchive($xml="",$q_filter="",$q_searchw="") { if(!CacheManager::IsDataUpdate(POST_INTERN_DUT_CHAT_ARCH,DATA_UPDATE_KEY_CHAT_ARCH)) return; $loads = (!empty($_POST["p_dc_l"]) && is_numeric($_POST["p_dc_l"])) ? $_POST["p_dc_l"] : DATA_DEMAND_LOADS; $limit = (!empty($_POST["p_dc_p"]) && is_numeric($_POST["p_dc_p"]) && $_POST["p_dc_p"]>1) ? ($_POST["p_dc_p"]-1)*$loads : 0; if(!empty($_POST["p_dc_fg"])) $q_filter = "`chat_type`=2 AND `group_id`='" . DBManager::RealEscape($_POST["p_dc_fg"]) . "'"; else if(!empty($_POST["p_dc_fe"])) $q_filter = "`chat_type`=1 AND `external_id`='" . DBManager::RealEscape($_POST["p_dc_fe"]) . "'"; else if(!empty($_POST["p_dc_fi"])) $q_filter = "`chat_type`=0 AND `internal_id`='" . DBManager::RealEscape($_POST["p_dc_fi"]) . "'"; else { if(!isset($_POST["p_dc_f"])) $_POST["p_dc_f"] = "012"; $fchars=str_split($_POST["p_dc_f"]); foreach($fchars as $fchar) if(is_numeric($fchar)) if(!empty($fchar)) $q_filter.= (empty($q_filter)) ? "`chat_type`=".$fchar : " OR `chat_type`=".$fchar; else $q_filter.= (empty($q_filter)) ? "`chat_type`=0" : " OR `chat_type`=0"; if(!empty($_POST["p_dc_q"]) || !empty($_POST["p_dc_t"])) { $q = DBManager::RealEscape(strtolower($_POST["p_dc_q"]),true); $q_searchw = ChatArchive::GetSearchQuery($q,$_POST["p_dc_t"]); $q_searchw = " AND (" . $q_searchw . ")"; } } Server::InitDataBlock(array("INPUTS")); $q_base = "`closed`>0"; $q_grperm = Chat::GetPermissionSQL(CALLER_SYSTEM_ID); if(!empty($q_filter)) $q_filter = " AND (" . $q_filter . ")"; $q_inner = "FROM `".DB_PREFIX.DATABASE_CHAT_ARCHIVE."` WHERE ". $q_base . $q_filter . $q_searchw . $q_grperm ." ORDER BY `closed` DESC"; $result = DBManager::Execute(true, "SELECT * " . $q_inner . " LIMIT " . $limit . "," . DBManager::RealEscape($loads) . ";"); if($result) while($row = DBManager::FetchArray($result)) { $chat = new Chat(); $chat->SetValues($row); $xml .= $chat->GetXML($chat->Permission(CALLER_SYSTEM_ID),true,false); } $q_count["total"] = "SELECT COUNT(*) AS `total`"; $q_count["totalperm"] = "(SELECT COUNT(*) FROM (SELECT `".DB_PREFIX.DATABASE_CHAT_ARCHIVE."`.`chat_id` FROM `".DB_PREFIX.DATABASE_CHAT_ARCHIVE."` WHERE ". $q_base . $q_grperm .") AS `sta`) AS `totalperm`"; $q_count["totalquery"] = "(SELECT COUNT(*) FROM (SELECT `".DB_PREFIX.DATABASE_CHAT_ARCHIVE."`.`chat_id` ". $q_inner .") AS `stb`) AS `totalquery`"; $result = DBManager::Execute(true, $q=$q_count["total"] . "," . $q_count["totalperm"] . "," . $q_count["totalquery"] . " FROM `" . DB_PREFIX . DATABASE_CHAT_ARCHIVE . "`"); $row = DBManager::FetchArray($result); $c_total = min($row["total"],$row["totalperm"]); $c_totalquery = min($row["totalquery"],$row["totalperm"]); Server::$Response->Archive .= "<dc dut=\"".base64_encode(CacheManager::$DataUpdateTimes[DATA_UPDATE_KEY_CHAT_ARCH])."\" p=\"".base64_encode($loads)."\" t=\"".base64_encode($c_total)."\" q=\"".base64_encode($c_totalquery)."\">\r\n" . $xml . "\r\n</dc>"; } function demandTickets($xml="",$q_content_filter="",$q_count_filter="",$q_searchw="",$q_searchf="",$c_total=0,$c_totalall=0,$c_totalread=0,$c_totalquery=0,$c_totalmy=0,$c_totalmygroups=0,$c_totalst0=0,$c_totalst1=0,$c_totalst2=0,$c_totalst3=0,$c_totalst4=0,$c_totaldue=0,$c_totaltsd="",$c_lmi=0,$c_lmc=0,$c_name="",$c_text="",$wlxml = "",$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; SystemTime::GetExecutionTime(); 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"] = "01234"; else if($_POST["p_dt_f"]=="") $_POST["p_dt_f"] = "9"; $overdue = false; if(Str::EndsWith($_POST["p_dt_f"],"od")) { $overdue = true; $_POST["p_dt_f"] = str_replace("od","",$_POST["p_dt_f"]); } 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; $ignoreQuickFilter = (isset($_POST["p_dt_fg"]) || isset($_POST["p_dt_fwl"]) || isset($_POST["p_dt_fp"])); $q_sort = array(); $sortdefdesc = !empty($_POST["p_dt_s_d"]) && $_POST["p_dt_s_d"] == "ASC" ? "ASC" : "DESC"; $sortdefasc = !empty($_POST["p_dt_s_d"]) && $_POST["p_dt_s_d"] == "DESC" ? "DESC" : "ASC"; $q_sort["id"] = " GROUP BY `".DB_PREFIX.DATABASE_TICKETS."`.`id` ORDER BY `".DB_PREFIX.DATABASE_TICKETS."`.`id` " . $sortdefdesc; $q_sort["update"] = " GROUP BY `".DB_PREFIX.DATABASE_TICKETS."`.`id` ORDER BY `".DB_PREFIX.DATABASE_TICKETS."`.`last_update` " . $sortdefdesc; $q_sort["priority"] = " GROUP BY `".DB_PREFIX.DATABASE_TICKETS."`.`id` ORDER BY `".DB_PREFIX.DATABASE_TICKETS."`.`priority` " . $sortdefdesc . ",`".DB_PREFIX.DATABASE_TICKETS."`.`last_update` DESC"; $q_sort["wait"] = " GROUP BY `".DB_PREFIX.DATABASE_TICKETS."`.`id` ORDER BY `".DB_PREFIX.DATABASE_TICKETS."`.`wait_begin` " . $sortdefasc . ",`".DB_PREFIX.DATABASE_TICKETS."`.`last_update` DESC"; $q_sort["status"] = " GROUP BY `".DB_PREFIX.DATABASE_TICKETS."`.`id` ORDER BY `te`.`status` " . ($sortdefasc . ",`te`.`sub_status` ASC,`".DB_PREFIX.DATABASE_TICKETS."`.`last_update` DESC"); $q_sort["sub_status"] = " GROUP BY `".DB_PREFIX.DATABASE_TICKETS."`.`id` ORDER BY if(`te`.`sub_status` = '' or `te`.`sub_status` is null,1,0),`te`.`sub_status` " . $sortdefasc; $q_sort["channel_type"] = " GROUP BY `".DB_PREFIX.DATABASE_TICKETS."`.`id` ORDER BY field(`channel_type`,4,1,6,5,3,2,7,0) " . ($sortdefasc . ",`sub_channel` ASC"); $q_sort["sub_channel"] = " GROUP BY `".DB_PREFIX.DATABASE_TICKETS."`.`id` ORDER BY if(`sub_channel` = '' or `sub_channel` is null,1,0),`sub_channel` " . $sortdefasc; $sort_index = (!empty($_POST["p_dt_s"]) && !empty($q_sort[$_POST["p_dt_s"]])) ? $_POST["p_dt_s"] : "id"; if(isset($_POST["p_dt_f"]) && strlen($_POST["p_dt_f"]) < 5 && $_POST["p_dt_f"] != 9) { $fchars=str_split($_POST["p_dt_f"]); foreach($fchars as $fchar) if(is_numeric($fchar)) if(!empty($fchar)) $q_content_filter.= (empty($q_content_filter)) ? "`te`.`status`=".$fchar : " OR `te`.`status`=".$fchar; else $q_content_filter.= (empty($q_content_filter)) ? "`te`.`status` IS NULL OR `te`.`status`=0" : " OR `te`.`status` IS NULL OR `te`.`status`=0"; } if(isset($_POST["p_dt_fc"]) && strlen($_POST["p_dt_fc"]) < 8 && $_POST["p_dt_fc"] != 9) { $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)) ? "`channel_type`=".$fchar : " OR `channel_type`=".$fchar; else $q_filter_channel.= (empty($q_filter_channel)) ? "`channel_type` IS NULL OR `channel_type`=0" : " OR `channel_type` IS NULL OR `channel_type`=0"; $q_content_filter = (empty($q_content_filter)) ? $q_filter_channel : "(" . $q_content_filter . ") AND (" . $q_filter_channel . ")"; $q_count_filter = DBManager::ConditionAdd($q_count_filter,$q_filter_channel); } if(!empty($_POST["p_dt_fp"]) && !isset($_POST["p_dt_fwl"])) { $fval = "`te`.`editor_id`='".DBManager::RealEscape(CALLER_SYSTEM_ID)."'"; $q_content_filter = DBManager::ConditionAdd($q_content_filter,$fval); } if(isset($_POST["p_dt_fg"]) && !empty($_POST["p_dt_fg"])) { $fval = "`target_group_id` IN ('".implode("','",Server::$Operators[CALLER_SYSTEM_ID]->Groups)."')"; $q_content_filter = DBManager::ConditionAdd($q_content_filter,$fval); } if(isset($_POST["p_dt_fgl"]) && !empty($_POST["p_dt_fgl"])) { $fval = "`target_group_id` IN (".$_POST["p_dt_fgl"].")"; if(!$ignoreQuickFilter) $q_content_filter = DBManager::ConditionAdd($q_content_filter,$fval); $q_count_filter = DBManager::ConditionAdd($q_count_filter,$fval); } if(isset($_POST["p_dt_fss"]) && !empty($_POST["p_dt_fss"])) { $fval = "(`te`.`sub_status` = '".DBManager::RealEscape($_POST["p_dt_fss"])."')"; $q_content_filter = DBManager::ConditionAdd($q_content_filter,$fval); } $ticketDueTime = intval(Server::$Configuration->File["gl_tidt"])*3600; if($overdue) { $fval = "(`wait_begin` < ".(time()-$ticketDueTime).")"; $q_content_filter = DBManager::ConditionAdd($q_content_filter,$fval); } if(isset($_POST["p_dt_fsc"]) && !empty($_POST["p_dt_fsc"])) { $sscs = explode(',',$_POST["p_dt_fsc"]); $scfco = $scfct = ''; foreach($sscs as $scf) { $scf = base64_decode($scf); $pindex = substr($scf,0,1); $schan = substr($scf,1,strlen($scf)-1); if(!empty($scfco)) $scfco .= " OR "; $scfco .= "(`channel_type` = ".intval($pindex)." AND `sub_channel` = '".DBManager::RealEscape($schan)."' OR `sub_channel` = '')"; } if(!$ignoreQuickFilter) { if(empty($q_content_filter)) $q_content_filter.= "(" . $scfco . ")"; else $q_content_filter = "((" . $q_content_filter . ") AND (" . $scfco . "))"; } if(empty($q_count_filter)) $q_count_filter.= "(" . $scfco . ")"; else $q_count_filter = "((" . $q_count_filter . ") AND (" . $scfco . "))"; } $q_watchlist = ""; if(isset($_POST["p_dt_fwl"])) { $fval = "`twl`.`operator_id`='".DBManager::RealEscape(CALLER_SYSTEM_ID)."'"; $q_content_filter = DBManager::ConditionAdd($q_content_filter,$fval); $q_watchlist = " LEFT JOIN `".DB_PREFIX.DATABASE_TICKET_WATCHER."` AS `twl` ON `".DB_PREFIX.DATABASE_TICKETS."`.`id`=`twl`.`ticket_id`"; // 7.0.9.5 } $tags = isset($_POST["p_dt_t"]) ? $_POST["p_dt_t"] : ""; if(!empty($_POST["p_dt_q"]) || !empty($tags)) { $q = DBManager::RealEscape(Str::ToLower($_POST["p_dt_q"],"utf-8"),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` "; if(isset($_POST["p_dt_q_ss"]) && is_numeric($_POST["p_dt_q_ss"]) && strlen($_POST["p_dt_q_ss"]) > 13 && substr($_POST["p_dt_q_ss"],13,1) == 1) $q_searchf .= " LEFT JOIN `".DB_PREFIX.DATABASE_TICKET_COMMENTS."` AS `tcom` ON `".DB_PREFIX.DATABASE_TICKETS."`.`id`=`tcom`.`ticket_id` "; $q_searchw = Ticket::GetSearchQuery($q,$tags); } Server::InitDataBlock(array("INPUTS")); $q_content_filter = (!empty($q_content_filter)) ? " AND (" . $q_content_filter . ")": ""; $q_count_filter = (!empty($q_count_filter)) ? " AND (" . $q_count_filter . ")": ""; $q_grperm = (isset($_POST["p_dt_fwl"]) || $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_watchlist . " ". $q_searchf ."WHERE ". $q_grperm ."`deleted`=0". $q_content_filter . $q_searchw . $q_sort[$sort_index]; $result = DBManager::Execute(true, $q = "SELECT *,`te`.`ticket_id` " . $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_grperm = ($permission == PERMISSION_FULL) ? "" : " AND `target_group_id` IN ('".implode("','",Server::$Operators[CALLER_SYSTEM_ID]->Groups)."')"; $q_count["totalall"] = ",(SELECT COUNT(*) FROM `".DB_PREFIX.DATABASE_TICKETS."` LEFT JOIN `".DB_PREFIX.DATABASE_TICKET_EDITORS."` AS `te` ON `".DB_PREFIX.DATABASE_TICKETS."`.`id`=`te`.`ticket_id` WHERE `deleted`=0".$q_grperm.$q_count_filter.") AS `totalall`"; $q_count["totalread"] = ""; $q_count["totalmy"] = ",(SELECT COUNT(*) FROM `".DB_PREFIX.DATABASE_TICKETS."` LEFT JOIN `".DB_PREFIX.DATABASE_TICKET_EDITORS."` AS `te` ON `".DB_PREFIX.DATABASE_TICKETS."`.`id`=`te`.`ticket_id` WHERE `deleted`=0".$q_grperm.$q_count_filter." AND `status`<=1 AND `editor_id`='".DBManager::RealEscape(CALLER_SYSTEM_ID)."') AS `totalmy`"; $q_count["totalmygroups"] = ",(SELECT COUNT(*) FROM `".DB_PREFIX.DATABASE_TICKETS."` LEFT JOIN `".DB_PREFIX.DATABASE_TICKET_EDITORS."` AS `te` ON `".DB_PREFIX.DATABASE_TICKETS."`.`id`=`te`.`ticket_id` WHERE `deleted`=0 AND `target_group_id` IN ('".implode("','",Server::$Operators[CALLER_SYSTEM_ID]->Groups)."') AND (`te`.`status`<=1 OR `te`.`status` IS NULL)) AS `totalmygroups`"; $q_count["totalst0"] = ",(SELECT COUNT(*) FROM `".DB_PREFIX.DATABASE_TICKETS."` LEFT JOIN `".DB_PREFIX.DATABASE_TICKET_EDITORS."` AS `te` ON `".DB_PREFIX.DATABASE_TICKETS."`.`id`=`te`.`ticket_id` WHERE `deleted`=0".$q_grperm.$q_count_filter." AND (`te`.`status`<=0 OR `te`.`status` IS NULL)) AS `totalst0`"; $q_count["totalst1"] = ",(SELECT COUNT(*) FROM `".DB_PREFIX.DATABASE_TICKETS."` LEFT JOIN `".DB_PREFIX.DATABASE_TICKET_EDITORS."` AS `te` ON `".DB_PREFIX.DATABASE_TICKETS."`.`id`=`te`.`ticket_id` WHERE `deleted`=0".$q_grperm.$q_count_filter." AND `status`=1) AS `totalst1`"; $q_count["totalst2"] = ",(SELECT COUNT(*) FROM `".DB_PREFIX.DATABASE_TICKETS."` LEFT JOIN `".DB_PREFIX.DATABASE_TICKET_EDITORS."` AS `te` ON `".DB_PREFIX.DATABASE_TICKETS."`.`id`=`te`.`ticket_id` WHERE `deleted`=0".$q_grperm.$q_count_filter." AND `status`=2) AS `totalst2`"; $q_count["totalst3"] = ",(SELECT COUNT(*) FROM `".DB_PREFIX.DATABASE_TICKETS."` LEFT JOIN `".DB_PREFIX.DATABASE_TICKET_EDITORS."` AS `te` ON `".DB_PREFIX.DATABASE_TICKETS."`.`id`=`te`.`ticket_id` WHERE `deleted`=0".$q_grperm.$q_count_filter." AND `status`=3) AS `totalst3`"; $q_count["totalst4"] = ",(SELECT COUNT(*) FROM `".DB_PREFIX.DATABASE_TICKETS."` LEFT JOIN `".DB_PREFIX.DATABASE_TICKET_EDITORS."` AS `te` ON `".DB_PREFIX.DATABASE_TICKETS."`.`id`=`te`.`ticket_id` WHERE `deleted`=0".$q_grperm.$q_count_filter." AND `status`=4) AS `totalst4`"; $q_count["totaltsd"] = ""; $q_count["totaldue"] = ",(SELECT COUNT(*) FROM `".DB_PREFIX.DATABASE_TICKETS."` LEFT JOIN `".DB_PREFIX.DATABASE_TICKET_EDITORS."` AS `te` ON `".DB_PREFIX.DATABASE_TICKETS."`.`id`=`te`.`ticket_id` WHERE `deleted`=0".$q_grperm.$q_count_filter." AND `status`<2 AND `wait_begin` < ".(time()-$ticketDueTime).") AS `totaldue`"; if(!empty(Server::$Configuration->Database["gl_tsd"])) foreach(Server::$Configuration->Database["gl_tsd"] as $tsd) $q_count["totaltsd"] .= ",(SELECT COUNT(*) FROM `".DB_PREFIX.DATABASE_TICKETS."` LEFT JOIN `".DB_PREFIX.DATABASE_TICKET_EDITORS."` AS `te` ON `".DB_PREFIX.DATABASE_TICKETS."`.`id`=`te`.`ticket_id` WHERE `status`='".DBManager::RealEscape($tsd->ParentId)."' AND `deleted`=0 AND `sub_status`='".DBManager::RealEscape($tsd->Id)."' ".$q_grperm.$q_count_filter.") AS `ttsd".$tsd->GetShortId()."`"; $result = DBManager::Execute(true, $d=($q_count["total"] . "," . $q_count["totalperm"] . "," . $q_count["totalquery"] . $q_count["totalread"] . $q_count["totalall"] . $q_count["totalmy"] . $q_count["totalmygroups"] . $q_count["totalst0"] . $q_count["totalst1"] . $q_count["totalst2"] . $q_count["totalst3"] . $q_count["totalst4"] . $q_count["totaltsd"] . $q_count["totaldue"] . " FROM `" . DB_PREFIX . DATABASE_TICKETS . "` WHERE `deleted`=0;")); if($row = DBManager::FetchArray($result)) { if(!isset($row["totalall"]))$row["totalall"] = 0; if(!isset($row["totalread"]))$row["totalread"] = 0; if(!isset($row["totalmy"]))$row["totalmy"] = 0; if(!isset($row["totalmygroups"]))$row["totalmygroups"] = 0; if(!isset($row["totalst0"]))$row["totalst0"] = 0; if(!isset($row["totalst1"]))$row["totalst1"] = 0; if(!isset($row["totalst2"]))$row["totalst2"] = 0; if(!isset($row["totalst3"]))$row["totalst3"] = 0; if(!isset($row["totalst4"]))$row["totalst4"] = 0; if(!isset($row["totalwl"]))$row["totalwl"] = 0; if(!isset($row["totaldue"]))$row["totaldue"] = 0; $c_total = min($row["total"],$row["totalperm"]); $c_totalall = $row["totalall"]; $c_totalread = min($row["totalread"],$row["totalperm"]); $c_totalquery = min($row["totalquery"],$row["totalperm"]); $c_totalmy = $row["totalmy"]; $c_totalmygroups = $row["totalmygroups"]; $c_totalst0 = $row["totalst0"]; $c_totalst1 = $row["totalst1"]; $c_totalst2 = $row["totalst2"]; $c_totalst3 = $row["totalst3"]; $c_totalst4 = $row["totalst4"]; $c_totaldue = $row["totaldue"]; if(!empty(Server::$Configuration->Database["gl_tsd"])) foreach(Server::$Configuration->Database["gl_tsd"] as $tsd) $c_totaltsd .= " ttsd" . $tsd->GetShortId()."=\"" . base64_encode($row["ttsd" . $tsd->GetShortId()]) . "\""; // notification $q_grperm = ($permission == PERMISSION_FULL) ? "" : "`target_group_id` IN ('".implode("','",Server::$Operators[CALLER_SYSTEM_ID]->Groups)."')"; if(isset($_POST["p_dt_fgl"]) && !empty($_POST["p_dt_fgl"])) { $fval = "`target_group_id` IN (".$_POST["p_dt_fgl"].")"; if(!empty($q_grperm)) $q_grperm .= " AND "; $q_grperm .= $fval; } $ignore = false; $result = DBManager::Execute(true, $e = "SELECT `created`,`fullname`,`text`,`ticket_id` FROM `" . DB_PREFIX . DATABASE_TICKET_MESSAGES . "` WHERE (`type`=0 OR `type`=3 OR `type`=4) ORDER BY `time` DESC LIMIT 1;"); if($result && $row = DBManager::FetchArray($result)) { if(!empty($q_grperm)) { $resultpc = DBManager::Execute(true, "SELECT `target_group_id` FROM `" . DB_PREFIX . DATABASE_TICKETS . "` WHERE `id`=".intval($row["ticket_id"])." AND " . $q_grperm); if(DBManager::GetRowCount($resultpc) == 0) $ignore = true; } if(!$ignore) { $c_lmi = $row["ticket_id"]; $c_lmc = $row["created"]; $c_name = $row["fullname"]; $c_text = $row["text"]; } } $wlmu = 0; $result = DBManager::Execute(true, "SELECT `ticket_id`,`last_update` FROM `" . DB_PREFIX . DATABASE_TICKET_WATCHER . "` AS `twl` INNER JOIN `" . DB_PREFIX . DATABASE_TICKETS . "` AS `ti` ON `ti`.`id`=`twl`.`ticket_id` WHERE `ti`.`deleted`=0 AND `twl`.`operator_id`='" . DBManager::RealEscape(CALLER_SYSTEM_ID) . "';"); while($row = DBManager::FetchArray($result)) { $wlmu = max($wlmu,$row["last_update"]); $wlxml .= "<w>" . base64_encode($row["ticket_id"]) . "</w>"; } if(!empty($wlxml)) $wlxml = "<wl u=\"".base64_encode($wlmu)."\">" . $wlxml . "</wl>"; } else Logging::DatabaseLog("Invalid query:" . $q); } Server::$Response->Messages .= "<dt dut=\"".base64_encode(CacheManager::$DataUpdateTimes[DATA_UPDATE_KEY_TICKETS])."\" lmi=\"".base64_encode($c_lmi)."\" lmc=\"".base64_encode($c_lmc)."\" lmn=\"".base64_encode($c_name)."\" lmt=\"".base64_encode($c_text)."\" p=\"".base64_encode($loads)."\" ta=\"".base64_encode($c_totalall)."\" t=\"".base64_encode($c_total)."\" r=\"".base64_encode($c_totalread)."\" q=\"".base64_encode($c_totalquery)."\" tm=\"".base64_encode($c_totalmy)."\" tmg=\"".base64_encode($c_totalmygroups)."\" tst0=\"".base64_encode($c_totalst0)."\" tst1=\"".base64_encode($c_totalst1)."\" tst2=\"".base64_encode($c_totalst2)."\" tst3=\"".base64_encode($c_totalst3)."\" tst4=\"".base64_encode($c_totalst4)."\" tdue=\"".base64_encode($c_totaldue)."\" ".$c_totaltsd.">\r\n" . $wlxml . $xml . "\r\n</dt>"; } function demandChats() { if(!isset($_POST[POST_INTERN_XMLCLIP_CHATS_ACTIVE_END_TIME])) $_POST[POST_INTERN_XMLCLIP_CHATS_ACTIVE_END_TIME] = time()-(600); else if($_POST[POST_INTERN_XMLCLIP_CHATS_ACTIVE_END_TIME]=='N') return; if(!isset($_POST[POST_INTERN_XMLCLIP_CHATS_CLOSED_END_TIME])) $_POST[POST_INTERN_XMLCLIP_CHATS_CLOSED_END_TIME] = time()-(600); $xml = ""; $dut_active = $_POST[POST_INTERN_XMLCLIP_CHATS_ACTIVE_END_TIME]; $dut_closed = $_POST[POST_INTERN_XMLCLIP_CHATS_CLOSED_END_TIME]; $counta = 0; $countc = 0; $modChats = array(); if(isset($_POST["p_ext_cl_pci"])) { $prchatid = explode(",",$_POST["p_ext_cl_pci"]); foreach($prchatid as $cid) $modChats[] = intval($cid); } if(!empty($modChats)) $modChats = " OR `chat_id` IN (" . implode(",",$modChats).")"; else $modChats = ""; Chat::KeepAliveAPIChats(); // active $result = DBManager::Execute(true, "SELECT * FROM `".DB_PREFIX.DATABASE_VISITOR_CHATS."` WHERE (`last_active` >= " . intval($dut_active) . $modChats . ") AND `chat_id` > 0 ORDER BY `chat_id` DESC;"); while($row = DBManager::FetchArray($result)) { $vc = new VisitorChat($row); $xml .= $vc->GetChatXML($row["visitor_id"]) . "\r\n"; Server::$Chats[$vc->ChatId] = $vc; $dut_active = max($vc->LastActive,$dut_active); if(strpos($modChats,$vc->ChatId)!==false) { $cp = Chat::GetPostsOfChat($vc->ChatId); $xml .= "<pc cid=\"".base64_encode($vc->ChatId)."\">".To::XMLTags($cp)."</pc>"; } $counta++; } // closed $result = DBManager::Execute(true, "SELECT * FROM `".DB_PREFIX.DATABASE_VISITOR_CHATS."` WHERE (`exit` >= " . intval($dut_closed) . ") AND `chat_id` > 0 ORDER BY `chat_id` DESC;"); while($row = DBManager::FetchArray($result)) { $vc = new VisitorChat($row); $xml .= $vc->GetChatXML($row["visitor_id"]) . "\r\n"; Server::$Chats[$vc->ChatId] = $vc; $dut_closed = max($vc->Exit,$dut_closed); $countc++; } Server::$Response->Chats .= "<ext_cl duta=\"".base64_encode($dut_active-1)."\" dutc=\"".base64_encode($dut_closed-1)."\">" . $xml . "</ext_cl>"; } function buildNewPosts() { foreach(Chat::GetMyPosts(CALLER_SYSTEM_ID) as $post) { Server::$Response->Posts .= $post->GetXml(); } $suXml = ""; $suMaxUpdated = 0; if(!isset($_POST["p_lpsu"])) $_POST["p_lpsu"] = 0; if($result = DBManager::Execute(true, "SELECT * FROM `" . DB_PREFIX . DATABASE_POSTS . "` WHERE (`received`=1 OR `noticed`=1) AND `updated` > ".intval($_POST["p_lpsu"])." AND `updated` < ".time()." AND `sender`='".DBManager::RealEscape(CALLER_SYSTEM_ID)."' ORDER BY `time` ASC, `micro` ASC;")) while($row = DBManager::FetchArray($result)) { $suMaxUpdated = max($suMaxUpdated,$row["updated"]); $np = new Post($row); $suXml .= $np->GetStatusXml($row["received"]==1,$row["noticed"]==1); } if(!empty($suXml)) Server::$Response->Posts .= "<psul u=\"" . base64_encode($suMaxUpdated). "\">" . $suXml . "</psul>"; } function buildIntern() { $builder = new InternalXMLBuilder(Server::$Operators[CALLER_SYSTEM_ID]); $builder->Generate(); Server::$Response->Internals = $builder->XMLInternal; Server::$Response->Typing .= $builder->XMLTyping; //Server::$Response->InternalProfilePictures = $builder->XMLProfilePictures; //Server::$Response->InternalWebcamPictures = $builder->XMLWebcamPictures; Server::$Response->Groups = $builder->XMLGroups; } ?>
/home2/wtmwscom/www/livezila/_lib/functions.internal.build.inc.php