• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/rest.php
  • Класс: CSocNetLogRestService
  • Вызов: CSocNetLogRestService::updateGroup
static function updateGroup($arFields)
{
	foreach ($arFields as $key => $value)
	{
		if (in_array(mb_substr($key, 0, 1), [ '~', '=' ]))
		{
			unset($arFields[$key]);
		}
	}

	if (isset($arFields['IMAGE_FILE_ID']) && Loader::includeModule('disk'))
	{
		$imageFileId = (int)$arFields['IMAGE_FILE_ID'];

		if ($imageFileId === 0)
		{
			$arFields['IMAGE_ID'] = ['del' => 'Y'];
			unset($arFields['IMAGE']);
		}
		else if (
			$imageFileId > 0
			&& ($file = File::loadById($imageFileId))
			&& $file->canRead($file->getStorage()->getSecurityContext(self::getCurrentUserId()))
		)
		{
			$image = CFile::MakeFileArray($file->getFileId());
			$image['del'] = 'N';
			CFile::ResizeImage($image, ['width' => 300, 'height' => 300]);
			$arFields['IMAGE_ID'] = $image;

			unset($arFields['IMAGE']);
		}
		else
		{
			unset($arFields['IMAGE_FILE_ID']);
		}
	}

	if (isset($arFields['IMAGE']))
	{
		$arFields['IMAGE_ID'] = CRestUtil::saveFile($arFields['IMAGE']);
		if (!$arFields['IMAGE_ID'])
		{
			$arFields['IMAGE_ID'] = array('del' => 'Y');
		}
		unset($arFields['IMAGE']);
	}

	if (!empty($arFields['PROJECT_DATE_START']))
	{
		$arFields['PROJECT_DATE_START'] = CRestUtil::unConvertDate($arFields['PROJECT_DATE_START']);
	}
	if (!empty($arFields['PROJECT_DATE_FINISH']))
	{
		$arFields['PROJECT_DATE_FINISH'] = CRestUtil::unConvertDate($arFields['PROJECT_DATE_FINISH']);
	}

	$groupID = $arFields['GROUP_ID'] ?? null;
	unset($arFields['GROUP_ID']);

	if ((int)$groupID <= 0)
	{
		throw new ArgumentException('Wrong group ID');
	}

	if (!WorkgroupAccess::canUpdate([
		'groupId' => $groupID,
		'checkAdminSession' => false,
	]))
	{
		throw new AccessDeniedException('User has no permissions to update group');
	}

	$res = CSocNetGroup::Update($groupID, $arFields, false);
	if ((int)$res <= 0)
	{
		throw new SystemException('Cannot update group');
	}

	return $res;
}