- Модуль: bizproc
- Путь к файлу: ~/bitrix/modules/bizproc/lib/automation/engine/conditiongroup.php
- Класс: BitrixBizprocAutomationEngineConditionGroup
- Вызов: ConditionGroup::convertBizprocActivity
static function convertBizprocActivity(array &$activity, array $documentType, Template $template)
{
$conditionGroup = false;
if (
count($activity['Children']) === 2
&& $activity['Children'][0]['Type'] === 'IfElseBranchActivity'
&& $activity['Children'][1]['Type'] === 'IfElseBranchActivity'
&& (
!empty($activity['Children'][0]['Properties']['fieldcondition'])
||
!empty($activity['Children'][0]['Properties']['mixedcondition'])
)
&& !empty($activity['Children'][1]['Properties']['truecondition'])
&& count($activity['Children'][0]['Children']) === 1
)
{
$conditionGroup = new static();
$conditionGroup->setType(static::TYPE_MIXED);
$conditionGroup->setActivityNames($activity);
$conditionGroup->setActivated(CBPHelper::getBool($activity['Activated'] ?? true));
$isMixed = isset($activity['Children'][0]['Properties']['mixedcondition']);
$bizprocConditions = $activity['Children'][0]['Properties'][$isMixed?'mixedcondition':'fieldcondition'];
foreach ($bizprocConditions as $index => $condition)
{
if (!$isMixed)
{
$condition = self::convertDocumentCondition($condition);
}
$property = $template->getProperty($condition['object'], $condition['field']);
if ($property && $property['Type'] === 'user')
{
$condition['value'] = CBPHelper::UsersArrayToString(
$condition['value'],
null,
$documentType
);
}
$conditionItem = new Condition(array(
'object' => $condition['object'],
'field' => $condition['field'],
'operator' => $condition['operator'],
'value' => self::convertExpressions($condition['value'], $documentType),
));
$nextCondition = isset($bizprocConditions[$index + 1]) ? $bizprocConditions[$index + 1] : null;
$joiner = ($nextCondition && (!empty($nextCondition[3]) || !empty($nextCondition['joiner'])))
? static::JOINER_OR : static::JOINER_AND;
$conditionGroup->addItem($conditionItem, $joiner);
}
$activity = $activity['Children'][0]['Children'][0];
}
return $conditionGroup;
}