• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/integration/forum/task/comment.php
  • Класс: BitrixTasksIntegrationForumTaskComment
  • Вызов: Comment::sendNotification
static function sendNotification($messageData, $taskData, $fromUser, $toUsers, array $eventData = []): bool
{
	$message = (string)Util::trim(CTextParser::clearAllTags($messageData['POST_MESSAGE']));

	if (CTaskNotifications::useNewNotifications())
	{
		$task = BitrixTasksInternalsRegistryTaskRegistry::getInstance()->getObject($taskData['ID'], true);
		if (!$task)
		{
			return false;
		}
		$controller = new BitrixTasksInternalsNotificationController();
		$controller->onCommentCreated($task, $messageData['ID'], $message);
		$controller->push();
		return true;
	}

	if (empty($toUsers) || !IM::includeModule())
	{
		return false;
	}

	// some sources do not even pass $eventData, so ensure we got at least MESSAGE_ID
	$eventData['MESSAGE_ID'] = $messageData['ID'];

//		$notifyType = IM_NOTIFY_SYSTEM;
//		$notifyAnswer = false;

	$user = CTaskNotifications::getUser($fromUser);

//		$messageTemplate = '[color=#000]#TASK_TITLE#[/color][br][i]#USER_NAME#:[/i] #TASK_COMMENT_TEXT#';
//		$messageTemplatePush = '#USER_NAME#: #TASK_COMMENT_TEXT#';

//		if (
//			Loader::includeModule('socialnetwork')
//			&& $messageData['POST_MESSAGE'] === BitrixSocialnetworkCommentAuxTaskInfo::POST_TEXT
//			&& array_key_exists('AUX_DATA', $eventData)
//		)
//		{
//			$commentInfo = unserialize($eventData['AUX_DATA'], ['allowed_classes' => false]);
//			if (!$commentInfo)
//			{
//				return false;
//			}
//			$message = CommentsTaskCommentPoster::getCommentText($commentInfo);
//		}

	$messageTemplate = CTaskNotifications::getGenderMessage($fromUser, 'TASKS_COMMENT_MESSAGE_ADD');
	$messageTemplatePush = CTaskNotifications::getGenderMessage($fromUser, 'TASKS_COMMENT_MESSAGE_ADD_PUSH');

	$messageCropped = self::cropMessage($message);
	if ($messageCropped !== '')
	{
		$messageTemplate .= Loc::getMessage('TASKS_COMMENT_MESSAGE_ADD_WITH_TEXT');
		$messageTemplatePush .= ': #TASK_COMMENT_TEXT#';
	}

	CTaskNotifications::SendMessageEx(
		$taskData['ID'],
		$fromUser,
		$toUsers,
		[
			'INSTANT' => str_replace('#TASK_COMMENT_TEXT#', $messageCropped, $messageTemplate),
			'EMAIL' => str_replace('#TASK_COMMENT_TEXT#', $message, $messageTemplate),
			'PUSH' => CTaskNotifications::cropMessage(
				$messageTemplatePush,
				[
					'USER_NAME' => User::formatName($user),
					'TASK_TITLE' => $taskData['TITLE'],
					'TASK_COMMENT_TEXT' => $message,
				],
				CTaskNotifications::PUSH_MESSAGE_MAX_LENGTH
			)
		],
		[
			'ENTITY_CODE' => 'COMMENT',
			'ENTITY_OPERATION' => 'ADD',
			'EVENT_DATA' => $eventData,
			'NOTIFY_EVENT' => 'comment',
			'NOTIFY_ANSWER' => true,
			'TASK_DATA' => $taskData,
			'TASK_URL' => [
				'PARAMETERS' => static::getUrlParameters($messageData['ID']),
				'HASH' => static::makeUrlHash($messageData['ID']),
			],
		]
	);

//		CTaskNotifications::SendMessageEx(
//			$taskData["ID"],
//			$fromUser,
//			$toUsers,
//			[
//				'INSTANT' => str_replace(
//					["#TASK_COMMENT_TEXT#", "#USER_NAME#", "#TASK_TITLE#"],
//					[$messageCropped, User::formatName($user), $taskData["TITLE"]],
//					$messageTemplate
//				),
//				'EMAIL' => str_replace(
//					["#TASK_COMMENT_TEXT#", "#USER_NAME#"],
//					[$message, User::formatName($user)],
//					$messageTemplate
//				),
//				'PUSH' => CTaskNotifications::cropMessage(
//					$messageTemplatePush,
//					[
//						'USER_NAME' => 			User::formatName($user),
//						'TASK_TITLE' => 		$taskData["TITLE"],
//						'TASK_COMMENT_TEXT' => 	$message
//					],
//					CTaskNotifications::PUSH_MESSAGE_MAX_LENGTH
//				)
//			],
//			[
//				'ENTITY_CODE' => 'COMMENT',
//				'ENTITY_OPERATION' => 'ADD',
//				'EVENT_DATA' => $eventData,
//				'NOTIFY_EVENT' => 'comment',
//				'NOTIFY_ANSWER' => $notifyAnswer,
//				'NOTIFY_TYPE' => $notifyType,
//				'TASK_DATA' => $taskData,
//				'TASK_URL' => [
//					'PARAMETERS' => static::getUrlParameters($messageData['ID']),
//					'HASH' => static::makeUrlHash($messageData['ID'])
//				],
//				'PUSH_PARAMS' => [
//					'SENDER_NAME' => $taskData["TITLE"]
//				]
//			]);

	return true;
}