- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/lib/helper/workgroup.php
- Класс: BitrixSocialnetworkHelperWorkgroup
- Вызов: Workgroup::setArchive
static function setArchive(array $fields = []): bool
{
global $APPLICATION;
if (!isset($fields['archive']))
{
throw new ArgumentException(Loc::getMessage('SOCIALNETWORK_HELPER_WORKGROUP_ERROR_OPERATION_FAILED'));
}
$groupId = (int)($fields['groupId'] ?? 0);
$archive = (bool)$fields['archive'];
$currentUserId = User::getCurrentUserId();
if ($groupId <= 0)
{
throw new ArgumentException(Loc::getMessage('SOCIALNETWORK_HELPER_WORKGROUP_ERROR_WRONG_GROUP_ID'));
}
$filter = [
'ID' => $groupId,
];
$isCurrentUserAdmin = static::isCurrentUserModuleAdmin();
if (!$isCurrentUserAdmin)
{
$filter['CHECK_PERMISSIONS'] = $currentUserId;
}
$res = CSocNetGroup::getList([], $filter);
if (!($groupFields = $res->fetch()))
{
throw new ObjectNotFoundException(Loc::getMessage('SOCIALNETWORK_HELPER_WORKGROUP_ERROR_GROUP_NO_FOUND'));
}
if (!HelperWorkgroupAccess::canModify([
'groupId' => $groupId,
]))
{
throw new AccessDeniedException(Loc::getMessage('SOCIALNETWORK_HELPER_WORKGROUP_ERROR_OPERATION_NO_PERMS'));
}
if (!CSocNetGroup::update($groupId, [ 'CLOSED' => ($archive ? 'Y' : 'N') ], false, true, false))
{
if ($ex = $APPLICATION->getException())
{
$errorMessage = $ex->getString();
$errorCode = $ex->getId();
}
else
{
$errorMessage = Loc::getMessage('SOCIALNETWORK_HELPER_WORKGROUP_ERROR_OPERATION_FAILED');
$errorCode = 100;
}
throw new SystemException($errorMessage, $errorCode);
}
return true;
}