From 29d72bfb32e6a33adb633cb0ea04862d6591ec12 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Wed, 22 Oct 2025 15:17:37 +0200 Subject: [PATCH 1/3] revert(trashbin): 195d347 due to misunderstanding See https://github.com/nextcloud/documentation/pull/13017#issuecomment-3425782690 Signed-off-by: Thomas Citharel --- apps/files_trashbin/lib/Trashbin.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/apps/files_trashbin/lib/Trashbin.php b/apps/files_trashbin/lib/Trashbin.php index 7299326ecf11a..dd71e8ec28e46 100644 --- a/apps/files_trashbin/lib/Trashbin.php +++ b/apps/files_trashbin/lib/Trashbin.php @@ -844,7 +844,7 @@ public static function expire($user) { $dirContent = Helper::getTrashFiles('/', $user, 'mtime'); // delete all files older then $retention_obligation - [$delSize, $count] = self::deleteExpiredFiles($dirContent, $user, $availableSpace <= 0); + [$delSize, $count] = self::deleteExpiredFiles($dirContent, $user); $availableSpace += $delSize; @@ -906,10 +906,9 @@ protected static function deleteFiles(array $files, string $user, int|float $ava * * @param array $files list of files sorted by mtime * @param string $user - * @param bool $quotaExceeded * @return array{int|float, int} size of deleted files and number of deleted files */ - public static function deleteExpiredFiles($files, $user, bool $quotaExceeded = false) { + public static function deleteExpiredFiles($files, $user) { /** @var Expiration $expiration */ $expiration = Server::get(Expiration::class); $size = 0; @@ -917,7 +916,7 @@ public static function deleteExpiredFiles($files, $user, bool $quotaExceeded = f foreach ($files as $file) { $timestamp = $file['mtime']; $filename = $file['name']; - if ($expiration->isExpired($timestamp, $quotaExceeded)) { + if ($expiration->isExpired($timestamp)) { try { $size += self::delete($filename, $user, $timestamp); $count++; From 05d5fdb429c504614ea34b2e2cc75af7f784c521 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Wed, 22 Oct 2025 15:19:56 +0200 Subject: [PATCH 2/3] fix(trashbin): include $availableSpace = 0 in checks when we need to delete expired files Signed-off-by: Thomas Citharel --- apps/files_trashbin/lib/Trashbin.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/files_trashbin/lib/Trashbin.php b/apps/files_trashbin/lib/Trashbin.php index dd71e8ec28e46..f67c0e3d108ba 100644 --- a/apps/files_trashbin/lib/Trashbin.php +++ b/apps/files_trashbin/lib/Trashbin.php @@ -880,9 +880,9 @@ protected static function deleteFiles(array $files, string $user, int|float $ava $expiration = $application->getContainer()->query('Expiration'); $size = 0; - if ($availableSpace < 0) { + if ($availableSpace <= 0) { foreach ($files as $file) { - if ($availableSpace < 0 && $expiration->isExpired($file['mtime'], true)) { + if ($availableSpace <= 0 && $expiration->isExpired($file['mtime'], true)) { $tmp = self::delete($file['name'], $user, $file['mtime']); Server::get(LoggerInterface::class)->info( 'remove "' . $file['name'] . '" (' . $tmp . 'B) to meet the limit of trash bin size (50% of available quota) for user "{user}"', From b44f35a42a801c1663154afe2a86a2378ed82a5f Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Wed, 22 Oct 2025 15:30:48 +0200 Subject: [PATCH 3/3] refactor(trashbin): get expiration class directly from Server::get instead of going through Application container Signed-off-by: Thomas Citharel --- apps/files_trashbin/lib/Trashbin.php | 10 ++-------- build/psalm-baseline.xml | 2 -- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/apps/files_trashbin/lib/Trashbin.php b/apps/files_trashbin/lib/Trashbin.php index f67c0e3d108ba..15d5cd73a12dc 100644 --- a/apps/files_trashbin/lib/Trashbin.php +++ b/apps/files_trashbin/lib/Trashbin.php @@ -16,7 +16,6 @@ use OC\Files\View; use OC\User\NoUserException; use OC_User; -use OCA\Files_Trashbin\AppInfo\Application; use OCA\Files_Trashbin\Command\Expire; use OCA\Files_Trashbin\Events\BeforeNodeRestoredEvent; use OCA\Files_Trashbin\Events\NodeRestoredEvent; @@ -857,9 +856,7 @@ public static function expire($user) { */ private static function scheduleExpire($user) { // let the admin disable auto expire - /** @var Application $application */ - $application = Server::get(Application::class); - $expiration = $application->getContainer()->query('Expiration'); + $expiration = Server::get(Expiration::class); if ($expiration->isEnabled()) { Server::get(IBus::class)->push(new Expire($user)); } @@ -875,9 +872,7 @@ private static function scheduleExpire($user) { * @return int|float size of deleted files */ protected static function deleteFiles(array $files, string $user, int|float $availableSpace): int|float { - /** @var Application $application */ - $application = Server::get(Application::class); - $expiration = $application->getContainer()->query('Expiration'); + $expiration = Server::get(Expiration::class); $size = 0; if ($availableSpace <= 0) { @@ -909,7 +904,6 @@ protected static function deleteFiles(array $files, string $user, int|float $ava * @return array{int|float, int} size of deleted files and number of deleted files */ public static function deleteExpiredFiles($files, $user) { - /** @var Expiration $expiration */ $expiration = Server::get(Expiration::class); $size = 0; $count = 0; diff --git a/build/psalm-baseline.xml b/build/psalm-baseline.xml index b198266da15c6..7e3f9ab604ce3 100644 --- a/build/psalm-baseline.xml +++ b/build/psalm-baseline.xml @@ -1907,8 +1907,6 @@ - -