• Модуль: ui
  • Путь к файлу: ~/bitrix/modules/ui/lib/Avatar/Controller/mask.php
  • Класс: BitrixUIAvatarControllerMask
  • Вызов: Mask::saveAction
public function saveAction($id, $title, $accessCode, $file, MainEngineCurrentUser $currentUser): ResponseAjaxJson
{
	$destCodesList = MainUIEntitySelectorConverter::convertToFinderCodes($accessCode);
	$file = ($file['changed'] === 'Y' ? $this->getRequest()->getFile('file') : null);
	if ($id > 0)
	{
		$result = $this->checkEditability($id, $currentUser);
		if ($result->isSuccess())
		{
			['item' => $item] = $result->getData();
			/* @var AvatarMaskItem $item*/
			$result = $item->update([
				'TITLE' => $title,
				'ACCESS_CODE' => $destCodesList
				] + (!empty($file) ? [
				'FILE' => $file] : [])
			);
		}
	}
	else
	{
		$result = AvatarMaskItem::create(
			new AvatarMaskOwnerUser($currentUser->getId()),
			$file,
			[
				'TITLE' => $title,
				'ACCESS_CODE' => $destCodesList
			]
		);
		if ($result->isSuccess())
		{
			$id = $result->getId();
		}
	}
	if ($result->isSuccess())
	{
		$responsePage = static::getList(
			AvatarMaskItemTable::query()
				->setFilter([
					'=ID' => $id
				])
			,
			(new PageNavigation('justBuffNav'))->setPageSize(1),
			$currentUser
		);
		if (($groupedItems = $responsePage->getItems())
			&& ($itemsFromOneGroup = reset($groupedItems))
			&& isset($itemsFromOneGroup['items'])
			&& ($itemData = reset($itemsFromOneGroup['items']))
		)
		{
			$result = $this->checkEditability($id, $currentUser);
			if ($result->isSuccess())
			{
				['item' => $item] = $result->getData();
				$itemData['accessCode'] = MainUIEntitySelectorConverter::convertFromFinderCodes($item->getAccessCode());
			}
			return ResponseAjaxJson::createSuccess(
				$itemData
			);
		}
	}

	return ResponseAjaxJson::createError($result->getErrorCollection());
}