1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
Features.php
См. документацию.
1<?php
2
3namespace Bitrix\Im\V2\Application;
4
5use Bitrix\Im\Call\Integration\Zoom;
6use Bitrix\Im\Integration\Disk\Documents;
7use Bitrix\Im\Settings;
8use Bitrix\Im\V2\Chat\CopilotChat;
9use Bitrix\Im\V2\Integration\AiAssistant\AiAssistantService;
10use Bitrix\Im\V2\Integration\Extranet\CollaberService;
11use Bitrix\Im\V2\Integration\HumanResources\Structure;
12use Bitrix\Im\V2\Integration\Intranet\Invitation;
13use Bitrix\Im\V2\Integration\Sign\DocumentSign;
14use Bitrix\Im\V2\Integration\Socialnetwork\Collab\Collab;
15use Bitrix\ImBot\Bot\Giphy;
16use Bitrix\Main\Config\Option;
17use Bitrix\Main\DI\ServiceLocator;
18use Bitrix\Main\Loader;
19
21{
22 private static self $currentFeatures;
23
24 public function __construct(
25 public readonly bool $chatV2,
26 public readonly bool $chatDepartments,
27 public readonly bool $copilotActive,
28 public readonly bool $copilotAvailable,
29 public readonly bool $sidebarLinks,
30 public readonly bool $sidebarFiles,
31 public readonly bool $sidebarBriefs,
32 public readonly bool $zoomActive,
33 public readonly bool $zoomAvailable,
34 public readonly bool $openLinesV2,
35 public readonly bool $giphyAvailable,
36 public readonly bool $collabAvailable,
37 public readonly bool $collabCreationAvailable,
38 public readonly bool $enabledCollabersInvitation,
39 public readonly bool $inviteByPhoneAvailable,
40 public readonly bool $inviteByLinkAvailable,
41 public readonly bool $documentSignAvailable,
42 public readonly bool $intranetInviteAvailable,
43 public readonly bool $changeInviteLanguageAvailable,
44 public readonly bool $voteCreationAvailable,
45 public readonly bool $messagesAutoDeleteEnabled,
46 public readonly bool $isNotificationsStandalone,
47 public readonly bool $isCopilotSelectModelAvailable,
48 public readonly bool $teamsInStructureAvailable,
49 public readonly bool $isDesktopRedirectAvailable,
50 public readonly bool $aiAssistantAvailable,
51 public readonly bool $aiAssistantChatCreationAvailable,
52 ){}
53
54 public static function get(): self
55 {
56 if (!isset(self::$currentFeatures))
57 {
58 self::$currentFeatures = self::createCurrent();
59 }
60
61 return self::$currentFeatures;
62 }
63
64 private static function createCurrent(): self
65 {
66 return new self(
71 Option::get('im', 'im_link_url_migration', 'N') === 'Y',
72 Option::get('im', 'im_link_file_migration', 'N') === 'Y',
76 self::isImOpenLinesV2Available(),
77 self::isGiphyAvailable(),
78 Collab::isAvailable(),
79 Collab::isCreationAvailable(),
80 CollaberService::getInstance()->isEnabledCollabersInvitation(),
81 self::isInviteByPhoneAvailable(),
82 self::isInviteByLinkAvailable(),
86 self::isVoteCreationAvailable(),
88 self::isNotificationsStandalone(),
94 );
95 }
96
97 private static function isGiphyAvailable(): bool
98 {
99 return Loader::includeModule('imbot')
100 && method_exists(Giphy::class, 'isAvailable')
101 && Giphy::isAvailable()
102 ;
103 }
104
105 private static function isInviteByPhoneAvailable(): bool
106 {
107 return Loader::includeModule("bitrix24")
108 && Option::get('bitrix24', 'phone_invite_allowed', 'N') === 'Y'
109 ;
110 }
111
112 private static function isInviteByLinkAvailable(): bool
113 {
114 return true;
115 }
116
117 private static function isImOpenLinesV2Available(): bool
118 {
119 if (Loader::includeModule('imopenlines'))
120 {
121 return \Bitrix\ImOpenLines\V2\Settings\Settings::isV2Available();
122 }
123
124 return false;
125 }
126
127 private static function isVoteCreationAvailable(): bool
128 {
129 return Loader::includeModule('vote')
130 && class_exists('\\Bitrix\\Vote\\Config\\Feature')
131 && \Bitrix\Vote\Config\Feature::instance()->isImIntegrationEnabled()
132 ;
133 }
134
135 private static function isNotificationsStandalone(): bool
136 {
137 return Option::get('im', '~is_notifications_standalone', 'N') === 'Y';
138 }
139
140 public static function isMessagesAutoDeleteEnabled(): bool
141 {
142 return Option::get('im', 'isAutoDeleteMessagesEnabled', 'Y') === 'Y';
143 }
144
145 public static function isCopilotSelectModelAvailable(): bool
146 {
147 return Option::get('im', 'copilot_select_model_activated', 'N') === 'Y';
148 }
149
150 public static function isDesktopRedirectAvailable(): bool
151 {
152 return Option::get('im', 'desktop_redirect_available', 'N') === 'Y';
153 }
154
155 public static function isAiAssistantAvailable(): bool
156 {
157 return ServiceLocator::getInstance()->get(AiAssistantService::class)->isAiAssistantAvailable();
158 }
159
160 public static function isAiAssistantChatCreationAvailable(): bool
161 {
162 return ServiceLocator::getInstance()->get(AiAssistantService::class)->isAiAssistantChatCreationAvailable();
163 }
164}
static isAvailable()
Определения zoom.php:125
static isActive()
Определения zoom.php:84
static getResumesOfCallStatus()
Определения documents.php:55
static isLegacyChatActivated($userId=false)
Определения settings.php:88
static isAiAssistantChatCreationAvailable()
Определения Features.php:160
__construct(public readonly bool $chatV2, public readonly bool $chatDepartments, public readonly bool $copilotActive, public readonly bool $copilotAvailable, public readonly bool $sidebarLinks, public readonly bool $sidebarFiles, public readonly bool $sidebarBriefs, public readonly bool $zoomActive, public readonly bool $zoomAvailable, public readonly bool $openLinesV2, public readonly bool $giphyAvailable, public readonly bool $collabAvailable, public readonly bool $collabCreationAvailable, public readonly bool $enabledCollabersInvitation, public readonly bool $inviteByPhoneAvailable, public readonly bool $inviteByLinkAvailable, public readonly bool $documentSignAvailable, public readonly bool $intranetInviteAvailable, public readonly bool $changeInviteLanguageAvailable, public readonly bool $voteCreationAvailable, public readonly bool $messagesAutoDeleteEnabled, public readonly bool $isNotificationsStandalone, public readonly bool $isCopilotSelectModelAvailable, public readonly bool $teamsInStructureAvailable, public readonly bool $isDesktopRedirectAvailable, public readonly bool $aiAssistantAvailable, public readonly bool $aiAssistantChatCreationAvailable,)
Определения Features.php:24
static isDesktopRedirectAvailable()
Определения Features.php:150
static isMessagesAutoDeleteEnabled()
Определения Features.php:140
static isCopilotSelectModelAvailable()
Определения Features.php:145
static isAiAssistantAvailable()
Определения Features.php:155
static isAvailable()
Определения CopilotChat.php:437
static isActive()
Определения CopilotChat.php:432