- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/classes/general/tasknotifications.php
- Класс: CTaskNotifications
- Вызов: CTaskNotifications::sendMessageEx
static function sendMessageEx(
$taskId,
$fromUser,
array $toUsers,
array $messages = [],
array $parameters = []
): bool
{
if (!isset($parameters['IS_ON_BACKGROUND_JOB']) || $parameters['IS_ON_BACKGROUND_JOB'] === 'Y')
{
BitrixTasksInternalsNotificationEventEventHandler::addEvent(
'message',
[
'TASK_ID' => $taskId,
'FROM_USER' => $fromUser,
'TO_USERS' => $toUsers,
'MESSAGES' => $messages,
'PARAMETERS' => $parameters,
]
);
return true;
}
if (!IsModuleInstalled('im') || !CModule::IncludeModule('im'))
{
return false;
}
if (!$fromUser || (string)$messages['INSTANT'] === '')
{
return false;
}
if (
!isset($parameters['EXCLUDE_USERS_WITH_MUTE'])
|| (isset($parameters['EXCLUDE_USERS_WITH_MUTE']) && $parameters['EXCLUDE_USERS_WITH_MUTE'] === 'Y')
)
{
$toUsers = static::excludeUsersWithMute($toUsers, $taskId);
}
unset($parameters['EXCLUDE_USERS_WITH_MUTE']);
if (empty($toUsers))
{
return false;
}
$entityCode = 'TASK';
if ((string)($parameters['ENTITY_CODE'] ?? null) !== '')
{
$entityCode = $parameters['ENTITY_CODE'];
unset($parameters['ENTITY_CODE']);
}
// $allowNotCommentNotifications = false;
// if (
// isset($parameters['ENTITY_OPERATION']) &&
// $parameters['ENTITY_OPERATION'] == 'ADD' &&
// $entityCode == 'TASK'
// )
// {
// $allowNotCommentNotifications = true;
// }
//
// // disable all non comments notifications
// if (!$allowNotCommentNotifications && $entityCode !== 'COMMENT')
// {
// return false;
// }
if (!isset($messages['EMAIL']))
{
$messages['EMAIL'] = $messages['INSTANT'];
}
$eventData = $parameters['EVENT_DATA'];
$notifyEvent = ($parameters['NOTIFY_EVENT'] ?? null);
$callbacks = ($parameters['CALLBACK'] ?? null);
unset($parameters['EVENT_DATA'], $parameters['NOTIFY_EVENT'], $parameters['CALLBACK']);
$notifyType = null;
if (array_key_exists('NOTIFY_TYPE', $parameters))
{
$notifyType = $parameters['NOTIFY_TYPE'];
unset($parameters['NOTIFY_TYPE']);
}
$pushParams = null;
if (array_key_exists('PUSH_PARAMS', $parameters))
{
$pushParams = $parameters['PUSH_PARAMS'];
unset($parameters['PUSH_PARAMS']);
}
$entityOperation = 'ADD';
if ((string)($parameters['ENTITY_OPERATION'] ?? null) !== '')
{
$entityOperation = $parameters['ENTITY_OPERATION'];
unset($parameters['ENTITY_OPERATION']);
}
$params = [
'FROM_USER_ID' => $fromUser,
'TO_USER_IDS' => $toUsers,
'TASK_ID' => (int)$taskId,
'MESSAGE' => $messages,
'EVENT_DATA' => $eventData,
'NOTIFY_EVENT' => $notifyEvent,
'ENTITY_CODE' => $entityCode,
'ENTITY_OPERATION' => $entityOperation,
'CALLBACK' => $callbacks,
'ADDITIONAL_DATA' => $parameters,
];
if ($notifyType)
{
$params['NOTIFY_TYPE'] = $notifyType;
}
if ($pushParams)
{
$params['PUSH_PARAMS'] = $pushParams;
}
self::addToNotificationBuffer($params);
if (!self::$bufferize)
{
self::flushNotificationBuffer(false);
}
return true;
}