- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/lib/integration/ui/entityselector/projectprovider.php
- Класс: BitrixSocialnetworkIntegrationUIEntitySelectorProjectProvider
- Вызов: ProjectProvider::fillRecentTab
private function fillRecentTab(Dialog $dialog, EO_Workgroup_Collection $projects): void
{
$maxProjectsInRecentTab = 30;
$recentItems = $dialog->getRecentItems()->getEntityItems('project');
if (count($recentItems) < $maxProjectsInRecentTab)
{
$limit = $maxProjectsInRecentTab - count($recentItems);
$recentGlobalItems = $dialog->getGlobalRecentItems()->getEntityItems('project');
foreach ($recentGlobalItems as $recentGlobalItem)
{
if ($limit <= 0)
{
break;
}
if (!isset($recentItems[$recentGlobalItem->getId()]) && $recentGlobalItem->isLoaded())
{
$dialog->getRecentItems()->add($recentGlobalItem);
$limit--;
}
}
$recentItems = $dialog->getRecentItems()->getEntityItems('project');
}
if (count($recentItems) < $maxProjectsInRecentTab)
{
$recentIds = array_map('intval', array_keys($recentItems));
$dialog->addRecentItems(
$this->getProjectItems([
'!projectId' => $recentIds,
'viewed' => true,
'order' => ['VIEWED_PROJECT.DATE_VIEW' => 'desc'],
'limit' => $maxProjectsInRecentTab - count($recentItems)
])
);
$recentItems = $dialog->getRecentItems()->getEntityItems('project');
}
if (count($recentItems) < $maxProjectsInRecentTab)
{
$limit = $maxProjectsInRecentTab - count($recentItems);
foreach ($projects as $project)
{
if ($limit <= 0)
{
break;
}
if (isset($recentItems[$project->getId()]))
{
continue;
}
$dialog->getRecentItems()->add(
new RecentItem([
'id' => $project->getId(),
'entityId' => 'project',
'loaded' => true,
])
);
$limit--;
}
}
}