1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
Manager.php
См. документацию.
1<?php
2
3namespace Bitrix\Catalog\v2\Contractor\Provider;
4
5use Bitrix\Main\Event;
6use Bitrix\Main\EventResult;
7use Bitrix\Catalog\v2\Contractor\IConverter;
8
15{
16 public const PROVIDER_STORE_DOCUMENT = 'StoreDocument';
17 public const PROVIDER_AGENT_CONTRACT = 'AgentContract';
18
19 private const ON_GET_PROVIDER_EVENT = 'onGetContractorsProvider';
20 private const ON_GET_CONVERTER_EVENT = 'onGetContractorsConverter';
21
26 public static function getActiveProvider(string $providerName): ?IProvider
27 {
28 $converter = self::getConverter();
29 if (!$converter)
30 {
31 return null;
32 }
33
34 static $isMigrating = false;
35 if (!$converter::isMigrated())
36 {
37 if (!$isMigrating)
38 {
39 $isMigrating = true;
40 $converter::runMigration();
41 }
42
43 return null;
44 }
45
46 return self::getProvider($providerName);
47 }
48
49 public static function isActiveProviderExists(): bool
50 {
51 $event = new Event('catalog', self::ON_GET_PROVIDER_EVENT);
52 $event->send();
53
54 $resultList = $event->getResults();
55
56 if (is_array($resultList))
57 {
59 foreach ($resultList as $eventResult)
60 {
61 $providers = $eventResult->getParameters();
62 foreach ($providers as $provider)
63 {
64 if ($provider instanceof IProvider)
65 {
66 return true;
67 }
68 }
69 }
70 }
71
72 return false;
73 }
74
80 public static function isActiveProviderByModule(string $providerName, string $moduleId): bool
81 {
82 $provider = self::getActiveProvider($providerName);
83
84 return $provider && $provider::getModuleId() === $moduleId;
85 }
86
90 public static function getMigrationProgressHtml(): string
91 {
92 ob_start();
93
94 $converter = self::getConverter();
95 if (
96 $converter
97 && !$converter::isMigrated()
98 )
99 {
100 $converter::showMigrationProgress();
101 }
102
103 return ob_get_clean();
104 }
105
110 private static function getProvider(string $providerName): ?IProvider
111 {
112 $event = new Event('catalog', self::ON_GET_PROVIDER_EVENT);
113 $event->send();
114
115 $resultList = $event->getResults();
116
117 if (is_array($resultList))
118 {
120 foreach ($resultList as $eventResult)
121 {
122 $providers = $eventResult->getParameters();
123 foreach ($providers as $name => $provider)
124 {
125 if ($name === $providerName && $provider instanceof IProvider)
126 {
127 return $provider;
128 }
129 }
130 }
131 }
132
133 return null;
134 }
135
136 private static function getConverter(): ?IConverter
137 {
138 $event = new Event('catalog', self::ON_GET_CONVERTER_EVENT);
139 $event->send();
140
141 $resultList = $event->getResults();
142
143 if (is_array($resultList))
144 {
146 foreach ($resultList as $eventResult)
147 {
148 $provider = $eventResult->getParameters();
149 if ($provider instanceof IConverter)
150 {
151 return $provider;
152 }
153 }
154 }
155
156 return null;
157 }
158}
if(!Loader::includeModule('messageservice')) $provider
Определения callback_ednaruimhpx.php:21
static getMigrationProgressHtml()
Определения Manager.php:90
static isActiveProviderByModule(string $providerName, string $moduleId)
Определения Manager.php:80
static getActiveProvider(string $providerName)
Определения Manager.php:26
Определения event.php:5
$moduleId
$name
Определения menu_edit.php:35
$event
Определения prolog_after.php:141