1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
MarketExpiredNotification.php
См. документацию.
1<?php
2
3namespace Bitrix\Rest\Notification\MarketExpired;
4
5use Bitrix\Main\Application;
6use Bitrix\Rest\Infrastructure\Market\MarketSubscription;
7use Bitrix\Rest\Notification\MarketExpired\Curtain\MarketExpiredCurtain;
8use Bitrix\Rest\Notification\MarketExpired\Popup\MarketExpiredPopup;
9use Bitrix\Rest\Service\RestUserOption;
10
12{
13 protected const AFTER_SHOW_DURATION = 7 * 24 * 60 * 60; // 1 week
14 protected const BEFORE_SHOW_DURATION = 7 * 24 * 60 * 60; // 1 week
15
16 private static ?MarketExpiredNotification $instance = null;
17
18 public function __construct(
19 protected readonly RestUserOption $userOption,
20 public readonly MarketSubscription $marketSubscription,
21 )
22 {}
23
25 {
26 if (isset(self::$instance))
27 {
28 return self::$instance;
29 }
30
31 $marketSubscription = MarketSubscription::createByDefault();
32 $transitionEndTs = $marketSubscription->getTransitionPeriodEndDate()->getTimestamp();
33
34 if ($transitionEndTs + self::AFTER_SHOW_DURATION > time())
35 {
36 self::$instance = new MarketTransitionNotification(
37 new RestUserOption(),
38 $marketSubscription
39 );
40 }
41 else
42 {
43 self::$instance = new MarketSubscriptionNotification(
44 new RestUserOption(),
45 $marketSubscription
46 );
47 }
48
49 return self::$instance;
50 }
51
52 abstract public function getPopup(): MarketExpiredPopup;
53
54 abstract public function getCurtain(): MarketExpiredCurtain;
55
56 abstract public function getEndDateTimestamp(): int;
57
58 abstract public function isAvailable(): bool;
59
60 abstract public function getType(): MarketExpiredType;
61
62 abstract public function getCategory(): MarketExpiredCategory;
63
64 final public function getFormattedEndDate(): string
65 {
66 return FormatDate(
67 Application::getInstance()->getContext()->getCulture()->get('LONG_DATE_FORMAT'),
68 $this->getEndDateTimestamp(),
69 );
70 }
71
72 final public function getFormattedDaysLeft(): string
73 {
74 return FormatDate(
75 'ddiff',
76 time(),
77 $this->getEndDateTimestamp(),
78 );
79 }
80
81 public function getOpenLinesWidgetCode(): string
82 {
83 return '';
84 }
85}
__construct(protected readonly RestUserOption $userOption, public readonly MarketSubscription $marketSubscription,)
Определения MarketExpiredNotification.php:18
FormatDate($format="", $timestamp=false, $now=false, ?string $languageId=null)
Определения tools.php:871