- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/lib/componenthelper.php
- Класс: BitrixSocialnetworkComponentHelper
- Вызов: ComponentHelper::notifyBlogPostCreated
static function notifyBlogPostCreated($params = array())
{
if (!Loader::includeModule('blog'))
{
return false;
}
$post = (
!empty($params)
&& is_array($params)
&& !empty($params['post'])
&& is_array($params['post'])
? $params['post']
: []
);
$siteId = (
!empty($params)
&& is_array($params)
&& !empty($params['siteId'])
? $params['siteId']
: CSite::getDefSite()
);
$postUrl = (
!empty($params)
&& is_array($params)
&& !empty($params['postUrl'])
? $params['postUrl']
: ''
);
$socnetRights = (
!empty($params)
&& is_array($params)
&& !empty($params['socnetRights'])
&& is_array($params['socnetRights'])
? $params['socnetRights']
: []
);
$socnetRightsOld = (
!empty($params)
&& is_array($params)
&& !empty($params['socnetRightsOld'])
&& is_array($params['socnetRightsOld'])
? $params['socnetRightsOld']
: array(
'U' => [],
'SG' => []
)
);
$mentionListOld = (
!empty($params)
&& is_array($params)
&& !empty($params['mentionListOld'])
&& is_array($params['mentionListOld'])
? $params['mentionListOld']
: []
);
$mentionList = (
!empty($params)
&& is_array($params)
&& !empty($params['mentionList'])
&& is_array($params['mentionList'])
? $params['mentionList']
: []
);
$gratData = (
!empty($params)
&& is_array($params)
&& !empty($params['gratData'])
&& is_array($params['gratData'])
? $params['gratData']
: []
);
$IMNotificationFields = array(
"TYPE" => "POST",
"TITLE" => $post["TITLE"],
"URL" => $postUrl,
"ID" => $post["ID"],
"FROM_USER_ID" => $post["AUTHOR_ID"],
"TO_USER_ID" => array(),
"TO_SOCNET_RIGHTS" => $socnetRights,
"TO_SOCNET_RIGHTS_OLD" => $socnetRightsOld,
"GRAT_DATA" => $gratData
);
if (!empty($mentionListOld))
{
$IMNotificationFields["MENTION_ID_OLD"] = $mentionListOld;
}
if (!empty($mentionList))
{
$IMNotificationFields["MENTION_ID"] = $mentionList;
}
$userIdSentList = CBlogPost::notifyIm($IMNotificationFields);
if (!$userIdSentList)
{
$userIdSentList = [];
}
$userIdToMailList = [];
if (!empty($socnetRights))
{
BitrixBlogBroadcast::send(array(
"EMAIL_FROM" => Option::get('main', 'email_from', 'nobody@nobody.com'),
"SOCNET_RIGHTS" => $socnetRights,
"SOCNET_RIGHTS_OLD" => $socnetRightsOld,
"ENTITY_TYPE" => "POST",
"ENTITY_ID" => $post["ID"],
"AUTHOR_ID" => $post["AUTHOR_ID"],
"URL" => $postUrl,
'EXCLUDE_USERS' => array_merge([ $post['AUTHOR_ID'] ], $userIdSentList),
));
foreach ($socnetRights as $right)
{
if (mb_strpos($right, "U") === 0)
{
$rightUserId = (int)mb_substr($right, 1);
if (
$rightUserId > 0
&& empty($socnetRightsOld["U"][$rightUserId])
&& $rightUserId !== (int)$post["AUTHOR_ID"]
&& !in_array($rightUserId, $userIdToMailList, true)
)
{
$userIdToMailList[] = $rightUserId;
}
}
}
}
if (!empty($userIdToMailList))
{
CBlogPost::notifyMail([
"type" => "POST",
"siteId" => $siteId,
"userId" => $userIdToMailList,
"authorId" => $post["AUTHOR_ID"],
"postId" => $post["ID"],
"postUrl" => CComponentEngine::makePathFromTemplate(
'/pub/post.php?post_id=#post_id#',
[
"post_id" => $post["ID"],
]
),
]);
}
return true;
}