- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/businessvalue.php
- Класс: BitrixSaleBusinessValue
- Вызов: BusinessValue::addConsumerByRef
static function addConsumerByRef($consumerKey, array &$consumer) // by ref!
{
if (isset(self::$consumers[$consumerKey]) || $consumerKey == BusinessValueTable::COMMON_CONSUMER_KEY)
throw new SystemException('duplicate consumer key '.$consumerKey);
// // TODO remove hack to paysytem
// if (substr($consumerKey, 0, 10) == 'PAYSYSTEM_')
// $consumer['PROVIDERS'] = array('VALUE', 'COMPANY', 'ORDER', 'USER', 'PROPERTY', 'PAYMENT');
if (isset($consumer['CODES']) && is_array($consumer['CODES']))
{
$codes =& self::$commonConsumer['CODES'];
foreach ($consumer['CODES'] as $codeKey => $code)
{
$isCommon = !($code['NOT_COMMON'] ?? false);
if ($codeKey && is_array($code) && $isCommon)
{
$codeName = ($code['NAME'] ?? null) ?: $codeKey;
if ($c =& $codes[$codeKey])
{
if (empty($c['GROUP']) && !empty($code['GROUP']))
{
$c['GROUP'] = $code['GROUP'];
}
if (!isset($c['SORT']) && isset($code['SORT']))
{
$c['SORT'] = $code['SORT'];
}
if (
isset($c['DEFAULT'], $code['DEFAULT'])
&& !is_array($c['DEFAULT'])
&& is_array($code['DEFAULT'])
)
{
$c['DEFAULT'] = $code['DEFAULT'];
}
if (isset($code['DOMAINS']) && is_array($code['DOMAINS']))
{
$c['DOMAINS'] = isset($c['DOMAINS']) && is_array($c['DOMAINS'])
? array_intersect($c['DOMAINS'], $code['DOMAINS'])
: $code['DOMAINS']
;
}
if (!isset($code['PROVIDERS']) || !is_array($code['PROVIDERS']))
{
$code['PROVIDERS'] = $consumer['PROVIDERS'] ?? [];
}
if (is_array($code['PROVIDERS']))
{
$c['PROVIDERS'] = isset($c['PROVIDERS']) && is_array($c['PROVIDERS'])
? array_intersect($c['PROVIDERS'], $code['PROVIDERS'])
: $code['PROVIDERS']
;
}
$c['NAMES'][$codeName] = 1;
// if (! $c['NAME'] && $code['NAME'])
// $c['NAME'] = $code['NAME'];
}
else
{
$c = $code;
$c['PROVIDERS'] = $code['PROVIDERS'] ?? $consumer['PROVIDERS'] ?? [];
$c['NAMES'][$codeName] = 1;
}
$c['CONSUMERS'] []= !empty($consumer['NAME']) ? $consumer['NAME'] : $consumerKey;
}
}
self::sortArray($consumer['CODES']);
}
self::$consumers[$consumerKey] = & $consumer; // by ref!
}