...Человеческий поиск в разработке...
- Модуль: landing
- Путь к файлу: ~/bitrix/modules/landing/lib/history.php
- Класс: BitrixLandingHistory
- Вызов: History::push
public function push(string $actionName, array $params): bool { $actionName = strtoupper($actionName); $action = ActionFactory::getAction($actionName); if (!$action) { return false; // todo: or err } $action->setParams($params); $fields = [ 'ENTITY_TYPE' => $this->entityType, 'ENTITY_ID' => $this->entityId, 'ACTION' => $actionName, 'ACTION_PARAMS' => $action->getParams(), 'CREATED_BY_ID' => Manager::getUserId() ?: 1, 'DATE_CREATE' => new DateTime, ]; // check duplicates if ( !empty($this->stack[$this->step]) && ActionFactory::compareSteps($this->stack[$this->step], $fields) ) { return false; } if (!$action->isNeedPush()) { return true; } $stackCount = $this->getStackCount(); if ($this->step < $stackCount) { if (!$this->clearAfter($this->step + 1)) { return false; } } $nextStep = (self::$multiplyMode && self::$multiplyStep !== null) ? self::$multiplyStep : $this->step + 1 ; if (!$this->saveStep($nextStep)) { return false; } self::$multiplyStep = $nextStep; // todo: drop $multiplyStep after last element (when set multiply mode off) if (self::$multiplyMode && self::$multiplyId !== null) { $fields['MULTIPLY_ID'] = self::$multiplyId; } $resAdd = HistoryTable::add($fields); // save MULTIPLY_ID for first element in group if (self::$multiplyMode && self::$multiplyId === null) { self::$multiplyId = $resAdd->getId(); HistoryTable::update(self::$multiplyId, [ 'MULTIPLY_ID' => self::$multiplyId, ]); } return $resAdd->isSuccess(); }