Emit moveToTrash event only for the deleting user
Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
parent
1d72073e34
commit
b1832c8bef
2 changed files with 11 additions and 9 deletions
|
@ -125,10 +125,15 @@ class Storage extends Wrapper {
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
protected function shouldMoveToTrash($path) {
|
protected function shouldMoveToTrash($path) {
|
||||||
|
$normalized = Filesystem::normalizePath($this->mountPoint . '/' . $path);
|
||||||
|
$parts = explode('/', $normalized);
|
||||||
|
if (count($parts) < 4 || !$this->userManager->userExists($parts[1])) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// check if there is a app which want to disable the trash bin for this file
|
// check if there is a app which want to disable the trash bin for this file
|
||||||
$fileId = $this->storage->getCache()->getId($path);
|
$fileId = $this->storage->getCache()->getId($path);
|
||||||
$nodes = $this->rootFolder->getById($fileId);
|
$nodes = $this->rootFolder->getUserFolder($parts[1])->getById($fileId);
|
||||||
foreach ($nodes as $node) {
|
foreach ($nodes as $node) {
|
||||||
$event = $this->createMoveToTrashEvent($node);
|
$event = $this->createMoveToTrashEvent($node);
|
||||||
$this->eventDispatcher->dispatch('OCA\Files_Trashbin::moveToTrash', $event);
|
$this->eventDispatcher->dispatch('OCA\Files_Trashbin::moveToTrash', $event);
|
||||||
|
@ -137,13 +142,7 @@ class Storage extends Wrapper {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$normalized = Filesystem::normalizePath($this->mountPoint . '/' . $path);
|
if ($parts[2] === 'files') {
|
||||||
$parts = explode('/', $normalized);
|
|
||||||
if (count($parts) < 4) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($parts[2] === 'files' && $this->userManager->userExists($parts[1])) {
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,7 @@ use OCA\Files_Trashbin\Events\MoveToTrashEvent;
|
||||||
use OCA\Files_Trashbin\Storage;
|
use OCA\Files_Trashbin\Storage;
|
||||||
use OCA\Files_Trashbin\Trash\ITrashManager;
|
use OCA\Files_Trashbin\Trash\ITrashManager;
|
||||||
use OCP\Files\Cache\ICache;
|
use OCP\Files\Cache\ICache;
|
||||||
|
use OCP\Files\Folder;
|
||||||
use OCP\Files\IRootFolder;
|
use OCP\Files\IRootFolder;
|
||||||
use OCP\Files\Node;
|
use OCP\Files\Node;
|
||||||
use OCP\ILogger;
|
use OCP\ILogger;
|
||||||
|
@ -545,12 +546,14 @@ class StorageTest extends \Test\TestCase {
|
||||||
$logger = $this->getMockBuilder(ILogger::class)->getMock();
|
$logger = $this->getMockBuilder(ILogger::class)->getMock();
|
||||||
$eventDispatcher = $this->createMock(EventDispatcherInterface::class);
|
$eventDispatcher = $this->createMock(EventDispatcherInterface::class);
|
||||||
$rootFolder = $this->createMock(IRootFolder::class);
|
$rootFolder = $this->createMock(IRootFolder::class);
|
||||||
|
$userFolder = $this->createMock(Folder::class);
|
||||||
$node = $this->getMockBuilder(Node::class)->disableOriginalConstructor()->getMock();
|
$node = $this->getMockBuilder(Node::class)->disableOriginalConstructor()->getMock();
|
||||||
$trashManager = $this->createMock(ITrashManager::class);
|
$trashManager = $this->createMock(ITrashManager::class);
|
||||||
$event = $this->getMockBuilder(MoveToTrashEvent::class)->disableOriginalConstructor()->getMock();
|
$event = $this->getMockBuilder(MoveToTrashEvent::class)->disableOriginalConstructor()->getMock();
|
||||||
$event->expects($this->any())->method('shouldMoveToTrashBin')->willReturn(!$appDisablesTrash);
|
$event->expects($this->any())->method('shouldMoveToTrashBin')->willReturn(!$appDisablesTrash);
|
||||||
|
|
||||||
$rootFolder->expects($this->any())->method('getById')->with($fileID)->willReturn([$node]);
|
$userFolder->expects($this->any())->method('getById')->with($fileID)->willReturn([$node]);
|
||||||
|
$rootFolder->expects($this->any())->method('getUserFolder')->willReturn($userFolder);
|
||||||
|
|
||||||
$storage = $this->getMockBuilder(Storage::class)
|
$storage = $this->getMockBuilder(Storage::class)
|
||||||
->setConstructorArgs(
|
->setConstructorArgs(
|
||||||
|
|
Loading…
Reference in a new issue