- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/lib/integration/blog/mention.php
- Класс: BitrixSocialnetworkIntegrationBlogMention
- Вызов: Mention::parseProjectList
static function parseProjectList(array $params = []): array
{
global $USER;
$result = [];
$commentText = (string)($params['commentText'] ?? '');
$postId = (int)($params['postId'] ?? 0);
if (
$postId <= 0
|| !Loader::includeModule('blog')
)
{
return $result;
}
$mentionedProjectIdList = BitrixSocialnetworkHelperMention::getProjectIds($commentText);
if (empty($mentionedProjectIdList))
{
return $result;
}
$projectIdToShareList = [];
$currentUserId = $USER->getId();
$currentAdmin = CSocNetUser::isCurrentUserModuleAdmin(SITE_ID, false);
$postPermsData = self::getSocNetPerms([
'postId' => $postId,
]);
foreach ($mentionedProjectIdList as $projectId)
{
$projectId = (int)$projectId;
if (
$projectId <= 0
|| (
isset($postPermsData['SG'])
&& isset($postPermsData['SG'][$projectId])
)
)
{
continue;
}
$canPublish = (
$currentAdmin
|| CSocNetFeaturesPerms::canPerformOperation($currentUserId, SONET_ENTITY_GROUP, $projectId, 'blog', 'write_post')
|| CSocNetFeaturesPerms::canPerformOperation($currentUserId, SONET_ENTITY_GROUP, $projectId, 'blog', 'moderate_post')
|| CSocNetFeaturesPerms::canPerformOperation($currentUserId, SONET_ENTITY_GROUP, $projectId, 'blog', 'full_post')
);
if (!$canPublish)
{
continue;
}
$projectIdToShareList[] = $projectId;
}
$projectIdToShareList = array_unique($projectIdToShareList);
if (empty($projectIdToShareList))
{
return $result;
}
$res = WorkgroupTable::getList([
'filter' => [
'@ID' => $projectIdToShareList,
],
'select' => [ 'ID' ],
]);
while ($workgroupFields = $res->fetch())
{
$result[] = 'SG' . $workgroupFields['ID'];
}
return $result;
}