- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/discountcouponsmanagerbase.php
- Класс: BitrixSaleDiscountCouponsManagerBase
- Вызов: DiscountCouponsManagerBase::getData
static function getData($coupon, $checkCoupon = true)
{
$currentTime = new MainTypeDateTime();
$currentTimestamp = $currentTime->getTimestamp();
self::initUseDiscount();
$coupon = trim((string)$coupon);
if ($coupon === '')
return false;
$checkCoupon = ($checkCoupon === true);
$result = static::getEmptyCouponFields($coupon);
$resultKeyList = array(
'ID', 'COUPON', 'DISCOUNT_ID', 'TYPE', 'ACTIVE', 'DISCOUNT_NAME',
'DISCOUNT_ACTIVE', 'DISCOUNT_ACTIVE_FROM', 'DISCOUNT_ACTIVE_TO'
);
$couponIterator = InternalsDiscountCouponTable::getList(array(
'select' => array(
'ID', 'COUPON', 'DISCOUNT_ID', 'TYPE', 'ACTIVE',
'USER_ID', 'MAX_USE', 'USE_COUNT', 'ACTIVE_FROM', 'ACTIVE_TO',
'DISCOUNT_NAME' => 'DISCOUNT.NAME', 'DISCOUNT_ACTIVE' => 'DISCOUNT.ACTIVE',
'DISCOUNT_ACTIVE_FROM' => 'DISCOUNT.ACTIVE_FROM', 'DISCOUNT_ACTIVE_TO' => 'DISCOUNT.ACTIVE_TO'
),
'filter' => array('=COUPON' => $coupon)
));
if ($existCoupon = $couponIterator->fetch())
{
$result['MODE'] = self::COUPON_MODE_FULL;
$result['MODULE'] = 'sale';
$result['MODULE_ID'] = 'sale';
$checkCode = self::checkBaseData($existCoupon, self::COUPON_CHECK_OK);
foreach ($resultKeyList as $resultKey)
$result[$resultKey] = $existCoupon[$resultKey];
unset($resultKey);
if ($checkCoupon)
{
$checkCode = self::checkFullData($existCoupon, $result['MODE'], $checkCode, $currentTimestamp);
self::fillUserInfo($result, $existCoupon, $checkCode);
}
$result['STATUS'] = ($checkCode == self::COUPON_CHECK_OK ? self::STATUS_ENTERED : self::STATUS_FREEZE);
$result['CHECK_CODE'] = $checkCode;
unset($checkCode);
}
elseif (!self::$onlySaleDiscount && !empty(self::$couponProviders))
{
foreach (self::$couponProviders as $provider)
{
$existCoupon = call_user_func_array(
$provider['getData'],
array(
$coupon
)
);
if (!empty($existCoupon) && is_array($existCoupon))
{
$result['MODE'] = $provider['mode'];
$result['MODULE'] = $provider['module'];
$result['MODULE_ID'] = $provider['module'];
$checkCode = self::checkBaseData($existCoupon, self::COUPON_CHECK_OK);
foreach ($resultKeyList as $resultKey)
$result[$resultKey] = $existCoupon[$resultKey];
unset($resultKey);
if ($checkCoupon)
{
$checkCode = self::checkFullData($existCoupon, $result['MODE'], $checkCode, $currentTimestamp);
self::fillUserInfo($result, $existCoupon, $checkCode);
}
$result['STATUS'] = ($checkCode == self::COUPON_CHECK_OK ? self::STATUS_ENTERED : self::STATUS_FREEZE);
$result['CHECK_CODE'] = $checkCode;
unset($checkCode);
break;
}
}
unset($provider);
}
return $result;
}