- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/internals/discountcoupon.php
- Класс: BitrixSaleInternalsDiscountCouponTable
- Вызов: DiscountCouponTable::generateCoupon
static function generateCoupon($check = false)
{
static $eventExists = null;
$check = ($check === true);
if ($eventExists === true || $eventExists === null)
{
$event = new MainEvent('sale', self::EVENT_ON_GENERATE_COUPON, array('CHECK' => $check));
$event->send();
$resultList = $event->getResults();
if (!empty($resultList) && is_array($resultList))
{
/** @var MainEventResult $eventResult */
foreach ($resultList as &$eventResult)
{
if ($eventResult->getType() != MainEventResult::SUCCESS)
continue;
$eventExists = true;
$result = $eventResult->getParameters();
if (!empty($result) && is_string($result))
return $result;
}
unset($eventResult);
}
if ($eventExists === null)
$eventExists = false;
}
$allchars = 'ABCDEFGHIJKLNMOPQRSTUVWXYZ0123456789';
$charsLen = mb_strlen($allchars) - 1;
do
{
$resultCorrect = true;
$partOne = '';
$partTwo = '';
for ($i = 0; $i < 5; $i++)
$partOne .= mb_substr($allchars, rand(0, $charsLen), 1);
for ($i = 0; $i < 7; $i++)
$partTwo .= mb_substr($allchars, rand(0, $charsLen), 1);
$result = 'SL-'.$partOne.'-'.$partTwo;
if ($check)
{
$existCoupon = SaleDiscountCouponsManager::isExist($result);
$resultCorrect = empty($existCoupon);
}
} while (!$resultCorrect);
return $result;
}