20 if ( ((
string)
$val ===
'') || (
$val ===
'NOT_REF') )
25 switch (strtoupper(
$key))
34 $arSqlSearch[] =
'S.DATE_UPDATE>=' .
$DB->CharToDateFunction(
$val);
37 $arSqlSearch[] =
'S.DATE_UPDATE<=' .
$DB->CharToDateFunction(
$val .
' 23:59:59');
40 $arSqlSearch[] =
'S.DATE_INSERT>=' .
$DB->CharToDateFunction(
$val);
43 $arSqlSearch[] =
'S.DATE_INSERT<=' .
$DB->CharToDateFunction(
$val .
' 23:59:59');
52 $arSqlSearch[] = (
$val ==
'Y') ?
'(S.USER_ID = 0 or S.USER_ID is null)' :
'(S.USER_ID > 0 and S.USER_ID is not null)';
55 $arSqlSearch[] = (
$val ==
'Y') ?
"S.CONFIRMED='Y'" :
"S.CONFIRMED='N'";
58 $arSqlSearch[] = (
$val ==
'Y') ?
"S.ACTIVE='Y'" :
"S.ACTIVE='N'";
61 $arSqlSearch[] = (
$val ==
'text') ?
"S.FORMAT='text'" :
"S.FORMAT='html'";
72 $from1 =
' INNER JOIN b_subscription_rubric SR ON (SR.SUBSCRIPTION_ID=S.ID) ';
77 $arSqlSearch[] =
' 1=0 ';
86 foreach ($aSort as $by => $ord)
88 $by = mb_strtoupper($by);
89 $ord = (mb_strtoupper($ord) !==
'ASC' ?
'DESC' :
'ASC');
93 $arOrder[$by] =
'S.ID ' . $ord;
96 $arOrder[$by] =
'S.DATE_INSERT ' . $ord;
99 $arOrder[$by] =
'S.DATE_UPDATE ' . $ord;
102 $arOrder[$by] =
'S.DATE_CONFIRM ' . $ord;
105 $arOrder[$by] =
'S.ACTIVE ' . $ord;
108 $arOrder[$by] =
'S.CONFIRMED ' . $ord;
111 $arOrder[$by] =
'S.EMAIL ' . $ord;
114 $arOrder[$by] =
'S.FORMAT ' . $ord;
117 $arOrder[$by] =
'S.USER_ID ' . $ord;
120 $arOrder[$by] =
'S.CONFIRM_CODE ' . $ord;
126 $arOrder[
'ID'] =
'S.ID DESC';
129 if (is_array($arNavStartParams))
132 SELECT count(' . ($from1 ?
'DISTINCT S.ID' :
"'x'") .
') as C
135 LEFT JOIN b_user U ON (S.USER_ID=U.ID)
140 $res_cnt =
$DB->Query($strSql);
141 $res_cnt = $res_cnt->Fetch();
142 $cnt = $res_cnt[
'C'];
146 S.ID, S.USER_ID, S.ACTIVE, S.EMAIL, S.FORMAT, S.CONFIRM_CODE, S.CONFIRMED,
147 ' .
$DB->DateToCharFunction(
'S.DATE_UPDATE') .
' DATE_UPDATE,
148 ' .
$DB->DateToCharFunction(
'S.DATE_INSERT') .
' DATE_INSERT,
149 ' .
$DB->DateToCharFunction(
'S.DATE_CONFIRM') .
' DATE_CONFIRM,
152 U.LAST_NAME USER_LAST_NAME
155 LEFT JOIN b_user U ON (S.USER_ID=U.ID)
158 ' . $strSqlSearch .
'
160 'GROUP BY S.ID, S.USER_ID, S.ACTIVE, S.EMAIL, S.FORMAT, S.CONFIRM_CODE, S.CONFIRMED, S.DATE_CONFIRM, S.DATE_UPDATE, S.DATE_INSERT, U.LOGIN, U.NAME, U.LAST_NAME' :
163 ORDER BY ' . implode(
', ', $arOrder);
165 $res =
new CDBResult();
166 $res->NavQuery($strSql, $cnt, $arNavStartParams);
175 S.ID, S.USER_ID, S.ACTIVE, S.EMAIL, S.FORMAT, S.CONFIRM_CODE, S.CONFIRMED,
176 ' .
$DB->DateToCharFunction(
'S.DATE_UPDATE') .
' DATE_UPDATE,
177 ' .
$DB->DateToCharFunction(
'S.DATE_INSERT') .
' DATE_INSERT,
178 ' .
$DB->DateToCharFunction(
'S.DATE_CONFIRM') .
' DATE_CONFIRM,
181 U.LAST_NAME USER_LAST_NAME
184 LEFT JOIN b_user U ON (S.USER_ID=U.ID)
187 ' . $strSqlSearch .
'
189 'GROUP BY S.ID, S.USER_ID, S.ACTIVE, S.EMAIL, S.FORMAT, S.CONFIRM_CODE, S.CONFIRMED, S.DATE_CONFIRM, S.DATE_UPDATE, S.DATE_INSERT, U.LOGIN, U.NAME, U.LAST_NAME' :
192 ORDER BY ' . implode(
', ', $arOrder);
207 SELECT R.ID, R.NAME, R.SORT, R.LID, R.ACTIVE, R.VISIBLE
208 FROM b_list_rubric R, b_subscription_rubric SR
209 WHERE R.ID = SR.LIST_RUBRIC_ID AND SR.SUBSCRIPTION_ID = ' .
$ID .
'
210 ORDER BY R.LID, R.SORT, R.NAME
212 return $DB->Query($strSql);
223 while ($subscr_rub_arr = $subscr_rub->Fetch())
225 $aSubscrRub[] = $subscr_rub_arr[
'ID'];
235 $email_cookie = COption::GetOptionString(
'main',
'cookie_name',
'BITRIX_SM') .
'_SUBSCR_EMAIL';
237 $subscr_EMAIL = ($_COOKIE[$email_cookie] <>
'' ? $_COOKIE[$email_cookie] :
$USER->GetParam(
'EMAIL'));
238 if ($subscr_EMAIL <>
'')
241 if (($subscr_arr = $subscr->Fetch()))
246 return [
'ID' => 0,
'EMAIL' =>
''];
256 ' .
$DB->DateToCharFunction(
'S.DATE_UPDATE',
'FULL') .
' AS DATE_UPDATE,
257 ' .
$DB->DateToCharFunction(
'S.DATE_INSERT',
'FULL') .
' AS DATE_INSERT,
258 ' .
$DB->DateToCharFunction(
'S.DATE_CONFIRM',
'FULL') .
' AS DATE_CONFIRM
259 FROM b_subscription S
260 WHERE S.ID = ' .
$ID .
'
263 return $DB->Query($strSql);
272 foreach (
GetModuleEvents(
'subscribe',
'OnBeforeSubscriptionDelete',
true) as $arEvent)
280 $DB->StartTransaction();
282 $res =
$DB->Query(
"DELETE FROM b_subscription_rubric WHERE SUBSCRIPTION_ID='" .
$ID .
"'");
285 $res =
$DB->Query(
"DELETE FROM b_subscription WHERE ID='" .
$ID .
"' ");
290 foreach (
GetModuleEvents(
'subscribe',
'OnAfterSubscriptionDelete',
true) as $arEvent)
309 $this->LAST_ERROR =
'';
318 $db_events =
GetModuleEvents(
'subscribe',
'OnStartSubscriptionUpdate',
true);
322 $db_events =
GetModuleEvents(
'subscribe',
'OnStartSubscriptionAdd',
true);
325 foreach ($db_events as $arEvent)
337 $aMsg[] = [
'id' =>
'EMAIL',
'text' =>
GetMessage(
'class_subscr_addr')];
345 $aMsg[] = [
'id' =>
'EMAIL',
'text' =>
GetMessage(
'class_subscr_addr2')];
354 $res =
$DB->Query(
"SELECT 'x' FROM b_user WHERE ID = " . intval(
$arFields[
'USER_ID']));
357 $aMsg[] = [
'id' =>
'USER_ID',
'text' =>
GetMessage(
'class_subscr_user')];
364 $db_events =
GetModuleEvents(
'subscribe',
'OnBeforeSubscriptionUpdate',
true);
368 $db_events =
GetModuleEvents(
'subscribe',
'OnBeforeSubscriptionAdd',
true);
371 foreach ($db_events as $arEvent)
378 $aMsg[] = [
'id' =>
'',
'text' => $err->GetString()];
383 $aMsg[] = [
'id' =>
'',
'text' =>
'Unknown error.'];
398 $this->LAST_ERROR = $e->GetString();
414 SELECT sr.SUBSCRIPTION_ID,sr.LIST_RUBRIC_ID
416 b_subscription_rubric sr
417 INNER JOIN b_list_rubric lr ON lr.ID=sr.LIST_RUBRIC_ID
419 sr.SUBSCRIPTION_ID='" .
$ID .
"'
422 $rs =
$DB->Query($strSql);
423 while (
$ar =
$rs->Fetch())
426 DELETE FROM b_subscription_rubric
427 WHERE SUBSCRIPTION_ID=' . intval(
$ar[
'SUBSCRIPTION_ID']) .
'
428 AND LIST_RUBRIC_ID=' . intval(
$ar[
'LIST_RUBRIC_ID']) .
'
434 if (is_array($aRubric))
436 foreach ($aRubric as $rub)
438 $sID .=
',' . intval($rub);
443 INSERT INTO b_subscription_rubric (SUBSCRIPTION_ID, LIST_RUBRIC_ID)
444 SELECT '" .
$ID .
"', ID
446 WHERE ID IN (" . $sID .
")
453 $DB->Query(
"DELETE FROM b_subscription_rubric WHERE SUBSCRIPTION_ID='" .
$ID .
"'");
456 if (is_array($aRubric))
458 foreach ($aRubric as $rub)
460 $sID .=
',' . intval($rub);
465 INSERT INTO b_subscription_rubric (SUBSCRIPTION_ID, LIST_RUBRIC_ID)
466 SELECT '" .
$ID .
"', ID
468 WHERE ID IN (" . $sID .
')
491 $arFields[
'~DATE_CONFIRM'] =
$DB->CurrentTimeFunction();
520 $this->LAST_MESSAGE =
'';
533 $strSql =
'SELECT EMAIL, CONFIRM_CODE, CONFIRMED FROM b_subscription WHERE ID = ' .
$ID;
534 $db_check =
$DB->Query($strSql);
536 if (!($db_check_arr = $db_check->Fetch()))
538 $this->LAST_ERROR =
GetMessage(
'class_subscr_perm') .
'<br>';
542 $CONFIRM_CODE =
$arFields[
'CONFIRM_CODE'];
547 if ($CONFIRM_CODE <>
'' && $db_check_arr[
'CONFIRMED'] <>
'Y')
549 if ($CONFIRM_CODE == $db_check_arr[
'CONFIRM_CODE'])
553 $this->LAST_MESSAGE =
'CONF';
557 $this->LAST_ERROR =
GetMessage(
'class_subscr_conf') .
'<br>';
572 $strUpdate =
$DB->PrepareUpdate(
'b_subscription',
$arFields);
573 if ($strUpdate <>
'')
576 'UPDATE b_subscription SET ' . $strUpdate .
', ' .
' DATE_UPDATE=' .
$DB->GetNowFunction() .
' ' . (
$arFields[
'CONFIRM_CODE'] <>
'' ?
',' .
' DATE_CONFIRM=' .
$DB->GetNowFunction() .
' '
579 if (!
$DB->Query($strSql))
601 $this->LAST_MESSAGE =
'SENT';
610 static $SITE_DIR_CACHE = [];
611 CTimeZone::Disable();
614 if ($subscr_arr = $subscr->Fetch())
616 if (!array_key_exists(
$SITE_ID, $SITE_DIR_CACHE))
618 $db_lang = CLang::GetByID(
$SITE_ID);
619 if ($ar_lang = $db_lang->Fetch())
621 $SITE_DIR_CACHE[
$SITE_ID] = $ar_lang[
'DIR'];
629 $subscr_arr[
'USER_NAME'] =
'';
630 $subscr_arr[
'USER_LAST_NAME'] =
'';
631 if (intval($subscr_arr[
'USER_ID']) > 0)
633 $rsUser = CUser::GetByID($subscr_arr[
'USER_ID']);
634 if ($arUser = $rsUser->Fetch())
636 $subscr_arr[
'USER_NAME'] = $arUser[
'NAME'];
637 $subscr_arr[
'USER_LAST_NAME'] = $arUser[
'LAST_NAME'];
642 'ID' => $subscr_arr[
'ID'],
643 'EMAIL' => $subscr_arr[
'EMAIL'],
644 'CONFIRM_CODE' => $subscr_arr[
'CONFIRM_CODE'],
645 'USER_NAME' => $subscr_arr[
'USER_NAME'] .
' ' . $subscr_arr[
'USER_LAST_NAME'],
646 'DATE_SUBSCR' => ($subscr_arr[
'DATE_UPDATE'] <>
'' ? $subscr_arr[
'DATE_UPDATE'] : $subscr_arr[
'DATE_INSERT']),
647 'SUBSCR_SECTION' => str_replace(
648 [
'#SITE_DIR#',
'#LANG_DIR#'],
650 COption::GetOptionString(
'subscribe',
'subscribe_section')
665 if (($subscr_arr = $subscr->Fetch()))
668 if ($CONFIRM_CODE ===
false)
670 $_SESSION[
'SESS_SUBSCR_AUTH'][
$ID] =
'YES';
674 if ($subscr_arr[
'CONFIRM_CODE'] == $CONFIRM_CODE)
676 $_SESSION[
'SESS_SUBSCR_AUTH'][
$ID] =
'YES';
680 if (intval($subscr_arr[
'USER_ID']) > 0)
682 if (
$USER->IsAuthorized())
685 if (
$USER->GetID() == $subscr_arr[
'USER_ID'])
687 $_SESSION[
'SESS_SUBSCR_AUTH'][
$ID] =
'YES';
693 $_SESSION[
'SESS_SUBSCR_AUTH'][
$ID] =
'NO';
700 return ($_SESSION[
'SESS_SUBSCR_AUTH'][
$ID] ==
'YES');
712 $user_id = intval($user_id);
714 $strSql =
'SELECT ID FROM b_subscription WHERE USER_ID = ' . $user_id;
717 while ($res_arr =
$res->Fetch())
719 $arIn[] = intval($res_arr[
'ID']);
722 if (
count($arIn) > 0)
724 $sIn = implode(
',',$arIn);
726 $DB->Query(
'DELETE FROM b_subscription_rubric WHERE SUBSCRIPTION_ID IN (' . $sIn .
')') &&
727 $DB->Query(
'DELETE FROM b_subscription WHERE ID IN (' . $sIn .
')')
748 $user_id = intval($user_id);
751 $strSql =
'SELECT ID FROM b_subscription WHERE USER_ID=' . $user_id;
753 while ($res_arr =
$res->Fetch())
755 $_SESSION[
'SESS_SUBSCR_AUTH'][$res_arr[
'ID']] =
'NO';
771 $interval = intval(COption::GetOptionString(
'subscribe',
'subscribe_confirm_period'));
777 WHERE CONFIRMED <> 'Y'
778 AND DATE_CONFIRM < " . $helper->addDaysToDateTime(1) .
"
782 while ($res_arr =
$res->fetch())
784 $sIn .=
',' . $res_arr[
'ID'];
787 $connection->queryExecute(
'DELETE FROM b_subscription_rubric WHERE SUBSCRIPTION_ID IN (' . $sIn .
')');
788 $connection->queryExecute(
'DELETE FROM b_subscription WHERE ID IN (' . $sIn .
')');
791 return 'CSubscription::CleanUp();';
799 if ($user_id ===
false)
805 $sWhere =
'AND S.USER_ID = ' . intval($user_id);
809 $sWhere =
'AND S.USER_ID IS NULL';
814 ' .
$DB->DateToCharFunction(
'S.DATE_UPDATE',
'FULL') .
' AS DATE_UPDATE,
815 ' .
$DB->DateToCharFunction(
'S.DATE_INSERT',
'FULL') .
' AS DATE_INSERT,
816 ' .
$DB->DateToCharFunction(
'S.DATE_CONFIRM',
'FULL') .
" AS DATE_CONFIRM
824 return $DB->Query($strSql);
static getConnection($name="")
static getString($length, $caseSensitive=false)
CheckFields(&$arFields, $ID, $SITE_ID=SITE_ID)
static ConfirmEvent($ID, $SITE_ID=SITE_ID)
static GetRubricArray($ID)
static OnUserDelete($user_id)
static GetList($aSort=[], $arFilter=[], $arNavStartParams=false)
static GetRubricList($ID)
Update($ID, $arFields, $SITE_ID=SITE_ID)
static GetByEmail($email, $user_id=false)
UpdateRubrics($ID, $aRubric, $SITE_ID=false)
Add($arFields, $SITE_ID=SITE_ID)
static Authorize($ID, $CONFIRM_CODE=false)
static GetUserSubscription()
static OnUserLogout($user_id)
const LANG_DIR(!defined('SITE_SERVER_NAME'))
ExecuteModuleEventEx($arEvent, $arParams=[])
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
GetMessage($name, $aReplace=null)
check_email($email, $strict=false, $domainCheck=false)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if(empty($signedUserToken)) $key
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"