1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
workgrouplist.php
См. документацию.
1<?php
2
3namespace Bitrix\Socialnetwork\Component;
4
5use Bitrix\Main\ErrorCollection;
6use Bitrix\Main\Error;
7use Bitrix\Main\Grid;
8use Bitrix\Socialnetwork\Component\WorkgroupList\EntityManager;
9use Bitrix\Socialnetwork\Component\WorkgroupList\TasksCounter;
10use Bitrix\Socialnetwork\Helper;
11
13{
14 public const AVAILABLE_ACTION_VIEW = 'view';
15 public const AVAILABLE_ACTION_EDIT = 'edit';
16 public const AVAILABLE_ACTION_DELETE = 'delete';
17 public const AVAILABLE_ACTION_ADD_TO_ARCHIVE = 'add_to_archive';
18 public const AVAILABLE_ACTION_REMOVE_FROM_ARCHIVE = 'remove_from_archive';
19 public const AVAILABLE_ACTION_ADD_TO_FAVORITES = 'add_to_favorites';
20 public const AVAILABLE_ACTION_REMOVE_FROM_FAVORITES = 'remove_from_favorites';
21 public const AVAILABLE_ACTION_CONVERT_TO_COLLAB = 'convert_to_collab';
22
23 public const AVAILABLE_ACTION_SET_CURRENT_USER_OWNER = 'set_current_user_owner';
24 public const AVAILABLE_ACTION_SET_CURRENT_USER_SCRUM_MASTER = 'set_current_user_scrum_master';
25 public const AVAILABLE_ACTION_LEAVE = 'leave';
26 public const AVAILABLE_ACTION_JOIN = 'join';
27 public const AVAILABLE_ACTION_DELETE_INCOMING_REQUEST = 'delete_incoming_request';
28
29 public const AJAX_ACTION_SET_OWNER = 'setOwner';
30 public const AJAX_ACTION_JOIN = 'join';
31 public const AJAX_ACTION_SET_SCRUM_MASTER = 'setScrumMaster';
32 public const AJAX_ACTION_DELETE_INCOMING_REQUEST = 'deleteIncomingRequest';
33 public const AJAX_ACTION_REJECT_OUTGOING_REQUEST = 'rejectOutgoingRequest';
34 public const AJAX_ACTION_ADD_TO_ARCHIVE = 'addToArchive';
35 public const AJAX_ACTION_REMOVE_FROM_ARCHIVE = 'removeFromArchive';
36 public const AJAX_ACTION_ADD_TO_FAVORITES = 'addToFavorites';
37 public const AJAX_ACTION_REMOVE_FROM_FAVORITES = 'removeFromFavorites';
38
39 public const GROUP_ACTION_ADD_TO_ARCHIVE = 'addToArchive';
40 public const GROUP_ACTION_REMOVE_FROM_ARCHIVE = 'removeFromArchive';
41 public const GROUP_ACTION_DELETE = 'delete';
42
43 public const MODE_COMMON = '';
44 public const MODE_USER = 'user_groups';
45 public const MODE_TASKS_PROJECT = 'tasks_project';
46 public const MODE_TASKS_SCRUM = 'tasks_scrum';
47
48 protected \Bitrix\Main\Grid\Options $gridOptions;
49 protected \Bitrix\Main\UI\Filter\Options $filterOptions;
50
52 protected $errorCollection = null;
53 protected int $currentUserId = 0;
56 protected array $counterData = [];
57
58 public function configureActions()
59 {
60 return [
61 ];
62 }
63
64 public function __construct($component = null)
65 {
66 parent::__construct($component);
67
68 $this->runtimeFieldsManager = new WorkgroupList\RuntimeFieldsManager();
69 $this->selectFieldsManager = new WorkgroupList\SelectFieldsManager();
70 $this->errorCollection = new ErrorCollection();
71 $this->currentUserId = Helper\User::getCurrentUserId();
72 }
73
80 protected function addError(Error $error)
81 {
82 $this->errorCollection[] = $error;
83
84 return $this;
85 }
86
87 public function getErrorByCode($code)
88 {
89 return $this->errorCollection->getErrorByCode($code);
90 }
91
96 public function getErrors()
97 {
98 return $this->errorCollection->toArray();
99 }
100
101 protected function printErrors(): void
102 {
103 foreach ($this->errorCollection as $error)
104 {
106 }
107 }
108
109 public static function getActions(
110 WorkgroupList\RuntimeFieldsManager $runtimeFieldsManager,
111 array $params = []
112 ): array
113 {
114 $result = [
115 self::AVAILABLE_ACTION_VIEW,
116 ];
117
118 $groupFields = $params['GROUP'];
119 $runtimeFields = $runtimeFieldsManager->get();
120 $queryInitAlias = $params['QUERY_INIT_ALIAS'];
121
122 $entityManager = new EntityManager([
123 'queryInitAlias' => $params['QUERY_INIT_ALIAS'],
124 ]);
125
126 if (in_array('CURRENT_RELATION', $runtimeFields, true))
127 {
128 $group = $entityManager->wakeUpWorkgroupEntityObject($groupFields);
129 $currentUserRelation = $entityManager->wakeUpCurrentRelationEntityObject($groupFields, $queryInitAlias);
130 $favorites = $entityManager->wakeUpFavoritesEntityObject($groupFields);
131
132 $accessManager = new \Bitrix\Socialnetwork\Item\Workgroup\AccessManager(
133 $group,
134 $currentUserRelation,
135 $currentUserRelation,
136 [
137 'currentUserFavorites' => $favorites,
138 ]
139 );
140
141 if ($accessManager->canEdit())
142 {
143 $result[] = self::AVAILABLE_ACTION_EDIT;
144 }
145
146 if ($accessManager->canSetOwner())
147 {
148 $result[] = self::AVAILABLE_ACTION_SET_CURRENT_USER_OWNER;
149 }
150
151 if ($accessManager->canSetScrumMaster())
152 {
153 $result[] = self::AVAILABLE_ACTION_SET_CURRENT_USER_SCRUM_MASTER;
154 }
155
156 if ($accessManager->canJoin())
157 {
158 $result[] = self::AVAILABLE_ACTION_JOIN;
159 }
160
161 if ($accessManager->canLeave())
162 {
163 $result[] = self::AVAILABLE_ACTION_LEAVE;
164 }
165
166 if ($accessManager->canDeleteIncomingRequest())
167 {
168 $result[] = self::AVAILABLE_ACTION_DELETE_INCOMING_REQUEST;
169 }
170
171 if ($accessManager->canAddToFavorites())
172 {
173 $result[] = self::AVAILABLE_ACTION_ADD_TO_FAVORITES;
174 }
175
176 if ($accessManager->canRemoveFromFavorites())
177 {
178 $result[] = self::AVAILABLE_ACTION_REMOVE_FROM_FAVORITES;
179 }
180
181 if ($accessManager->canAddToArchive())
182 {
183 $result[] = self::AVAILABLE_ACTION_ADD_TO_ARCHIVE;
184 }
185
186 if ($accessManager->canRemoveFromArchive())
187 {
188 $result[] = self::AVAILABLE_ACTION_REMOVE_FROM_ARCHIVE;
189 }
190
191 if ($accessManager->canConvertToCollab())
192 {
193 $result[] = self::AVAILABLE_ACTION_CONVERT_TO_COLLAB;
194 }
195
196 if ($accessManager->canDelete())
197 {
198 $result[] = self::AVAILABLE_ACTION_DELETE;
199 }
200 }
201
202 return $result;
203 }
204
205 public static function getCellActions(
206 WorkgroupList\RuntimeFieldsManager $runtimeFieldsManager,
207 $params
208 ): array
209 {
210
211 $gridId = (string)($params['GRID_ID'] ?? '');
212 $groupFields = ($params['GROUP'] ?? null);
213 if (
214 !$groupFields
215 || $gridId === ''
216 )
217 {
218 return [];
219 }
220
221 $runtimeFields = $runtimeFieldsManager->get();
222
223 $entityManager = new EntityManager([
224 'queryInitAlias' => $params['QUERY_INIT_ALIAS'],
225 ]);
226
227 $group = $entityManager->wakeUpWorkgroupEntityObject($groupFields);
228 if (!$group)
229 {
230 return [];
231 }
232
233 $groupId = (int)$group->get('ID');
234
235 $pin = [];
236 if (in_array('PIN', $runtimeFields, true))
237 {
238 $pinEntity = $entityManager->wakeUpPinEntityObject($groupFields);
239 $isPinned = ($pinEntity !== null);
240
241 $pin = [
242 'class' => [
245 ],
246 'events' => [
247 'click' => 'BX.Socialnetwork.UI.Grid.ActionController
248 .changePin.bind(BX.Socialnetwork.UI.Grid.ActionController, ' . $groupId . ')',
249 ],
250 ];
251 }
252
253 return [
254 'NAME' => [
255 $pin,
256 ],
257 ];
258 }
259
260 protected function checkAjaxAction(string $action = ''): bool
261 {
262 return in_array($action, [
263 self::AJAX_ACTION_JOIN,
264 self::AJAX_ACTION_SET_OWNER,
265 self::AJAX_ACTION_SET_SCRUM_MASTER,
266 self::AJAX_ACTION_DELETE_INCOMING_REQUEST,
267 self::AJAX_ACTION_REJECT_OUTGOING_REQUEST,
268 self::AJAX_ACTION_ADD_TO_ARCHIVE,
269 self::AJAX_ACTION_REMOVE_FROM_ARCHIVE,
270 ], true);
271 }
272
273 public static function getTasksModeList(): array
274 {
275 return [
276 self::MODE_TASKS_PROJECT,
277 self::MODE_TASKS_SCRUM,
278 ];
279 }
280
281 protected function getAccessToTasksCounters(): bool
282 {
283 return TasksCounter::getAccessToTasksCounters([
284 'mode' => $this->arParams['MODE'],
285 'contextUserId' => $this->arParams['USER_ID'],
286 ]);
287 }
288
289 protected function getTasksCounters(): array
290 {
291 return TasksCounter::getTasksCounters([
292 'mode' => $this->arParams['MODE'],
293 ]);
294 }
295
296 protected function getTasksCountersScope(): string
297 {
298 return TasksCounter::getTasksCountersScope([
299 'mode' => $this->arParams['MODE'],
300 ]);
301 }
302
303 protected function isFilterApplied(): bool
304 {
305 $currentPreset = $this->filterOptions->getCurrentFilterId();
306 $isDefaultPreset = ($this->filterOptions->getDefaultFilterId() === $currentPreset);
307 $additionalFields = $this->filterOptions->getAdditionalPresetFields($currentPreset);
308 $isSearchStringEmpty = ($this->filterOptions->getSearchString() === '');
309
310 return (!$isSearchStringEmpty || !$isDefaultPreset || !empty($additionalFields));
311 }
312}
Определения error.php:15
__construct($component=null)
Определения workgrouplist.php:64
static getCellActions(WorkgroupList\RuntimeFieldsManager $runtimeFieldsManager, $params)
Определения workgrouplist.php:205
WorkgroupList SelectFieldsManager $selectFieldsManager
Определения workgrouplist.php:55
WorkgroupList RuntimeFieldsManager $runtimeFieldsManager
Определения workgrouplist.php:54
checkAjaxAction(string $action='')
Определения workgrouplist.php:260
const AVAILABLE_ACTION_SET_CURRENT_USER_SCRUM_MASTER
Определения workgrouplist.php:24
Bitrix Main Grid Options $gridOptions
Определения workgrouplist.php:48
static getActions(WorkgroupList\RuntimeFieldsManager $runtimeFieldsManager, array $params=[])
Определения workgrouplist.php:109
Bitrix Main UI Filter Options $filterOptions
Определения workgrouplist.php:49
Определения component.php:12
</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
if(!is_null($config))($config as $configItem)(! $configItem->isVisible()) $code
Определения options.php:195
ShowError($strError, $cls="errortext")
Определения tools.php:4499
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
Определения template.php:799
$error
Определения subscription_card_product.php:20
$action
Определения file_dialog.php:21