1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
Conditions.php
См. документацию.
1<?php
2
3namespace Bitrix\Im\V2\Notification\Group\Condition;
4
6{
7 private bool $onlyConfirms = false;
8
9 private ModulesConditionMap $modulesConditionMap;
10
11 public function __construct()
12 {
13 $this->modulesConditionMap = new ModulesConditionMap();
14 }
15
16 public function setOnlyConfirms(bool $value): static
17 {
18 $this->onlyConfirms = $value;
19
20 return $this;
21 }
22
23 public function getOnlyConfirms(): bool
24 {
25 return $this->onlyConfirms;
26 }
27
28 public function toFilterFormat(bool $withConfirm = true): array
29 {
30 $filter = [];
31
32 if ($withConfirm && $this->onlyConfirms)
33 {
34 $filter['=NOTIFY_TYPE'] = IM_NOTIFY_CONFIRM;
35 }
36
37 $modulesFilter = $this->getModulesFilter();
38 if ($modulesFilter)
39 {
40 $filter[] = $modulesFilter;
41 }
42
43 return $filter;
44 }
45
46 public function appendModuleEvent(ModuleEventCondition $moduleEventCondition): static
47 {
48 $this->modulesConditionMap->addByEventCondition($moduleEventCondition);
49
50 return $this;
51 }
52
53 private function getModulesFilter(): array
54 {
55 if (empty($this->modulesConditionMap->getAll()))
56 {
57 return [];
58 }
59
60 $modulesFilter = [
61 'LOGIC' => 'OR',
62 ];
63 foreach ($this->modulesConditionMap->getAll() as $moduleConditions)
64 {
65 $modulesFilter[] = $this->getModuleFilter($moduleConditions);
66 }
67
68 return $modulesFilter;
69 }
70
71 private function getModuleFilter(ModuleConditions $conditions): array
72 {
73 $filter = [
74 'LOGIC' => 'AND',
75 ];
76
77 if ($conditions->module)
78 {
79 $filter['=NOTIFY_MODULE'] = $conditions->module;
80 }
81
82 if (!$conditions->isWhole)
83 {
84 $filter['@NOTIFY_EVENT'] = $conditions->events;
85 }
86
87 return $filter;
88 }
89
90 public function toRestFormat(): array
91 {
92 $view = [];
93 if ($this->getOnlyConfirms())
94 {
95 $view['notifyType'] = IM_NOTIFY_CONFIRM;
96 }
97
98 foreach ($this->modulesConditionMap->getAll() as $module => $moduleConditions)
99 {
100 $key = $module ?: 'all';
101 $view['moduleConditions'][$key] = [
102 'isWhole' => $moduleConditions->isWhole,
103 'events' => array_values($moduleConditions->events),
104 ];
105 }
106
107 return $view;
108 }
109}
appendModuleEvent(ModuleEventCondition $moduleEventCondition)
Определения Conditions.php:46
toFilterFormat(bool $withConfirm=true)
Определения Conditions.php:28
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$filter
Определения iblock_catalog_list.php:54
const IM_NOTIFY_CONFIRM
Определения include.php:36
if(empty($signedUserToken)) $key
Определения quickway.php:257