18 $workgroupsPushList = [];
20 $workgroupEventsList = [
34 $changedEventTypes = [
38 $deletedEventTypes = [
41 $userChangedEventTypes = [
46 $userAddedAndDeletedEventTypes = [
57 foreach ($events as
$event)
61 $eventType =
$event->getType();
62 $groupId =
$event->getGroupId();
64 if (!in_array($eventType, $workgroupEventsList,
true))
69 $this->groupOldFields[$groupId] =
$event->getOldFields();
70 $this->groupNewFields[$groupId] =
$event->getNewFields();
72 if (in_array($eventType, $addedEventTypes,
true))
76 elseif (in_array($eventType, $changedEventTypes,
true))
78 $changed[] = $groupId;
80 elseif (in_array($eventType, $deletedEventTypes,
true))
82 $deleted[] = $groupId;
84 elseif (in_array($eventType, $userChangedEventTypes,
true))
86 $userChanged[] = $groupId;
90 $added = array_diff($added, $deleted);
91 $changed = array_diff($changed, $added, $deleted);
92 $changed = $this->clearNotRealChanges($changed);
93 $userChanged = array_diff($userChanged, $added, $changed, $deleted);
95 $notVisibleGroupsUsers = $this->getNotVisibleGroupsUsers([
102 foreach ($events as
$event)
105 $eventType =
$event->getType();
106 $groupId =
$event->getGroupId();
110 in_array($eventType, $userAddedAndDeletedEventTypes,
true)
111 && in_array($groupId, $userChanged,
true)
115 unset($userChanged[$groupId]);
120 in_array($eventType, $addedEventTypes,
true)
121 && !in_array($groupId, $added,
true)
124 in_array($eventType, $changedEventTypes,
true)
125 && !in_array($groupId, $changed,
true)
128 in_array($eventType, $userChangedEventTypes,
true)
129 && !in_array($groupId, $userChanged,
true)
136 $workgroupsPushList[] = [
137 'EVENT' => $eventType,
138 'GROUP_ID' => $groupId,
143 if (!empty($workgroupsPushList))
145 (
new WorkgroupSender())->send($workgroupsPushList, $notVisibleGroupsUsers);