• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/V2/Link/Calendar/CalendarService.php
  • Класс: BitrixImV2LinkCalendarCalendarService
  • Вызов: CalendarService::prepareDataForCreateSlider
public function prepareDataForCreateSlider(Chat $chat, ?Message $message = null): Result
{
	$result = new Result();

	if (!Loader::includeModule('calendar'))
	{
		return $result->addError(new CalendarError(CalendarError::CALENDAR_NOT_INSTALLED));
	}

	$chat->setContext($this->context);

	$randomPostfix = mt_rand() & 1000; // get random number from 0 to 1000
	$data['params']['sliderId'] = "im:chat{$chat->getChatId()}{$randomPostfix}";

	$userIds = $chat->getRelations(
		[
			'SELECT' => ['ID', 'USER_ID', 'CHAT_ID'],
			'FILTER' => ['ACTIVE' => true, 'ONLY_INTERNAL_TYPE' => true],
			'LIMIT' => 50,
		]
	)->getUsers()->filterExtranet()->getIds();
	$users = array_values(array_map(static fn($item) => ['id' => (int)$item, 'entityId' => 'user'], $userIds));
	$data['params']['participantsEntityList'] = $users;

	if (isset($message))
	{
		$message->setContext($this->context);
		$data['params']['entryDescription'] = CIMShare::PrepareText([
			'CHAT_ID' => $chat->getChatId(),
			'MESSAGE_ID' => $message->getMessageId(),
			'MESSAGE_TYPE' => $chat->getType(),
			'MESSAGE' => $message->getMessage(),
			'AUTHOR_ID' => $message->getAuthorId(),
			'FILES' => $this->getFilesForPrepareText($message)
		]);
	}

	return $result->setResult($data);
}