aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobin Appelman <icewind@owncloud.com>2012-10-08 14:58:21 +0200
committerRobin Appelman <icewind@owncloud.com>2012-10-08 14:58:21 +0200
commit13515effc99bfad7e776d00476e897fa396a8c6c (patch)
tree4b914a0413b856a5c84ba88d3971f4dc00c75c24
parentc815fd5a5c8cba52b24327584e689498cb03fb3e (diff)
downloadnextcloud-server-13515effc99bfad7e776d00476e897fa396a8c6c.tar.gz
nextcloud-server-13515effc99bfad7e776d00476e897fa396a8c6c.zip
add Cache::getStatus
-rw-r--r--lib/files/cache/cache.php29
-rw-r--r--tests/lib/files/cache/cache.php10
2 files changed, 39 insertions, 0 deletions
diff --git a/lib/files/cache/cache.php b/lib/files/cache/cache.php
index 79673771e5e..5ef49246ea5 100644
--- a/lib/files/cache/cache.php
+++ b/lib/files/cache/cache.php
@@ -9,6 +9,11 @@
namespace OC\Files\Cache;
class Cache {
+ const NOT_FOUND = 0;
+ const PARTIAL = 1; //only partial data available, file not cached in the database
+ const SHALLOW = 2; //folder in cache, but not all child files are completely scanned
+ const COMPLETE = 3;
+
/**
* @var \OC\Files\Storage\Storage
*/
@@ -233,4 +238,28 @@ class Cache {
$query = \OC_DB::prepare('DELETE FROM `*PREFIX*filecache` WHERE storage=?');
$query->execute(array($this->storageId));
}
+
+ /**
+ * @param string $file
+ *
+ * @return int, Cache::NOT_FOUND, Cache::PARTIAL, Cache::SHALLOW or Cache::COMPLETE
+ */
+ public function getStatus($file) {
+ $pathHash = md5($file);
+ $query = \OC_DB::prepare('SELECT * FROM `*PREFIX*filecache` WHERE `storage` = ? AND `path_hash` = ?');
+ $result = $query->execute(array($this->storageId, $pathHash));
+ if ($row = $result->fetchRow()) {
+ if ((int)$row['size'] === -1) {
+ return self::SHALLOW;
+ } else {
+ return self::COMPLETE;
+ }
+ } else {
+ if (isset($this->partial[$file])) {
+ return self::PARTIAL;
+ } else {
+ return self::NOT_FOUND;
+ }
+ }
+ }
}
diff --git a/tests/lib/files/cache/cache.php b/tests/lib/files/cache/cache.php
index 8cedadbf19a..177cf1c045d 100644
--- a/tests/lib/files/cache/cache.php
+++ b/tests/lib/files/cache/cache.php
@@ -101,6 +101,16 @@ class Cache extends \UnitTestCase {
}
}
+ function testStatus() {
+ $this->assertEquals(\OC\Files\Cache\Cache::NOT_FOUND, $this->cache->getStatus('foo'));
+ $this->cache->put('foo', array('size' => -1));
+ $this->assertEquals(\OC\Files\Cache\Cache::PARTIAL, $this->cache->getStatus('foo'));
+ $this->cache->put('foo', array('size' => -1, 'mtime' => 20, 'mimetype' => 'foo/file'));
+ $this->assertEquals(\OC\Files\Cache\Cache::SHALLOW, $this->cache->getStatus('foo'));
+ $this->cache->put('foo', array('size' => 10));
+ $this->assertEquals(\OC\Files\Cache\Cache::COMPLETE, $this->cache->getStatus('foo'));
+ }
+
public function tearDown() {
$this->cache->clear();
}