1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
FeatureProvider.php
См. документацию.
1<?php
2
3declare(strict_types=1);
4
5namespace Bitrix\Socialnetwork\Provider;
6
7use Bitrix\Main\Loader;
8use Bitrix\Main\Localization\Loc;
9use Bitrix\Socialnetwork\Collab\Permission\UserRole;
10use Bitrix\Socialnetwork\Collab\Property\Feature;
11use Bitrix\Socialnetwork\Collab\Property\Permission;
12use Bitrix\Socialnetwork\FeatureTable;
13use Bitrix\Socialnetwork\Helper\InstanceTrait;
14use Bitrix\Extranet\Settings\CollaberInvitation;
15
17{
18 use InstanceTrait;
19
20 protected const CACHE_TTL = 10;
21
22 protected const DEFAULT_PERMISSIONS = [
23 'calendar' => [],
24 'chat' => [],
25 'files' => [],
26 'tasks' => [
27 'delete_tasks' => UserRole::MODERATOR,
28 'edit_tasks' => UserRole::MODERATOR,
29 ],
30 ];
31
33 public function getFeatures(int $collabId): array
34 {
35 $collabFeatures = FeatureTable::query()
36 ->setSelect(['ID', 'FEATURE', 'ACTIVE'])
37 ->where('ENTITY_ID', $collabId)
38 ->where('ENTITY_TYPE', FeatureTable::FEATURE_ENTITY_TYPE_GROUP)
39 ->setCacheTtl(static::CACHE_TTL)
40 ->exec()
41 ->fetchCollection();
42
43 $result = [];
44 foreach ($collabFeatures as $collabFeature)
45 {
46 $featureName = $collabFeature->getFeature();
47
48 $result [$featureName]= new Feature(
49 $collabFeature->getId(),
50 $featureName,
51 $collabFeature->getActive() === 'Y'
52 );
53 }
54
55 return $result;
56 }
57
59 public function getPermissions(int $collabId): array
60 {
61 $collabFeaturePermissions = FeatureTable::query()
62 ->setSelect(['ID', 'FEATURE', 'PERMISSIONS.OPERATION_ID', 'PERMISSIONS.ROLE'])
63 ->where('ENTITY_ID', $collabId)
64 ->where('ENTITY_TYPE', FeatureTable::FEATURE_ENTITY_TYPE_GROUP)
65 ->where('ACTIVE', 'Y')
66 ->setCacheTtl(static::CACHE_TTL)
67 ->exec()
68 ->fetchCollection();
69
70 $permissions = [];
71
72 foreach ($collabFeaturePermissions as $collabPermission)
73 {
74 $featurePermissions = [];
75
76 $collabFeaturePermissions = $collabPermission->getPermissions();
77 foreach ($collabFeaturePermissions as $collabFeaturePermission)
78 {
79 $featurePermissions = array_merge(
80 $featurePermissions,
81 [$collabFeaturePermission->getOperationId() => $collabFeaturePermission->getRole()]
82 );
83 }
84
85 if (empty($featurePermissions))
86 {
87 $featurePermissions = $this->getDefaultPermissions($collabPermission->getFeature());
88 }
89
90 $permissions[] = new Permission($collabPermission->getFeature(), $featurePermissions);
91 }
92
93 return $permissions;
94 }
95
97 {
98 return static::DEFAULT_PERMISSIONS;
99 }
100
101 public function getDefaultPermissions(string $featureId): array
102 {
103 return static::DEFAULT_PERMISSIONS[$featureId] ?? [];
104 }
105
106 public function getPermissionLabels(): array
107 {
108 return [
109 UserRole::OWNER => Loc::getMessage('SOCIALNETWORK_FEATURE_LABEL_OWNER'),
110 UserRole::MODERATOR => Loc::getMessage('SOCIALNETWORK_FEATURE_LABEL_MODERATOR'),
111 UserRole::MEMBER => Loc::getMessage('SOCIALNETWORK_FEATURE_LABEL_USER'),
112 ];
113 }
114
116 {
117 return [
118 UserRole::OWNER => Loc::getMessage('SOCIALNETWORK_FEATURE_LABEL_OWNER'),
119 UserRole::MODERATOR => Loc::getMessage('SOCIALNETWORK_FEATURE_LABEL_MODERATOR'),
120 UserRole::EMPLOYEE => Loc::getMessage('SOCIALNETWORK_FEATURE_LABEL_EMPLOYEE'),
121 UserRole::MEMBER => Loc::getMessage('SOCIALNETWORK_FEATURE_LABEL_USER'),
122 ];
123 }
124
125 public function getOptionLabels(): array
126 {
127 return [
128 'Y' => Loc::getMessage('SOCIALNETWORK_FEATURE_LABEL_YES'),
129 'N' => Loc::getMessage('SOCIALNETWORK_FEATURE_LABEL_NO'),
130 ];
131 }
132
133 public function isAllowedInviteCollabers(): bool
134 {
135 return Loader::includeModule('extranet') && (new CollaberInvitation())->isEnabled();
136 }
137}
const FEATURE_ENTITY_TYPE_GROUP
Определения feature.php:48
getDefaultPermissions(string $featureId)
Определения FeatureProvider.php:101
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$result
Определения get_property_values.php:14