- Модуль: xdimport
- Путь к файлу: ~/bitrix/modules/xdimport/lib/integration/socialnetwork/logcomment.php
- Класс: BitrixXDImportIntegrationSocialnetworkLogComment
- Вызов: LogComment::setSource
static function setSource(array $commentFields = []): array
{
global $USER;
$result = [
'NO_SOURCE' => 'Y'
];
if (empty($commentFields['MESSAGE']))
{
return $result;
}
$logId = (int)$commentFields['LOG_ID'];
if ($logId <= 0)
{
return $result;
}
$authorId = (int)$commentFields['USER_ID'];
if (!Loader::includeModule('socialnetwork'))
{
return $result;
}
$mentionedUserIdList = BitrixSocialnetworkHelperMention::getUserIds($commentFields['MESSAGE']);
if (empty($mentionedUserIdList))
{
return $result;
}
$mentionedUserIdList = array_filter(
$mentionedUserIdList,
static function ($userId) use ($authorId) {
return (int)$userId !== (int)$authorId;
}
);
self::sendNotification([
'type' => 'mention',
'userIdList' => $mentionedUserIdList,
'authorId' => $authorId,
'logId' => $commentFields['LOG_ID'],
]);
$shareUserId = array_filter(
$mentionedUserIdList,
static function ($userId) use ($logId) {
return !CSocNetLogRights::checkForUser($logId, $userId);
}
);
if (empty($shareUserId))
{
return $result;
}
$shareCodesList = array_map(
static function ($userId) {
return 'U' . $userId;
},
$shareUserId
);
CSocNetLogRights::add($logId, $shareCodesList);
$currentUserId = (int)$USER->getId();
$commentProvider = LivefeedProvider::init(array(
'ENTITY_TYPE' => LivefeedProvider::DATA_ENTITY_TYPE_LOG_COMMENT,
'LOG_ID' => $logId,
'CLONE_DISK_OBJECTS' => false
));
if (!$commentProvider)
{
return $result;
}
$commentProvider->add([
'SITE_ID' => SITE_ID,
'AUTHOR_ID' => $currentUserId,
'MESSAGE' => CommentAuxShare::getPostText(),
'SHARE_DEST' => 'mention|'.implode(',', $shareCodesList),
'MODULE' => '',
]);
return $result;
}