- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/webform/options/deps.php
- Класс: Bitrix\Crm\WebForm\Options\Deps
- Вызов: Deps::filterDependencies
static function filterDependencies(array $deps)
{
$dict = Dictionary::instance()->getDeps();
$actionTypes = array_column($dict['action']['types'], 'id');
$conditionEvents = array_column($dict['condition']['events'], 'id');
$conditionOperations = array_column($dict['condition']['operations'], 'id');
$conditionOperations[] = '<>';
$result = [];
foreach ($deps as $dep)
{
if (!is_array($dep))
{
continue;
}
$condition = $dep['condition'] ?? null;
$action = $dep['action'] ?? null;
if (!$condition || !$action)
{
continue;
}
// TODO: $condition['target'] check existed in fields
$condition['event'] = $condition['event'] ?? null;
if (!$condition['event'] || !in_array($condition['event'], $conditionEvents))
{
$condition['event'] = $conditionEvents[0];
}
$condition['operation'] = $condition['operation'] ?? null;
if (!$condition['operation'] || !in_array($condition['operation'], $conditionOperations))
{
$condition['operation'] = $conditionOperations[0];
}
$condition['value'] = $condition['value'] ?? null;
// TODO: $action['target'] check existed in fields
$action['type'] = $action['type'] ?? null;
if (!$action['type'] || !in_array($action['type'], $actionTypes))
{
$action['type'] = $actionTypes[0];
}
$action['value'] = $action['value'] ?? null;
$result[] = [
'condition' => $condition,
'action' => $action,
];
}
return $result;
}