• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/call/conference.php
  • Класс: BitrixImCallConference
  • Вызов: Conference::getChangedFields
protected function getChangedFields(array $fields): array
{
	$result = [];

	if (isset($fields['TITLE']) && $fields['TITLE'] !== $this->chatName)
	{
		$result['TITLE'] = $fields['TITLE'];
	}

	if (isset($fields['VIDEOCONF']['PASSWORD']) && $fields['VIDEOCONF']['PASSWORD'] !== $this->getPassword())
	{
		$result['VIDEOCONF']['PASSWORD'] = $fields['VIDEOCONF']['PASSWORD'];
	}

	if (isset($fields['VIDEOCONF']['INVITATION']) && $fields['VIDEOCONF']['INVITATION'] !== $this->getInvitation())
	{
		$result['VIDEOCONF']['INVITATION'] = $fields['VIDEOCONF']['INVITATION'];
	}

	$newBroadcastMode = isset($fields['VIDEOCONF']['PRESENTERS']) && count($fields['VIDEOCONF']['PRESENTERS']) > 0;
	if ($this->isBroadcast() !== $newBroadcastMode)
	{
		$result['VIDEOCONF']['IS_BROADCAST'] = $newBroadcastMode === true ? 'Y' : 'N';
	}

	if ($newBroadcastMode)
	{
		$currentPresenters = $this->getPresentersList();
		$result['NEW_PRESENTERS'] = array_diff($fields['VIDEOCONF']['PRESENTERS'], $currentPresenters);
		$result['DELETED_PRESENTERS'] = array_diff($currentPresenters, $fields['VIDEOCONF']['PRESENTERS']);
	}

	if (isset($fields['USERS']))
	{
		$currentUsers = array_map(static function($user){
			return $user['id'];
		}, $this->users);

		$result['NEW_USERS'] = array_diff($fields['USERS'], $currentUsers);
		$result['DELETED_USERS'] = array_diff($currentUsers, $fields['USERS']);
	}

	return $result;
}