• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/componenthelper.php
  • Класс: BitrixSocialnetworkComponentHelper
  • Вызов: ComponentHelper::convertBlogPostPermToDestinationList
static function convertBlogPostPermToDestinationList($params, &$resultFields)
{
	global $USER;

	$result = array();

	if (!Loader::includeModule('blog'))
	{
		return $result;
	}

	$postId = (
		isset($params['POST_ID'])
		&& (int)$params['POST_ID'] > 0
			? (int)$params['POST_ID']
			: false
	);

	$postFields = array();

	if ($postId)
	{
		$postFields = BitrixBlogItemPost::getById($postId)->getFields();
	}

	$authorId = (
		!$postId
		&& isset($params['AUTHOR_ID'])
		&& (int)$params['AUTHOR_ID'] > 0
			? (int)$params['AUTHOR_ID']
			: $postFields['AUTHOR_ID']
	);

	$extranetUser = (
		$params['IS_EXTRANET_USER'] ?? self::isCurrentUserExtranet([
			'siteId' => SITE_ID,
			'userId' => $USER->getId(),
		])
	);

	$siteId = (
		!empty($params['SITE_ID'])
			? $params['SITE_ID']
			: SITE_ID
	);

	$socNetPermsListOld = array();

	if ($postId > 0)
	{
		$socNetPermsListOld = CBlogPost::getSocNetPerms($postId);
	}

	$authorInDest = (
		!empty($postFields)
		&& !empty($postFields['AUTHOR_ID'])
		&& !empty($socNetPermsListOld)
		&& !empty($socNetPermsListOld['U'])
		&& isset($socNetPermsListOld['U'][$postFields['AUTHOR_ID']])
		&& in_array('U' . $postFields['AUTHOR_ID'], $socNetPermsListOld['U'][$postFields['AUTHOR_ID']], true)
	);

	$permList = (
		isset($params['PERM'])
		&& is_array($params['PERM'])
			? $params['PERM']
			: array()
	);

	$allowToAll = self::getAllowToAllDestination();

	if(
		empty($permList)
		&& isset($params["IS_REST"])
		&& $params["IS_REST"]
		&& $allowToAll
	)
	{
		$permList = array("UA" => array("UA"));
	}

	foreach ($permList as $v => $k)
	{
		if (
			$v <> ''
			&& is_array($k)
			&& !empty($k)
		)
		{
			foreach ($k as $vv)
			{
				if (
					$vv <> ''
					&& (
						empty($postFields['AUTHOR_ID'])
						|| $vv !== 'U'.$postFields['AUTHOR_ID']
						|| $authorInDest
					)
				)
				{
					$result[] = $vv;
				}
			}
		}
	}

	$result = self::checkBlogPostDestinationList(array(
		'DEST' => $result,
		'SITE_ID' => $siteId,
		'AUTHOR_ID' => $authorId,
		'IS_EXTRANET_USER' => $extranetUser,
		'POST_ID' => $postId
	), $resultFields);

	return $result;
}