21 $couponFormat = COption::GetOptionString(
'support',
'SUPERTICKET_COUPON_FORMAT');
30 $slaID = array_key_exists(
'SLA_ID',
$arParams) ?
$arParams[
'SLA_ID'] : COption::GetOptionString(
"support",
'SUPERTICKET_DEFAULT_SLA');
31 $slaID = intval($slaID);
37 $DB->StartTransaction();
38 for (
$i = 0;
$i < 100; ++
$i)
40 $coupon = preg_replace_callback(
'|#|u',
array(
'CSupportSuperCoupon',
'_getrandsymbol'), $couponFormat);
52 if ($coupon !==
false)
58 'ACTIVE_FROM' =>
$arParams[
'ACTIVE_FROM'],
94 if (array_key_exists(
'TIMESTAMP_X',
$arFields))
99 if (array_key_exists(
'DATE_CREATE',
$arFields))
121 $strUpdate =
$DB->PrepareUpdate(
'b_ticket_supercoupons',
$arFields);
122 if ($strUpdate <>
'')
124 $strSql =
"UPDATE b_ticket_supercoupons SET $strUpdate WHERE ID=$ID";
125 $q =
$DB->Query($strSql);
126 $rows = intval($q->AffectedRowsCount());
149 $arLogFields =
false;
152 $curr = ConvertTimeStamp();
161 'ACTIVE_FROM' =>
false,
162 '<=ACTIVE_FROM' => $curr,
167 'ACTIVE_TO' =>
false,
168 '>=ACTIVE_TO' => $curr,
173 $DB->StartTransaction();
176 if ($arCoupon =
$rs->Fetch())
178 $countTickets = intval($arCoupon[
'COUNT_TICKETS']);
179 if ($countTickets > 0)
183 'COUNT_TICKETS' => $countTickets,
184 'TIMESTAMP_X' =>
$DB->GetNowFunction(),
186 'COUNT_USED' =>
'COUNT_USED + 1'
192 if ($aff_rows =
$DB->Update(
'b_ticket_supercoupons',
$arFields,
'WHERE ID=' . $arCoupon[
'ID']))
198 $arLogFields =
array(
199 '~TIMESTAMP_X' =>
$DB->GetNowFunction(),
200 'COUPON_ID' => $arCoupon[
'ID'],
201 'USER_ID' => ((isset(
$USER) && is_object(
$USER)) ?
$USER->GetID() :
false),
202 'SUCCESS' => $ret ?
'Y' :
'N',
203 'AFTER_COUNT' => $countTickets,
204 'SESSION_ID' => (array_key_exists(
'SESS_SESSION_ID', $_SESSION) ? $_SESSION[
'SESS_SESSION_ID'] :
false),
205 'GUEST_ID' => (array_key_exists(
'SESS_GUEST_ID', $_SESSION) ? $_SESSION[
'SESS_GUEST_ID'] :
false),
206 'AFFECTED_ROWS' => $aff_rows,
210 $arInsert =
$DB->PrepareInsert(
'b_ticket_supercoupons_log', $arLogFields);
212 "INSERT INTO b_ticket_supercoupons_log (".$arInsert[0].
") ".
213 "VALUES(".$arInsert[1].
")";
218 'COUPON_ID' => $arCoupon[
'ID'],
219 'DATE' => ConvertTimeStamp(
false,
'FULL'),
220 'USER_ID' => ((isset(
$USER) && is_object(
$USER)) ?
$USER->GetID() : -1),
221 'SESSION_ID' => (array_key_exists(
'SESS_SESSION_ID', $_SESSION) ? $_SESSION[
'SESS_SESSION_ID'] : -1),
222 'GUEST_ID' => (array_key_exists(
'SESS_GUEST_ID', $_SESSION) ? $_SESSION[
'SESS_GUEST_ID'] : -1),
226 while ($arEvent = $rsEvents->Fetch())
234 $e->Send(
'TICKET_GENERATE_SUPERCOUPON',
SITE_ID, $arMail);
241 while ($arEvent = $rsEvents->Fetch())
254 'TABLE_ALIAS' =>
'C',
255 'FIELD_NAME' =>
'C.ID',
256 'FIELD_TYPE' =>
'int',
260 'TABLE_ALIAS' =>
'C',
261 'FIELD_NAME' =>
'C.COUPON',
262 'FIELD_TYPE' =>
'string',
265 'COUNT_TICKETS' =>
array(
266 'TABLE_ALIAS' =>
'C',
267 'FIELD_NAME' =>
'C.COUNT_TICKETS',
268 'FIELD_TYPE' =>
'int',
271 'TIMESTAMP_X' =>
array(
272 'TABLE_ALIAS' =>
'C',
273 'FIELD_NAME' =>
'C.TIMESTAMP_X',
274 'FIELD_TYPE' =>
'datetime',
277 'DATE_CREATE' =>
array(
278 'TABLE_ALIAS' =>
'C',
279 'FIELD_NAME' =>
'C.DATE_CREATE',
280 'FIELD_TYPE' =>
'datetime',
283 'CREATED_USER_ID' =>
array(
284 'TABLE_ALIAS' =>
'C',
285 'FIELD_NAME' =>
'C.CREATED_USER_ID',
286 'FIELD_TYPE' =>
'int',
289 'UPDATED_USER_ID' =>
array(
290 'TABLE_ALIAS' =>
'C',
291 'FIELD_NAME' =>
'C.UPDATED_USER_ID',
292 'FIELD_TYPE' =>
'int',
296 'TABLE_ALIAS' =>
'C',
297 'FIELD_NAME' =>
'C.ACTIVE',
298 'FIELD_TYPE' =>
'string',
301 'ACTIVE_FROM' =>
array(
302 'TABLE_ALIAS' =>
'C',
303 'FIELD_NAME' =>
'C.ACTIVE_FROM',
304 'FIELD_TYPE' =>
'date',
307 'ACTIVE_TO' =>
array(
308 'TABLE_ALIAS' =>
'C',
309 'FIELD_NAME' =>
'C.ACTIVE_TO',
310 'FIELD_TYPE' =>
'date',
313 'COUNT_USED' =>
array(
314 'TABLE_ALIAS' =>
'C',
315 'FIELD_NAME' =>
'C.COUNT_USED',
316 'FIELD_TYPE' =>
'date',
320 'TABLE_ALIAS' =>
'S',
321 'FIELD_NAME' =>
'S.ID',
322 'FIELD_TYPE' =>
'int',
326 'TABLE_ALIAS' =>
'S',
327 'FIELD_NAME' =>
'S.NAME',
328 'FIELD_TYPE' =>
'string',
336 $where = $obQueryWhere->GetQuery(
$arFilter);
339 if (is_array($arOrder))
341 foreach ($arOrder as
$k => $v)
345 $v = mb_strtoupper($v);
359 $strQuery =
'SELECT C.ID, C.COUPON, C.COUNT_TICKETS, C.CREATED_USER_ID, C.UPDATED_USER_ID, C.ACTIVE ACTIVE, C.COUNT_USED COUNT_USED,
360 '.$DB->DateToCharFunction(
'C.TIMESTAMP_X').
' TIMESTAMP_X,
361 '.
$DB->DateToCharFunction(
'C.DATE_CREATE').
' DATE_CREATE,
362 '.
$DB->DateToCharFunction(
'C.ACTIVE_FROM',
'SHORT').
' ACTIVE_FROM,
363 '.
$DB->DateToCharFunction(
'C.ACTIVE_TO',
'SHORT').
' ACTIVE_TO,
364 UCR.LOGIN CREATED_LOGIN, UCR.NAME CREATED_FIRST_NAME, UCR.LAST_NAME CREATED_LAST_NAME,
365 UUP.LOGIN UPDATED_LOGIN, UUP.NAME UPDATED_FIRST_NAME, UUP.LAST_NAME UPDATED_LAST_NAME,
366 S.ID SLA_ID, S.NAME SLA_NAME
367 FROM b_ticket_supercoupons C
368 LEFT JOIN b_user UCR ON (C.CREATED_USER_ID IS NOT NULL AND C.CREATED_USER_ID = UCR.ID)
369 LEFT JOIN b_user UUP ON (C.CREATED_USER_ID IS NOT NULL AND C.UPDATED_USER_ID = UUP.ID)
370 LEFT JOIN b_ticket_sla S ON (C.SLA_ID IS NOT NULL AND C.SLA_ID = S.ID)
375 $strQuery .=
' WHERE ' . $where;
380 $strQuery .=
' ORDER BY ' .
$order;
383 return $DB->Query($strQuery);
392 $DB->Query(
'DELETE FROM b_ticket_supercoupons WHERE ID=' .
$ID);
401 'COUPON_ID' =>
array(
402 'TABLE_ALIAS' =>
'C',
403 'FIELD_NAME' =>
'C.ID',
404 'FIELD_TYPE' =>
'int',
410 'TABLE_ALIAS' =>
'L',
411 'FIELD_NAME' =>
'L.COUPON',
412 'FIELD_TYPE' =>
'string',
416 'TABLE_ALIAS' =>
'L',
417 'FIELD_NAME' =>
'L.SUCCESS',
418 'FIELD_TYPE' =>
'string',
422 'TABLE_ALIAS' =>
'L',
423 'FIELD_NAME' =>
'L.USER_ID',
424 'FIELD_TYPE' =>
'int',
427 'TIMESTAMP_X' =>
array(
428 'TABLE_ALIAS' =>
'L',
429 'FIELD_NAME' =>
'L.TIMESTAMP_X',
430 'FIELD_TYPE' =>
'datetime',
438 $where = $obQueryWhere->GetQuery(
$arFilter);
441 if (is_array($arOrder))
443 foreach ($arOrder as
$k => $v)
447 $v = mb_strtoupper($v);
461 $strQuery =
"SELECT C.ID COUPON_ID, L.COUPON COUPON,
462 L.USER_ID USER_ID, L.SUCCESS SUCCESS, L.AFTER_COUNT AFTER_COUNT,
463 L.SESSION_ID SESSION_ID, L.GUEST_ID GUEST_ID,
464 U.LOGIN LOGIN, U.NAME FIRST_NAME, U.LAST_NAME LAST_NAME,
465 ".$DB->DateToCharFunction(
'L.TIMESTAMP_X').
" TIMESTAMP_X
466 FROM b_ticket_supercoupons_log L
467 LEFT JOIN b_ticket_supercoupons C ON (L.COUPON_ID = C.ID)
468 LEFT JOIN b_user U ON (L.USER_ID IS NOT NULL AND L.USER_ID = U.ID)";
472 $strQuery .=
' WHERE ' . $where;
477 $strQuery .=
' ORDER BY ' .
$order;
480 return $DB->Query($strQuery);
497 $dateElementsFrom = explode(
".",
$arFields[
"ACTIVE_FROM"]);
498 $_activeFrom = mktime(0,0,0, $dateElementsFrom[1], $dateElementsFrom[0], $dateElementsFrom[2]);
500 $dateElementsTo = explode(
".",
$arFields[
"ACTIVE_TO"]);
501 $_activeTo = mktime(0,0,0, $dateElementsTo[1], $dateElementsTo[0], $dateElementsTo[2]);
502 if ($_activeTo <= $_activeFrom)
503 $aMsg[] =
array(
"id"=>
"ACTIVE_TO",
"text"=>
GetMessage(
"SUP_ST_ERR_DATE_INTERVAL"));
508 $aMsg[] =
array(
"id"=>
"ACTIVE",
"text"=>
GetMessage(
"SUP_ST_ERR_ACTIVE"));
513 $aMsg[] =
array(
"id"=>
"SLA_ID",
"text"=>
GetMessage(
"SUP_ST_ERR_SLA_ID"));
519 $GLOBALS[
"APPLICATION"]->ThrowException($e);
static GetLogList($arOrder=array(), $arFilter=array())
static _getrandsymbol($x)
static __CheckFields($arFields)
static UseCoupon($coupon)
static Update($ID, $arFields)
static GetList($arOrder=array(), $arFilter=array())
static Generate($arParams=array())
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
ExecuteModuleEventEx($arEvent, $arParams=[])
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
GetMessage($name, $aReplace=null)
CheckDateTime($datetime, $format=false)
randString($pass_len=10, $pass_chars=false)
$GLOBALS['_____370096793']