• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/V2/Controller/Chat.php
  • Класс: BitrixImV2ControllerChat
  • Вызов: Chat::updateAction
public function updateAction(BitrixImV2Chat $chat, array $fields)
{
	$currentUser = $this->getCurrentUser();
	$userId = isset($currentUser) ? $currentUser->getId() : null;
	$relation = $chat->getSelfRelation();

	$changeSettings = false;
	$changeUI = false;
	if (!($chat instanceof PrivateChat))
	{
		if ($chat->getAuthorId() === (int)$userId)
		{
			$changeSettings = true;
			$changeUI = true;
		}
		elseif ($relation->getManager())
		{
			if ($chat->getManageSettings() === BitrixImV2Chat::MANAGE_RIGHTS_MANAGERS)
			{
				$changeSettings = true;
			}
			if ($chat->getManageUI() === BitrixImV2Chat::MANAGE_RIGHTS_MANAGERS)
			{
				$changeUI = true;
			}
		}
		else
		{
			if ($chat->getManageUI() === BitrixImV2Chat::MANAGE_RIGHTS_MEMBER)
			{
				$changeUI = true;
			}
		}
	}

	if ($changeSettings)
	{
		if (isset($fields['entityType']))
		{
			$chat->setEntityType($fields['entityType']);
		}
		if (isset($fields['entityId']))
		{
			$chat->setEntityId($fields['entityId']);
		}
		if (isset($fields['entityData1']))
		{
			$chat->setEntityData1($fields['entityData1']);
		}
		if (isset($fields['entityData2']))
		{
			$chat->setEntityData2($fields['entityData2']);
		}
		if (isset($fields['entityData3']))
		{
			$chat->setEntityData3($fields['entityData3']);
		}
		if (isset($fields['ownerId']))
		{
			$chat->setAuthorId($fields['ownerId']);
		}
		if (isset($fields['manageUsers']))
		{
			$chat->setManageUsers($fields['manageUsers']);
		}
		if (isset($fields['manageUI']))
		{
			$chat->setManageUI($fields['manageUI']);
		}
		if (isset($fields['manageSettings']))
		{
			$chat->setManageSettings($fields['manageSettings']);
		}
		if (isset($fields['canPost']))
		{
			$chat->setCanPost($fields['canPost']);
		}
		if (isset($fields['managers']))
		{
			$chat->setManagers($fields['managers']);
		}
	}

	if ($changeUI)
	{
		if (isset($fields['title']))
		{
			$chat->setTitle($fields['title']);
		}
		if (isset($fields['description']))
		{
			$chat->setDescription($fields['description']);
		}
		if (isset($fields['color']))
		{
			$chat->setColor($fields['color']);
		}
		if (isset($fields['avatar']) && $fields['avatar'])
		{
			if (is_numeric((string)$fields['avatar']))
			{
				$this->setAvatarIdAction($chat, $fields['avatar']);
			}
			else
			{
				$this->setAvatarAction($chat, $fields['avatar']);
			}
		}
	}

	$result = $chat->save();

	if (!$result->isSuccess())
	{
		return $this->convertKeysToCamelCase($result->getErrors());
	}

	return $result->isSuccess();
}