aboutsummaryrefslogtreecommitdiffstats
path: root/lib/files/cache
diff options
context:
space:
mode:
authorMichael Gapczynski <mtgap@owncloud.com>2013-03-08 15:28:45 -0500
committerMichael Gapczynski <mtgap@owncloud.com>2013-03-08 15:28:45 -0500
commitd7beac6d6f3ad588cee6c5ba8a2145b42fa184a2 (patch)
tree613f576938ee8ef88a5a93304a824f60fbb85a7a /lib/files/cache
parent2ed850e05b46d820528813c2f2415dad60c1c570 (diff)
parent546fb72b25fb8ebdc70aa75ccc7a095d7d83b174 (diff)
downloadnextcloud-server-d7beac6d6f3ad588cee6c5ba8a2145b42fa184a2.tar.gz
nextcloud-server-d7beac6d6f3ad588cee6c5ba8a2145b42fa184a2.zip
Merge branch 'master' into filecache_mtime
Conflicts: lib/files/view.php lib/util.php tests/lib/files/cache/cache.php
Diffstat (limited to 'lib/files/cache')
-rw-r--r--lib/files/cache/cache.php18
-rw-r--r--lib/files/cache/legacy.php6
-rw-r--r--lib/files/cache/permissions.php25
-rw-r--r--lib/files/cache/upgrade.php9
4 files changed, 35 insertions, 23 deletions
diff --git a/lib/files/cache/cache.php b/lib/files/cache/cache.php
index 65f33c5f797..2413c05b8cd 100644
--- a/lib/files/cache/cache.php
+++ b/lib/files/cache/cache.php
@@ -48,6 +48,9 @@ class Cache {
} else {
$this->storageId = $storage;
}
+ if (strlen($this->storageId) > 64) {
+ $this->storageId = md5($this->storageId);
+ }
$query = \OC_DB::prepare('SELECT `numeric_id` FROM `*PREFIX*storages` WHERE `id` = ?');
$result = $query->execute(array($this->storageId));
@@ -205,7 +208,7 @@ class Cache {
$valuesPlaceholder = array_fill(0, count($queryParts), '?');
$query = \OC_DB::prepare('INSERT INTO `*PREFIX*filecache`(' . implode(', ', $queryParts) . ')'
- .' VALUES(' . implode(', ', $valuesPlaceholder) . ')');
+ . ' VALUES(' . implode(', ', $valuesPlaceholder) . ')');
$query->execute($params);
return (int)\OC_DB::insertid('*PREFIX*filecache');
@@ -223,7 +226,7 @@ class Cache {
$params[] = $id;
$query = \OC_DB::prepare('UPDATE `*PREFIX*filecache` SET ' . implode(' = ?, ', $queryParts) . '=?'
- .' WHERE fileid = ?');
+ . ' WHERE fileid = ?');
$query->execute($params);
}
@@ -321,6 +324,9 @@ class Cache {
}
$query = \OC_DB::prepare('DELETE FROM `*PREFIX*filecache` WHERE `fileid` = ?');
$query->execute(array($entry['fileid']));
+
+ $permissionsCache = new Permissions($this->storageId);
+ $permissionsCache->remove($entry['fileid']);
}
/**
@@ -346,7 +352,7 @@ class Cache {
}
$query = \OC_DB::prepare('UPDATE `*PREFIX*filecache` SET `path` = ?, `path_hash` = ?, `parent` =?'
- .' WHERE `fileid` = ?');
+ . ' WHERE `fileid` = ?');
$query->execute(array($target, md5($target), $newParentId, $sourceId));
}
@@ -507,9 +513,9 @@ class Cache {
*/
public function getIncomplete() {
$query = \OC_DB::prepare('SELECT `path` FROM `*PREFIX*filecache`'
- .' WHERE `storage` = ? AND `size` = -1 ORDER BY `fileid` DESC LIMIT 1');
- $query->execute(array($this->numericId));
- if ($row = $query->fetchRow()) {
+ . ' WHERE `storage` = ? AND `size` = -1 ORDER BY `fileid` DESC LIMIT 1');
+ $result = $query->execute(array($this->numericId));
+ if ($row = $result->fetchRow()) {
return $row['path'];
} else {
return false;
diff --git a/lib/files/cache/legacy.php b/lib/files/cache/legacy.php
index 6d1ffa7b40b..2b8689fcbda 100644
--- a/lib/files/cache/legacy.php
+++ b/lib/files/cache/legacy.php
@@ -51,12 +51,12 @@ class Legacy {
$this->cacheHasItems = false;
return false;
}
-
+
if ($result === false || property_exists($result, 'error_message_prefix')) {
$this->cacheHasItems = false;
return false;
- }
-
+ }
+
$this->cacheHasItems = (bool)$result->fetchRow();
return $this->cacheHasItems;
}
diff --git a/lib/files/cache/permissions.php b/lib/files/cache/permissions.php
index e1735831b94..a5c9c144054 100644
--- a/lib/files/cache/permissions.php
+++ b/lib/files/cache/permissions.php
@@ -17,10 +17,10 @@ class Permissions {
/**
* @param \OC\Files\Storage\Storage|string $storage
*/
- public function __construct($storage){
- if($storage instanceof \OC\Files\Storage\Storage) {
+ public function __construct($storage) {
+ if ($storage instanceof \OC\Files\Storage\Storage) {
$this->storageId = $storage->getId();
- }else{
+ } else {
$this->storageId = $storage;
}
}
@@ -52,10 +52,10 @@ class Permissions {
public function set($fileId, $user, $permissions) {
if (self::get($fileId, $user) !== -1) {
$query = \OC_DB::prepare('UPDATE `*PREFIX*permissions` SET `permissions` = ?'
- .' WHERE `user` = ? AND `fileid` = ?');
+ . ' WHERE `user` = ? AND `fileid` = ?');
} else {
$query = \OC_DB::prepare('INSERT INTO `*PREFIX*permissions`(`permissions`, `user`, `fileid`)'
- .' VALUES(?, ?,? )');
+ . ' VALUES(?, ?,? )');
}
$query->execute(array($permissions, $user, $fileId));
}
@@ -76,7 +76,7 @@ class Permissions {
$inPart = implode(', ', array_fill(0, count($fileIds), '?'));
$query = \OC_DB::prepare('SELECT `fileid`, `permissions` FROM `*PREFIX*permissions`'
- .' WHERE `fileid` IN (' . $inPart . ') AND `user` = ?');
+ . ' WHERE `fileid` IN (' . $inPart . ') AND `user` = ?');
$result = $query->execute($params);
$filePermissions = array();
while ($row = $result->fetchRow()) {
@@ -91,14 +91,19 @@ class Permissions {
* @param int $fileId
* @param string $user
*/
- public function remove($fileId, $user) {
- $query = \OC_DB::prepare('DELETE FROM `*PREFIX*permissions` WHERE `fileid` = ? AND `user` = ?');
- $query->execute(array($fileId, $user));
+ public function remove($fileId, $user = null) {
+ if (is_null($user)) {
+ $query = \OC_DB::prepare('DELETE FROM `*PREFIX*permissions` WHERE `fileid` = ?');
+ $query->execute(array($fileId));
+ } else {
+ $query = \OC_DB::prepare('DELETE FROM `*PREFIX*permissions` WHERE `fileid` = ? AND `user` = ?');
+ $query->execute(array($fileId, $user));
+ }
}
public function removeMultiple($fileIds, $user) {
$query = \OC_DB::prepare('DELETE FROM `*PREFIX*permissions` WHERE `fileid` = ? AND `user` = ?');
- foreach($fileIds as $fileId){
+ foreach ($fileIds as $fileId) {
$query->execute(array($fileId, $user));
}
}
diff --git a/lib/files/cache/upgrade.php b/lib/files/cache/upgrade.php
index 1fe4c584686..811d82d7437 100644
--- a/lib/files/cache/upgrade.php
+++ b/lib/files/cache/upgrade.php
@@ -64,7 +64,7 @@ class Upgrade {
* @param array $data the data for the new cache
*/
function insert($data) {
- if (!$this->inCache($data['storage'], $data['path_hash'])) {
+ if (!$this->inCache($data['storage'], $data['path_hash'], $data['id'])) {
$insertQuery = \OC_DB::prepare('INSERT INTO `*PREFIX*filecache`
( `fileid`, `storage`, `path`, `path_hash`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `encrypted` )
VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)');
@@ -78,11 +78,12 @@ class Upgrade {
/**
* @param string $storage
* @param string $pathHash
+ * @param string $id
* @return bool
*/
- function inCache($storage, $pathHash) {
- $query = \OC_DB::prepare('SELECT `fileid` FROM `*PREFIX*filecache` WHERE `storage` = ? AND `path_hash` = ?');
- $result = $query->execute(array($storage, $pathHash));
+ function inCache($storage, $pathHash, $id) {
+ $query = \OC_DB::prepare('SELECT `fileid` FROM `*PREFIX*filecache` WHERE (`storage` = ? AND `path_hash` = ?) OR `fileid` = ?');
+ $result = $query->execute(array($storage, $pathHash, $id));
return (bool)$result->fetchRow();
}