• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/componenthelper.php
  • Класс: BitrixSocialnetworkComponentHelper
  • Вызов: ComponentHelper::notifyBlogPostCreated
static function notifyBlogPostCreated($params = array())
{
	if (!Loader::includeModule('blog'))
	{
		return false;
	}

	$post = (
		!empty($params)
		&& is_array($params)
		&& !empty($params['post'])
		&& is_array($params['post'])
			? $params['post']
			: []
	);

	$siteId = (
		!empty($params)
		&& is_array($params)
		&& !empty($params['siteId'])
			? $params['siteId']
			: CSite::getDefSite()
	);

	$postUrl = (
		!empty($params)
		&& is_array($params)
		&& !empty($params['postUrl'])
			? $params['postUrl']
			: ''
	);

	$socnetRights = (
		!empty($params)
		&& is_array($params)
		&& !empty($params['socnetRights'])
		&& is_array($params['socnetRights'])
			? $params['socnetRights']
			: []
	);

	$socnetRightsOld = (
		!empty($params)
		&& is_array($params)
		&& !empty($params['socnetRightsOld'])
		&& is_array($params['socnetRightsOld'])
			? $params['socnetRightsOld']
			: array(
				'U' => [],
				'SG' => []
			)
	);

	$mentionListOld = (
		!empty($params)
		&& is_array($params)
		&& !empty($params['mentionListOld'])
		&& is_array($params['mentionListOld'])
			? $params['mentionListOld']
			: []
	);

	$mentionList = (
		!empty($params)
		&& is_array($params)
		&& !empty($params['mentionList'])
		&& is_array($params['mentionList'])
			? $params['mentionList']
			: []
	);

	$gratData = (
		!empty($params)
		&& is_array($params)
		&& !empty($params['gratData'])
		&& is_array($params['gratData'])
			? $params['gratData']
			: []
	);

	$IMNotificationFields = array(
		"TYPE" => "POST",
		"TITLE" => $post["TITLE"],
		"URL" => $postUrl,
		"ID" => $post["ID"],
		"FROM_USER_ID" => $post["AUTHOR_ID"],
		"TO_USER_ID" => array(),
		"TO_SOCNET_RIGHTS" => $socnetRights,
		"TO_SOCNET_RIGHTS_OLD" => $socnetRightsOld,
		"GRAT_DATA" => $gratData
	);
	if (!empty($mentionListOld))
	{
		$IMNotificationFields["MENTION_ID_OLD"] = $mentionListOld;
	}
	if (!empty($mentionList))
	{
		$IMNotificationFields["MENTION_ID"] = $mentionList;
	}

	$userIdSentList = CBlogPost::notifyIm($IMNotificationFields);
	if (!$userIdSentList)
	{
		$userIdSentList = [];
	}

	$userIdToMailList = [];

	if (!empty($socnetRights))
	{
		BitrixBlogBroadcast::send(array(
			"EMAIL_FROM" => Option::get('main', 'email_from', 'nobody@nobody.com'),
			"SOCNET_RIGHTS" => $socnetRights,
			"SOCNET_RIGHTS_OLD" => $socnetRightsOld,
			"ENTITY_TYPE" => "POST",
			"ENTITY_ID" => $post["ID"],
			"AUTHOR_ID" => $post["AUTHOR_ID"],
			"URL" => $postUrl,
			'EXCLUDE_USERS' => array_merge([ $post['AUTHOR_ID'] ], $userIdSentList),
		));

		foreach ($socnetRights as $right)
		{
			if (mb_strpos($right, "U") === 0)
			{
				$rightUserId = (int)mb_substr($right, 1);
				if (
					$rightUserId > 0
					&& empty($socnetRightsOld["U"][$rightUserId])
					&& $rightUserId !== (int)$post["AUTHOR_ID"]
					&& !in_array($rightUserId, $userIdToMailList, true)
				)
				{
					$userIdToMailList[] = $rightUserId;
				}
			}
		}
	}

	if (!empty($userIdToMailList))
	{
		CBlogPost::notifyMail([
			"type" => "POST",
			"siteId" => $siteId,
			"userId" => $userIdToMailList,
			"authorId" => $post["AUTHOR_ID"],
			"postId" => $post["ID"],
			"postUrl" => CComponentEngine::makePathFromTemplate(
				'/pub/post.php?post_id=#post_id#',
				[
					"post_id" => $post["ID"],
				]
			),
		]);
	}

	return true;
}