• Модуль: landing
  • Путь к файлу: ~/bitrix/modules/landing/lib/source/selector.php
  • Класс: BitrixLandingSourceSelector
  • Вызов: Selector::prepareSourceParameters
protected function prepareSourceParameters($module, $parameters)
{
	if (empty($parameters) || !is_array($parameters))
	{
		return null;
	}

	if (!isset($parameters['SOURCE_ID']))
	{
		return null;
	}
	$parameters['SOURCE_ID'] = (string)$parameters['SOURCE_ID'];
	if ($parameters['SOURCE_ID'] === '')
	{
		return null;
	}

	if (!isset($parameters['TITLE']))
	{
		return null;
	}
	$parameters['TITLE'] = trim((string)$parameters['TITLE']);
	if ($parameters['TITLE'] === '')
	{
		return null;
	}

	$index = self::getSourceIndex($module, $parameters['SOURCE_ID']);
	$prepared = [];
	if (!preg_match('/^[a-z][a-z.]+:[A-Za-z][A-Za-z0-9]*$/', $index, $prepared))
	{
		return null;
	}

	$result = [
		'INDEX' => $index,
		'MODULE' => $module,
		'SOURCE_ID' => $parameters['SOURCE_ID'],
		'TITLE' => $parameters['TITLE']
	];

	if (!isset($parameters['TYPE']))
	{
		$parameters['TYPE'] = self::SOURCE_TYPE_COMPONENT;
	}
	$parameters['TYPE'] = (string)$parameters['TYPE'];
	if (
		$parameters['TYPE'] !== self::SOURCE_TYPE_COMPONENT
		&& $parameters['TYPE'] !== self::SOURCE_TYPE_PRESET
	)
	{
		return null;
	}

	$result['TYPE'] = $parameters['TYPE'];

	if (empty($parameters['SETTINGS']) || !is_array($parameters['SETTINGS']))
	{
		return null;
	}

	$result['SYSTEM_SETTINGS'] = $this->checkSystemSettings($parameters['SETTINGS']);

	$result['SETTINGS'] = [];

	$settings = null;
	switch ($parameters['TYPE'])
	{
		case self::SOURCE_TYPE_COMPONENT:
			$settings = $this->checkComponentSettings($parameters['SETTINGS']);
			break;
		case self::SOURCE_TYPE_PRESET:
			$settings = $this->checkPresetSettings($parameters['SETTINGS']);
			break;
	}
	if ($settings === null)
	{
		return null;
	}
	$result['SETTINGS'] = $settings;
	unset($settings);

	if (empty($parameters['DATA_SETTINGS']) || !is_array($parameters['DATA_SETTINGS']))
	{
		return null;
	}
	$settings = $this->checkDataSettings($parameters['DATA_SETTINGS']);
	if ($settings === null)
	{
		return null;
	}
	$result['DATA_SETTINGS'] = $settings;
	unset($settings);

	if (empty($parameters['DATA_LOADER']))
	{
		return null;
	}
	if (!is_string($parameters['DATA_LOADER'])
		|| !is_subclass_of($parameters['DATA_LOADER'], 'BitrixLandingSourceDataLoader'))
	{
		return null;
	}
	$result['DATA_LOADER'] = $parameters['DATA_LOADER'];

	$result['SOURCE_FILTER'] = [];
	if (!empty($parameters['SOURCE_FILTER']) && is_array($parameters['SOURCE_FILTER']))
	{
		$result['SOURCE_FILTER'] = $parameters['SOURCE_FILTER'];
	}

	return $result;
}