fix(trashbin): make sure the trashed files are deleted if we don't have any available space left

Logic taken from the files_versions expiration. It seems the second
argument from the isExpired method wasn't even used anywhere.

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
pull/55742/head
Thomas Citharel 3 months ago
parent 65f52c47b8
commit 195d347240
No known key found for this signature in database
  1. 7
      apps/files_trashbin/lib/Trashbin.php

@ -844,7 +844,7 @@ class Trashbin implements IEventListener {
$dirContent = Helper::getTrashFiles('/', $user, 'mtime');
// delete all files older then $retention_obligation
[$delSize, $count] = self::deleteExpiredFiles($dirContent, $user);
[$delSize, $count] = self::deleteExpiredFiles($dirContent, $user, $availableSpace <= 0);
$availableSpace += $delSize;
@ -906,9 +906,10 @@ class Trashbin implements IEventListener {
*
* @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) {
public static function deleteExpiredFiles($files, $user, bool $quotaExceeded = false) {
/** @var Expiration $expiration */
$expiration = Server::get(Expiration::class);
$size = 0;
@ -916,7 +917,7 @@ class Trashbin implements IEventListener {
foreach ($files as $file) {
$timestamp = $file['mtime'];
$filename = $file['name'];
if ($expiration->isExpired($timestamp)) {
if ($expiration->isExpired($timestamp, $quotaExceeded)) {
try {
$size += self::delete($filename, $user, $timestamp);
$count++;

Loading…
Cancel
Save