- Модуль: support
- Путь к файлу: ~/bitrix/modules/support/classes/general/reminder.php
- Класс: CAllTicketReminder
- Вызов: CAllTicketReminder::RecalculateLastMessageDeadline
static function RecalculateLastMessageDeadline($RSD = true)
{
global $DB;
$err_mess = (self::err_mess())."
Function: RecalculateLastMessage
Line: ";
$DB->StartUsingMasterOnly();
$strSql = "SELECT count(*) C FROM b_ticket";
$rs = $DB->Query($strSql, false, $err_mess.__LINE__);
$resC = $rs->Fetch();
if(!is_array($resC))
{
return true;
}
if(!isset($resC["C"]) || $resC["C"] == 0)
{
return true;
}
$strUsers = implode(",", CTicket::GetSupportTeamAndAdminUsers());
$strSql0 = "
b_ticket
INNER JOIN (
SELECT
T.ID TID,
M.DATE_CREATE DATE_CREATE,
M.ID ID,
" . CTicket::isnull("Q.LMBS", "'Y'") . " LMBS
FROM
b_ticket as T
LEFT JOIN (
SELECT
TM.TICKET_ID ID,
MIN(TM.ID) M_ID,
'N' LMBS
FROM
b_ticket_message TM
INNER JOIN (
SELECT
T.ID ID,
MAX(" . CTicket::isnull("TM.ID", "0") . ") M_ID
FROM
b_ticket T
LEFT JOIN b_ticket_message TM
ON T.ID = TM.TICKET_ID
AND (NOT(TM.IS_LOG='Y'))
AND (NOT(TM.IS_HIDDEN='Y'))
AND (NOT(TM.NOT_CHANGE_STATUS='Y'))
AND TM.OWNER_USER_ID IN ($strUsers)
WHERE
T.DATE_CLOSE IS NULL
GROUP BY
T.ID
) AS Q
ON TM.TICKET_ID = Q.ID
AND TM.ID > Q.M_ID
AND (NOT(TM.IS_LOG='Y'))
AND (NOT(TM.IS_HIDDEN='Y'))
AND (NOT(TM.NOT_CHANGE_STATUS='Y'))
GROUP BY
TM.TICKET_ID
) AS Q
ON T.ID = Q.ID
LEFT JOIN b_ticket_message AS M
ON Q.M_ID = M.ID
WHERE
T.DATE_CLOSE IS NULL
) AS M
ON b_ticket.ID = M.TID
";
$sql = "
UPDATE $strSql0
SET
b_ticket.D_1_USER_M_AFTER_SUP_M = M.DATE_CREATE,
b_ticket.ID_1_USER_M_AFTER_SUP_M = M.ID,
b_ticket.LAST_MESSAGE_BY_SUPPORT_TEAM = M.LMBS
";
$res = $DB->Query($sql, true);
$res = $DB->Query("UPDATE b_ticket SET SUPPORT_DEADLINE = null, SUPPORT_DEADLINE_NOTIFY = null WHERE LAST_MESSAGE_BY_SUPPORT_TEAM = 'Y'", true);
if($RSD)
{
self::RecalculateSupportDeadline();
}
$DB->StopUsingMasterOnly();
}