• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/V2/Chat.php
  • Класс: BitrixImV2Chat
  • Вызов: Chat::setManagers
public function setManagers(array $managerIds): self
{
	if (!$this->getChatId() || empty($managerIds) || !count($managerIds))
	{
		return $this;
	}

	$managerIds = filter_var(
		$managerIds,
		FILTER_VALIDATE_INT,
		[
			'flags' => FILTER_REQUIRE_ARRAY,
			'options' => ['min_range' => 1],
		]
	);

	foreach ($managerIds as $key => $managerId)
	{
		if (!is_int($managerId))
		{
			unset($managerIds[$key]);
		}
	}

	$relations = $this->getRelations([
		'CHAT_ID' => $this->getChatId(),
	]);

	$relationIds = [];
	$unsetManagerIds = [];
	/** @var Relation $relation */
	foreach ($relations as $relation)
	{
		if (in_array($relation->getUserId(), $managerIds, true))
		{
			$relationIds[] = $relation->getPrimaryId();
		}
		elseif ($relation->getManager())
		{
			$unsetManagerIds[] = $relation->getPrimaryId();
		}

	}

	if ($unsetManagerIds)
	{
		RelationTable::updateMulti(
			$unsetManagerIds,
			[
				'MANAGER' => 'N',
			]
		);
	}

	RelationTable::updateMulti(
		$relationIds,
		[
			'MANAGER' => 'Y',
		]
	);

	return $this;
}