function CheckFields(&$arFields, $groupID = 0, $userID = 0) { global $APPLICATION, $DB, $USER; $groupID = intval($groupID); $userID = intval($userID); if (!is_array($arFields)) { $arFields = array(); } //if update if ($userID > 0 || $groupID > 0) { if ($userID <= 0) { $APPLICATION->ThrowException(GetMessage('SUP_ERROR_USER_ID_EMPTY')); return false; } if ($groupID <= 0) { $APPLICATION->ThrowException(GetMessage('SUP_ERROR_GROUP_ID_EMPTY')); return false; } if (array_key_exists('GROUP_ID', $arFields)) { unset($arFields['GROUP_ID']); } if (array_key_exists('USER_ID', $arFields)) { unset($arFields['USER_ID']); } } //if add if ($userID <= 0 && $groupID <= 0) { $arFields['GROUP_ID'] = array_key_exists('GROUP_ID', $arFields) ? intval($arFields['GROUP_ID']) : 0; $arFields['USER_ID'] = array_key_exists('USER_ID', $arFields) ? intval($arFields['USER_ID']) : 0; if ($arFields['USER_ID'] <= 0) { $APPLICATION->ThrowException(GetMessage('SUP_ERROR_USER_ID_EMPTY')); return false; } if ($arFields['GROUP_ID'] <= 0) { $APPLICATION->ThrowException(GetMessage('SUP_ERROR_GROUP_ID_EMPTY')); return false; } $rs = $USER->GetByID($arFields['USER_ID']); if (!$rs->Fetch()) { $APPLICATION->ThrowException(GetMessage('SUP_ERROR_NO_USER')); return false; } $rs = CSupportUserGroup::GetList(false, array('ID' => $arFields['GROUP_ID'])); if (!($arGroup = $rs->Fetch())) { $APPLICATION->ThrowException(GetMessage('SUP_ERROR_NO_GROUP')); return false; } if (CTicket::IsAdmin($arFields['USER_ID']) || CTicket::IsSupportTeam($arFields['USER_ID'])) { if ($arGroup['IS_TEAM_GROUP'] != 'Y') { $APPLICATION->ThrowException(GetMessage('SUP_ERROR_USER_NO_CLIENT')); return false; } } elseif (CTicket::IsSupportClient($arFields['USER_ID'])) { if ($arGroup['IS_TEAM_GROUP'] == 'Y') { $APPLICATION->ThrowException(GetMessage('SUP_ERROR_USER_NO_TEAM')); return false; } } else { $APPLICATION->ThrowException(GetMessage('SUP_ERROR_NO_SUPPORT_USER')); return false; } $rs = CSupportUser2UserGroup::GetList(false, array('GROUP_ID' => $arFields['GROUP_ID'], 'USER_ID' => $arFields['USER_ID'])); if ($rs->Fetch()) { $APPLICATION->ThrowException(GetMessage('SUP_ERROR_USERGROUP_EXISTS')); return false; } } if (array_key_exists('CAN_VIEW_GROUP_MESSAGES', $arFields)) { $arFields['CAN_VIEW_GROUP_MESSAGES'] = $arFields['CAN_VIEW_GROUP_MESSAGES'] == 'Y' ? 'Y' : 'N'; } elseif ($userID <= 0 && $groupID <= 0) { $arFields['CAN_VIEW_GROUP_MESSAGES'] = 'N'; } if (array_key_exists('CAN_MAIL_GROUP_MESSAGES', $arFields)) { $arFields['CAN_MAIL_GROUP_MESSAGES'] = $arFields['CAN_MAIL_GROUP_MESSAGES'] == 'Y' ? 'Y' : 'N'; } elseif ($userID <= 0 && $groupID <= 0) { $arFields['CAN_MAIL_GROUP_MESSAGES'] = 'N'; } return true; }
function GetMessageDynamicList(&$by, &$order, $arFilter = array()) { $err_mess = CTicket::err_mess() . "<br>Function: GetMessageDynamicList<br>Line: "; global $DB; $arSqlSearch = array(); $strSqlSearch = ""; if (is_array($arFilter)) { $filterKeys = array_keys($arFilter); for ($i = 0; $i < count($filterKeys); $i++) { $key = $filterKeys[$i]; $val = $arFilter[$filterKeys[$i]]; if (is_array($val) && count($val) <= 0 || !is_array($val) && (strlen($val) <= 0 || $val === 'NOT_REF')) { continue; } $matchValueSet = in_array($key . "_EXACT_MATCH", $filterKeys) ? true : false; $key = strtoupper($key); switch ($key) { case "SITE": case "SITE_ID": if (is_array($val)) { $val = implode(" | ", $val); } $match = $arFilter[$key . "_EXACT_MATCH"] == "N" && $matchValueSet ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("T.SITE_ID", $val, $match); break; case "DATE_CREATE_1": if (CheckDateTime($val)) { $arSqlSearch[] = "M.DATE_CREATE>=" . $DB->CharToDateFunction($val, "SHORT"); } break; case "DATE_CREATE_2": if (CheckDateTime($val)) { $arSqlSearch[] = "M.DATE_CREATE<" . $DB->CharToDateFunction($val, "SHORT") . " + INTERVAL 1 DAY"; } break; case "OWNER": $match = $arFilter[$key . "_EXACT_MATCH"] == "Y" && $matchValueSet ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("M.OWNER_USER_ID, U.LOGIN, U.LAST_NAME, U.NAME", $val, $match); break; case "OWNER_ID": if (intval($val) > 0) { $arSqlSearch[] = "M.OWNER_USER_ID = '" . intval($val) . "'"; } elseif ($val == 0) { $arSqlSearch[] = "(M.OWNER_USER_ID is null or M.OWNER_USER_ID=0)"; } break; case "IS_HIDDEN": case "IS_LOG": case "IS_OVERDUE": $arSqlSearch[] = $val == "Y" ? "M." . $key . "='Y'" : "M." . $key . "='N'"; break; case "SLA_ID": case "SLA": $match = $arFilter[$key . "_EXACT_MATCH"] == "N" && $matchValueSet ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("T.SLA_ID", $val, $match); break; case "CATEGORY_ID": case "CATEGORY": if (intval($val) > 0) { $arSqlSearch[] = "T.CATEGORY_ID = '" . intval($val) . "'"; } elseif ($val == 0) { $arSqlSearch[] = "(T.CATEGORY_ID is null or T.CATEGORY_ID=0)"; } break; case "CRITICALITY_ID": case "CRITICALITY": if (intval($val) > 0) { $arSqlSearch[] = "T.CRITICALITY_ID = '" . intval($val) . "'"; } elseif ($val == 0) { $arSqlSearch[] = "(T.CRITICALITY_ID is null or T.CRITICALITY_ID=0)"; } break; case "STATUS_ID": case "STATUS": if (intval($val) > 0) { $arSqlSearch[] = "T.STATUS_ID = '" . intval($val) . "'"; } elseif ($val == 0) { $arSqlSearch[] = "(T.STATUS_ID is null or T.STATUS_ID=0)"; } break; case "MARK_ID": case "MARK": if (intval($val) > 0) { $arSqlSearch[] = "T.MARK_ID = '" . intval($val) . "'"; } elseif ($val == 0) { $arSqlSearch[] = "(T.MARK_ID is null or T.MARK_ID=0)"; } break; case "SOURCE_ID": case "SOURCE": if (intval($val) > 0) { $arSqlSearch[] = "T.SOURCE_ID = '" . intval($val) . "'"; } elseif ($val == 0) { $arSqlSearch[] = "(T.SOURCE_ID is null or T.SOURCE_ID=0)"; } break; case "DIFFICULTY_ID": case "DIFFICULTY": if (intval($val) > 0) { $arSqlSearch[] = "T.DIFFICULTY_ID = '" . intval($val) . "'"; } elseif ($val == 0) { $arSqlSearch[] = "(T.DIFFICULTY_ID is null or T.DIFFICULTY_ID=0)"; } break; } } } $strSqlSearch = GetFilterSqlSearch($arSqlSearch); if ($by == "s_date_create") { $strSqlOrder = "ORDER BY M.DATE_CREATE"; } else { $by = "s_date_create"; $strSqlOrder = "ORDER BY M.DATE_CREATE"; } if ($order != "asc") { $strSqlOrder .= " desc "; $order = "desc"; } $strSql = "\n\t\t\tSELECT\n\t\t\t\tcount(M.ID)\t\t\t\t\t\t\t\tCOUNTER,\n\t\t\t\tsum(if(M.EXPIRE_AGENT_DONE='Y', 1, 0))\tCOUNTER_OVERDUE,\n\t\t\t\tDAYOFMONTH(M.DAY_CREATE)\t\t\t\tCREATE_DAY,\n\t\t\t\tMONTH(M.DAY_CREATE)\t\t\t\t\t\tCREATE_MONTH,\n\t\t\t\tYEAR(M.DAY_CREATE)\t\t\t\t\t\tCREATE_YEAR\n\t\t\tFROM\n\t\t\t\tb_ticket_message M\n\t\t\tINNER JOIN b_ticket T ON (T.ID = M.TICKET_ID)\n\t\t\tLEFT JOIN b_user U ON (M.OWNER_USER_ID = U.ID)\n\t\t\tWHERE\n\t\t\t{$strSqlSearch}\n\t\t\tGROUP BY\n\t\t\t\tTO_DAYS(M.DAY_CREATE)\n\t\t\t{$strSqlOrder}\n\t\t\t"; $res = $DB->Query($strSql, false, $err_mess . __LINE__); return $res; }
} if ($gadget["SECURITY_ONLY"] == true) { $aGlobalOpt = CUserOptions::GetOption("global", "settings", array()); $bShowSecurity = file_exists($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/security/install/index.php") && $aGlobalOpt['messages']['security'] != 'N'; if (!$bShowSecurity) { continue; } } if ($gadget["PERFMON_ONLY"] == true) { $aGlobalOpt = CUserOptions::GetOption("global", "settings", array()); $bShowPerfmon = file_exists($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/perfmon/install/index.php") && $aGlobalOpt['messages']['perfmon'] != 'N'; if (!$bShowPerfmon) { continue; } } if ($gadget["SUPPORT_ONLY"] == true && (!CModule::IncludeModule("support") || !$USER->IsAuthorized() || !CTicket::IsSupportClient() && !CTicket::IsAdmin() && !CTicket::IsSupportTeam())) { continue; } if ($gadget["WIKI_ONLY"] == true && !IsModuleInstalled("wiki")) { continue; } if ($gadget["CRM_ONLY"] == true && !IsModuleInstalled("crm")) { continue; } if ($gadget["VOTE_ONLY"] == true && (!IsModuleInstalled("vote") || !CBXFeatures::IsFeatureEnabled("Vote"))) { continue; } if ($gadget["TASKS_ONLY"] == true && !CBXFeatures::IsFeatureEnabled("Tasks")) { continue; } if ($gadget["MESSENGER_ONLY"] == true && !CBXFeatures::IsFeatureEnabled("WebMessenger")) {
function Delete($id, $checkRights = true) { $err_mess = self::err_mess() . "<br>Function: Delete<br>Line: "; global $DB, $USER, $APPLICATION; $id = intval($id); $table = self::TABLE; $tableShedule = self::TABLE_SHEDULE; if ($id <= 0) { return false; } $isDemo = null; $isSupportClient = null; $isSupportTeam = null; $isAdmin = null; $isAccess = null; $userID = null; CTicket::GetRoles($isDemo, $isSupportClient, $isSupportTeam, $isAdmin, $isAccess, $userID, $checkRights); if (!$isAdmin) { $arMsg = array(); $arMsg[] = array("id" => "PERMISSION", "text" => GetMessage("SUP_ERROR_ACCESS_DENIED")); $e = new CAdminException($arMsg); $APPLICATION->ThrowException($e); return false; } $strSql = "SELECT DISTINCT 'x' FROM b_ticket_sla WHERE TIMETABLE_ID = {$id}"; $rs = $DB->Query($strSql, false, $err_mess . __LINE__); if (!$rs->Fetch()) { $DB->Query("DELETE FROM {$table} WHERE ID = {$id}", false, $err_mess . __LINE__); $DB->Query("DELETE FROM {$tableShedule} WHERE TIMETABLE_ID = {$id}", false, $err_mess . __LINE__); return true; } else { $APPLICATION->ThrowException(str_replace("#ID#", "{$id}", GetMessage("SUP_ERROR_TIMETABLE_HAS_SLA"))); } return false; }
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die; } $bDemo = CTicket::IsDemo() ? "Y" : "N"; $bAdmin = CTicket::IsAdmin() ? "Y" : "N"; $bSupportTeam = CTicket::IsSupportTeam() ? "Y" : "N"; $bADS = $bDemo == 'Y' || $bAdmin == 'Y' || $bSupportTeam == 'Y'; ?> <form method="post" action="<?php echo $arResult["NEW_TICKET_PAGE"]; ?> "> <input type="submit" name="edit" value="<?php echo GetMessage("SUP_ASK"); ?> "> </form> <br /> <?php $APPLICATION->IncludeComponent("bitrix:main.interface.grid", "", array("GRID_ID" => $arResult["GRID_ID"], "HEADERS" => array(array("id" => "LAMP", "name" => GetMessage('SUP_LAMP'), "sort" => "s_lamp", "default" => true), array("id" => "ID", "name" => GetMessage('SUP_ID'), "sort" => "s_id", "default" => true), array("id" => "TITLE", "name" => GetMessage('SUP_TITLE'), "default" => true), array("id" => "TIMESTAMP_X", "name" => GetMessage('SUP_TIMESTAMP'), "sort" => "s_timestamp_x", "default" => true), array("id" => "MODIFIED_BY", "name" => GetMessage('SUP_MODIFIED_BY'), "default" => true), array("id" => "MESSAGES", "name" => GetMessage('SUP_MESSAGES'), "default" => true), array("id" => "STATUS_NAME", "name" => GetMessage('SUP_STATUS'), "default" => true)), "SORT" => $arResult["SORT"], "SORT_VARS" => $arResult["SORT_VARS"], "ROWS" => $arResult["ROWS"], "FOOTER" => array(array("title" => GetMessage('SUP_TOTAL'), "value" => $arResult["ROWS_COUNT"])), "ACTION_ALL_ROWS" => true, "EDITABLE" => false, "NAV_OBJECT" => $arResult["NAV_OBJECT"], "AJAX_ID" => $arParams["AJAX_ID"], "FILTER" => $arResult["FILTER"]), $component); ?> <br /> <br /> <table class="support-ticket-hint">
$rsMessage = CTicket::GetMessageList($by, $order, $arFilter, $is_filtered, $check_rights = "Y", $get_user_name = "N"); $rsMessage->NavStart($arParams["MESSAGES_PER_PAGE"]); $arResult["NAV_STRING"] = $rsMessage->GetPageNavString(GetMessage("SUP_PAGES")); $arResult["NAV_RESULT"] = $rsMessage; while ($arMessage = $rsMessage->GetNext()) { if (array_key_exists($arMessage["ID"], $arMessagesFiles)) { $arFiles["FILES"] = $arMessagesFiles[$arMessage["ID"]]; } else { $arFiles["FILES"] = array(); } $arMessage["MESSAGE"] = TxtToHTML($arMessage["~MESSAGE"], $bMakeUrls = true, $iMaxStringLen = $arParams["MESSAGE_MAX_LENGTH"], $QUOTE_ENABLED = "Y", $NOT_CONVERT_AMPERSAND = "N", $CODE_ENABLED = "Y", $BIU_ENABLED = "Y", $quote_table_class = "support-quote-table", $quote_head_class = "support-quote-head", $quote_body_class = "support-quote-body", $code_table_class = "support-code-table", $code_head_class = "support-code-head", $code_body_class = "support-code-body", $code_textarea_class = "support-code-textarea", $link_class = ""); $arResult["MESSAGES"][] = $arMessage + $arFiles + _GetUserInfo($arMessage["OWNER_USER_ID"], "OWNER") + _GetUserInfo($arMessage["CREATED_USER_ID"], "CREATED") + _GetUserInfo($arMessage["MODIFIED_USER_ID"], "MODIFIED_BY"); } //Online CTicket::UpdateOnline($arParams["ID"], $USER->GetID()); $rsOnline = CTicket::GetOnline($arParams["ID"]); while ($arOnline = $rsOnline->GetNext()) { $arResult["ONLINE"][] = $arOnline; } $ticketSite = $arTicket["SITE_ID"]; $ticketSla = $arTicket["SLA_ID"]; } else { $ticketSite = SITE_ID; $ticketSla = CTicketSLA::GetForUser(); $arResult["DICTIONARY"]["CRITICALITY_DEFAULT"] = CTicketDictionary::GetDefault("K", $ticketSite); $arResult["DICTIONARY"]["CATEGORY_DEFAULT"] = CTicketDictionary::GetDefault("C", $ticketSite); } //Mark, Category, Criticality dictionary list $ticketDictionary = CTicketDictionary::GetDropDownArray($ticketSite, $ticketSla); $arResult["DICTIONARY"]["MARK"] = _GetDropDownDictionary("M", $ticketDictionary); $arResult["DICTIONARY"]["CRITICALITY"] = _GetDropDownDictionary("K", $ticketDictionary);
} if ($find_open == "Y") { $arrY_open[] = intval($f_OPEN_TICKETS); } if ($find_close == "Y") { $arrY_close[] = intval($f_CLOSE_TICKETS); } $prev_date = $date; } /****************************************************** ‘ормируем ось X *******************************************************/ $arrayX = GetArrayX($arrX, $MinX, $MaxX); if ($find_mess == "Y" || $find_overdue_mess == "Y") { $arFilter = array("SITE" => $find_site, "DATE_CREATE_1" => $find_date1, "DATE_CREATE_2" => $find_date2, "OWNER_ID" => $find_responsible_id, "OWNER" => $find_responsible, "OWNER_EXACT_MATCH" => $find_responsible_exact_match, "SLA" => $find_sla_id, "CATEGORY" => $find_category_id, "CRITICALITY" => $find_criticality_id, "STATUS" => $find_status_id, "MARK" => $find_mark_id, "SOURCE" => $find_source_id, "IS_HIDDEN" => "N", "IS_LOG" => "N", "IS_OVERDUE" => "N"); $rsMess = CTicket::GetMessageDynamicList($v1 = "s_date_create", $v2 = "asc", $arFilter); while ($arMess = $rsMess->Fetch()) { $date = mktime(0, 0, 0, $arMess["CREATE_MONTH"], $arMess["CREATE_DAY"], $arMess["CREATE_YEAR"]); $arrMessages[$date] = $arMess["COUNTER"]; $arrOverdueMessages[$date] = $arMess["COUNTER_OVERDUE"]; } foreach ($arrX as $t) { $arrY_mess[] = intval($arrMessages[$t]); $arrY_overdue_mess[] = intval($arrOverdueMessages[$t]); } } /****************************************************** ‘ормируем ось Y *******************************************************/ $arrY = array(); if ($find_all == "Y") {
$url = $APPLICATION->GetCurPage() . "?TICKET_ID=" . $TICKET_ID . "&OWNER_USER_ID=" . intval($OWNER_USER_ID) . "&lang=" . LANGUAGE_ID . "&ONLINE_AUTO_REFRESH=" . intval($ONLINE_AUTO_REFRESH); require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_popup_admin.php"; $lamp = CTicket::GetStatus($TICKET_ID); $ticket = CTicket::GetByID($TICKET_ID); $arTicket = $ticket->ExtractFields(); ?> <table cellspacing=0 cellpadding=0 class="support-online"> <?php $mode = strlen($mode) > 0 ? $mode : false; CTicket::UpdateOnline($TICKET_ID, false, $mode); $rs = CTicket::GetOnline($TICKET_ID); while ($ar = $rs->GetNext()) { $is_support = ""; if (intval($OWNER_USER_ID) == $ar["USER_ID"]) { $is_support = "N"; } elseif (CTicket::IsSupportTeam($ar["USER_ID"]) || CTicket::IsAdmin($ar["USER_ID"]) || CTicket::IsDemo($ar["USER_ID"])) { $is_support = "Y"; } ?> <tr> <td valign="top" width="16%"><?php if ($is_support == "Y") { if ($ar["CURRENT_MODE"] == "edit") { ?> <img src="/bitrix/images/support/sup_write.gif" width="15" height="13" border="0" alt="<?php echo GetMessage("SUP_EDIT_MODE_ALT"); ?> "><?php } else { ?> <img src="/bitrix/images/support/sup_view.gif" width="17" height="13" border="0" alt="<?php
if (strSourceValue!="NOT_REF") { document.getElementById("OWNER_SID").disabled = false; document.getElementById("OWNER_SID").style.display = "inline"; } } //--> </SCRIPT> <tr valign="middle"> <td width="20%" nowrap><?php echo GetMessage("SUP_SOURCE") . " / " . GetMessage("SUP_FROM"); ?> </td> <td width="80%" nowrap><?php echo SelectBox("SOURCE_ID", CTicket::GetRefBookValues("SR", $arTicket["LID"]), "< web >", $str_SOURCE_ID, "OnChange=SelectSource() "); ?> <input type="text" size="12" name="OWNER_SID" id="OWNER_SID" value="<?php echo $str_OWNER_SID; ?> "><?php echo FindUserID("OWNER_USER_ID", $str_OWNER_USER_ID); ?> </td> </tr> <SCRIPT LANGUAGE="JavaScript"> <!-- SelectSource(); //--> </SCRIPT> <tr valign="top">
<?php require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_before.php"; require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/support/prolog.php"; CModule::IncludeModule('support'); IncludeModuleLangFile(__FILE__); $bDemo = CTicket::IsDemo(); $bAdmin = CTicket::IsAdmin(); if (!$bAdmin && !$bDemo) { $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); } $EDIT_URL = "/bitrix/admin/ticket_group_edit.php"; $LIST_URL = $APPLICATION->GetCurPage(); $sTableID = 't_ugroups_list'; $oSort = new CAdminSorting($sTableID, 'SORT', 'asc'); $lAdmin = new CAdminList($sTableID, $oSort); $filter = new CAdminFilter($sTableID . '_filter_id', array('ID', GetMessage('SUP_GL_FLT_IS_TEAM_GROUP'))); $arFilterFields = array('FIND_NAME', 'FIND_NAME_EXACT_MATCH', 'FIND_ID', 'FIND_IS_TEAM_GROUP'); $lAdmin->InitFilter($arFilterFields); $arFilter = array(); foreach ($arFilterFields as $key) { if (strpos($key, '_EXACT_MATCH') !== false) { continue; } if (array_key_exists($key . '_EXACT_MATCH', $_REQUEST) && $_REQUEST[$key . '_EXACT_MATCH'] == 'Y') { $op = '='; } else { $op = '%'; } if (array_key_exists($key, $_REQUEST) && strlen($_REQUEST[$key]) > 0) { if (in_array($key . '_EXACT_MATCH', $arFilterFields)) {
</tr> <?php $tabControl->BeginNextTab(); ?> <tr> <td align="right" valign="top"><?php echo GetMessage("SUP_USER_GROUPS"); ?> :</td> <td><?php $rs = CGroup::GetList($v1 = "sort", $v2 = "asc", array()); while ($ar = $rs->Fetch()) { $arRoles = $APPLICATION->GetUserRoles("support", array(intval($ar["ID"])), "Y", "N"); if (in_array(CTicket::GetSupportClientRoleID(), $arRoles) || in_array(CTicket::GetSupportTeamRoleID(), $arRoles) || in_array(CTicket::GetDemoRoleID(), $arRoles) || in_array(CTicket::GetAdminRoleID(), $arRoles)) { echo InputType("checkbox", "arGROUPS[]", $ar["ID"], $arGROUPS) . " " . htmlspecialchars($ar["NAME"]) . " [<a title=\"" . GetMessage("MAIN_ADMIN_MENU_EDIT") . "\" href=\"/bitrix/admin/group_edit.php?ID=" . intval($ar["ID"]) . "&lang=" . LANGUAGE_ID . "\">" . intval($ar["ID"]) . "</a>]<br>"; } } ?> </td> </tr> <?php $tabControl->BeginNextTab(); ?> <script type="text/javascript"> <!--
public static function SupportDeadlineNotify($arrTicket0) { //SUPPORT_DEADLINE_NOTIFY //SUPPORT_DEADLINE = EXPIRATION_DATE //SUPPORT_DEADLINE_STMP = EXPIRATION_DATE_STMP $err_mess = CAllTicketReminder::err_mess() . "<br>Function: SupportDeadlineNotify<br>Line: "; $rs = CTicket::GetByID($arrTicket0["ID"], false, "N"); if (!($arTicket = $rs->Fetch())) { return false; } $rsMessage = CTicket::GetMessageByID(intval($arTicket["ID_1_USER_M_AFTER_SUP_M"]), "N", "N"); if (!($arMessage = $rsMessage->Fetch())) { return false; } $arMessage["EXPIRATION_DATE"] = $arrTicket0["SUPPORT_DEADLINE"]; $arMessage["EXPIRATION_DATE_STMP"] = MakeTimeStamp($arMessage["EXPIRATION_DATE"]); //$SUPPORT_DEADLINE_STMP = MakeTimeStamp($arrTicket0["SUPPORT_DEADLINE"]); $rsSite = CSite::GetByID($arTicket["SITE_ID"]); $arSite = $rsSite->Fetch(); global $MESS, $DB; //$oldMess = $MESS; IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/support/classes/general/messages.php", $arSite["LANGUAGE_ID"]); $sourceName = strlen($arTicket["SOURCE_NAME"]) <= 0 ? "" : "[" . $arTicket["SOURCE_NAME"] . "] "; if (intval($arTicket["OWNER_USER_ID"]) > 0 || strlen(trim($arTicket["OWNER_LOGIN"])) > 0) { $ownerText = "[" . $arTicket["OWNER_USER_ID"] . "] (" . $arTicket["OWNER_LOGIN"] . ") " . $arTicket["OWNER_NAME"]; //if(strlen(trim($OWNER_SID)) > 0 && $OWNER_SID != "null") $ownerText = " / " . $ownerText; } if (intval($arTicket["RESPONSIBLE_USER_ID"]) > 0) { $responsibleText = "[" . $arTicket["RESPONSIBLE_USER_ID"] . "] (" . $arTicket["RESPONSIBLE_LOGIN"] . ") " . $arTicket["RESPONSIBLE_NAME"]; if (CTicket::IsSupportTeam($arTicket["RESPONSIBLE_USER_ID"]) || CTicket::IsAdmin($arTicket["RESPONSIBLE_USER_ID"])) { $responsibleText .= " " . GetMessage("SUP_TECHSUPPORT_HINT"); } } $arAdminEMails = CTicket::GetAdminEmails(); if (count($arAdminEMails) > 0) { $support_admin_email = implode(",", $arAdminEMails); } // prepare email to author $arrOwnerEMail = array($arTicket["OWNER_EMAIL"]); $arrEmails = explode(",", $arTicket["OWNER_SID"]); if (is_array($arrEmails) && count($arrEmails) > 0) { foreach ($arrEmails as $email) { $email = trim($email); if (strlen($email) > 0) { preg_match_all("#[<\\[\\(](.*?)[>\\]\\)]#i" . BX_UTF_PCRE_MODIFIER, $email, $arr); if (is_array($arr[1]) && count($arr[1]) > 0) { foreach ($arr[1] as $email) { $email = trim($email); if (strlen($email) > 0 && !in_array($email, $arrOwnerEMail) && check_email($email)) { $arrOwnerEMail[] = $email; } } } elseif (!in_array($email, $arrOwnerEMail) && check_email($email)) { $arrOwnerEMail[] = $email; } } } } TrimArr($arrOwnerEMail); $ownerEmail = implode(", ", $arrOwnerEMail); // prepare email to support $support_email = $arTicket["RESPONSIBLE_EMAIL"]; if (strlen($support_email) <= 0) { $support_email = $support_admin_email; } if (strlen($support_email) <= 0) { $support_email = COption::GetOptionString("main", "email_from", ""); } $arr = explode(",", $support_email); $arr = array_unique($arr); $support_email = implode(",", $arr); if (is_array($arr) && count($arr) > 0) { foreach ($arr as $email) { unset($arAdminEMails[$email]); } } $support_admin_email = implode(",", $arAdminEMails); $createdModuleName = ""; if ($arTicket["CREATED_MODULE_NAME"] == "support" || !strlen($arTicket["CREATED_MODULE_NAME"])) { if (intval($arTicket["CREATED_USER_ID"]) > 0) { $createdText = "[" . $arTicket["CREATED_USER_ID"] . "] (" . $arTicket["CREATED_LOGIN"] . ") " . $arTicket["CREATED_NAME"]; if (CTicket::IsSupportTeam($arTicket["CREATED_USER_ID"]) || CTicket::IsAdmin($arTicket["CREATED_USER_ID"])) { $createdText .= " " . GetMessage("SUP_TECHSUPPORT_HINT"); } } } else { $createdModuleName = "[" . $arTicket["CREATED_MODULE_NAME"] . "]"; } $MESSAGE = PrepareTxtForEmail($arMessage["MESSAGE"], $arSite["LANGUAGE_ID"], false, false); $remainedTime = $arMessage["EXPIRATION_DATE_STMP"] - time(); if ($remainedTime > 0) { $strRemainedTime = ""; $hours = intval($remainedTime / 3600); if ($hours > 0) { $strRemainedTime .= $hours . " " . GetMessage("SUP_HOUR") . " "; $remainedTime = $remainedTime - $hours * 3600; } $strRemainedTime .= intval($remainedTime / 60) . " " . GetMessage("SUP_MIN") . " "; $strRemainedTime .= $remainedTime % 60 . " " . GetMessage("SUP_SEC"); } $arFields_notify = array("ID" => $arTicket["ID"], "LANGUAGE_ID" => $arSite["LANGUAGE_ID"], "DATE_CREATE" => $arTicket["DATE_CREATE"], "TITLE" => $arTicket["TITLE"], "STATUS" => $arTicket["STATUS_NAME"], "CATEGORY" => $arTicket["CATEGORY_NAME"], "CRITICALITY" => $arTicket["CRITICALITY_NAME"], "DIFFICULTY" => $arTicket["DIFFICULTY_NAME"], "RATE" => $arTicket["MARK_NAME"], "SLA" => $arTicket["SLA_NAME"], "SOURCE" => $sourceName, "ADMIN_EDIT_URL" => "/bitrix/admin/ticket_edit.php", "EXPIRATION_DATE" => $arMessage["EXPIRATION_DATE"], "REMAINED_TIME" => $strRemainedTime, "OWNER_EMAIL" => TrimEx($ownerEmail, ","), "OWNER_USER_ID" => $arTicket["OWNER_USER_ID"], "OWNER_USER_NAME" => $arTicket["OWNER_NAME"], "OWNER_USER_LOGIN" => $arTicket["OWNER_LOGIN"], "OWNER_USER_EMAIL" => $arTicket["OWNER_EMAIL"], "OWNER_TEXT" => $ownerText, "OWNER_SID" => $arTicket["OWNER_SID"], "SUPPORT_EMAIL" => TrimEx($support_email, ","), "RESPONSIBLE_USER_ID" => $arTicket["RESPONSIBLE_USER_ID"], "RESPONSIBLE_USER_NAME" => $arTicket["RESPONSIBLE_NAME"], "RESPONSIBLE_USER_LOGIN" => $arTicket["RESPONSIBLE_LOGIN"], "RESPONSIBLE_USER_EMAIL" => $arTicket["RESPONSIBLE_EMAIL"], "RESPONSIBLE_TEXT" => $responsibleText, "SUPPORT_ADMIN_EMAIL" => TrimEx($support_admin_email, ","), "CREATED_USER_ID" => $arTicket["CREATED_USER_ID"], "CREATED_USER_LOGIN" => $arTicket["CREATED_LOGIN"], "CREATED_USER_EMAIL" => $arTicket["CREATED_EMAIL"], "CREATED_USER_NAME" => $arTicket["CREATED_NAME"], "CREATED_MODULE_NAME" => $createdModuleName, "CREATED_TEXT" => $createdText, "MESSAGE_BODY" => $MESSAGE); //$MESS = $oldMess; $arFields = array("NOTIFY_AGENT_ID" => "null", "IS_NOTIFIED" => "'Y'"); // execute event $rs = GetModuleEvents('support', 'OnBeforeTicketNotify'); while ($arr = $rs->Fetch()) { $arFields = ExecuteModuleEventEx($arr, array($arTicket["ID"], $arFields)); if (!$arFields) { return false; } } // check value again and send notification if (isset($arFields['IS_NOTIFIED']) && $arFields['IS_NOTIFIED'] === "'Y'") { CEvent::Send("TICKET_OVERDUE_REMINDER", $arTicket["SITE_ID"], $arFields_notify); } // event for notification $DB->Update("b_ticket", $arFields, "WHERE ID='" . $arTicket["ID"] . "'", $err_mess . __LINE__); $arFields = array("NOTIFY_AGENT_DONE" => "'Y'"); $DB->Update("b_ticket_message", $arFields, "WHERE ID='" . $arMessage["ID"] . "'", $err_mess . __LINE__); }
function ForumMoveMessage2Support($MID, &$strErrorMessage, &$strOKMessage, $arAddParams = array()) { global $USER; $MID = IntVal($MID); $sError = array(); $sNote = array(); $arAddParams = !is_array($arAddParams) ? array($arAddParams) : $arAddParams; $arAddParams["PERMISSION"] = !empty($arAddParams["PERMISSION"]) ? $arAddParams["PERMISSION"] : false; if ($MID <= 0) { $arError[] = GetMessage("MOVEMES_NO_MESS_EX"); } if (!CModule::IncludeModule("support")) { $arError[] = GetMessage("MOVEMES_NO_SUPPORT"); } if (empty($arError)) { $arMessage = CForumMessage::GetByID($MID, array("FILTER" => "N")); if (!$arMessage) { $arError[] = GetMessage("MOVEMES_NO_MESS_EX"); } elseif (IntVal($arMessage["AUTHOR_ID"]) <= 0) { $arError[] = GetMessage("MOVEMES_NO_ANONYM"); } elseif (!CForumMessage::CanUserDeleteMessage($MID, $USER->GetUserGroupArray(), $USER->GetID(), $arAddParams["PERMISSION"])) { $arError[] = GetMessage("MOVEMES_NO_PERMS2MOVE"); } else { $arTopic = CForumTopic::GetByID($arMessage["TOPIC_ID"]); $arFieldsSu = array("CLOSE" => "N", "TITLE" => $arTopic["TITLE"], "MESSAGE" => $arMessage["POST_MESSAGE"], "OWNER_USER_ID" => $arMessage["AUTHOR_ID"], "OWNER_SID" => $arMessage["AUTHOR_NAME"], "SOURCE_SID" => "forum"); $arIMAGE = CFile::MakeFileArray($arMessage["ATTACH_IMG"]); if (is_array($arIMAGE)) { $arIMAGE["MODULE_ID"] = "support"; $arFieldsSu["FILES"] = array($arIMAGE); } $SuID = CTicket::SetTicket($arFieldsSu); $SuID = IntVal($SuID); if ($SuID > 0) { $sNote[] = GetMessage("MOVEMES_SUCCESS_SMOVE"); } else { $arError[] = GetMessage("MOVEMES_ERROR_SMOVE"); } } } if (!empty($arError)) { $strErrorMessage .= implode(".\n", $arError) . ".\n"; } if (!empty($arNote)) { $strOKMessage .= implode(".\n", $arNote) . ".\n"; } if (empty($arError)) { return $SuID; } else { return False; } }
$sec = 7; } else { switch ($_POST["group_by"]) { case 'day': $sec = 1; break; case 'week': $sec = 7; break; case 'month': $sec = 30; break; } } $ttt = strtotime($date_from); while ($ttt <= strtotime($date_to)) { // $cnt++; $dt = date("Y-m-d", $ttt); // $total+=$tasks[$dt]; ?> <tr> <td><?php echo date("d.m.Y", $ttt); ?> </td> <?php foreach ($gm_employes as $k => $v) { $total_resp[$k] += $resp_tasks[$k][$dt]; ?> <td><?php echo round($resp_tasks[$k][$dt] / 60, 2);
function Delete($id, $CHECK_RIGHTS = "Y") { $err_mess = CAllTicketDictionary::err_mess() . "<br>Function: Delete<br>Line: "; global $DB, $APPLICATION; $id = intval($id); if ($id <= 0) { return; } $bAdmin = "N"; if ($CHECK_RIGHTS == "Y") { $bAdmin = CTicket::IsAdmin() ? "Y" : "N"; } else { $bAdmin = "Y"; } if ($bAdmin == "Y") { $DB->Query("DELETE FROM b_ticket_dictionary WHERE ID='{$id}'", false, $err_mess . __LINE__); $DB->Query('DELETE FROM b_ticket_dictionary_2_site WHERE DICTIONARY_ID=' . $id, false, $err_mess . __LINE__); } }
function GetList(&$arSort, $arFilter = array(), &$isFiltered) { $err_mess = CTicketSLA::err_mess() . "<br>Function: GetList<br>Line: "; global $DB, $USER, $APPLICATION; $isFiltered = false; // filter params correct if (CTicket::CheckFilter($arFilter)) { $arSqlSearch = array(); if (is_array($arFilter) && count($arFilter) > 0) { $filterKeys = array_keys($arFilter); $filterKeysCount = count($filterKeys); for ($i = 0; $i < $filterKeysCount; $i++) { $key = $filterKeys[$i]; $val = $arFilter[$filterKeys[$i]]; if (is_array($val) && count($val) <= 0 || !is_array($val) && (strlen($val) <= 0 || $val === 'NOT_REF')) { continue; } $matchValueSet = in_array($key . "_EXACT_MATCH", $filterKeys) ? true : false; $key = strtoupper($key); if (is_array($val)) { $val = implode(" | ", $val); } switch ($key) { case "ID": case "SLA_ID": $match = $arFilter[$key . "_EXACT_MATCH"] == "N" && $matchValueSet ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("S." . $key, $val, $match); break; case "NAME": case "DESCRIPTION": case "DEADLINE_SOURCE": $match = $arFilter[$key . "_EXACT_MATCH"] == "Y" && $matchValueSet ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("S." . $key, $val, $match); break; case "SITE": $val .= " | ALL"; $match = $arFilter[$key . "_EXACT_MATCH"] == "N" && $matchValueSet ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("SS.SITE_ID", $val, $match); $left_join_site = "LEFT JOIN b_ticket_sla_2_site SS ON (S.ID = SS.SLA_ID)"; break; } } } } $strSqlSearch = GetFilterSqlSearch($arSqlSearch); $arSort = is_array($arSort) ? $arSort : array(); if (count($arSort) > 0) { $ar1 = array_merge($DB->GetTableFieldsList("b_ticket_sla"), array()); $ar2 = array_keys($arSort); $arDiff = array_diff($ar2, $ar1); if (is_array($arDiff) && count($arDiff) > 0) { foreach ($arDiff as $value) { unset($arSort[$value]); } } } if (count($arSort) <= 0) { $arSort = array("PRIORITY" => "DESC"); } while (list($by, $order) = each($arSort)) { if (strtoupper($order) != "DESC") { $order = "ASC"; } if ($by == "RESPONSE_TIME") { $arSqlOrder[] = "case RESPONSE_TIME_UNIT when 'day' then 3 when 'hour' then 2 when 'minute' then 1 end {$order}"; $arSqlOrder[] = $by . " " . $order; } else { $arSqlOrder[] = $by . " " . $order; } } if (is_array($arSqlOrder) && count($arSqlOrder) > 0) { $strSqlOrder = " ORDER BY " . implode(",", $arSqlOrder); } $strSql = "\n\t\t\tSELECT DISTINCT\n\t\t\t\tS.*,\n\t\t\t\tcase S.RESPONSE_TIME_UNIT\n\t\t\t\t\twhen 'day' then S.RESPONSE_TIME*1440\n\t\t\t\t\twhen 'hour' then S.RESPONSE_TIME*60\n\t\t\t\t\twhen 'minute' then S.RESPONSE_TIME\n\t\t\t\t\tend\t\t\t\t\t\t\t\t\t\t\tM_RESPONSE_TIME,\n\t\t\t\tcase S.NOTICE_TIME_UNIT\n\t\t\t\t\twhen 'day' then S.NOTICE_TIME*1440\n\t\t\t\t\twhen 'hour' then S.NOTICE_TIME*60\n\t\t\t\t\twhen 'minute' then S.NOTICE_TIME\n\t\t\t\t\tend\t\t\t\t\t\t\t\t\t\t\tM_NOTICE_TIME,\n\t\t\t\tS.ID\t\t\t\t\t\t\t\t\t\t\tREFERENCE_ID,\n\t\t\t\tS.NAME\t\t\t\t\t\t\t\t\t\t\tREFERENCE,\n\t\t\t\t" . $DB->DateToCharFunction("S.DATE_MODIFY") . "\tDATE_MODIFY_F,\n\t\t\t\t" . $DB->DateToCharFunction("S.DATE_CREATE") . "\tDATE_CREATE_F\n\t\t\tFROM\n\t\t\t\tb_ticket_sla S\n\t\t\t{$left_join_site}\n\t\t\tWHERE\n\t\t\t{$strSqlSearch}\n\t\t\t{$strSqlOrder}\n\t\t\t"; $rs = $DB->Query($strSql, false, $err_mess . __LINE__); $isFiltered = IsFiltered($strSqlSearch); return $rs; }
public static function Delete($id, $checkRights = true) { $err_mess = CAllTicketSLA::err_mess() . "<br>Function: Delete<br>Line: "; global $DB, $USER, $APPLICATION; $id = intval($id); if ($id < 1) { return false; } if ($id == 1) { $APPLICATION->ThrowException(GetMessage("SUP_ERROR_SLA_1")); return false; } $isDemo = $isSupportClient = $isSupportTeam = $isAdmin = $isAccess = $userID = null; CTicket::GetRoles($isDemo, $isSupportClient, $isSupportTeam, $isAdmin, $isAccess, $userID, $checkRights); if ($isAdmin) { $strSql = "SELECT DISTINCT 'x' FROM b_ticket WHERE SLA_ID = {$id}"; $rs = $DB->Query($strSql, false, $err_mess . __LINE__); if (!$rs->Fetch()) { $DB->Query("DELETE FROM b_ticket_sla_2_site WHERE SLA_ID = {$id}", false, $err_mess . __LINE__); $DB->Query("DELETE FROM b_ticket_sla_2_category WHERE SLA_ID = {$id}", false, $err_mess . __LINE__); $DB->Query("DELETE FROM b_ticket_sla_2_criticality WHERE SLA_ID = {$id}", false, $err_mess . __LINE__); $DB->Query("DELETE FROM b_ticket_sla_2_mark WHERE SLA_ID = {$id}", false, $err_mess . __LINE__); $DB->Query("DELETE FROM b_ticket_sla_2_user_group WHERE SLA_ID = {$id}", false, $err_mess . __LINE__); //$DB->Query("DELETE FROM b_ticket_sla_shedule WHERE SLA_ID = $id", false, $err_mess.__LINE__); $DB->Query("DELETE FROM b_ticket_sla_2_holidays WHERE SLA_ID = {$id}", false, $err_mess . __LINE__); $DB->Query("DELETE FROM b_ticket_sla WHERE ID = {$id}", false, $err_mess . __LINE__); $DB->Query("DELETE FROM b_ticket_timetable_cache WHERE SLA_ID = {$id}", false, $err_mess . __LINE__); return true; } else { $APPLICATION->ThrowException(str_replace("#ID#", "{$id}", GetMessage("SUP_ERROR_SLA_HAS_TICKET"))); } } else { $APPLICATION->ThrowException(GetMessage("SUP_ERROR_ACCESS_DENIED")); } return false; }
function SeparateSLAandTimeTable($dbType) { global $DB; $err_mess = CAllSupportUpdate::err_mess() . "<br>Function: SeparateSLAandTimeTable<br>Line: "; $strUsers = implode(",", CTicket::GetSupportTeamAndAdminUsers()); $strSql0 = "\n\t\t\t\tb_ticket\n\t\t\t\t\tINNER JOIN (\n\t\t\t\t\t\tSELECT\n\t\t\t\t\t\t\tTM.TICKET_ID ID,\n\t\t\t\t\t\t\tMIN(TM.ID) M_ID\n\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\tb_ticket_message TM\n\t\t\t\t\t\t\tINNER JOIN (\n\t\t\t\t\t\t\t\tSELECT\n\t\t\t\t\t\t\t\t\tT.ID ID,\n\t\t\t\t\t\t\t\t\tMAX(" . CTicket::isnull("TM.ID", "0") . ") M_ID\n\t\t\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t\t\tb_ticket T\n\t\t\t\t\t\t\t\t\tLEFT JOIN b_ticket_message TM\n\t\t\t\t\t\t\t\t\t\tON T.ID = TM.TICKET_ID\n\t\t\t\t\t\t\t\t\t\t\tAND (TM.IS_LOG='N' OR TM.IS_LOG IS NULL OR " . $DB->Length("TM.IS_LOG") . " <= 0)\n\t\t\t\t\t\t\t\t\t\t\tAND TM.OWNER_USER_ID IN ({$strUsers})\n\t\t\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\t\tT.DATE_CLOSE IS NULL\n\t\t\t\t\t\t\t\tGROUP BY\n\t\t\t\t\t\t\t\t\tT.ID\n\t\t\t\t\t\t\t) AS Q\n\t\t\t\t\t\t\t\tON TM.TICKET_ID = Q.ID\n\t\t\t\t\t\t\t\t\tAND TM.ID > Q.M_ID\n\t\t\t\t\t\tGROUP BY\n\t\t\t\t\t\t\tTM.TICKET_ID\n\t\t\t\t\t) AS Q\n\t\t\t\t\t\tON b_ticket.ID = Q.ID\n\t\t\t\t\tINNER JOIN b_ticket_message AS M\n\t\t\t\t\t\tON Q.M_ID = M.ID\n\t\t\t"; $updateQueries = array("b_ticket_timetable,b_ticket_sla,b_ticket_sla_shedule" => array(0 => array("MySQL" => "\n\tINSERT INTO b_ticket_timetable (NAME, DESCRIPTION)\n\t\tSELECT NAME, ID\n\t\tFROM b_ticket_sla\n\t\t\t\t\t", "MSSQL" => "\n\tINSERT INTO b_ticket_timetable (NAME, DESCRIPTION)\n\t\tSELECT NAME, CAST(CAST(ID AS varchar) AS text)\n\t\tFROM b_ticket_sla\n\t\t\t\t\t", "Oracle" => "\n\tINSERT INTO b_ticket_timetable (ID, NAME, DESCRIPTION)\n\t\tSELECT SQ_b_ticket_timetable.nextval, NAME, ID \n\t\tFROM b_ticket_sla\n\t\t\t\t\t"), 1 => array("MySQL" => "\n\tUPDATE b_ticket_sla AS S\n\t\tINNER JOIN b_ticket_timetable AS T\n\t\t\tON (S.ID = cast(T.DESCRIPTION as UNSIGNED))\n\t\t\t\tAND T.DESCRIPTION IS NOT NULL\n\t\t\t\tAND S.TIMETABLE_ID IS NULL\n\tSET S.TIMETABLE_ID = T.ID\n\t\t\t\t\t", "MSSQL" => "\n\tUPDATE b_ticket_sla\n\tSET b_ticket_sla.TIMETABLE_ID = T.ID\n\tFROM\n\t\tb_ticket_sla\n\t\tINNER JOIN b_ticket_timetable AS T\n\t\t\tON (b_ticket_sla.ID = CAST(CAST(T.DESCRIPTION AS varchar) AS int))\n\t\t\t\tAND T.DESCRIPTION IS NOT NULL\n\t\t\t\tAND b_ticket_sla.TIMETABLE_ID IS NULL\n\t\t\t\t\t", "Oracle" => "\n\tUPDATE b_ticket_sla SET TIMETABLE_ID = (\n\t\tSELECT T.ID\n\t\tFROM b_ticket_timetable T\n\t\tWHERE\n\t\t\tb_ticket_sla.ID = CAST(CAST(T.DESCRIPTION as VARCHAR2(18 CHAR)) as int)\n\t\t\tAND T.DESCRIPTION IS NOT NULL\n\t\t)\n\tWHERE\n\t\tTIMETABLE_ID IS NULL\n\t\t\t\t\t"), 2 => array("MySQL" => "\n\tUPDATE b_ticket_sla_shedule AS SS\n\t\tINNER JOIN b_ticket_timetable AS T\n\t\t\tON (SS.SLA_ID = cast(T.DESCRIPTION as UNSIGNED)) \n\t\t\t\tAND T.DESCRIPTION IS NOT NULL\n\tSET SS.TIMETABLE_ID = T.ID\n\t\t\t\t\t", "MSSQL" => "\n\tUPDATE b_ticket_sla_shedule SET TIMETABLE_ID = (\n\t\tSELECT T.ID\n\t\tFROM \n\t\t\tb_ticket_timetable AS T\n\t\tWHERE\n\t\t\tb_ticket_sla_shedule.SLA_ID = CAST(CAST(T.DESCRIPTION AS varchar) AS int)\n\t\t\tAND T.DESCRIPTION IS NOT NULL\n\t\t)\n\t\t\t\t\t", "Oracle" => "\n\tUPDATE b_ticket_sla_shedule SET TIMETABLE_ID = (\n\t\tSELECT T.ID\n\t\tFROM \n\t\t\tb_ticket_timetable T\n\t\tWHERE\n\t\t\tb_ticket_sla_shedule.SLA_ID = CAST(CAST(T.DESCRIPTION as VARCHAR2(18 CHAR)) as int)\n\t\t\tAND T.DESCRIPTION IS NOT NULL\n\t\t)\n\t\t\t\t\t"), 3 => array("MySQL" => "\n\tUPDATE b_ticket_timetable\n\tSET DESCRIPTION = NULL\n\t\t\t\t\t", "MSSQL" => "\n\tUPDATE b_ticket_timetable\n\tSET DESCRIPTION = NULL\n\t\t\t\t\t", "Oracle" => "\n\tUPDATE b_ticket_timetable\n\tSET DESCRIPTION = NULL\n\t\t\t\t\t")), "b_ticket" => array(0 => array("MySQL" => "\n\tUPDATE {$strSql0}\n\tSET\n\tb_ticket.D_1_USER_M_AFTER_SUP_M = M.DATE_CREATE,\n\tb_ticket.ID_1_USER_M_AFTER_SUP_M = M.ID,\n\tb_ticket.LAST_MESSAGE_BY_SUPPORT_TEAM = 'N'\n\t\t\t\t\t", "MSSQL" => "\n\tUPDATE b_ticket\n\tSET\n\tb_ticket.D_1_USER_M_AFTER_SUP_M = M.DATE_CREATE,\n\tb_ticket.ID_1_USER_M_AFTER_SUP_M = M.ID,\n\tb_ticket.LAST_MESSAGE_BY_SUPPORT_TEAM = 'N'\n\tFROM {$strSql0}\n\t\t\t\t\t", "Oracle" => "\n\tUPDATE b_ticket T0\n\tSET (D_1_USER_M_AFTER_SUP_M, ID_1_USER_M_AFTER_SUP_M, LAST_MESSAGE_BY_SUPPORT_TEAM) = (\n\t\tSELECT\n\t\t\tM.DATE_CREATE,\n\t\t\tM.ID,\n\t\t\t'N'\n\t\tFROM " . str_replace(" AS ", " ", $strSql0) . "\n\t\tWHERE b_ticket.ID = T0.ID\n\t)\n\t\t\t\t\t"))); foreach ($updateQueries as $checkTables => $arT) { $arCT = explode(",", $checkTables); $skipU = false; foreach ($arCT as $n => $t) { if (!$DB->TableExists($t)) { $skipU = true; } } if (!$skipU) { foreach ($arT as $n1 => $arQ) { $arQuery = $DB->ParseSQLBatch(str_replace("\r", "", $arQ[$dbType])); foreach ($arQuery as $i => $sql) { $res = $DB->Query($sql, true); if (!$res) { return false; } } } } } return true; }
<?php require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_before.php"; require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/support/include.php"; $bDemo = CTicket::IsDemo() ? "Y" : "N"; $bAdmin = CTicket::IsAdmin() ? "Y" : "N"; if ($bAdmin != "Y" && $bDemo != "Y") { $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); } IncludeModuleLangFile(__FILE__); $sTableID = "tbl_timetable"; $oSort = new CAdminSorting($sTableID, "ID", "asc"); $lAdmin = new CAdminList($sTableID, $oSort); $arFilterFields = array("filter_name"); $USER_FIELD_MANAGER->AdminListAddFilterFields("TIMETABLE", $arFilterFields); $lAdmin->InitFilter($arFilterFields); $arFilter = array(); if (strlen($filter_name) > 0) { $arFilter["~NAME"] = "%" . $filter_name . "%"; } $USER_FIELD_MANAGER->AdminListAddFilter("TIMETABLE", $arFilter); if ($arID = $lAdmin->GroupAction()) { if ($_REQUEST['action_target'] == 'selected') { $arID = array(); $dbResultList = CSupportTimetable::GetList(array($by => $order), $arFilter); while ($arResult = $dbResultList->Fetch()) { $arID[] = $arResult['ID']; } } foreach ($arID as $ID) { if (strlen($ID) <= 0) {
continue; } if ($gadget["PERFMON_ONLY"] == true) { $aGlobalOpt = CUserOptions::GetOption("global", "settings", array()); $bShowPerfmon = (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/perfmon/install/index.php") && $aGlobalOpt['messages']['perfmon'] <> 'N'); if (!$bShowPerfmon) continue; } if ( $gadget["SUPPORT_ONLY"] == true && ( !CModule::IncludeModule("support") || !$USER->IsAuthorized() || (!CTicket::IsSupportClient() && !CTicket::IsAdmin() && !CTicket::IsSupportTeam()) ) ) continue; if ($gadget["WIKI_ONLY"] == true && !IsModuleInstalled("wiki")) continue; if ($gadget["CRM_ONLY"] == true && !IsModuleInstalled("crm")) continue; if ($gadget["VOTE_ONLY"] == true && (!IsModuleInstalled("vote") || !CBXFeatures::IsFeatureEnabled("Vote"))) continue; if ($gadget["TASKS_ONLY"] == true && !CBXFeatures::IsFeatureEnabled("Tasks")) continue; if ($gadget["MESSENGER_ONLY"] == true && !CBXFeatures::IsFeatureEnabled("WebMessenger")) continue; if ($gadget["ABSENCE_ONLY"] == true && !CBXFeatures::IsFeatureEnabled("StaffAbsence")) continue;
function GetResponsibleList($userID, $CMGM = null, $CMUGM = null, $SG = null) { $condition = ""; if ($CMGM != null) { $condition .= "\n\t\t\t\t\t\t\tAND TUG2.CAN_MAIL_GROUP_MESSAGES = '" . ($CMGM == "Y" ? "Y" : "N") . "'"; } if ($CMUGM != null) { $condition .= "\n\t\t\t\t\t\t\tAND TUG2.CAN_MAIL_UPDATE_GROUP_MESSAGES = '" . ($CMUGM == "Y" ? "Y" : "N") . "'"; } $condition2 = ""; if ($SG != null) { $condition2 .= "\n\t\t\t\t\t\t\tAND TG.IS_TEAM_GROUP = '" . ($SG == "Y" ? "Y" : "N") . "'"; } $err_mess = CTicket::err_mess() . "<br>Function: GetSupportTeamMailList<br>Line: "; global $DB; $strSql = "\n\t\t\tSELECT\n\t\t\t\tU.ID as ID,\n\t\t\t\tU.LOGIN as LOGIN,\n\t\t\t\t" . $DB->Concat(CTicket::isnull("U.LAST_NAME", "''"), CTicket::isnull("U.NAME", "''"), 'U.LOGIN') . " as NAME,\n\t\t\t\tU.EMAIL as EMAIL\n\t\t\tFROM\n\t\t\t\t(\n\t\t\t\tSELECT\n\t\t\t\t\tTUG2.USER_ID AS USER_ID\t\t\t\t\n\t\t\t\tFROM\n\t\t\t\t\tb_ticket_ugroups TG\n\t\t\t\t\tINNER JOIN b_ticket_user_ugroup TUG\n\t\t\t\t\t\tON TG.ID = TUG.GROUP_ID" . $condition2 . "\n\t\t\t\t\tINNER JOIN b_ticket_user_ugroup TUG2\n\t\t\t\t\t\tON TUG.USER_ID = '" . intval($userID) . "'\n\t\t\t\t\t\t\tAND TUG.GROUP_ID = TUG2.GROUP_ID" . $condition . "\n\t\t\t\tGROUP BY\n\t\t\t\t\tTUG2.USER_ID\n\t\t\t\t) TU\n\t\t\t\tINNER JOIN b_user U\n\t\t\t\t\tON TU.USER_ID = U.ID\n\t\t\t\tORDER BY\n\t\t\t\t\tU.ID\n\t\n\t\t\t"; $res = $DB->Query($strSql, false, $err_mess . __LINE__); return $res; }
public static function GetResponsibleList($userID, $CMGM = null, $CMUGM = null, $SG = null) { $condition = ""; if($CMGM != null) $condition .= " AND TUG2.CAN_MAIL_GROUP_MESSAGES = '" . ($CMGM == "Y" ? "Y" : "N") . "'"; if($CMUGM != null) $condition .= " AND TUG2.CAN_MAIL_UPDATE_GROUP_MESSAGES = '" . ($CMUGM == "Y" ? "Y" : "N") . "'"; $condition2 = ""; if($SG != null) $condition2 .= " AND TG.IS_TEAM_GROUP = '" . ($SG == "Y" ? "Y" : "N") . "'"; $err_mess = (CTicket::err_mess())."<br>Function: GetSupportTeamMailList<br>Line: "; global $DB; $strSql = " SELECT U.ID as ID, U.LOGIN as LOGIN, ". $DB->Concat(CTicket::isnull("U.LAST_NAME", "''"), CTicket::isnull("U.NAME", "''"), 'U.LOGIN')." as NAME, U.EMAIL as EMAIL FROM ( SELECT TUG2.USER_ID AS USER_ID FROM b_ticket_ugroups TG INNER JOIN b_ticket_user_ugroup TUG ON TG.ID = TUG.GROUP_ID" . $condition2 . " INNER JOIN b_ticket_user_ugroup TUG2 ON TUG.USER_ID = '" . intval($userID) . "' AND TUG.GROUP_ID = TUG2.GROUP_ID" . $condition . " GROUP BY TUG2.USER_ID ) TU INNER JOIN b_user U ON TU.USER_ID = U.ID ORDER BY U.ID "; $res = $DB->Query($strSql, false, $err_mess.__LINE__); return $res; }
function EMailMessageAdd($arMessageFields, $ACTION_VARS) { $arActionVars = explode("&", $ACTION_VARS); $countAr = count($arActionVars); for ($i = 0; $i < $countAr; $i++) { $v = $arActionVars[$i]; if ($pos = strpos($v, "=")) { ${substr($v, 0, $pos)} = urldecode(substr($v, $pos + 1)); } } if (!CModule::IncludeModule("support")) { return false; } if (strlen($W_SUPPORT_SITE_ID) > 0) { $rs = CSite::GetByID($W_SUPPORT_SITE_ID); if ($ar = $rs->Fetch()) { $SITE_ID = $ar["LID"]; } } if (strlen($SITE_ID) <= 0) { $SITE_ID = $arMessageFields["LID"]; } $sourceMail = COption::GetOptionString("support", "SOURCE_MAIL"); $dbr = CTicketDictionary::GetBySID($sourceMail, "SR", $SITE_ID); if (!($ar = $dbr->Fetch())) { return false; } $TICKET_SOURCE_ID = $ar["ID"]; $ID = $arMessageFields["ID"]; $message_email = strlen($arMessageFields["FIELD_REPLY_TO"]) > 0 ? $arMessageFields["FIELD_REPLY_TO"] : $arMessageFields["FIELD_FROM"]; $message_email_addr = strtolower(CMailUtil::ExtractMailAddress($message_email)); $TID = 0; $arSubjects = explode("\n", trim($W_SUPPORT_SUBJECT)); $countAr = count($arSubjects); for ($i = 0; $i < $countAr; $i++) { $arSubjects[$i] = Trim($arSubjects[$i]); if (strlen($arSubjects[$i]) > 0) { if (preg_match("/" . $arSubjects[$i] . "/" . BX_UTF_PCRE_MODIFIER, $arMessageFields["SUBJECT"], $regs)) { $TID = IntVal($regs[1]); break; } } } if ($TID > 0) { $db_ticket = CTicket::GetByID($TID, $SITE_ID, "N", "N", "N"); if ($ar_ticket = $db_ticket->Fetch()) { //check user email address limits if ($W_SUPPORT_SEC == "domain" || $W_SUPPORT_SEC == "email") { $bEMailOK = false; if ($TICKET_SOURCE_ID == $ar_ticket["SOURCE_ID"]) { $ticket_email = strtolower(CMailUtil::ExtractMailAddress($ar_ticket["OWNER_SID"])); if ($W_SUPPORT_SEC == "domain") { $ticket_email = substr($ticket_email, strpos($ticket_email, "@")); } if (strpos($message_email_addr, $ticket_email) !== false) { $bEMailOK = true; } } if (!$bEMailOK && $ar_ticket["OWNER_USER_ID"] > 0) { $db_user = CUser::GetByID($ar_ticket["OWNER_USER_ID"]); if ($arUser = $db_user->Fetch()) { $ticket_email = strtolower(CMailUtil::ExtractMailAddress($arUser["EMAIL"])); if ($check_type == "domain") { $ticket_email = substr($ticket_email, strpos($ticket_email, "@")); } if (strpos($message_email_addr, $ticket_email) !== false) { $bEMailOK = true; } } } if (!$bEMailOK) { $TID = 0; } } } else { $TID = 0; } } //when message subject is empty - generate it from message body $title = trim($arMessageFields["SUBJECT"]); if (strlen($title) <= 0) { $title = trim($arMessageFields["BODY"]); $title = preg_replace("/[\n\r\t ]+/s" . BX_UTF_PCRE_MODIFIER, " ", $title); $title = substr($title, 0, 50); } $arFieldsTicket = array("CLOSE" => "N", "TITLE" => $title, "MESSAGE" => $arMessageFields["BODY"], "MESSAGE_AUTHOR_SID" => $message_email, "MESSAGE_SOURCE_SID" => "email", "MODIFIED_MODULE_NAME" => "mail", "EXTERNAL_ID" => $ID, "EXTERNAL_FIELD_1" => $arMessageFields["HEADER"]); if ($W_SUPPORT_USER_FIND == "Y") { $o = "LAST_LOGIN"; $b = "DESC"; $res = CUser::GetList($o, $b, array("ACTIVE" => "Y", "=EMAIL" => $message_email_addr)); if (($arr = $res->Fetch()) && strtolower(CMailUtil::ExtractMailAddress($arr["EMAIL"])) == $message_email_addr) { $AUTHOR_USER_ID = $arr["ID"]; } } // process attach files $arFILES = array(); $rsAttach = CMailAttachment::GetList(array(), array("MESSAGE_ID" => $ID)); while ($arAttach = $rsAttach->Fetch()) { // save from db to hdd $filename = CTempFile::GetFileName(md5(uniqid("")) . ".tmp"); CheckDirPath($filename); if (file_put_contents($filename, $arAttach["FILE_DATA"]) !== false) { $arFILES[] = array("name" => $arAttach["FILE_NAME"], "type" => $arAttach["CONTENT_TYPE"], "size" => filesize($filename), "tmp_name" => $filename, "MODULE_ID" => "support"); } } if (count($arFILES) > 0) { $arFieldsTicket["FILES"] = $arFILES; } $arFieldsTicket["CURRENT_USER_ID"] = null; if (intval($AUTHOR_USER_ID) > 0) { $resU = CUser::GetByID(intval($AUTHOR_USER_ID)); if ($arU = $resU->Fetch()) { $arFieldsTicket["CURRENT_USER_ID"] = $arU["ID"]; } } if ($TID > 0) { $arFieldsTicket["MESSAGE_AUTHOR_USER_ID"] = $AUTHOR_USER_ID; if ($W_SUPPORT_ADD_MESSAGE_AS_HIDDEN == "Y") { $arFieldsTicket["HIDDEN"] = "Y"; } if ($arMessageFields["SPAM"] == "Y") { $arFieldsTicket["IS_SPAM"] = "Y"; } $TID = CTicket::Set($arFieldsTicket, $MESSAGE_ID, $TID, "N"); } else { $arFieldsTicket["SITE_ID"] = $SITE_ID; $arFieldsTicket["OWNER_USER_ID"] = $AUTHOR_USER_ID; $arFieldsTicket["OWNER_SID"] = $message_email; $arFieldsTicket["CREATED_MODULE_NAME"] = "mail"; $arFieldsTicket["SOURCE_SID"] = "email"; if ($arMessageFields["SPAM"] == "Y") { $arFieldsTicket["IS_SPAM"] = "Y"; } if ($W_SUPPORT_CATEGORY > 0) { $arFieldsTicket["CATEGORY_ID"] = $W_SUPPORT_CATEGORY; } if ($W_SUPPORT_CRITICALITY > 0) { $arFieldsTicket["CRITICALITY_ID"] = $W_SUPPORT_CRITICALITY; } if (strlen(trim($arFieldsTicket["TITLE"])) <= 0) { $arFieldsTicket["TITLE"] = " "; } if (strlen(trim($arFieldsTicket["MESSAGE"])) <= 0) { $arFieldsTicket["MESSAGE"] = " "; } $TID = CTicket::Set($arFieldsTicket, $MESSAGE_ID, "", "N"); } }
</tr> </table> </div> </td> </tr> <tr> <td width="100%" colspan=2 align="center"> <div id="tr_responsible"> <table width="100%" cellspacing=0 cellpadding=0> <tr> <td align="right" width="40%"><?php echo GetMessage("SUP_RESPONSIBLE"); ?> </td> <td width="60%" align="left" style="padding-left: 10px;"><?php echo SelectBox("RESPONSIBLE_USER_ID", CTicket::GetSupportTeamList(), GetMessage("SUP_NO"), $str_RESPONSIBLE_USER_ID); ?> </td> </tr> </table> </div> </td> </tr> <?php if ($bTab2) { $tabControl->BeginNextTab(); ?> <tr> <td width="100%" colspan=2 align="center"> <div id="events"> <table width="100%" cellspacing="8" cellpadding="0">
*/ require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_before.php"; require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/support/include.php"; $bDemo = CTicket::IsDemo() ? "Y" : "N"; $bAdmin = CTicket::IsAdmin() ? "Y" : "N"; $bSupportTeam = CTicket::IsSupportTeam() ? "Y" : "N"; if ($bAdmin != "Y" && $bSupportTeam != "Y" && $bDemo != "Y") { $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); } include $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/support/colors.php"; require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/img.php"; $diameter = intval($diameter) > 0 ? intval($diameter) : 180; InitBVar($find_responsible_exact_match); $arFilter = array("SITE" => $find_site, "DATE_CREATE_1" => $find_date1, "DATE_CREATE_2" => $find_date2, "RESPONSIBLE_ID" => $find_responsible_id, "RESPONSIBLE" => $find_responsible, "RESPONSIBLE_EXACT_MATCH" => $find_responsible_exact_match, "SLA" => $find_sla_id, "CATEGORY" => $find_category_id, "CRITICALITY" => $find_criticality_id, "STATUS" => $find_status_id, "MARK" => $find_mark_id, "SOURCE" => $find_source_id); $CHECK_RIGHTS = $bDemo == "Y" ? "N" : "Y"; $rsTickets = CTicket::GetList($by, $order, $arFilter, $is_filtered, $CHECK_RIGHTS, "N", "N"); $arrMess = array(); $arrMess["2_m"] = 0; $arrMess["3_m"] = 0; $arrMess["4_m"] = 0; $arrMess["5_m"] = 0; $arrMess["6_m"] = 0; $arrMess["7_m"] = 0; $arrMess["8_m"] = 0; $arrMess["9_m"] = 0; $arrMess["10_m"] = 0; while ($arTicket = $rsTickets->Fetch()) { if (strlen($arTicket["DATE_CLOSE"]) > 0) { $MC = $arTicket["MESSAGES"]; if ($MC <= 2) { $arrMess["2_m"] += 1;
echo ShowFilterLogicHelp(); ?> </td> </tr> <?}?> <?if ($bADS) {?> <tr> <td valign="top"><?php echo GetMessage("SUP_F_RESPONSIBLE"); ?> :</td> <td><? $ref = $ref_id = array(); $ref[] = GetMessage("SUP_NO"); $ref_id[] = "0"; $z = CTicket::GetSupportTeamList(); while ($zr = $z->Fetch()) { $ref[] = $zr["REFERENCE"]; $ref_id[] = $zr["REFERENCE_ID"]; } $arr = array("REFERENCE" => $ref, "REFERENCE_ID" => $ref_id); echo SelectBoxFromArray("find_responsible_id", $arr, htmlspecialcharsbx($find_responsible_id), GetMessage("SUP_ALL")); ?><br><input type="text" name="find_responsible" size="47" value="<?php echo htmlspecialcharsbx($find_responsible); ?> "><?php echo InputType("checkbox", "find_responsible_exact_match", "Y", $find_responsible_exact_match, false, "", "title='" . GetMessage("SUP_EXACT_MATCH") . "'"); ?> <?php echo ShowFilterLogicHelp();
<?php /* ############################################## # Bitrix: SiteManager # # Copyright (c) 2002 - 2011 Bitrix # # http://www.bitrixsoft.com # # mailto:admin@bitrixsoft.com # ############################################## */ require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php"; if (CModule::IncludeModule("support") && strlen($hash) > 0 && preg_match('/^[a-z0-9]{32}$/i', $hash)) { $rsFiles = CTicket::GetFileList($v1 = "s_id", $v2 = "asc", array("HASH" => $hash), 'Y'); if ($rsFiles && ($arFile = $rsFiles->Fetch())) { set_time_limit(0); $options = array(); if ($_REQUEST["action"] == "download") { $options["force_download"] = true; } CFile::ViewByUser($arFile, $options); } } require $_SERVER["DOCUMENT_ROOT"] . BX_ROOT . "/modules/main/include/prolog_after.php"; ShowError(GetMessage("SUP_ERROR_ATTACH_NOT_FOUND")); require $_SERVER["DOCUMENT_ROOT"] . BX_ROOT . "/modules/main/include/epilog.php";
//Get Tickets CPageOption::SetOptionString("main", "nav_page_in_session", "N"); $UFA = array(); $UFAT = array(); global $USER_FIELD_MANAGER; $arrUF = $USER_FIELD_MANAGER->GetUserFields("SUPPORT", 0, LANGUAGE_ID); if (isset($arParams["SET_SHOW_USER_FIELD"])) { foreach ($arParams["SET_SHOW_USER_FIELD"] as $k => $v) { if (strlen(trim($v)) > 0) { $UFAT[$v] = array("NAME_C" => $arrUF[$v]["LIST_COLUMN_LABEL"], "NAME_F" => $arrUF[$v]["EDIT_FORM_LABEL"], "ALL" => $arrUF[$v]); $UFA[] = $v; } } } $arParams["SET_SHOW_USER_FIELD_T"] = $UFAT; $rsTickets = CTicket::GetList($GLOBALS["by"], $GLOBALS["order"], $arFilter, $is_filtered, $check_rights = "Y", $get_user_name = "N", $get_dictionary_name = "N", false, array("SELECT" => $UFA)); $rsTickets->NavStart($arParams["TICKETS_PER_PAGE"]); //Result array $arResult = array("TICKETS" => array(), "TICKETS_COUNT" => $rsTickets->SelectedRowsCount(), "NAV_STRING" => $rsTickets->GetPageNavString(GetMessage("SUP_PAGES")), "CURRENT_PAGE" => htmlspecialcharsbx($APPLICATION->GetCurPage()), "NEW_TICKET_PAGE" => htmlspecialcharsbx(CComponentEngine::MakePathFromTemplate($arParams["TICKET_EDIT_TEMPLATE"], array("ID" => "0")))); //Get Dictionary Array $arTicketDictionary = CTicketDictionary::GetDropDownArray(); //Dictionary table $arDictType = array("C" => "CATEGORY", "K" => "CRITICALITY", "S" => "STATUS", "M" => "MARK", "SR" => "SOURCE"); while ($arTicket = $rsTickets->GetNext()) { $arUsersName = _GetUserInfo($arTicket["RESPONSIBLE_USER_ID"], "RESPONSIBLE") + _GetUserInfo($arTicket["OWNER_USER_ID"], "OWNER") + _GetUserInfo($arTicket["MODIFIED_USER_ID"], "MODIFIED"); $arDict = array(); foreach ($arDictType as $TYPE => $CODE) { $arDict += _GetDictionaryInfo($arTicket[$CODE . "_ID"], $TYPE, $CODE, $arTicketDictionary); } $url = CComponentEngine::MakePathFromTemplate($arParams["TICKET_EDIT_TEMPLATE"], array("ID" => $arTicket["ID"])); $arResult["TICKETS"][] = $arTicket + $arDict + $arUsersName + array("TICKET_EDIT_URL" => $url);
<?php require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_before.php"; require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/support/include.php"; require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/support/prolog.php"; IncludeModuleLangFile(__FILE__); if (!check_bitrix_sessid("b_sessid")) { die; } if (isset($_REQUEST["action"]) && $_REQUEST["action"] === 'reindex' && isset($_REQUEST["data"]) && is_array($_REQUEST["data"])) { $interval = intval($_REQUEST["data"]["interval"]); $firstID = $_REQUEST["data"]["firstID"]; $lastID = CSupportSearch::reindexAllTickets($firstID, $interval ?: 10); // build progress bar $maxID = CTicket::getMaxId(); $progressBar = new CAdminMessage(array("DETAILS" => str_replace(array('#LAST_ID#', '#MAX_ID#'), array($lastID, $maxID), GetMessage('SUP_SEARCH_NDX_PROGRESS_BAR')), "HTML" => true, "TYPE" => "PROGRESS", "PROGRESS_TOTAL" => $maxID, "PROGRESS_VALUE" => $lastID)); $progressBarHtml = $progressBar->Show(); echo CUtil::PhpToJSObject(array('LAST_ID' => $lastID, 'BAR' => $progressBarHtml)); } elseif ($_REQUEST['MY_AJAX'] == 'restartAgentsAJAX') { CTicketReminder::StartAgent(); echo json_encode(array("ALL_OK" => "OK")); } else { echo '{};'; }
/* ############################################## # Bitrix: SiteManager # # Copyright (c) 2004 Bitrix # # http://www.bitrix.ru # # mailto:admin@bitrix.ru # ############################################## */ require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php"); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/support/prolog.php"); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/support/include.php"); IncludeModuleLangFile(__FILE__); $bDemo = (CTicket::IsDemo()) ? "Y" : "N"; $bAdmin = (CTicket::IsAdmin()) ? "Y" : "N"; if($bAdmin!="Y" && $bDemo!="Y") $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); //CTicket::GetRoles($isDemo, $isSupportClient, $isSupportTeam, $isAdmin, $isAccess, $USER_ID, $CHECK_RIGHTS); //if(!$isAdmin && !$isDemo) $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); $EDIT_URL = "/bitrix/admin/ticket_sla_edit.php"; $LIST_URL = $APPLICATION->GetCurPage(); $arErrors = array(); /*************************************************************************** Функции ****************************************************************************/