• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/componenthelper.php
  • Класс: BitrixSocialnetworkComponentHelper
  • Вызов: ComponentHelper::setBlogPostLimitedViewStatus
static function setBlogPostLimitedViewStatus($params = array())
{
	static $extranetSiteId = null;

	$result = false;

	$show = (
		is_array($params)
		&& isset($params['show'])
		&& $params['show'] === true
	);

	$postId = (
		is_array($params)
		&& !empty($params['postId'])
		&& (int)$params['postId'] > 0
			? (int)$params['postId']
			: 0
	);

	if (
		$postId <= 0
		|| !Loader::includeModule('blog')
	)
	{
		return $result;
	}

	if ($show)
	{
		$liveFeedEntity = LivefeedProvider::init(array(
			'ENTITY_TYPE' => 'BLOG_POST',
			'ENTITY_ID' => $postId,
		));

		$logId = $liveFeedEntity->getLogId();
		if (!self::getBlogPostLimitedViewStatus(array(
			'logId' => $logId
		)))
		{
			return $result;
		}

		$post = Post::getById($postId);
		$postFields = $post->getFields();

		$socnetPerms = self::getBlogPostSocNetPerms(array(
			'postId' => $postId,
			'authorId' => $postFields["AUTHOR_ID"]
		));

		CSocNetLogRights::deleteByLogID($logId);
		CSocNetLogRights::add($logId, $socnetPerms, true, false);
		LogTable::update($logId, array(
			'LOG_UPDATE' => new SqlExpression(Application::getConnection()->getSqlHelper()->getCurrentDateTimeFunction()),
			'TRANSFORM' => 'N'
		));

		if (BitrixMainLoader::includeModule('crm'))
		{
			$logItem = Log::getById($logId);
			CCrmLiveFeedComponent::processCrmBlogPostRights($logId, $logItem->getFields(), $postFields, 'new');
		}

		BitrixBlogIntegrationSocialnetworkCounterPost::increment(array(
			'socnetPerms' => $socnetPerms,
			'logId' => $logId,
			'logEventId' => $liveFeedEntity->getEventId()
		));

		$logSiteIdList = array();
		$resSite = CSocNetLog::getSite($logId);
		while($logSite = $resSite->fetch())
		{
			$logSiteIdList[] = $logSite["LID"];
		}

		if (
			$extranetSiteId === null
			&& Loader::includeModule('extranet')
		)
		{
			$extranetSiteId = CExtranet::getExtranetSiteID();
		}

		$siteId = false;
		foreach($logSiteIdList as $logSiteId)
		{
			if ($logSiteId != $extranetSiteId)
			{
				$siteId = $logSiteId;
				break;
			}
		}

		if (!$siteId)
		{
			$siteId = CSite::getDefSite();
		}

		$postUrl = CComponentEngine::makePathFromTemplate(
			BitrixSocialnetworkHelperPath::get('userblogpost_page', $siteId),
			array(
				"post_id" => $postId,
				"user_id" => $postFields["AUTHOR_ID"]
			)
		);

		$notificationParamsList = array(
			'post' => array(
				'ID' => $postFields["ID"],
				'TITLE' => $postFields["TITLE"],
				'AUTHOR_ID' => $postFields["AUTHOR_ID"]
			),
			'siteId' => $siteId,
			'postUrl' => $postUrl,
			'socnetRights' => $socnetPerms,
		);

		$notificationParamsList['mentionList'] = Mention::getUserIds($postFields['DETAIL_TEXT']);

		self::notifyBlogPostCreated($notificationParamsList);

		if (
			!isset($params['notifyAuthor'])
			|| $params['notifyAuthor']
		)
		{
			self::notifyAuthorOnSetBlogPostLimitedViewStatusShow(array(
				'POST_ID' => $postId,
				'POST_FIELDS' => $postFields,
				'POST_URL' => $postUrl,
				'LOG_ID' => $logId,
				'SITE_ID' => $siteId
			));
		}

		BXClearCache(true, self::getBlogPostCacheDir(array(
			'TYPE' => 'post',
			'POST_ID' => $postId
		)));
	}

	$result = true;

	return $result;
}