• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/controller/timeline/item.php
  • Класс: Bitrix\Crm\Controller\Timeline\Item
  • Вызов: Item::loadAction
public function loadAction(
	int $ownerTypeId,
	int $ownerId,
	string $context = Service\Timeline\Context::DESKTOP,
	array $activityIds = [],
	array $historyIds = []
): array
{
	$permissions = Container::getInstance()->getUserPermissions();
	if (!$permissions->checkReadPermissions($ownerTypeId, $ownerId))
	{
		$this->addError(\Bitrix\Crm\Controller\ErrorCode::getAccessDeniedError());

		return [];
	}

	$identifier = new ItemIdentifier($ownerTypeId, $ownerId);

	$allowedContexts = [
		Service\Timeline\Context::DESKTOP,
		Service\Timeline\Context::MOBILE,
	];
	$context = in_array($context, $allowedContexts) ? $context : Service\Timeline\Context::DESKTOP;
	$context = new Service\Timeline\Context($identifier, $context);

	$repository = new Service\Timeline\Repository($context);

	$activityIds = array_map(function ($id) {
		$id = explode('_', $id);
		return $id[1] && is_numeric($id[1]) ? (int)$id[1] : null;
	}, $activityIds);

	$activityIds = array_filter($activityIds);

	$historyIds = array_map('intval', $historyIds);

	$result = [];

	if (!empty($activityIds))
	{
		$query = (new Service\Timeline\Repository\Query())
			->setFilter([ '@ID' => $activityIds ])
			->setLimit(100);
		$scheduled = $repository->getScheduledItems($query)->getItems();
		foreach ($scheduled as $item)
		{
			$result[$item->getModel()->getId()] = $item;
		}
	}

	if (!empty($historyIds))
	{
		$query = (new Service\Timeline\Repository\Query())
			->setFilter([ 'ID' => $historyIds ])
			->setLimit(100);

		$history = $repository->getHistoryItemsPage($query)->getItems();
		foreach ($history as $item)
		{
			$result[$item->getModel()->getId()] = $item;
		}
	}

	return $result;
}