- Модуль: disk
- Путь к файлу: ~/bitrix/modules/disk/lib/bitrix24disk/legacy/storagecontroller.php
- Класс: BitrixDiskBitrix24DiskLegacyStorageController
- Вызов: StorageController::processActionDelete
protected function processActionDelete()
{
$this->enableIgnoreQuotaError();
$this->checkRequiredPostParams(array('id', 'version', 'extra', 'storageExtra', 'storageId')); //isDirectory
if($this->errorCollection->hasErrors())
{
$this->sendJsonErrorResponse();
}
$id = $this->request->getPost('id');
$version = $this->request->getPost('version');
$isDirectory = $this->request->getPost('isDirectory') == 'true';
$lastVersion = null;
$storage = $this->getStorageObject($this->request->getPost('storageExtra'), $this->request->getPost('storageId'));
$extra = $storage->parseElementExtra($this->request->getPost('extra'));
$element = $isDirectory?
$storage->getDirectory($id, $extra):
$storage->getFile($id, $extra);
if($element)
{
if($storage->compareVersion($element['version'], $version) > 0)
{
$element['status'] = static::STATUS_OLD_VERSION;
$this->sendJsonResponse($element);
}
$lastVersion = $isDirectory?
$storage->deleteDirectory($element):
$storage->deleteFile($element);
}
else //is already removed?
{
$lastVersion = $storage->getVersionDelete(array(
'id' => $id,
'version' => $version,
'isDirectory' => $isDirectory,
'extra' => $extra,
));
}
if((bool)$lastVersion)
{
$event = new Event(
Driver::INTERNAL_MODULE_ID,
$isDirectory? self::EVENT_ON_AFTER_DISK_FOLDER_DELETE : self::EVENT_ON_AFTER_DISK_FILE_DELETE,
array($element['extra']['id'], $element)
);
$event->send();
$this->sendJsonSuccessResponse(array('version' => $this->storage->convertToExternalVersion((string)$lastVersion)));
}
$this->sendJsonResponse(array('status' => static::STATUS_NOT_FOUND));
}