1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
group.php
См. документацию.
1<?php
2
3require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/socialnetwork/classes/general/group.php");
4
6use Bitrix\Socialnetwork\Item\Workgroup\Type;
12use Bitrix\Socialnetwork\Integration;
15
17{
18 /***************************************/
19 /******** DATA MODIFICATION **********/
20 /***************************************/
21 public static function Add($arFields)
22 {
24
26
28 {
29 return false;
30 }
31
32 $arSiteID = [];
33 if(array_key_exists("SITE_ID", $arFields))
34 {
35 if(is_array($arFields["SITE_ID"]))
36 {
37 foreach($arFields["SITE_ID"] as $site_id)
38 {
39 $arSiteID[$site_id] = $DB->ForSQL($site_id);
40 }
41 }
42 else
43 {
44 $arSiteID[$arFields["SITE_ID"]] = $DB->ForSQL($arFields["SITE_ID"]);
45 }
46 }
47
48 if(empty($arSiteID))
49 {
50 unset($arFields["SITE_ID"]);
51 }
52 else
53 {
54 $arFields["SITE_ID"] = end($arSiteID);
55 }
56
57 $arFields["SITE_ID_FULL"] = $arSiteID;
58 $db_events = GetModuleEvents("socialnetwork", "OnBeforeSocNetGroupAdd");
59 while ($arEvent = $db_events->Fetch())
60 {
61 if (ExecuteModuleEventEx($arEvent, array(&$arFields)) === false)
62 {
63 return false;
64 }
65 }
66 unset($arFields["SITE_ID_FULL"]);
67
68 if (
69 array_key_exists("IMAGE_ID", $arFields)
70 && is_array($arFields["IMAGE_ID"])
71 && (
72 !array_key_exists("MODULE_ID", $arFields["IMAGE_ID"])
73 || $arFields["IMAGE_ID"]["MODULE_ID"] == ''
74 )
75 )
76 {
77 $arFields["IMAGE_ID"]["MODULE_ID"] = "socialnetwork";
78 }
79
80 CFile::SaveForDB($arFields, "IMAGE_ID", "socialnetwork");
81
82 $arInsert = $DB->PrepareInsert("b_sonet_group", $arFields);
83 Util::processEqualityFieldsToInsert($arFields1, $arInsert);
84
85 $ID = false;
86 if ($arInsert[0] <> '')
87 {
88 $strSql =
89 "INSERT INTO b_sonet_group(".$arInsert[0].") ".
90 "VALUES(".$arInsert[1].")";
91 $DB->Query($strSql);
92
93 $ID = (int)$DB->LastID();
94
95 $events = GetModuleEvents("socialnetwork", "OnSocNetGroupAdd");
96 while ($arEvent = $events->Fetch())
97 {
99 }
100
101 if ($ID > 0)
102 {
104 'GROUP_ID' => $ID,
105 ]);
106
107 if(!empty($arSiteID))
108 {
109 $DB->Query("
110 DELETE FROM b_sonet_group_site WHERE GROUP_ID = ".$ID."
111 ");
112
113 $DB->Query("
114 INSERT INTO b_sonet_group_site(GROUP_ID, SITE_ID)
115 SELECT ".$ID.", LID
116 FROM b_lang
117 WHERE LID IN ('".implode("', '", $arSiteID)."')
118 ");
119
120 if (intval($arFields["SUBJECT_ID"]) > 0)
121 {
123 'subjectId' => $arFields["SUBJECT_ID"],
124 'siteId' => $arSiteID
125 ));
126 }
127 }
128
129 if(defined("BX_COMP_MANAGED_CACHE"))
130 {
131 $CACHE_MANAGER->ClearByTag("sonet_group");
132 }
133
134 $USER_FIELD_MANAGER->Update("SONET_GROUP", $ID, $arFields);
135 CSocNetGroup::SearchIndex($ID, $arSiteID);
136 if (!empty($arFields["KEYWORDS"]))
137 {
138 $tagsList = explode(',', $arFields["KEYWORDS"]);
139 if (
140 !empty($tagsList)
141 && is_array($tagsList)
142 )
143 {
144 $tagsList = array_map(function($a) { return trim($a, ' '); }, $tagsList);
145 $tagsList = array_filter($tagsList, function($a) { return ($a <> ''); });
146 }
147 if (
148 !empty($tagsList)
149 && is_array($tagsList)
150 )
151 {
153 'groupId' => $ID,
154 'tags' => $tagsList
155 ]);
156 }
157 }
158
159 Workgroup::setIndex(array(
160 'fields' => $arFields
161 ));
162
163 $groupItem = Workgroup::getById($ID, false);
164 $groupItem->syncDeptConnection();
165
166 GroupRegistry::getInstance()->invalidate($ID);
167 }
168 }
169
170 return $ID;
171 }
172
173 public static function Update($ID, $arFields, $bAutoSubscribe = true, $bClearCommonTag = true, $bSync = true)
174 {
176
178 {
179 return false;
180 }
181
182 $ID = (int)$ID;
183
184 $arGroupOld = CSocNetGroup::GetByID($ID);
185 if (!$arGroupOld)
186 {
187 $APPLICATION->ThrowException(GetMessage("SONET_NO_GROUP"), "ERROR_NO_GROUP");
188 return false;
189 }
190
191 $arFields['TYPE'] ??= static::getGroupTypeByFields($arFields, $arGroupOld)->value;
192
194
195 if (!CSocNetGroup::CheckFields("UPDATE", $arFields, $ID))
196 {
197 return false;
198 }
199
200 $arSiteID = [];
201
202 if (is_set($arFields, "SITE_ID"))
203 {
204 if(is_array($arFields["SITE_ID"]))
205 {
206 $arSiteID = $arFields["SITE_ID"];
207 }
208 else
209 {
210 $arSiteID[] = $arFields["SITE_ID"];
211 }
212
213 $arFields["SITE_ID"] = false;
214 $str_SiteID = "''";
215 foreach($arSiteID as $v)
216 {
217 $arFields["SITE_ID"] = $v;
218 $str_SiteID .= ", '".$DB->ForSql($v)."'";
219 }
220 }
221
222 $db_events = GetModuleEvents("socialnetwork", "OnBeforeSocNetGroupUpdate");
223 while ($arEvent = $db_events->Fetch())
224 {
225 if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields)) === false)
226 {
227 return false;
228 }
229 }
230
232 'GROUP_ID' => $ID,
233 ]);
234
235 if (
236 array_key_exists("IMAGE_ID", $arFields)
237 && is_array($arFields["IMAGE_ID"])
238 && (
239 !array_key_exists("MODULE_ID", $arFields["IMAGE_ID"])
240 || $arFields["IMAGE_ID"]["MODULE_ID"] == ''
241 )
242 )
243 {
244 $arFields["IMAGE_ID"]["MODULE_ID"] = "socialnetwork";
245 }
246
247 CFile::SaveForDB($arFields, "IMAGE_ID", "socialnetwork");
248
249 $strUpdate = $DB->PrepareUpdate("b_sonet_group", $arFields);
250 Util::processEqualityFieldsToUpdate($arFields1, $strUpdate);
251
252 if ($strUpdate <> '')
253 {
254 $strSql =
255 "UPDATE b_sonet_group SET ".
256 " ".$strUpdate." ".
257 "WHERE ID = ".$ID." ";
258 $DB->Query($strSql);
259
260 if(!empty($arSiteID))
261 {
262 $strSql = "DELETE FROM b_sonet_group_site WHERE GROUP_ID=".$ID;
263 $DB->Query($strSql);
264
265 $strSql =
266 "INSERT INTO b_sonet_group_site(GROUP_ID, SITE_ID) ".
267 "SELECT ".$ID.", LID ".
268 "FROM b_lang ".
269 "WHERE LID IN (".$str_SiteID.") ";
270 $DB->Query($strSql);
271
272 $arLogID = array();
273
275 array(),
276 array("LOG_RIGHTS" => "SG".$ID),
277 false,
278 false,
279 array("ID")
280 );
281
282 while ($arResult = $dbResult->Fetch())
283 {
284 $DB->Query("DELETE FROM b_sonet_log_site WHERE LOG_ID = ".$arResult["ID"]."");
285
286 $DB->Query("
287 INSERT INTO b_sonet_log_site(LOG_ID, SITE_ID)
288 SELECT ".$arResult["ID"].", LID
289 FROM b_lang
290 WHERE LID IN (".$str_SiteID.")
291 ");
292
293 $arLogID[] = $arResult["ID"];
294 }
295 }
296
297 if (
298 !empty($arSiteID)
299 || intval($arFields["SUBJECT_ID"] ?? 0) > 0
300 )
301 {
302 $subjectId = 0;
303 $groupSiteList = array();
304
305 if (intval($arFields["SUBJECT_ID"] ?? 0) <= 0)
306 {
307 $res = WorkgroupTable::getList(array(
308 'filter' => array('=ID' => $ID),
309 'select' => array('SUBJECT_ID')
310 ));
311 if ($workgroupFieldsList = $res->fetch())
312 {
313 $subjectId = intval($workgroupFieldsList["SUBJECT_ID"]);
314 }
315 }
316 else
317 {
318 $subjectId = intval($arFields["SUBJECT_ID"]);
319 }
320
321 if (empty($arSiteID))
322 {
323 $res = WorkgroupSiteTable::getList(array(
324 'filter' => array('=GROUP_ID' => $ID),
325 'select' => array('SITE_ID')
326 ));
327 while ($workgroupSiteFieldsList = $res->fetch())
328 {
329 $groupSiteList[] = intval($workgroupSiteFieldsList["SITE_ID"]);
330 }
331 }
332 else
333 {
334 $groupSiteList = $arSiteID;
335 }
336
337 if (
338 $subjectId > 0
339 && !empty($groupSiteList)
340 )
341 {
343 'subjectId' => $subjectId,
344 'siteId' => $groupSiteList
345 ));
346 }
347 }
348
349 $sonetGroupCache = self::getStaticCache();
350 unset($sonetGroupCache[$ID]);
351 self::setStaticCache($sonetGroupCache);
352
353 if(defined("BX_COMP_MANAGED_CACHE"))
354 {
355 if ($bClearCommonTag)
356 {
357 $CACHE_MANAGER->ClearByTag("sonet_group");
358 }
359 $CACHE_MANAGER->ClearByTag("sonet_group_".$ID);
360 $CACHE_MANAGER->ClearByTag("sonet_user2group_G".$ID);
361 $CACHE_MANAGER->ClearByTag("sonet_user2group");
362 }
363
364 $USER_FIELD_MANAGER->Update("SONET_GROUP", $ID, $arFields);
365
366 $events = GetModuleEvents("socialnetwork", "OnSocNetGroupUpdate");
367 while ($arEvent = $events->Fetch())
368 {
370 }
371
373 'GROUP_ID' => $ID,
374 ]);
375
376 CSocNetGroup::SearchIndex($ID, false, $arGroupOld);
377
378 if (isset($arFields['KEYWORDS']))
379 {
380 $tagsList = explode(',', $arFields["KEYWORDS"]);
381 if (
382 !empty($tagsList)
383 && is_array($tagsList)
384 )
385 {
386 $tagsList = array_map(function($a) { return trim($a, ' '); }, $tagsList);
387 $tagsList = array_filter($tagsList, function($a) { return ($a <> ''); });
388 }
389
391 'groupId' => $ID,
392 'tags' => $tagsList
393 ]);
394 }
395
396 Workgroup::setIndex(array(
397 'fields' => array_merge($arFields, array('ID' => $ID))
398 ));
399
400 $arGroupNew = CSocNetGroup::GetByID($ID);
401 if (
402 $arGroupNew['OPENED'] === 'Y'
403 && $arGroupOld['OPENED'] === 'N'
404 )
405 {
406 CSocNetGroup::ConfirmAllRequests($ID, $bAutoSubscribe, $arFields['INITIATED_BY_USER_ID'] ?? 0);
407 }
408
409 $isCollab = $arGroupNew['TYPE'] === Workgroup\Type::Collab->value;
410
411 if ($isCollab)
412 {
413 $chatData = Integration\Im\Chat\Workgroup::getChatData(['group_id' => $ID]);
414
415 $chatId = $chatData[$ID] ?? null;
416
417 if ($chatId > 0)
418 {
419 $fields = [];
420 if (array_key_exists('NAME', $arFields))
421 {
422 $fields['TITLE'] = $arFields['NAME'];
423 }
424 if (array_key_exists('DESCRIPTION', $arFields))
425 {
426 $fields['DESCRIPTION'] = $arFields['DESCRIPTION'];
427 }
428 if (array_key_exists('IMAGE_ID', $arFields))
429 {
430 $fields['AVATAR'] = (int)$arFields['IMAGE_ID'];
431 }
432 if (array_key_exists('OWNER_ID', $arFields))
433 {
434 $fields['OWNER_ID'] = $arFields['OWNER_ID'];
435 }
436
437 if (!empty($fields))
438 {
440 }
441 }
442 }
443 elseif (
444 !empty($arFields["NAME"])
445 || !empty($arFields["IMAGE_ID"])
446 || !empty($arFields["OWNER_ID"])
447 || !empty($arFields["DESCRIPTION"])
448 )
449 {
451 'group_id' => $ID
452 ));
453
454 if (
455 !empty($chatData)
456 && !empty($chatData[$ID])
457 && intval($chatData[$ID]) > 0
458 )
459 {
460 $chatId = $chatData[$ID];
461
462 $chat = new CIMChat(0);
463
464 if(!empty($arFields["NAME"]))
465 {
466 $chat->rename(
467 $chatId,
468 Integration\Im\Chat\Workgroup::buildChatName($arFields["NAME"], [
469 'project' => $arGroupNew["PROJECT"] === 'Y',
470 'type' => $arGroupNew['TYPE'] ?? ''
471 ]),
472 false,
473 false
474 );
475 }
476
477 if(!empty($arFields["IMAGE_ID"]))
478 {
479 $chat->setAvatarId($chatId, $arFields['IMAGE_ID']);
480 }
481
482 if(!empty($arFields["OWNER_ID"]))
483 {
484 $chat->setOwner($chatId, $arFields["OWNER_ID"], false);
485 }
486
487 if (!empty($arFields["DESCRIPTION"]))
488 {
489 $chat->SetDescription($chatId, $arFields["DESCRIPTION"]);
490 }
491 }
492 }
493 }
494 else
495 {
496 if($USER_FIELD_MANAGER->Update("SONET_GROUP", $ID, $arFields))
497 {
498 if(defined("BX_COMP_MANAGED_CACHE"))
499 {
500 if ($bClearCommonTag)
501 {
502 $CACHE_MANAGER->ClearByTag("sonet_group");
503 }
504 $CACHE_MANAGER->ClearByTag("sonet_group_".$ID);
505 }
506 }
507 else
508 {
509 $ID = False;
510 }
511 }
512
513 if ($ID && $bSync)
514 {
515 $groupItem = Workgroup::getById($ID, false);
516 $groupItem->syncDeptConnection();
517 }
518
519 $groupId = (int)$ID;
520 if ($groupId > 0)
521 {
522 GroupRegistry::getInstance()->invalidate($groupId);
523 }
524
525 return $ID;
526 }
527
528 /***************************************/
529 /********** DATA SELECTION ***********/
530 /***************************************/
531 public static function GetList($arOrder = Array("ID" => "DESC"), $arFilter = Array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
532 {
533 global $DB, $USER_FIELD_MANAGER;
534
535 if (count($arSelectFields) <= 0)
536 $arSelectFields = array("ID", "SITE_ID", "NAME", "DESCRIPTION", "DATE_CREATE", "DATE_UPDATE", "ACTIVE", "VISIBLE", "OPENED", "CLOSED", "SUBJECT_ID", "OWNER_ID", "KEYWORDS", "IMAGE_ID", "NUMBER_OF_MEMBERS", "INITIATE_PERMS", "SPAM_PERMS", "DATE_ACTIVITY", "SUBJECT_NAME", "PROJECT");
537
538 static $arFields1 = array(
539 "ID" => Array("FIELD" => "G.ID", "TYPE" => "int"),
540 "NAME" => Array("FIELD" => "G.NAME", "TYPE" => "string"),
541 "DESCRIPTION" => Array("FIELD" => "G.DESCRIPTION", "TYPE" => "string"),
542 "DATE_CREATE" => Array("FIELD" => "G.DATE_CREATE", "TYPE" => "datetime"),
543 "DATE_UPDATE" => Array("FIELD" => "G.DATE_UPDATE", "TYPE" => "datetime"),
544 "DATE_ACTIVITY" => Array("FIELD" => "G.DATE_ACTIVITY", "TYPE" => "datetime"),
545 "ACTIVE" => Array("FIELD" => "G.ACTIVE", "TYPE" => "string"),
546 "VISIBLE" => Array("FIELD" => "G.VISIBLE", "TYPE" => "string"),
547 "OPENED" => Array("FIELD" => "G.OPENED", "TYPE" => "string"),
548 "CLOSED" => Array("FIELD" => "G.CLOSED", "TYPE" => "string"),
549 "SUBJECT_ID" => Array("FIELD" => "G.SUBJECT_ID", "TYPE" => "int"),
550 "OWNER_ID" => Array("FIELD" => "G.OWNER_ID", "TYPE" => "int"),
551 "KEYWORDS" => Array("FIELD" => "G.KEYWORDS", "TYPE" => "string"),
552 "IMAGE_ID" => Array("FIELD" => "G.IMAGE_ID", "TYPE" => "int"),
553 "NUMBER_OF_MEMBERS" => Array("FIELD" => "G.NUMBER_OF_MEMBERS", "TYPE" => "int"),
554 "NUMBER_OF_MODERATORS" => Array("FIELD" => "G.NUMBER_OF_MODERATORS", "TYPE" => "int"),
555 "INITIATE_PERMS" => Array("FIELD" => "G.INITIATE_PERMS", "TYPE" => "string"),
556 "SPAM_PERMS" => Array("FIELD" => "G.SPAM_PERMS", "TYPE" => "string"),
557 "SUBJECT_NAME" => Array("FIELD" => "S.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sonet_group_subject S ON (G.SUBJECT_ID = S.ID)"),
558 "OWNER_NAME" => Array("FIELD" => "U.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (G.OWNER_ID = U.ID)"),
559 "OWNER_LAST_NAME" => Array("FIELD" => "U.LAST_NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (G.OWNER_ID = U.ID)"),
560 "OWNER_LOGIN" => Array("FIELD" => "U.LOGIN", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (G.OWNER_ID = U.ID)"),
561 "OWNER_EMAIL" => Array("FIELD" => "U.EMAIL", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (G.OWNER_ID = U.ID)"),
562 "OWNER_USER" => array("FIELD" => "U.LOGIN,U.NAME,U.LAST_NAME,U.EMAIL,U.ID", "WHERE_ONLY" => "Y", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (G.OWNER_ID = U.ID)"),
563 "PROJECT" => Array("FIELD" => "G.PROJECT", "TYPE" => "string"),
564 "PROJECT_DATE_START" => Array("FIELD" => "G.PROJECT_DATE_START", "TYPE" => "datetime"),
565 "PROJECT_DATE_FINISH" => Array("FIELD" => "G.PROJECT_DATE_FINISH", "TYPE" => "datetime"),
566 "LANDING" => Array("FIELD" => "G.LANDING", "TYPE" => "string"),
567 "SCRUM_OWNER_ID" => ["FIELD" => "G.SCRUM_OWNER_ID", "TYPE" => "int"],
568 "SCRUM_MASTER_ID" => ["FIELD" => "G.SCRUM_MASTER_ID", "TYPE" => "int"],
569 "SCRUM_SPRINT_DURATION" => ["FIELD" => "G.SCRUM_SPRINT_DURATION", "TYPE" => "int"],
570 "SCRUM_TASK_RESPONSIBLE" => ["FIELD" => "G.SCRUM_TASK_RESPONSIBLE", "TYPE" => "string"],
571 'AVATAR_TYPE' => [ 'FIELD' => 'G.AVATAR_TYPE', 'TYPE' => 'string'],
572 'TYPE' => ['FIELD' => 'G.TYPE', 'TYPE' => 'string']
573 );
574
575 if (array_key_exists("SITE_ID", $arFilter))
576 {
577 $arFields["SITE_ID"] = Array("FIELD" => "SGS.SITE_ID", "TYPE" => "string", "FROM" => "LEFT JOIN b_sonet_group_site SGS ON G.ID = SGS.GROUP_ID");
578 $strDistinct = " DISTINCT ";
579 foreach ($arSelectFields as $i => $strFieldTmp)
580 {
581 if ($strFieldTmp === "SITE_ID")
582 {
583 unset($arSelectFields[$i]);
584 }
585 }
586
587 foreach ($arOrder as $by => $order)
588 {
589 if (!in_array($by, $arSelectFields))
590 {
591 $arSelectFields[] = $by;
592 }
593 }
594 }
595 else
596 {
597 $arFields["SITE_ID"] = Array("FIELD" => "G.SITE_ID", "TYPE" => "string");
598 $strDistinct = " ";
599 }
600
601 $arFields = array_merge($arFields1, $arFields);
602 $arSqls = CSocNetGroup::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields, array("ENTITY_ID" => "SONET_GROUP"));
603 $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", $strDistinct, $arSqls["SELECT"]);
604
605 if (is_array($arGroupBy) && count($arGroupBy)==0)
606 {
607 $strSql =
608 "SELECT ".$arSqls["SELECT"]." ".
609 "FROM b_sonet_group G ".
610 " ".$arSqls["FROM"]." ";
611 if ($arSqls["WHERE"] <> '')
612 {
613 $strSql .= "WHERE ".$arSqls["WHERE"]." ";
614 }
615 if ($arSqls["GROUPBY"] <> '')
616 {
617 $strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";
618 }
619
620 //echo "!1!=".htmlspecialcharsbx($strSql)."<br>";
621
622 $dbRes = $DB->Query($strSql);
623 if ($arRes = $dbRes->Fetch())
624 return $arRes["CNT"];
625 else
626 return False;
627 }
628
629 $checkPermissions = Array_Key_Exists("CHECK_PERMISSIONS", $arFilter);
630
631 if ($checkPermissions)
632 {
633 $strSql =
634 "SELECT ".$arSqls["SELECT"]." ".
635 "FROM b_sonet_group G ".
636 " ".$arSqls["FROM"]." ".
637 "WHERE G.VISIBLE = 'Y' ";
638 if ($arSqls["WHERE"] <> '')
639 {
640 $strSql .= "AND ".$arSqls["WHERE"]." ";
641 }
642
643 $strSql .= "UNION ".
644 "SELECT ".$arSqls["SELECT"]." ".
645 "FROM b_sonet_group G ".
646 " INNER JOIN b_sonet_user2group UG ON (G.ID = UG.GROUP_ID AND UG.USER_ID = ".intval($arFilter["CHECK_PERMISSIONS"])." AND UG.ROLE <= '".$DB->ForSql(SONET_ROLES_USER, 1)."') ".
647 " ".$arSqls["FROM"]." ".
648 "WHERE G.VISIBLE = 'N' ";
649 if ($arSqls["WHERE"] <> '')
650 $strSql .= "AND ".$arSqls["WHERE"]." ";
651 $strSql .= " ";
652
653 if ($arSqls["GROUPBY"] <> '')
654 {
655 $strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";
656 }
657
658 if ($arSqls["ORDERBY"] <> '')
659 {
660 $strSql .= "ORDER BY ".Str_Replace(array(" G.", " UG.", " S."), array(" ", " ", " "), " ".$arSqls["ORDERBY"])." ";
661 }
662 }
663 else
664 {
665 $strSql =
666 "SELECT ".$arSqls["SELECT"]." ".
667 "FROM b_sonet_group G ".
668 " ".$arSqls["FROM"]." ";
669 if ($arSqls["WHERE"] <> '')
670 {
671 $strSql .= "WHERE ".$arSqls["WHERE"]." ";
672 }
673 if ($arSqls["GROUPBY"] <> '')
674 {
675 $strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";
676 }
677 if ($arSqls["ORDERBY"] <> '')
678 {
679 $strSql .= "ORDER BY ".$arSqls["ORDERBY"]." ";
680 }
681 }
682
683 if (
684 is_array($arNavStartParams)
685 && intval($arNavStartParams["nTopCount"] ?? null) <= 0
686 )
687 {
688 $strSql_tmp =
689 "SELECT COUNT('x') as CNT ".
690 "FROM b_sonet_group G ".
691 " ".$arSqls["FROM"]." ";
692 if (
693 $arSqls["WHERE"] <> ''
694 || $checkPermissions
695 )
696 {
697 $strSql_tmp .= "WHERE ".($checkPermissions ? "G.VISIBLE = 'Y'" : "1 = 1").($arSqls["WHERE"] <> '' ? " AND " : "").$arSqls["WHERE"]." ";
698 }
699 if ($arSqls["GROUPBY"] <> '')
700 {
701 $strSql_tmp .= "GROUP BY ".$arSqls["GROUPBY"]." ";
702 }
703
704 //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";
705
706 $dbRes = $DB->Query($strSql_tmp);
707 $cnt = 0;
708 if ($arSqls["GROUPBY"] == '')
709 {
710 if ($arRes = $dbRes->Fetch())
711 {
712 $cnt = $arRes["CNT"];
713 }
714 }
715 else
716 {
717 // ТОЛЬКО ДЛЯ MYSQL!!! ДЛЯ ORACLE ДРУГОЙ КОД
718 $cnt = $dbRes->SelectedRowsCount();
719 }
720
721 if ($checkPermissions)
722 {
723 $strSql_tmp =
724 "SELECT COUNT('x') as CNT ".
725 "FROM b_sonet_group G ".
726 " INNER JOIN b_sonet_user2group UG ON (G.ID = UG.GROUP_ID AND UG.USER_ID = ".intval($arFilter["CHECK_PERMISSIONS"])." AND UG.ROLE <= '".$DB->ForSql(SONET_ROLES_USER, 1)."') ".
727 " ".$arSqls["FROM"]." ".
728 "WHERE G.VISIBLE = 'N' ";
729 if ($arSqls["WHERE"] <> '')
730 {
731 $strSql_tmp .= "AND ".$arSqls["WHERE"]." ";
732 }
733 if ($arSqls["GROUPBY"] <> '')
734 {
735 $strSql_tmp .= "GROUP BY ".$arSqls["GROUPBY"]." ";
736 }
737
738 //echo "!2.2!=".htmlspecialcharsbx($strSql_tmp)."<br>";
739
740 $dbRes = $DB->Query($strSql_tmp);
741 if ($arSqls["GROUPBY"] == '')
742 {
743 if ($arRes = $dbRes->Fetch())
744 {
745 $cnt += $arRes["CNT"];
746 }
747 }
748 else
749 {
750 // ТОЛЬКО ДЛЯ MYSQL!!! ДЛЯ ORACLE ДРУГОЙ КОД
751 $cnt += $dbRes->SelectedRowsCount();
752 }
753 }
754
755 $dbRes = new CDBResult();
756
757 //echo "!2.3!=".htmlspecialcharsbx($strSql)."<br>";
758
759 $dbRes->SetUserFields($USER_FIELD_MANAGER->GetUserFields("SONET_GROUP"));
760 $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
761 }
762 else
763 {
764 if (
765 is_array($arNavStartParams)
766 && intval($arNavStartParams["nTopCount"]) > 0
767 )
768 {
769 $strSql .= "LIMIT ".intval($arNavStartParams["nTopCount"]);
770 }
771
772 //echo "!3!=".htmlspecialcharsbx($strSql)."<br>";
773
774 $dbRes = $DB->Query($strSql);
775 $dbRes->SetUserFields($USER_FIELD_MANAGER->GetUserFields("SONET_GROUP"));
776 }
777
778 return $dbRes;
779 }
780
781 private static function getGroupTypeByFields(array $fields, array $oldFields): Type
782 {
783 if (($oldFields['TYPE'] ?? null) === Type::Collab->value)
784 {
785 return Type::Collab;
786 }
787
788 if (isset($fields['SCRUM_MASTER_ID']))
789 {
790 return Type::Scrum;
791 }
792
793 if (isset($fields['PROJECT']))
794 {
795 return $fields['PROJECT'] === 'Y' ? Type::Project : Type::Group;
796 }
797
798 return Type::tryFrom($oldFields['TYPE']) ?? Type::getDefault();
799 }
800}
global $APPLICATION
Определения include.php:80
$arResult
Определения generate_coupon.php:16
static synchronizeCollabChat(int $chatId, array $fields)
Определения Messenger.php:77
static addEvent(string $type, array $data)
Определения service.php:45
static syncSiteId($params=array())
Определения workgroupsubject.php:14
static processEqualityFieldsToUpdate($fields1, &$update)
Определения util.php:239
static getEqualityFields(&$fields)
Определения util.php:207
static processEqualityFieldsToInsert($fields1, &$insert)
Определения util.php:222
static set($params=array())
Определения workgrouptag.php:69
Определения group.php:23
static PrepareSql(&$arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields, $arUF=array())
Определения group.php:1110
static ConfirmAllRequests($groupId, $bAutoSubscribe=true, $currentUserId=0)
Определения group.php:1546
static CheckFields($ACTION, &$arFields, $ID=0)
Определения group.php:29
static __ValidateID($ID)
Определения group.php:1040
static SearchIndex($groupId, $arSiteID=array(), $arGroupOld=array())
Определения group.php:1469
Определения dbresult.php:88
Определения im_chat.php:15
Определения group.php:17
static Update($ID, $arFields, $bAutoSubscribe=true, $bClearCommonTag=true, $bSync=true)
Определения group.php:173
static Add($arFields)
Определения group.php:21
static GetList($arOrder=Array("ID"=> "DESC"), $arFilter=Array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
Определения group.php:531
static GetList($arOrder=Array("ID"=> "DESC"), $arFilter=Array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array(), $arParams=array())
Определения log.php:338
global $CACHE_MANAGER
Определения clear_component_cache.php:7
$arFields
Определения dblapprove.php:5
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$res
Определения filter_act.php:7
global $USER_FIELD_MANAGER
Определения attempt.php:6
if($ajaxMode) $ID
Определения get_user.php:27
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
global $DB
Определения cron_frame.php:29
ExecuteModuleEventEx($arEvent, $arParams=[])
Определения tools.php:5214
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
Определения tools.php:5177
is_set($a, $k=false)
Определения tools.php:2133
GetMessage($name, $aReplace=null)
Определения tools.php:3397
Определения collection.php:2
$order
Определения payment.php:8
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
$i
Определения factura.php:643
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
Определения waybill.php:936
else $a
Определения template.php:137
const SONET_ROLES_USER
Определения include.php:31
$arRes
Определения options.php:104
$site_id
Определения sonet_set_content_view.php:9
$dbResult
Определения updtr957.php:3
$arFilter
Определения user_search.php:106
$dbRes
Определения yandex_detail.php:168
$fields
Определения yandex_run.php:501