diff options
-rw-r--r-- | lib/private/Files/Cache/Scanner.php | 1 | ||||
-rw-r--r-- | lib/private/Files/Cache/Updater.php | 4 | ||||
-rw-r--r-- | lib/private/Files/View.php | 19 |
3 files changed, 16 insertions, 8 deletions
diff --git a/lib/private/Files/Cache/Scanner.php b/lib/private/Files/Cache/Scanner.php index b067f70b8cb..7669440aca5 100644 --- a/lib/private/Files/Cache/Scanner.php +++ b/lib/private/Files/Cache/Scanner.php @@ -228,7 +228,6 @@ class Scanner extends BasicEmitter implements IScanner { } if ($cacheData !== false) { - $data['oldSize'] = $cacheData['size'] ?? 0; $data['encrypted'] = $cacheData['encrypted'] ?? false; } diff --git a/lib/private/Files/Cache/Updater.php b/lib/private/Files/Cache/Updater.php index 03681036aa2..77e3ac95ed8 100644 --- a/lib/private/Files/Cache/Updater.php +++ b/lib/private/Files/Cache/Updater.php @@ -111,10 +111,6 @@ class Updater implements IUpdater { $data = $this->scanner->scan($path, Scanner::SCAN_SHALLOW, -1, false); - if (isset($data['oldSize']) && isset($data['size'])) { - $sizeDifference = $data['size'] - $data['oldSize']; - } - // encryption is a pita and touches the cache itself if (isset($data['encrypted']) && (bool)$data['encrypted']) { $sizeDifference = null; diff --git a/lib/private/Files/View.php b/lib/private/Files/View.php index 6832b4e1551..0fda81d0a25 100644 --- a/lib/private/Files/View.php +++ b/lib/private/Files/View.php @@ -1224,9 +1224,22 @@ class View { $this->removeUpdate($storage, $internalPath); } if ($result !== false && in_array('write', $hooks, true) && $operation !== 'fopen' && $operation !== 'touch') { - $isCreateOperation = $operation === 'mkdir' || ($operation === 'file_put_contents' && in_array('create', $hooks, true)); - $sizeDifference = $operation === 'mkdir' ? 0 : $result; - $this->writeUpdate($storage, $internalPath, null, $isCreateOperation ? $sizeDifference : null); + if ($operation === 'mkdir') { + $sizeDifference = 0; + } elseif ($operation === 'file_put_contents') { + if (in_array('create', $hooks, true)) { + $sizeDifference = $result; + } elseif (in_array('update', $hooks, true)) { + $cacheData = $storage->getCache()->get($path); + $sizeDifference = $cacheData === false ? null : $result - $cacheData->getSize(); + } else { + $sizeDifference = null; + } + } else { + $sizeDifference = null; + } + + $this->writeUpdate($storage, $internalPath, null, $sizeDifference); } if ($result !== false && in_array('touch', $hooks)) { $this->writeUpdate($storage, $internalPath, $extraParam, 0); |