- Модуль: 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;
}