- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/discountbase.php
- Класс: BitrixSaleDiscountBase
- Вызов: DiscountBase::loadDiscountList
protected function loadDiscountList()
{
if (empty($this->discountIds))
return;
$couponList = DiscountCouponsManager::getForApply(
array('MODULE_ID' => 'sale', 'DISCOUNT_ID' => $this->discountIds),
array(),
true
);
$this->saleDiscountCacheKey = md5('D'.implode('_', $this->discountIds));
if (!empty($couponList))
$this->saleDiscountCacheKey .= '-C'.implode('_', array_keys($couponList));
$this->saleDiscountCacheKey .= '-MF'.implode('_', $this->executeModuleFilter);
if (!isset($this->saleDiscountCache[$this->saleDiscountCacheKey]))
{
$currentList = DiscountRuntimeCacheDiscountCache::getInstance()->getDiscounts(
$this->discountIds,
$this->executeModuleFilter,
$this->getSiteId(),
$couponList?: array()
);
if (!empty($currentList))
{
$evalCode = '';
$executeFields = $this->getExecuteFieldList();
foreach (array_keys($currentList) as $index)
{
$discount = $currentList[$index];
if (!$this->loadDiscountModules($discount['MODULES']))
{
unset($currentList[$index]);
continue;
}
foreach ($executeFields as $field)
{
if (!empty($discount[$field]))
$evalCode .= '$currentList['.$index.'][''.self::getExecuteFieldName($field).''] = '.$discount[$field].";n";
}
}
unset($field, $code, $discount, $index, $executeFields);
if ($evalCode !== '')
{
if (PHP_MAJOR_VERSION >= 7)
{
try
{
eval($evalCode);
}
catch (ParseError $e)
{
$this->showAdminError();
}
}
else
{
eval($evalCode);
}
}
unset($evalCode);
}
$this->saleDiscountCache[$this->saleDiscountCacheKey] = $currentList;
}
unset($couponList);
}