From fd434da9590ea28f2feec0db02b37082eabfb876 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Julius=20H=C3=A4rtl?= <jus@bitgrid.net>
Date: Sat, 16 Feb 2019 09:39:16 +0100
Subject: [PATCH] Fix SQL statement and provider method call
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Julius Härtl <jus@bitgrid.net>
---
 .../Collaboration/Resources/Manager.php       | 26 +++++++++----------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/lib/private/Collaboration/Resources/Manager.php b/lib/private/Collaboration/Resources/Manager.php
index 7f0e6b3779e..4444d92419a 100644
--- a/lib/private/Collaboration/Resources/Manager.php
+++ b/lib/private/Collaboration/Resources/Manager.php
@@ -83,11 +83,11 @@ class Manager implements IManager {
 		$userId = $user instanceof IUser ? $user->getUID() : '';
 
 		$query->select('*')
-			->from(self::TABLE_COLLECTIONS)
+			->from(self::TABLE_COLLECTIONS, 'c')
 			->leftJoin(
-				'r', self::TABLE_ACCESS_CACHE, 'a',
+				'c', self::TABLE_ACCESS_CACHE, 'a',
 				$query->expr()->andX(
-					$query->expr()->eq('c.id', 'a.resource_id'),
+					$query->expr()->eq('c.id', 'a.collection_id'),
 					$query->expr()->eq('a.user_id', $query->createNamedParameter($userId, IQueryBuilder::PARAM_STR))
 				)
 			)
@@ -103,10 +103,10 @@ class Manager implements IManager {
 		$access = $row['access'] === null ? null : (bool) $row['access'];
 		if ($user instanceof IUser) {
 			$access = [$user->getUID() => $access];
-			return new Collection($this, $this->connection, (int) $row['id'], (string) $row['name'], $access, null);
+			return new Collection($this, $this->connection, (int) $row['id'], (string) $row['name'], $user, null);
 		}
 
-		return new Collection($this, $this->connection, (int) $row['id'], (string) $row['name'], [], $access);
+		return new Collection($this, $this->connection, (int) $row['id'], (string) $row['name'], $user, $access);
 	}
 
 	/**
@@ -122,16 +122,16 @@ class Manager implements IManager {
 		$userId = $user instanceof IUser ? $user->getUID() : '';
 
 		$query->select('c.*', 'a.access')
-			->from(self::TABLE_COLLECTIONS)
+			->from(self::TABLE_COLLECTIONS, 'c')
 			->leftJoin(
-				'r', self::TABLE_ACCESS_CACHE, 'a',
+				'c', self::TABLE_ACCESS_CACHE, 'a',
 				$query->expr()->andX(
-					$query->expr()->eq('c.id', 'a.resource_id'),
+					$query->expr()->eq('c.id', 'a.collection_id'),
 					$query->expr()->eq('a.user_id', $query->createNamedParameter($userId, IQueryBuilder::PARAM_STR))
 				)
 			)
 			->where($query->expr()->iLike('c.name', $query->createNamedParameter($filter, IQueryBuilder::PARAM_STR)))
-			->andWhere($query->expr()->neq('a.access', $query->createNamedParameter(0, IQueryBuilder::PARAM_INT)))
+			->andWhere($query->expr()->eq('a.access', $query->createNamedParameter(1, IQueryBuilder::PARAM_INT)))
 			->orderBy('c.id')
 			->setMaxResults($limit)
 			->setFirstResult($start);
@@ -199,14 +199,14 @@ class Manager implements IManager {
 			->leftJoin(
 				'r', self::TABLE_ACCESS_CACHE, 'a',
 				$query->expr()->andX(
-					$query->expr()->eq('r.id', 'a.resource_id'),
+					$query->expr()->eq('r.resource_id', 'a.resource_id'),
 					$query->expr()->eq('a.user_id', $query->createNamedParameter($userId, IQueryBuilder::PARAM_STR))
 				)
 			)
 			->where($query->expr()->eq('r.resource_type', $query->createNamedParameter($type, IQueryBuilder::PARAM_STR)))
 			->andWhere($query->expr()->eq('r.resource_id', $query->createNamedParameter($id, IQueryBuilder::PARAM_STR)));
 		$result = $query->execute();
-		$row = $result;
+		$row = $result->fetch();
 		$result->closeCursor();
 
 		if (!$row) {
@@ -236,7 +236,7 @@ class Manager implements IManager {
 			->leftJoin(
 				'r', self::TABLE_ACCESS_CACHE, 'a',
 				$query->expr()->andX(
-					$query->expr()->eq('r.id', 'a.resource_id'),
+					$query->expr()->eq('r.resource_id', 'a.resource_id'),
 					$query->expr()->eq('a.user_id', $query->createNamedParameter($userId, IQueryBuilder::PARAM_STR))
 				)
 			)
@@ -312,7 +312,7 @@ class Manager implements IManager {
 		foreach ($this->getProviders() as $provider) {
 			if ($provider->getType() === $resource->getType()) {
 				try {
-					if ($provider->canAccess($resource, $user)) {
+					if ($provider->canAccessResource($resource, $user)) {
 						$access = true;
 						break;
 					}
-- 
GitLab