1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
workgroupdataprovider.php
См. документацию.
1<?php
2
3namespace Bitrix\Socialnetwork\Filter;
4
5use Bitrix\Main\Config\Option;
6use Bitrix\Main\Localization\Loc;
7use Bitrix\Main\ModuleManager;
8use Bitrix\Socialnetwork\Component\WorkgroupList;
9use Bitrix\Socialnetwork\Internals\Counter\CounterFilter;
10use Bitrix\Socialnetwork\Helper;
11
13{
17
19 {
20 $this->settings = $settings;
21 $this->additionalParams = $additionalParams;
22 }
23
28 public function getSettings(): ?WorkgroupSettings
29 {
30 return $this->settings;
31 }
32
38 protected function getFieldName($fieldID): string
39 {
40 $name = match ($fieldID)
41 {
42 'OWNER' => ModuleManager::isModuleInstalled('intranet')
43 ? Loc::getMessage("SOCIALNETWORK_WORKGROUP_FILTER_{$fieldID}_INTRANET")
44 : Loc::getMessage("SOCIALNETWORK_WORKGROUP_FILTER_{$fieldID}")
45 ,
46 'LANDING' => Loc::getMessage("SOCIALNETWORK_WORKGROUP_FILTER_{$fieldID}_MSGVER_1"),
47 default => Loc::getMessage("SOCIALNETWORK_WORKGROUP_FILTER_{$fieldID}"),
48 };
49
50 if ($name === null)
51 {
52 $name = $fieldID;
53 }
54
55 return $name;
56 }
57
58 public function prepareFieldData($fieldID): ?array
59 {
60 $result = null;
61
62 if ($fieldID === 'ROLE')
63 {
64/*
65 $roles = [
66 UserToGroupTable::ROLE_OWNER => Loc::getMessage('SOCIALNETWORK_USERTOGROUP_FILTER_ROLE_OWNER'),
67 UserToGroupTable::ROLE_MODERATOR => Loc::getMessage('SOCIALNETWORK_USERTOGROUP_FILTER_ROLE_MODERATOR'),
68 UserToGroupTable::ROLE_USER => Loc::getMessage('SOCIALNETWORK_USERTOGROUP_FILTER_ROLE_USER'),
69 UserToGroupTable::ROLE_REQUEST => Loc::getMessage('SOCIALNETWORK_USERTOGROUP_FILTER_ROLE_REQUEST'),
70 ];
71 $result = [
72 'params' => ['multiple' => 'Y'],
73 'items' => $roles
74 ];
75*/
76 }
77 elseif ($fieldID === 'INITIATED_BY_TYPE')
78 {
79/*
80 $result = [
81 'params' => ['multiple' => 'N'],
82 'items' => [
83 UserToGroupTable::INITIATED_BY_USER => Loc::getMessage('SOCIALNETWORK_USERTOGROUP_FILTER_INITIATED_BY_USER'),
84 UserToGroupTable::INITIATED_BY_GROUP => Loc::getMessage('SOCIALNETWORK_USERTOGROUP_FILTER_INITIATED_BY_GROUP'),
85 ]
86 ];
87*/
88 }
89 elseif ($fieldID === 'OWNER')
90 {
91 return [
92 'params' => [
93 'apiVersion' => '3',
94 'context' => 'SONET_GROUP_LIST_FILTER_OWNER',
95 'multiple' => 'N',
96 'contextCode' => 'U',
97 'enableAll' => 'N',
98 'enableSonetgroups' => 'N',
99 'allowEmailInvitation' => 'N',
100 'allowSearchEmailUsers' => 'N',
101 'departmentSelectDisable' => 'Y',
102 ],
103 ];
104 }
105 elseif ($fieldID === 'MEMBER')
106 {
107 return [
108 'params' => [
109 'apiVersion' => '3',
110 'context' => 'SONET_GROUP_LIST_FILTER_MEMBER',
111 'multiple' => 'N',
112 'contextCode' => 'U',
113 'enableAll' => 'N',
114 'enableSonetgroups' => 'N',
115 'allowEmailInvitation' => 'N',
116 'allowSearchEmailUsers' => 'N',
117 'departmentSelectDisable' => 'Y',
118 ],
119 ];
120 }
121 elseif (in_array($fieldID, [ 'FAVORITES', 'EXTRANET' ], true))
122 {
123 return [
124 'items' => [
125 '' => Loc::getMessage('SOCIALNETWORK_WORKGROUP_FILTER_LIST_VALUE_NOT_SPECIFIED'),
126 'Y' => Loc::getMessage('SOCIALNETWORK_WORKGROUP_FILTER_LIST_VALUE_Y'),
127 ],
128 ];
129 }
130 elseif ($fieldID === 'COUNTERS')
131 {
132 $items = [];
133
134 if (
135 is_array($this->additionalParams)
136 && isset($this->additionalParams['MODE'])
137 && in_array($this->additionalParams['MODE'], WorkgroupList::getTasksModeList(), true)
138 )
139 {
140 if ($this->additionalParams['MODE'] === WorkgroupList::MODE_TASKS_SCRUM)
141 {
142 $items = [
143 'NEW_COMMENTS' => Loc::getMessage('SOCIALNETWORK_WORKGROUP_FILTER_COUNTERS_LIST_VALUE_NEW_COMMENTS'),
144 ];
145 }
146 elseif ($this->additionalParams['MODE'] === WorkgroupList::MODE_TASKS_PROJECT)
147 {
148 $items = [
149 'EXPIRED' => Loc::getMessage('SOCIALNETWORK_WORKGROUP_FILTER_COUNTERS_LIST_VALUE_EXPIRED'),
150 'NEW_COMMENTS' => Loc::getMessage('SOCIALNETWORK_WORKGROUP_FILTER_COUNTERS_LIST_VALUE_NEW_COMMENTS'),
151 ];
152 }
153 }
154
155 return [
156 'items' => $items,
157 ];
158 }
159 elseif ($fieldID === 'COMMON_COUNTERS')
160 {
161 $items = [];
162
163 if (
164 is_array($this->additionalParams)
165 && isset($this->additionalParams['MODE'])
166 && $this->additionalParams['MODE'] === WorkgroupList::MODE_COMMON
167 )
168 {
169 $items = [
170 CounterFilter::VALUE_LIVEFEED => Loc::getMessage('SOCIALNETWORK_WORKGROUP_FILTER_COUNTERS_LIST_VALUE_LIVEFEED'),
171 CounterFilter::VALUE_TASKS => Loc::getMessage('SOCIALNETWORK_WORKGROUP_FILTER_COUNTERS_LIST_VALUE_TASKS'),
172 ];
173 }
174
175 return [
176 'items' => $items,
177 ];
178 }
179
180 return $result;
181 }
182
187 public function prepareFields(): array
188 {
189 $result = [];
190
191 $fieldsList = [
192 'ID' => [
193 'options' => [ 'type' => 'number' ],
194 ],
195 'NAME' => [
196 'options' => [ 'default' => true ],
197 ],
198 'OWNER' => [
199 'options' => [ 'type' => 'dest_selector', 'partial' => true ],
200 ],
201 'MEMBER' => [
202 'options' => [ 'type' => 'dest_selector', 'partial' => true ],
203 ],
204 'TAG' => [
205 'options' => [],
206 ],
207 'VISIBLE' => [
208 'options' => [ 'type' => 'checkbox' ],
209 ],
210 'OPENED' => [
211 'options' => [ 'type' => 'checkbox' ],
212 ],
213 'CLOSED' => [
214 'conditionMethod' => '\Bitrix\Socialnetwork\Filter\WorkgroupDataProvider::getClosedAvailability',
215 'options' => [ 'type' => 'checkbox' ],
216 ],
217 'PROJECT' => [
218 'conditionMethod' => '\Bitrix\Main\Filter\UserDataProvider::getProjectAvailability',
219 'options' => [ 'type' => 'checkbox' ],
220 ],
221 'SCRUM' => [
222 'conditionMethod' => '\Bitrix\Main\Filter\UserDataProvider::getScrumAvailability',
223 'options' => [ 'type' => 'checkbox' ],
224 ],
225 'PROJECT_DATE' => [
226 'conditionMethod' => '\Bitrix\Main\Filter\UserDataProvider::getProjectAvailability',
227 'options' => [ 'type' => 'date' ]
228 ],
229 'EXTRANET' => [
230 'conditionMethod' => '\Bitrix\Main\Filter\UserDataProvider::getExtranetAvailability',
231 'options' => [ 'type' => 'list', 'partial' => true ],
232 ],
233 'LANDING' => [
234 'conditionMethod' => '\Bitrix\Main\Filter\UserDataProvider::getLandingAvailability',
235 'options' => [ 'type' => 'checkbox' ],
236 ],
237 'FAVORITES' => [
238 'options' => [ 'type' => 'list', 'partial' => true ],
239 ],
240 'COUNTERS' => [
241 'options' => [ 'type' => 'list', 'partial' => true ],
242 ],
243 ];
244
245 //todo oh
246 if (
247 is_array($this->additionalParams)
248 && isset($this->additionalParams['MODE'])
249 && in_array($this->additionalParams['MODE'], WorkgroupList::getTasksModeList(), true)
250 )
251 {
252 $fieldsList['COMMON_COUNTERS'] = [
253 'options' => [ 'type' => 'list', 'partial' => true ],
254 ];
255 }
256
257 foreach ($fieldsList as $column => $field)
258 {
259 $whiteListPassed = true;
260
261 if (
262 !empty($field['conditionMethod'])
263 && is_callable($field['conditionMethod'])
264 )
265 {
266 $whiteListPassed = call_user_func_array($field['conditionMethod'], []);
267 }
268
269 if ($whiteListPassed)
270 {
271 if (
272 is_array($this->additionalParams)
273 && isset($this->additionalParams['MODE'])
274 && in_array($column, ['SCRUM', 'PROJECT'], true)
275 && in_array($this->additionalParams['MODE'], WorkgroupList::getTasksModeList(), true)
276 )
277 {
278 continue;
279 }
280
281 if (
282 $column === 'COUNTERS'
283 && (
284 !is_array($this->additionalParams)
285 || !isset($this->additionalParams['MODE'])
286 || !in_array($this->additionalParams['MODE'], WorkgroupList::getTasksModeList(), true)
287 )
288 )
289 {
290 continue;
291 }
292
293 if (
294 $column === 'COMMON_COUNTERS'
295 && (
296 !isset($this->additionalParams['MODE'], $this->additionalParams['CONTEXT_USER_ID'])
297 || !is_array($this->additionalParams)
298 || $this->additionalParams['MODE'] !== WorkgroupList::MODE_COMMON
299 || $this->additionalParams['CONTEXT_USER_ID'] !== Helper\User::getCurrentUserId()
300 )
301 )
302 {
303 continue;
304 }
305
306 $result[$column] = $this->createField(
307 $column,
308 (!empty($field['options']) ? $field['options'] : [])
309 );
310 }
311 }
312
313 return $result;
314 }
315
316 public static function getClosedAvailability(): bool
317 {
318 return (Option::get('socialnetwork', 'work_with_closed_groups', 'N') !== 'Y');
319 }
320
321 public static function getProjectAvailability(): bool
322 {
323 return (
324 ModuleManager::isModuleInstalled('intranet')
325 && ModuleManager::isModuleInstalled('tasks')
326 );
327 }
328
329 public static function getScrumAvailability(): bool
330 {
331 return (
332 ModuleManager::isModuleInstalled('intranet')
333 && ModuleManager::isModuleInstalled('tasks')
334 );
335 }
336
337 public static function getLandingAvailability(): bool
338 {
339 $extranetSiteId = Option::get('extranet', 'extranet_site');
340 $extranetSiteId = ($extranetSiteId && ModuleManager::isModuleInstalled('extranet') ? $extranetSiteId : '');
341
342 return (
343 SITE_ID !== $extranetSiteId
344 && ModuleManager::isModuleInstalled('landing')
345 );
346 }
347
348}
createField($fieldID, array $params=null)
Определения entitydataprovider.php:26
__construct(WorkgroupSettings $settings, ?array $additionalParams=null)
Определения workgroupdataprovider.php:18
</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
$name
Определения menu_edit.php:35
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
$items
Определения template.php:224
const SITE_ID
Определения sonet_set_content_view.php:12