diff options
author | Carl Schwan <carl@carlschwan.eu> | 2022-10-26 13:41:50 +0300 |
---|---|---|
committer | Carl Schwan <carl@carlschwan.eu> | 2022-10-26 13:41:50 +0300 |
commit | da1634a125264fb2abc7adcf0af7c20d71cf248a (patch) | |
tree | 6f3477ea9d8952d51e0e368d07783158d6bf7320 | |
parent | b4a8f20624412dbcbe664e247b7314aeaf459988 (diff) |
Move check if node exists earlier
Otherwise we capture the not found exception too late
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
-rw-r--r-- | lib/Trash/TrashBackend.php | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/lib/Trash/TrashBackend.php b/lib/Trash/TrashBackend.php index a6d3b068..0f4d5122 100644 --- a/lib/Trash/TrashBackend.php +++ b/lib/Trash/TrashBackend.php @@ -376,20 +376,24 @@ class TrashBackend implements ITrashBackend { $nodes = []; // cache foreach ($trashItems as $groupTrashItem) { $nodeName = $groupTrashItem['name'] . '.d' . $groupTrashItem['deleted_time']; - $nodes[$nodeName] = $node = $trashFolder->get($nodeName); + try { + $nodes[$nodeName] = $node = $trashFolder->get($nodeName); + } catch (NotFoundException $e) { + $this->trashManager->removeItem($folderId, $groupTrashItem['name'], $groupTrashItem['deleted_time']); + continue; + } $sizeInTrash += $node->getSize(); } foreach ($trashItems as $groupTrashItem) { if ($expiration->isExpired($groupTrashItem['deleted_time'], $folder['quota'] > 0 && $folder['quota'] < ($folder['size'] + $sizeInTrash))) { - try { - $nodeName = $groupTrashItem['name'] . '.d' . $groupTrashItem['deleted_time']; - $node = $nodes[$nodeName]; - $size += $node->getSize(); - $count += 1; - } catch (NotFoundException $e) { - $this->trashManager->removeItem($folderId, $groupTrashItem['name'], $groupTrashItem['deleted_time']); + $nodeName = $groupTrashItem['name'] . '.d' . $groupTrashItem['deleted_time']; + if (!isset($nodes[$nodeName])) { continue; } + + $node = $nodes[$nodeName]; + $size += $node->getSize(); + $count += 1; if ($node->getStorage()->unlink($node->getInternalPath()) === false) { throw new \Exception('Failed to remove item from trashbin'); } |