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