- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/lib/controller/workgroup.php
- Класс: BitrixSocialnetworkControllerWorkgroup
- Вызов: Workgroup::setFavoritesAction
public function setFavoritesAction(array $params = [])
{
$groupId = (int)($params['groupId'] ?? 0);
$value = (isset($params['value']) && in_array($params['value'], [ 'Y', 'N' ]) ? $params['value'] : false);
$getAdditionalResultData = (bool)($params['getAdditionalResultData'] ?? false);
if ($groupId <= 0)
{
$this->addError(new Error(Loc::getMessage('SONET_CONTROLLER_WORKGROUP_EMPTY'), 'SONET_CONTROLLER_WORKGROUP_EMPTY'));
return null;
}
if ($value === false)
{
$this->addError(new Error('SONET_CONTROLLER_WORKGROUP_INCORRECT_VALUE', 'SONET_CONTROLLER_WORKGROUP_INCORRECT_VALUE'));
return null;
}
if (!Loader::includeModule('socialnetwork'))
{
$this->addError(new Error('SONET_CONTROLLER_MODULE_NOT_INSTALLED', 'SONET_CONTROLLER_MODULE_NOT_INSTALLED'));
return null;
}
try
{
$res = BitrixSocialnetworkItemWorkgroupFavorites::set([
'GROUP_ID' => $groupId,
'USER_ID' => $this->getCurrentUser()->getId(),
'VALUE' => $value,
]);
}
catch (Exception $e)
{
$this->addError(new Error($e->getMessage(), $e->getCode()));
return null;
}
if (!$res)
{
$this->addError(new Error(Loc::getMessage('SONET_CONTROLLER_WORKGROUP_ACTION_FAILED'), 'SONET_CONTROLLER_WORKGROUP_ACTION_FAILED'));
return null;
}
if ($getAdditionalResultData)
{
$groupItem = BitrixSocialnetworkItemWorkgroup::getById($groupId);
$groupFields = $groupItem->getFields();
$groupUrlData = $groupItem->getGroupUrlData([
'USER_ID' => $this->getCurrentUser()->getId(),
]);
$groupSiteList = [];
$resSite = BitrixSocialnetworkWorkgroupSiteTable::getList([
'filter' => [
'=GROUP_ID' => $groupId
],
'select' => [ 'SITE_ID' ],
]);
while ($groupSite = $resSite->fetch())
{
$groupSiteList[] = $groupSite['SITE_ID'];
}
}
$result = [
'ID' => $groupId,
'RESULT' => $value,
];
if ($getAdditionalResultData)
{
$result['NAME'] = $groupFields['NAME'];
$result['URL'] = $groupUrlData["URL"];
$result['EXTRANET'] = (
Loader::includeModule('extranet')
&& CExtranet::isIntranetUser()
&& in_array(CExtranet::getExtranetSiteId(), $groupSiteList)
? 'Y'
: 'N'
);
}
$currentUserId = $this->getCurrentUser()->getId();
PushService::addEvent(
[ $currentUserId ],
[
'module_id' => 'socialnetwork',
'command' => PushEventDictionary::EVENT_WORKGROUP_FAVORITES_CHANGED,
'params' => [
'GROUP_ID' => $groupId,
'USER_ID' => $currentUserId,
],
]
);
return $result;
}