• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/integration/im/notification/provider.php
  • Класс: BitrixTasksIntegrationIMNotificationProvider
  • Вызов: Provider::pushMessages
public function pushMessages(): void
{
	if (!BitrixMainLoader::includeModule('im'))
	{
		return;
	}

	foreach ($this->messages as $message)
	{
		if(true === BitrixTasksIntegrationMailUser::isEmail($message->getRecepient()->toArray()))
		{
			continue;
		}

		if ($this->isUserOnMute($message))
		{
			continue;
		}

		$entityCodeOperation = $message->getMetaData()->getEntityCode() . ':' . $message->getMetaData()->getEntityOperation();

		switch ($entityCodeOperation)
		{
			case EntityCode::CODE_TASK . ':' . EntityOperation::ADD:
				$this->pushNotification((new TaskCreated())->getNotification($message));
				break;
			case EntityCode::CODE_TASK . ':' . EntityOperation::UPDATE:
				$this->pushNotification((new TaskUpdated())->getNotification($message));
				break;
			case EntityCode::CODE_TASK . ':' . EntityOperation::DELETE:
				$this->pushNotification((new TaskDeleted())->getNotification($message));
				break;
			case EntityCode::CODE_TASK . ':' . EntityOperation::PING_STATUS:
				$this->pushNotification((new TaskPingSent())->getNotification($message));
				break;
			case EntityCode::CODE_TASK . ':' . EntityOperation::EXPIRED:
				$this->pushNotification((new TaskExpired())->getNotification($message));
				break;
			case EntityCode::CODE_TASK . ':' . EntityOperation::EXPIRES_SOON:
				$this->pushNotification((new TaskExpiresSoon())->getNotification($message));
				break;
			case EntityCode::CODE_TASK . ':' . EntityOperation::STATUS_CHANGED:
				$this->pushNotification((new TaskStatusChanged())->getNotification($message));
				break;
			case EntityCode::CODE_COMMENT . ':' . EntityOperation::ADD:
				$this->pushNotification((new CommentCreated())->getNotification($message));
				break;
		}

	}
}