function Set_getResponsibleUser($v, $f, &$arFields) { global $DB; $err_mess = CAllTicket::err_mess() . "<br>Function: Set_getResponsibleUser<br>Line: "; // если обращение создается сотрудником техподдержки, администратором или демо пользователем $f->RESPONSIBLE_USER_ID = null; if ($v->bSupportTeam || $v->bAdmin || $v->Demo) { $f->FromArray($arFields, "RESPONSIBLE_USER_ID", array(CSupportTableFields::MORE0)); } if ($f->RESPONSIBLE_USER_ID == null) { unset($arFields["RESPONSIBLE_USER_ID"]); } /* получим идентификаторы события и ответственного в зависимости от 1) Категории 2) Критичности 3) Источника */ $strSql = "\n\t\t\tSELECT ID, C_TYPE, RESPONSIBLE_USER_ID, EVENT1, EVENT2, EVENT3\n\t\t\tFROM b_ticket_dictionary\n\t\t\tWHERE\n\t\t\t\t(ID=" . $f->CATEGORY_ID . " AND C_TYPE='C') OR\n\t\t\t\t(ID=" . $f->CRITICALITY_ID . " AND C_TYPE='K') OR\n\t\t\t\t(ID=" . $f->SOURCE_ID . " AND C_TYPE='SR')\n\t\t\tORDER BY\n\t\t\t\tC_TYPE\n\t\t"; $z = $DB->Query($strSql, false, $err_mess . __LINE__); $v->category_set = false; while ($zr = $z->Fetch()) { // если // 1) ответственный определен в справочнике // 2) до сих пор он не был определен // 3) не был задан явно пользователем имеющим на это права if ($zr["C_TYPE"] == "C") { $v->T_EVENT1 = trim($zr["EVENT1"]); $v->T_EVENT2 = trim($zr["EVENT2"]); $v->T_EVENT3 = trim($zr["EVENT3"]); $v->category_set = true; } if ($f->RESPONSIBLE_USER_ID == null && intval($zr["RESPONSIBLE_USER_ID"]) > 0) { $RU_ID = intval($zr["RESPONSIBLE_USER_ID"]); if (CTicket::IsSupportTeam($RU_ID) || CTicket::IsAdmin($RU_ID)) { $f->RESPONSIBLE_USER_ID = $RU_ID; } break; } } // если ответственный явно не определен то if ($f->RESPONSIBLE_USER_ID == null) { // ответственный из настроек SLA $rsSLA = CTicketSLA::GetByID($f->SLA_ID); if ($rsSLA !== false && ($arSLA = $rsSLA->Fetch())) { if (intval($arSLA["RESPONSIBLE_USER_ID"]) > 0) { $f->RESPONSIBLE_USER_ID = $arSLA["RESPONSIBLE_USER_ID"]; } } } // ответственный из настроек модуля if ($f->RESPONSIBLE_USER_ID == null) { // берем из настроек модуля ответственного по умолчанию $RU_ID = intval(COption::GetOptionString("support", "DEFAULT_RESPONSIBLE_ID")); $f->RESPONSIBLE_USER_ID = $RU_ID; } }
function Support_GetSLAInfo($ID, &$name, &$description, $safe_for_html=true) { static $arrSLA; $name = ""; $description = ""; if (intval($ID)>0) { if (is_array($arrSLA) && in_array($ID, array_keys($arrSLA))) { $name = $arrSLA[$ID]["NAME"]; $description = $arrSLA[$ID]["DESCRIPTION"]; } else { $rs = CTicketSLA::GetByID($ID); $ar = $rs->Fetch(); $name = $ar["NAME"]; $description = $ar["DESCRIPTION"]; $arrSLA[$ar["ID"]] = array("NAME" => $ar["NAME"], "DESCRIPTION" => $ar["DESCRIPTION"]); } if ($safe_for_html) { $name = htmlspecialcharsbx($name); $description = htmlspecialcharsbx($description); } } }
} $arParams["SET_SHOW_USER_FIELD_T"] = $UFAT; $rsTicket = CTicket::GetByID($arParams["ID"], SITE_ID, $check_rights = "Y", $get_user_name = "N", $get_extra_names = "N", array("SELECT" => $UFA)); if ($arTicket = $rsTicket->GetNext()) { foreach ($UFA as $k => $v) { $arParams[$v] = $arTicket[$v]; } //+Ticket and user names $arResult["TICKET"] = $arTicket + _GetUserInfo($arTicket["RESPONSIBLE_USER_ID"], "RESPONSIBLE") + _GetUserInfo($arTicket["OWNER_USER_ID"], "OWNER") + _GetUserInfo($arTicket["CREATED_USER_ID"], "CREATED") + _GetUserInfo($arTicket["MODIFIED_USER_ID"], "MODIFIED_BY"); //Dictionary table $arDictionary = array("C" => array("CATEGORY", intval($arTicket["CATEGORY_ID"])), "K" => array("CRITICALITY", intval($arTicket["CRITICALITY_ID"])), "S" => array("STATUS", intval($arTicket["STATUS_ID"])), "M" => array("MARK", intval($arTicket["MARK_ID"])), "SR" => array("SOURCE", intval($arTicket["SOURCE_ID"]))); //+Ticket dictionary $arResult["TICKET"] += _GetDictionaryInfoEx($arDictionary); //+Sla $arResult["TICKET"]["SLA_NAME"] = $arResult["TICKET"]["SLA_DESCRIPTION"] = ""; $rsSla = CTicketSLA::GetByID($arTicket["SLA_ID"]); if ($rsSla && ($arSla = $rsSla->Fetch())) { $arResult["TICKET"]["SLA_NAME"] = htmlspecialcharsbx($arSla["NAME"]); $arResult["TICKET"]["SLA_DESCRIPTION"] = htmlspecialcharsbx($arSla["DESCRIPTION"]); } //Messages files $arMessagesFiles = array(); $rsFiles = CTicket::GetFileList($v1 = "s_id", $v2 = "asc", array("TICKET_ID" => $arParams["ID"])); while ($arFile = $rsFiles->Fetch()) { $name = strlen($arFile["ORIGINAL_NAME"]) > 0 ? $arFile["ORIGINAL_NAME"] : $arFile["FILE_NAME"]; if (strlen($arFile["EXTENSION_SUFFIX"]) > 0) { $suffix_length = strlen($arFile["EXTENSION_SUFFIX"]); $name = substr($name, 0, strlen($name) - $suffix_length); } $arMessagesFiles[$arFile["MESSAGE_ID"]][] = array("HASH" => $arFile["HASH"], "NAME" => htmlspecialcharsbx($name), "FILE_SIZE" => $arFile["FILE_SIZE"]); }
$arrSites[$ar["ID"]] = $ar; } $arCategory = $arMark = $arCriticality = array(); $rs = CTicketDictionary::GetList($v3 = "s_dropdown", $v4, array("TYPE" => "C"), $v5); while ($ar = $rs->Fetch()) { $arCategory[] = $ar; } $rs = CTicketDictionary::GetList($v3 = "s_dropdown", $v4, array("TYPE" => "K"), $v5); while ($ar = $rs->Fetch()) { $arCriticality[] = $ar; } $rs = CTicketDictionary::GetList($v3 = "s_dropdown", $v4, array("TYPE" => "M"), $v5); while ($ar = $rs->Fetch()) { $arMark[] = $ar; } $rs = CTicketSLA::GetByID($ID); if (!$rs || !$rs->ExtractFields()) { $ID = 0; $str_PRIORITY = 100; for ($i = 0; $i <= 6; $i++) { $arSHEDULE[$i]["OPEN_TIME"] = "24H"; } } else { $arGROUPS = CTicketSLA::GetGroupArray($ID); $arSHEDULE = CTicketSLA::GetSheduleArray($ID); $arSITES = CTicketSLA::GetSiteArray($ID); $arCATEGORIES = CTicketSLA::GetCategoryArray($ID); $arCRITICALITIES = CTicketSLA::GetCriticalityArray($ID); $arMARKS = CTicketSLA::GetMarkArray($ID); } if ($message) {