1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
workgroupdepartmentssynchronizer.php
См. документацию.
1<?php
2
3namespace Bitrix\Socialnetwork\Integration\Intranet\Structure;
4
5use Bitrix\Main\ArgumentOutOfRangeException;
6use Bitrix\Main\Loader;
7use Bitrix\Main\LoaderException;
8use Bitrix\Main\Config\Option;
9use Bitrix\Socialnetwork\Item\Workgroup;
10use Bitrix\Socialnetwork\Update\WorkgroupDeptSync;
11
13{
14 private static ?self $instance = null;
15
16 private function __construct()
17 {
18 }
19
20 private function __clone()
21 {
22 }
23
24 public static function getInstance(): self
25 {
26 if (!self::$instance)
27 {
28 self::$instance = new self();
29 }
30
31 return self::$instance;
32 }
33
38 public function synchronize(Workgroup $group, int $userId, bool $exclude = false): void
39 {
40 if (!Loader::includeModule('intranet'))
41 {
42 return;
43 }
44
45 $initiatorId = $userId ?: $group->getOwnerId();
46 if (empty($group->getId()) || !$initiatorId)
47 {
48 return;
49 }
50
51 $workgroupsToSync = Option::get('socialnetwork', 'workgroupsToSync');
52
53 $workgroupsToSync =
54 $workgroupsToSync !== ''
55 ? @unserialize($workgroupsToSync, ['allowed_classes' => false])
56 : []
57 ;
58
59 if (!is_array($workgroupsToSync))
60 {
61 $workgroupsToSync = [];
62 }
63 $workgroupsToSync[] = [
64 'groupId' => $group->getId(),
65 'initiatorId' => $initiatorId,
66 'exclude' => $exclude,
67 ];
68 $workgroupsToSync = $this->reduceSyncList($workgroupsToSync);
69 Option::set('socialnetwork', 'workgroupsToSync', serialize($workgroupsToSync));
70
71 WorkgroupDeptSync::bind(1);
72 }
73
74 private function reduceSyncList(array $workgroupsToSync = []): array
75 {
76 $syncList = [];
77
78 foreach ($workgroupsToSync as $workgroupData)
79 {
80 $workgroupId = (int)$workgroupData['groupId'];
81 $syncList[$workgroupId] = $workgroupData;
82 }
83
84 return array_values($syncList);
85 }
86}
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
Определения check_mail.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