22 private const MODULE_ID =
'rest';
23 private const OPTION_ACCESS_NOTIFICATION =
'rest_access_notification';
24 private const OPTION_LAST_CHECK_ACCESS_NOTIFICATION =
'last_check_rest_access_notify';
25 private const OPTION_LAST_CHECK_NOTIFICATION =
'last_check_rest_notify';
26 private const OPTION_NOTIFICATION_URL =
'rest_notify_url';
27 private const CODE_CHECK_BY_AGENT = [
29 'SUBSCRIPTION_MARKET_DEMO_END',
30 'SUBSCRIPTION_MARKET_TARIFF_MARKET',
31 'SUBSCRIPTION_MARKET_TRIAL_END',
33 private static $timestampNotifyDays = 259200;
34 private static $codeToNotification = [
35 'rest_buy' =>
'REST_BUY',
36 'limit_subscription_market_demomarket_end' =>
'SUBSCRIPTION_MARKET_DEMO_END',
37 'limit_subscription_market_tarifwithmarket' =>
'SUBSCRIPTION_MARKET_TARIFF_MARKET',
38 'plus_need_trial' =>
'SUBSCRIPTION_MARKET_TRIAL_END',
44 public static function get()
47 $option = Option::get(static::MODULE_ID, static::OPTION_ACCESS_NOTIFICATION,
'');
49 if (isset(static::$codeToNotification[
$option]) && static::$codeToNotification[
$option])
56 $url = Option::get(static::MODULE_ID, static::OPTION_NOTIFICATION_URL,
'');
59 $url = Loc::getMessage(
'REST_MARKETPLACE_NOTIFICATION_' .
$option .
'_URL');
60 if (
$option ===
'REST_BUY' && Loader::includeModule(
'bitrix24'))
62 $prefix = \CBitrix24::getLicensePrefix();
65 $url =
'https://goodbye-2020.bitrix24.site/';
69 $url =
'https://goodbye2020.bitrix24.site/';
73 $url =
'https://skilky-mozhna.bitrix24site.ua/';
77 $url =
'https://goodbye2020.bitrix24.tech/';
81 $url =
'https://www.bitrix24.com/promo/sales/holiday-sale/';
85 $url =
'https://www.bitrix24.jp/promo/sales/holiday-sale/';
89 $url =
'https://www.bitrix24.pl/promo/sales/holiday-sale/';
93 $url =
'https://www.bitrix24.it/promo/sales/holiday-sale/';
97 $url =
'https://www.bitrix24.com.br/promo/sales/holiday-sale/';
101 $url =
'https://www.bitrix24.fr/promo/sales/holiday-sale/';
105 $url =
'https://www.bitrix24.de/promo/sales/holiday-sale/';
109 $url =
'https://www.bitrix24.in/promo/sales/holiday-sale/';
113 $url =
'https://www.bitrix24.eu/promo/sales/holiday-sale/';
115 elseif ($prefix ===
'es' || $prefix ===
'la')
117 $url =
'https://www.bitrix24.es/promo/sales/holiday-sale/';
121 if (
$option ===
'SUBSCRIPTION_MARKET_TRIAL_END')
128 $option ===
'SUBSCRIPTION_MARKET_DEMO_END'
132 return self::getNotificationAboutDemoEnd(
$option);
135 $message = Loc::getMessage(
'REST_MARKETPLACE_NOTIFICATION_' .
$option .
'_MESS_MSGVER_1');
140 'BUTTON_TEXT' =>
$url !==
'' ? Loc::getMessage(
'REST_MARKETPLACE_NOTIFICATION_' .
$option .
'_BTN') :
null,
141 'PANEL_LINK' =>
$url ??
null,
148 new SystemException(
"Notification message for code '$option' not found.")
157 private static function getNotificationAboutDemoEnd(
string $option):
array
160 'BUTTON_TEXT' => Loc::getMessage(
'REST_MARKETPLACE_NOTIFICATION_' .
$option .
'_BTN_MSGVER_1'),
162 'PANEL_MESSAGE' => Loc::getMessage(
'REST_MARKETPLACE_NOTIFICATION_' .
$option .
'_MESS_MSGVER_2')
168 Option::set(static::MODULE_ID, static::OPTION_LAST_CHECK_NOTIFICATION, $timestamp);
175 $option = (int) Option::get(static::MODULE_ID, static::OPTION_LAST_CHECK_NOTIFICATION, 0);
192 public static function set(
string $code,
string $url =
'') : bool
194 Option::set(static::MODULE_ID, static::OPTION_ACCESS_NOTIFICATION,
$code);
195 Option::set(static::MODULE_ID, static::OPTION_LAST_CHECK_ACCESS_NOTIFICATION, time());
196 Option::set(static::MODULE_ID, static::OPTION_NOTIFICATION_URL,
$url);
208 Option::delete(static::MODULE_ID, [
'name' => static::OPTION_ACCESS_NOTIFICATION]);
209 Option::delete(static::MODULE_ID, [
'name' => static::OPTION_LAST_CHECK_ACCESS_NOTIFICATION]);
210 Option::delete(static::MODULE_ID, [
'name' => static::OPTION_NOTIFICATION_URL]);
220 if (Loader::includeModule(
'bitrix24'))
226 $entity = Access::getActiveEntity();
228 $isSubscriptionFinish = $dateFinish
229 && $dateFinish < (
new Date())
230 && (time() - static::$timestampNotifyDays) < $dateFinish->getTimestamp();
231 if (!Access::isAvailable())
240 && static::getLastCheckTimestamp() > time()
243 $code =
'SUBSCRIPTION_MARKET_TARIFF_MARKET';
245 elseif ($isSubscriptionFinish)
247 $code =
'SUBSCRIPTION_MARKET_DEMO_END';
250 elseif (Access::isFeatureEnabled() && $isSubscriptionFinish)
252 $code =
'SUBSCRIPTION_MARKET_TRIAL_END';
262 $lastCode = Option::get(static::MODULE_ID, static::OPTION_ACCESS_NOTIFICATION,
null);
263 if (!is_null($lastCode) && in_array($lastCode, static::CODE_CHECK_BY_AGENT))
270 return '\Bitrix\Rest\Marketplace\Notification::checkAgent();';
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)