Поддержка серверов

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;
    }

Блог разработчика

9 августа 2016 ResizeImageGet и простой водяной знак налету

Сегодня поговорим о том как проще всего воткнуть водяной знак на картинки в Битрикс. Например, на все изображения каталога.

21 июля 2016 Добавление вкладки в CRM коробки Битрикс24

В этом посте я покажу, как легко и просто добавить вкладку в сущность CRM. И не просто добавить, а вывести там свой контент.

21 июля 2016 Как просто обращаться из коробки Битрикс24 на сайт на базе Битрикс

К примеру вам хочется внутренним скриптом дернуть с сайта-магазина информацию, которая там, в свою очередь, закрыта некоторыми правами. Например, админскими. Можно конечно мутить свой REST, или иной формат общения, но проще всего воспользоваться штатным инструментом:

Текст сообщения*
Загрузить изображение