• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/uf/integration/diskuploadercontroller.php
  • Класс: BitrixDiskUfIntegrationDiskUploaderController
  • Вызов: DiskUploaderController::remove
public function remove(array $ids): RemoveResultCollection
{
	$results = new RemoveResultCollection();
	$userId = (int)CurrentUser::get()->getId();;
	foreach ($ids as $id)
	{
		$removeResult = new RemoveResult($id);
		[$type, $realValue] = FileUserType::detectType($id);
		if ($type === FileUserType::TYPE_NEW_OBJECT)
		{
			$file = DiskFile::loadById($realValue, ['STORAGE']);
			if (!$file)
			{
				$removeResult->addError(new Error('Could not find file'));
			}
			elseif (!$file->canDelete($file->getStorage()->getCurrentUserSecurityContext()))
			{
				$removeResult->addError(new Error('Bad permission. Could not read this file'));
			}
			else if ($file->countAttachedObjects() != 0)
			{
				$removeResult->addError(new Error('Could not delete file which attached to entities'));
			}
			else if ($file->getGlobalContentVersion() != 1)
			{
				$removeResult->addError(new Error('Could not delete file which has a few versions'));
			}
			else
			{
				/** @var DiskFolder $folder */
				[$folder] = $this->getFolderAndStorage($file->getOriginalName());
				if (!$file->getParent() || !$folder || $file->getParentId() !== $folder->getId())
				{
					$removeResult->addError(new Error('Could not delete file which is not located in folder for uploaded files.'));
				}
				else if (!$file->delete($userId))
				{
					$removeResult->addErrors($file->getErrors());
				}
			}
		}
		else
		{
			$removeResult->addError(new Error('Could not delete attached object'));
		}

		$results->add($removeResult);
	}

	return $results;
}