• Модуль: 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;
}