From dbbf195727d698a5ba46d7cfee06eb9ea7916d96 Mon Sep 17 00:00:00 2001
From: Michael Gapczynski <mtgap@owncloud.com>
Date: Wed, 29 May 2013 18:08:18 -0400
Subject: [PATCH] Only retrieve the current user's permissions

---
 lib/files/cache/permissions.php | 9 +++++----
 lib/files/view.php              | 2 +-
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/lib/files/cache/permissions.php b/lib/files/cache/permissions.php
index 73473142c7..29c30b0f36 100644
--- a/lib/files/cache/permissions.php
+++ b/lib/files/cache/permissions.php
@@ -89,14 +89,15 @@ class Permissions {
 	 * get the permissions for all files in a folder
 	 *
 	 * @param int $parentId
+	 * @param string $user
 	 * @return int[]
 	 */
-	public function getDirectoryPermissions($parentId) {
+	public function getDirectoryPermissions($parentId, $user) {
 		$query = \OC_DB::prepare('SELECT `*PREFIX*permissions`.`fileid`, `permissions`
- 			FROM  `*PREFIX*permissions` INNER JOIN  `*PREFIX*filecache` ON  `*PREFIX*permissions`.fileid =  `*PREFIX*filecache`.fileid
- 			WHERE  `*PREFIX*filecache`.parent = ?');
+			FROM `*PREFIX*permissions` INNER JOIN `*PREFIX*filecache` ON `*PREFIX*permissions`.`fileid` = `*PREFIX*filecache`.`fileid`
+			WHERE `*PREFIX*filecache`.`parent` = ? AND `*PREFIX*permissions`.`user` = ?');
 
-		$result = $query->execute(array($parentId));
+		$result = $query->execute(array($parentId, $user));
 		$filePermissions = array();
 		while ($row = $result->fetchRow()) {
 			$filePermissions[$row['fileid']] = $row['permissions'];
diff --git a/lib/files/view.php b/lib/files/view.php
index ffe0e155c6..ecb0f30400 100644
--- a/lib/files/view.php
+++ b/lib/files/view.php
@@ -797,7 +797,7 @@ class View {
 			}
 
 			$files = $cache->getFolderContents($internalPath); //TODO: mimetype_filter
-			$permissions = $permissionsCache->getDirectoryPermissions($cache->getId($internalPath));
+			$permissions = $permissionsCache->getDirectoryPermissions($cache->getId($internalPath), $user);
 
 			$ids = array();
 			foreach ($files as $i => $file) {
-- 
GitLab