• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/volume/task.php
  • Класс: BitrixDiskVolumeTask
  • Вызов: Task::fixState
public function fixState()
{
	$connection = Application::getConnection();
	if (!$connection->lock('volume', 10))
	{
		return false;
	}

	if ($this->getId() > 0)
	{
		$taskParams = [];

		// status changed
		if ($this->getStatus() != (int)$this->getParam('AGENT_LOCK'))
		{
			$taskParams['AGENT_LOCK'] = $this->getStatus();
		}
		$taskParams[self::DROP_UNNECESSARY_VERSION] = $this->getStatusSubTask(self::DROP_UNNECESSARY_VERSION);
		$taskParams[self::DROP_TRASHCAN] = $this->getStatusSubTask(self::DROP_TRASHCAN);
		$taskParams[self::EMPTY_FOLDER] = $this->getStatusSubTask(self::EMPTY_FOLDER);
		$taskParams[self::DROP_FOLDER] = $this->getStatusSubTask(self::DROP_FOLDER);

		$taskParams['DROPPED_FILE_COUNT'] = $this->getDroppedFileCount();
		$taskParams['DROPPED_VERSION_COUNT'] = $this->getDroppedVersionCount();
		$taskParams['DROPPED_FOLDER_COUNT'] = $this->getDroppedFolderCount();
		$taskParams['LAST_FILE_ID'] = $this->getLastFileId();
		$taskParams['FAIL_COUNT'] = $this->getFailCount();
		$taskParams['LAST_ERROR'] = $this->getLastError();

		$result = VolumeTable::update($this->getId(), $taskParams);
	}
	else
	{
		$result = VolumeTable::add([
			'INDICATOR_TYPE' => $this->getIndicatorType(),
			'OWNER_ID' => $this->getOwnerId(),
			'STORAGE_ID' => $this->getParam('STORAGE_ID'),
			'AGENT_LOCK' => $this->getStatus(),
			self::DROP_UNNECESSARY_VERSION => $this->getStatusSubTask(self::DROP_UNNECESSARY_VERSION),
			self::DROP_TRASHCAN => $this->getStatusSubTask(self::DROP_TRASHCAN),
			self::EMPTY_FOLDER => $this->getStatusSubTask(self::EMPTY_FOLDER),
			self::DROP_FOLDER => $this->getStatusSubTask(self::DROP_FOLDER),
			'LAST_FILE_ID' => ($this->getLastFileId() > 0 ? $this->getLastFileId() : null),
			'FAIL_COUNT' => $this->getFailCount(),
			'LAST_ERROR' => $this->getLastError(),
		]);
		if ($result->isSuccess())
		{
			$this->id = $result->getId();
		}
	}

	$connection->unlock('volume');

	return $result->isSuccess();
}