• Модуль: salescenter
  • Путь к файлу: ~/bitrix/modules/salescenter/lib/controller/page.php
  • Класс: BitrixSalesCenterControllerPage
  • Вызов: Page::getList
public function getList()
{
	$hiddenLandingIds = $landingIds = $pages = [];

	// get existing pages that are not hidden
	$pageList = PageTable::getList(['order' => ['SORT' => 'ASC']]);
	while($page = $pageList->fetchObject())
	{
		if($page->getLandingId() > 0 && $page->isHidden())
		{
			$hiddenLandingIds[] = $page->getLandingId();
		}
		elseif(!$page->isHidden())
		{
			if(isset($landingIds[$page->getLandingId()]))
			{
				continue;
			}
			$pages[$page->getId()] = $page;
			if($page->getLandingId() > 0)
			{
				$landingIds[$page->getLandingId()] = $page->getId();
			}
		}
	}

	// load all landings from connected site and all added manually landings from any site
	$landingManager = LandingManager::getInstance()
		->setHiddenLandingIds($hiddenLandingIds)
		->setAdditionalLandingIds(array_keys($landingIds));
	$landings = $landingManager->getLandings();
	foreach($landingIds as $landingId => $pageId)
	{
		$isFound = false;
		foreach($landings as $landingPage)
		{
			if($landingPage['ID'] == $landingId)
			{
				$isFound = true;
				break;
			}
		}
		if(!$isFound)
		{
			unset($pages[$landingIds[$landingId]]);
		}
	}

	$orderLandingId = false;
	$orderPublicUrlInfo = $landingManager->getOrderPublicUrlInfo();
	if($orderPublicUrlInfo)
	{
		$orderLandingId = $orderPublicUrlInfo['landingId'];
	}

	foreach($landings as $landingPage)
	{
		// create rows for new landings from connected site
		if(!isset($landingIds[$landingPage['ID']]))
		{
			// skip order system page if it wasn't added on purpose
			if($orderLandingId && $landingPage['ID'] == $orderLandingId)
			{
				continue;
			}
			$page = new BitrixSalesCenterModelPage();
			$page->setLandingId($landingPage['ID']);
			$page->save();
			$pages[$page->getId()] = $page;
		}
	}

	$pageParams = [];
	$paramList = PageParamTable::getList([
		'filter' => [
			'=PAGE_ID' => array_keys($pages),
		],
	]);
	while($param = $paramList->fetch())
	{
		if(!isset($pageParams[$param['PAGE_ID']]))
		{
			$pageParams[$param['PAGE_ID']] = [];
		}
		$pageParams[$param['PAGE_ID']][] = $param;
	}
	foreach($pageParams as $pageId => $params)
	{
		$pages[$pageId]->setParams($params);
	}

	return $pages;
}