• Модуль: landing
  • Путь к файлу: ~/bitrix/modules/landing/lib/publicaction/landing.php
  • Класс: BitrixLandingPublicActionLanding
  • Вызов: Landing::getList
static function getList(array $params = []): PublicActionResult
{
	$result = new PublicActionResult();
	$params = $result->sanitizeKeys($params);
	$landingFake = LandingCore::createInstance(0);
	$getPreview = false;
	$getUrls = false;
	$checkArea = false;

	if ($params['filter']['SITE_ID'] ?? null)
	{
		$siteId = $params['filter']['SITE_ID'];
		if (is_array($siteId))
		{
			$siteId = array_shift($siteId);
		}
		$params['filter'][] = [
			'LOGIC' => 'OR',
			['FOLDER_ID' => null],
			['!FOLDER_ID' => Folder::getFolderIdsForSite($siteId, ['=DELETED' => 'Y']) ?: [-1]]
		];
	}

	if (isset($params['get_preview']))
	{
		$getPreview = !!$params['get_preview'];
		unset($params['get_preview']);
	}

	if (isset($params['get_urls']))
	{
		$getUrls = !!$params['get_urls'];
		unset($params['get_urls']);
	}

	if (isset($params['check_area']))
	{
		$checkArea = !!$params['check_area'];
		unset($params['check_area']);
	}

	if (isset($params['filter']['CHECK_PERMISSIONS']))
	{
		unset($params['filter']['CHECK_PERMISSIONS']);
	}

	$data = [];
	$rows = [];
	$publicUrls = [];

	$params['select'] = $params['select'] ?? ['*'];
	$params['select']['DOMAIN_ID'] = 'SITE.DOMAIN_ID';
	$res = LandingCore::getList($params);
	while ($row = $res->fetch())
	{
		$rows[$row['ID']] = $row;
	}

	if ($getPreview || $getUrls)
	{
		$publicUrls = LandingCore::createInstance(0)->getPublicUrl(array_keys($rows));
	}

	foreach ($rows as $row)
	{
		if (isset($row['DATE_CREATE']))
		{
			$row['DATE_CREATE'] = (string) $row['DATE_CREATE'];
		}
		if (isset($row['DATE_MODIFY']))
		{
			$row['DATE_MODIFY'] = (string) $row['DATE_MODIFY'];
		}
		if ($getUrls && isset($row['ID']))
		{
			$row['PUBLIC_URL'] = $publicUrls[$row['ID']];
		}
		if ($getPreview && isset($row['ID']))
		{
			if ($row['DOMAIN_ID'] == 0)
			{
				BitrixLandingHook::setEditMode(true);
			}
			$row['PREVIEW'] = $landingFake->getPreview(
				$row['ID'],
				$row['DOMAIN_ID'] == 0,
				$publicUrls[$row['ID']]
			);
		}
		if ($checkArea && isset($row['ID']))
		{
			$data[$row['ID']] = $row;
		}
		else
		{
			$checkArea = false;
			$data[] = $row;
		}
	}

	// landing is area?
	if ($checkArea)
	{
		$areas = TemplateRef::landingIsArea(
			array_keys($data)
		);
		foreach ($areas as $lid => $isA)
		{
			$data[$lid]['IS_AREA'] = $isA;
		}
	}

	$result->setResult(array_values($data));

	return $result;
}