Dialog::loadRecentItems

  1. Bitrix24 API (v. 23.675.0)
  2. ui
  3. Dialog
  4. loadRecentItems
  • Модуль: ui
  • Путь к файлу: ~/bitrix/modules/ui/lib/entityselector/dialog.php
  • Класс: BitrixUIEntitySelectorDialog
  • Вызов: Dialog::loadRecentItems
private function loadRecentItems()
{
	foreach ($this->getEntities() as $entity)
	{
		$unloadedIds = [];
		$unavailableIds = [];
		$recentItems = $this->getRecentItems()->getEntityItems($entity->getId());
		foreach ($recentItems as $recentItem)
		{
			if (!$recentItem->isAvailable())
			{
				$unavailableIds[] = $recentItem->getId();
			}
			else if (!$recentItem->isLoaded())
			{
				$unloadedIds[] = $recentItem->getId();
			}
		}

		if (!empty($unloadedIds))
		{
			$availableItems = [];
			$items = $entity->getProvider()->getItems($unloadedIds);
			foreach ($items as $item)
			{
				if ($item instanceof Item)
				{
					$availableItems[$item->getId()] = $item;
				}
			}

			foreach ($unloadedIds as $unloadedId)
			{
				$item = $availableItems[$unloadedId] ?? null;
				if ($item && $item->isAvailableInRecentTab())
				{
					$this->addRecentItem($item);
				}
				else
				{
					$unavailableIds[] = $unloadedId;
				}
			}
		}

		if ($this->getContext() !== null && $this->shouldClearUnavailableItems() && !empty($unavailableIds))
		{
			EntityUsageTable::deleteByFilter([
				'=USER_ID' => $this->getCurrentUserId(),
				'=CONTEXT' => $this->getContext(),
				'=ENTITY_ID' => $entity->getId(),
				'@ITEM_ID' => $unavailableIds
			]);
		}
	}
}

Добавить комментарий