• Модуль: support
  • Путь к файлу: ~/bitrix/modules/support/classes/general/reminder.php
  • Класс: CAllTicketReminder
  • Вызов: CAllTicketReminder::SupportDeadlineNotify
static function SupportDeadlineNotify($arrTicket0)
{
	//SUPPORT_DEADLINE_NOTIFY
	//SUPPORT_DEADLINE			= EXPIRATION_DATE
	//SUPPORT_DEADLINE_STMP		= EXPIRATION_DATE_STMP

	$err_mess = (CAllTicketReminder::err_mess())."
Function: SupportDeadlineNotify
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 = $arTicket["SOURCE_NAME"] == '' ? "" : "[" . $arTicket["SOURCE_NAME"] . "] "; if(intval($arTicket["OWNER_USER_ID"]) > 0 || trim($arTicket["OWNER_LOGIN"]) <> '') { $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($email <> '') { 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($email <> '' && !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($support_email == '') $support_email = $support_admin_email; if($support_email == '') $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" || !mb_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__); }