11 private const CACHE_TTL = 7200;
31 $this->appliedTrigger = $trigger;
50 if ($this->runtime ===
null)
53 $this->runtime->setTarget($this);
75 $iterator = TriggerTable::getList(array(
80 '@DOCUMENT_STATUS' => $statuses
83 'ttl' => self::CACHE_TTL
87 while ($row = $iterator->fetch())
98 foreach ($triggers as $i => $trigger)
100 if (isset($trigger[
'DELETED']) && $trigger[
'DELETED'] ===
'Y')
105 $triggers[$i][
'APPLY_RULES'] = $this->prepareApplyRules($trigger[
'APPLY_RULES']);
111 foreach ($triggers as $i => $trigger)
113 $triggers[$i][
'APPLY_RULES'] = $this->prepareApplyRules($trigger[
'APPLY_RULES'],
true);
119 $updatedTriggers = [];
120 foreach ($triggers as $trigger)
122 $triggerId = isset($trigger[
'ID']) ? (int)$trigger[
'ID'] : 0;
124 if (isset($trigger[
'DELETED']) && $trigger[
'DELETED'] ===
'Y')
129 TriggerTable::delete($triggerId);
136 TriggerTable::update($triggerId, array(
137 'NAME' => $trigger[
'NAME'],
138 'DOCUMENT_STATUS' => $trigger[
'DOCUMENT_STATUS'],
139 'APPLY_RULES' => is_array($trigger[
'APPLY_RULES']) ? $trigger[
'APPLY_RULES'] :
null
142 elseif (isset($trigger[
'CODE']) && isset($trigger[
'DOCUMENT_STATUS']))
145 $addResult = TriggerTable::add(array(
146 'NAME' => $trigger[
'NAME'],
150 'DOCUMENT_STATUS' => $trigger[
'DOCUMENT_STATUS'],
151 'CODE' => $trigger[
'CODE'],
152 'APPLY_RULES' => is_array($trigger[
'APPLY_RULES']) ? $trigger[
'APPLY_RULES'] :
null
155 if ($addResult->isSuccess())
157 $trigger[
'ID'] = $addResult->getId();
160 $updatedTriggers[] = $trigger;
163 return $updatedTriggers;
169 foreach ($triggers as $trigger)
172 $status = $trigger[
'DOCUMENT_STATUS'];
174 if ($triggerDescription && isset($triggerDescription[
'RETURN']))
176 if (!isset($params[$status]))
178 $params[$status] = [];
180 foreach ($triggerDescription[
'RETURN'] as $property)
182 $params[$status][$property[
'Id']] = $property;
189 private function prepareApplyRules($rules, $external =
false): ?array
191 if (!is_array($rules))
196 if (isset($rules[
'Condition']))
198 $condition =
new ConditionGroup($rules[
'Condition']);
207 $rules[
'Condition'] = $condition->toArray();
210 if (isset($rules[
'ExecuteBy']))
214 $rules[
'ExecuteBy'] = \CBPHelper::UsersArrayToString(
222 $rules[
'ExecuteBy'] = \CBPHelper::UsersStringToArray(
254 if ($code === $availableTrigger[
'CODE'])
256 return $availableTrigger;
297 $this->appliedTriggerConditionResults = $log;
setAppliedTrigger(array $trigger)
prepareTriggersToShow(array &$triggers)
setDocumentStatus($statusId)
setAppliedTriggerConditionResults(array $log)
setTriggers(array $triggers)
setDocumentType(array $documentType)
getAppliedTriggerConditionResults()
prepareTriggersToSave(array &$triggers)
getTriggers(array $statuses)
extractTemplateParameters(array $triggers)
setDocumentId($documentId)
getAvailableTriggerByCode($code)
getDocumentStatusList($categoryId=0)
array $appliedTriggerConditionResults
getDocumentCategoryCode()