- Модуль: 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();
}