From 645e7035a45e400d02c56e588f6946d20b522731 Mon Sep 17 00:00:00 2001 From: ringmaster Date: Thu, 15 May 2014 22:38:46 -0400 Subject: [PATCH] Allow apps to control via a hook to skip adding/removing a file during filescan --- lib/private/files/cache/scanner.php | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/lib/private/files/cache/scanner.php b/lib/private/files/cache/scanner.php index b3ab94f459..19321da8ec 100644 --- a/lib/private/files/cache/scanner.php +++ b/lib/private/files/cache/scanner.php @@ -161,7 +161,11 @@ class Scanner extends BasicEmitter { \OC_Hook::emit('\OC\Files\Cache\Scanner', 'post_scan_file', array('path' => $file, 'storage' => $this->storageId)); } } else { - $this->cache->remove($file); + $removeFromCache = true; + \OC_Hook::emit('Scanner', 'removeFromCache', array('file' => $file, 'removeFromCache' => &$removeFromCache)); + if($removeFromCache) { + $this->cache->remove($file); + } } return $data; } @@ -244,7 +248,11 @@ class Scanner extends BasicEmitter { $removedChildren = \array_diff($existingChildren, $newChildren); foreach ($removedChildren as $childName) { $child = ($path) ? $path . '/' . $childName : $childName; - $this->cache->remove($child); + $addToCache = true; + \OC_Hook::emit('Scanner', 'removeFromCache', array('file' => $child, 'removeFromCache' => &$addToCache)); + if($addToCache) { + $this->cache->remove($child); + } } \OC_DB::commit(); if ($exceptionOccurred){ @@ -263,7 +271,11 @@ class Scanner extends BasicEmitter { $size += $childSize; } } - $this->cache->put($path, array('size' => $size)); + $addToCache = true; + \OC_Hook::emit('Scanner', 'addToCache', array('file' => $path, 'addToCache' => &$addToCache, 'size' => &$size)); + if($addToCache) { + $this->cache->put($path, array('size' => $size)); + } } $this->emit('\OC\Files\Cache\Scanner', 'postScanFolder', array($path, $this->storageId)); return $size;