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__);
}