ComponentHelper::setBlogPostLimitedViewStatus: метод Битрикс
Постоянная ссылка: http://bxapi.ru/src/?id=461692
// Bitrix\Socialnetwork\ComponentHelper::setBlogPostLimitedViewStatus()
// /bitrix/modules/socialnetwork/lib/componenthelper.php:3552
public 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'])
&& intval($params['postId']) > 0
? intval($params['postId'])
: 0
);
if (
$postId <= 0
|| !Loader::includeModule('blog')
)
{
return $result;
}
if ($show)
{
$liveFeedEntity = Livefeed\Provider::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 (\Bitrix\Main\Loader::includeModule('crm'))
{
$logItem = Log::getById($logId);
\CCrmLiveFeedComponent::processCrmBlogPostRights($logId, $logItem->getFields(), $postFields, 'new');
}
\Bitrix\Blog\Integration\Socialnetwork\CounterPost::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(
Option::get('socialnetwork', 'userblogpost_page', '/company/personal/user/#user_id#/blog/#post_id#/', $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,
);
preg_match_all("/\[user\s*=\s*([^\]]*)\](.+?)\[\/user\]/ies".BX_UTF_PCRE_MODIFIER, $postFields["DETAIL_TEXT"], $matches);
if (!empty($matches))
{
$notificationParamsList["mentionList"] = $matches[1];
}
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;
}