1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
MarketSubscriptionNotification.php
См. документацию.
1<?php
2
3namespace Bitrix\Rest\Notification\MarketExpired;
4
5use Bitrix\Main\Application;
6use Bitrix\Main\Loader;
7use Bitrix\Rest\Infrastructure\Market\MarketSubscription;
8use Bitrix\Rest\Infrastructure\Market\MarketOption;
9use Bitrix\Rest\Notification\MarketExpired\Curtain\MarketExpiredCurtain;
10use Bitrix\Rest\Notification\MarketExpired\Curtain\SubscriptionCurtain;
11use Bitrix\Rest\Notification\MarketExpired\Curtain\TransitionCurtain;
12use Bitrix\Rest\Notification\MarketExpired\Popup\MarketExpiredPopup;
13use Bitrix\Rest\Notification\MarketExpired\Popup\SubscriptionPopup;
14use Bitrix\Rest\Notification\MarketExpired\Popup\TransitionPopup;
15use Bitrix\Rest\Service\RestOption;
16use Bitrix\Rest\Service\RestUserOption;
17
19{
20 public function getPopup(): MarketExpiredPopup
21 {
22 return new SubscriptionPopup(new RestUserOption(), $this);
23 }
24
26 {
27 return new SubscriptionCurtain(new RestUserOption(), $this);
28 }
29
30 public function getEndDateTimestamp(): int
31 {
32 $endDate = $this->marketSubscription->getEndDate();
33
34 return $endDate ? $endDate->getTimestamp() + 86400 : 0;
35 }
36
37 public function isAvailable(): bool
38 {
39 if (Loader::includeModule('extranet') && \CExtranet::IsExtranetSite())
40 {
41 return false;
42 }
43
44 if (!$this->marketSubscription->isAvailableToPurchase())
45 {
46 return false;
47 }
48
49 if (
50 $this->getEndDateTimestamp() + self::AFTER_SHOW_DURATION < time()
51 || $this->getEndDateTimestamp() - self::BEFORE_SHOW_DURATION > time()
52 )
53 {
54 return false;
55 }
56
57 if (!$this->marketSubscription->isPaidAppsOrIntegrationsInstalled())
58 {
59 return false;
60 }
61
62 return true;
63 }
64
65 public function getType(): MarketExpiredType
66 {
67 return $this->marketSubscription->isActive()
68 ? MarketExpiredType::WARNING
70 }
71
73 {
74 return $this->marketSubscription->isDemo()
76 : MarketExpiredCategory::SUBSCRIPTION;
77 }
78}