Merge pull request #1988 from owncloud/permissionscache_clean

Clean permissions cache when deleting file
This commit is contained in:
icewind1991 2013-02-28 10:24:20 -08:00
commit a86761e1e7
2 changed files with 18 additions and 10 deletions

View File

@ -313,6 +313,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']);
}
/**

View File

@ -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));
}
}