- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/lib/discount/userconditioncontrol.php
- Класс: BitrixMainDiscountUserConditionControl
- Вызов: UserConditionControl::generateOrderConditions
static function generateOrderConditions(array $oneCondition, array $params, array $control, $values)
{
$result = '';
$logic = static::SearchLogic($values['logic'], $control['LOGIC']);
if (!empty($logic['OP'][$control['MULTIPLE']]))
{
$joinOperator = '';
$multi = false;
if (isset($control['JS_VALUE']['multiple']) && $control['JS_VALUE']['multiple'] == 'Y')
{
$multi = true;
$joinOperator = ($logic['MULTI_SEP'] ?? ' && ');
}
$field = $params['ORDER'].'[''.$control['FIELD'].'']';
switch ($control['FIELD_TYPE'])
{
case 'int':
case 'double':
if (!$multi)
{
$result = str_replace(
array('#FIELD#', '#VALUE#'),
array($field, $values['value']),
$logic['OP'][$control['MULTIPLE']]
);
}
else
{
$list = array();
foreach ($values['value'] as $item)
{
$list[] = str_replace(
array('#FIELD#', '#VALUE#'),
array($field, $item),
$logic['OP'][$control['MULTIPLE']]
);
}
$result = '(('.implode(')'.$joinOperator.'(', $list).'))';
unset($list, $item);
}
break;
case 'char':
case 'string':
case 'text':
if (!$multi)
{
$result = str_replace(
array('#FIELD#', '#VALUE#'),
array($field, '"'.EscapePHPString($values['value']).'"'),
$logic['OP'][$control['MULTIPLE']]
);
}
else
{
$list = array();
foreach ($values['value'] as $item)
{
$list[] = str_replace(
array('#FIELD#', '#VALUE#'),
array($field, '"'.EscapePHPString($item).'"'),
$logic['OP'][$control['MULTIPLE']]
);
}
$result = '(('.implode(')'.$joinOperator.'(', $list).'))';
unset($list, $item);
}
break;
case 'date':
case 'datetime':
if (!$multi)
{
$result = str_replace(
array('#FIELD#', '#VALUE#'),
array($field, $values['value']),
$logic['OP'][$control['MULTIPLE']]
);
}
else
{
$list = array();
foreach ($values['value'] as $item)
{
$list[] = str_replace(
array('#FIELD#', '#VALUE#'),
array($field, $item),
$logic['OP'][$control['MULTIPLE']]
);
}
$result = '(('.implode(')'.$joinOperator.'(', $list).'))';
unset($list, $item);
}
break;
}
if ($result !== '')
$result = 'isset('.$field.') && '.$result;
}
return $result;
}