Deps::filterDependencies

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. Deps
  4. filterDependencies
  • Модуль: 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;
}

Добавить комментарий