uawdijnntqw1x1x1
IP : 18.218.196.220
Hostname : axolotl
Kernel : Linux axolotl 4.9.0-13-amd64 #1 SMP Debian 4.9.228-1 (2020-07-05) x86_64
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
OS : Linux
PATH:
/
var
/
www
/
axolotl
/
data
/
www
/
perm.axolotls.ru
/
bitrix
/
modules
/
rpa
/
lib
/
command
/
update.php
/
/
<?php namespace Bitrix\Rpa\Command; use Bitrix\Main\Error; use Bitrix\Main\Localization\Loc; use Bitrix\Main\Result; use Bitrix\Main\Type\DateTime; use Bitrix\Rpa\Command; use Bitrix\Rpa\Driver; use Bitrix\Rpa\Integration\Bizproc; use Bitrix\Rpa\Model\ItemHistory; class Update extends Command { protected $isItemChanged; protected $historyItem; public function checkAccess(): Result { $result = new Result(); $userPermissions = Driver::getInstance()->getUserPermissions($this->userId); if($this->item->isChanged('STAGE_ID')) { if(!$userPermissions->canMoveItem($this->item, $this->item->remindActualStageId(), $this->item->getStageId())) { $actualStage = $this->item->getType()->getStage($this->item->remindActualStageId()); if($actualStage) { $actualStageName = $actualStage->getName(); } else { $actualStageName = $this->item->remindActualStageId(); } $result->addError($this->getMoveAccessDeniedError($actualStageName)); } elseif(!$userPermissions->canModifyItemsInStage($this->item->getType(), $this->item->remindActualStageId())) { $userFields = $this->item->getType()->getUserFieldCollection(); foreach($userFields as $userField) { if($this->item->isChanged($userField->getName())) { $result->addError($this->getModifyAccessDeniedError($this->item->getStage()->getName())); break; } } } } elseif(!$userPermissions->canModifyItemsInStage($this->item->getType(), $this->item->getStageId())) { $result->addError($this->getModifyAccessDeniedError($this->item->getStage()->getName())); } return $result; } public function checkStage(): Result { $result = new Result(); if($this->item->isChanged('STAGE_ID')) { $userPermissions = Driver::getInstance()->getUserPermissions($this->userId); if(!$userPermissions->canMoveItem($this->item, $this->item->remindActualStageId(), $this->item->getStageId())) { $result->addError($this->getWrongStageError($this->item->getStage()->getName())); } } return $result; } protected function save(): Result { if(!$this->isItemChanged()) { return new Result(); } if($this->userId > 0) { $this->item->setUpdatedBy($this->userId); if($this->item->isChanged('STAGE_ID')) { $this->item->setMovedBy($this->userId); } } $this->item->setUpdatedTime(new DateTime()); if($this->item->isChanged('STAGE_ID')) { $this->item->setMovedTime(new DateTime()); } return $this->item->save(); } protected function sendPullEvent(): bool { if($this->isItemChanged()) { return Driver::getInstance()->getPullManager()->sendItemUpdatedEvent( $this->item, $this->pullEventId, $this->historyItem ); } return true; } protected function isItemChanged(): bool { if($this->isItemChanged === null) { $this->isItemChanged = ( $this->item->isChanged('STAGE_ID') || !empty($this->item->getChangedUserFieldNames()) ); if ($this->isItemChanged) { $this->historyItem = clone $this->item; } } return $this->isItemChanged; } public function saveToHistory(ItemHistory $historyRecord): Result { // skip history if item is not changed if($this->taskId > 0 || $this->isItemChanged()) { parent::saveToHistory($historyRecord); } return new Result(); } protected function runAutomation(): Result { if($this->isItemChanged()) { if($this->pullEventId) { Driver::getInstance()->getPullManager()->addItemUpdateEventId( $this->item->getType()->getId(), $this->item->getId(), $this->pullEventId ); } return Bizproc\Listener::onItemUpdate($this->item, $this->historyItem); } return new Result(); } public function checkTasks(): Result { $result = new Result(); // do not check tasks for update on the same stage. if(!$this->item->isChanged('STAGE_ID')) { return $result; } if (!Bizproc\Automation\Factory::canUseAutomation()) { return $result; } $taskManager = Driver::getInstance()->getTaskManager(); if(!$taskManager) { return $result; } $stageChanged = $taskManager->onItemStageUpdate($this->item, $this->item->getStageId(), $this->userId); if ($stageChanged) { $this->terminate(); return $result; } $participants = $taskManager->getItemTaskParticipants($this->item); // check tasks for actual stage. $this->item->remindActualStageId(); //if current user has tasks for this item if(in_array($this->userId, $participants, true)) { $result->addError(new Error(Loc::getMessage('RPA_COMMAND_ITEM_USER_HAS_TASKS'), static::ERROR_CODE_ITEM_USER_HAS_TASKS)); } //if any user has tasks for this item elseif($participants) { $result->addError(new Error(Loc::getMessage('RPA_COMMAND_ITEM_TASKS_NOT_COMPLETED'), static::ERROR_CODE_ITEM_TASKS_NOT_COMPLETED)); } return $result; } }
/var/www/axolotl/data/www/perm.axolotls.ru/bitrix/modules/rpa/lib/command/update.php