summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/files_sharing/lib/External/Manager.php23
-rw-r--r--apps/files_sharing/tests/External/ManagerTest.php12
2 files changed, 25 insertions, 10 deletions
diff --git a/apps/files_sharing/lib/External/Manager.php b/apps/files_sharing/lib/External/Manager.php
index 082e1adef8a..fdc02f104af 100644
--- a/apps/files_sharing/lib/External/Manager.php
+++ b/apps/files_sharing/lib/External/Manager.php
@@ -37,6 +37,7 @@ use Doctrine\DBAL\Driver\Exception;
use OC\Files\Filesystem;
use OCA\FederatedFileSharing\Events\FederatedShareAddedEvent;
use OCA\Files_Sharing\Helper;
+use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\Federation\ICloudFederationFactory;
use OCP\Federation\ICloudFederationProviderManager;
@@ -740,16 +741,22 @@ class Manager {
$userGroups[] = $group->getGID();
}
- // FIXME: use query builder
- $query = 'SELECT `id`, `share_type`, `parent`, `remote`, `remote_id`, `share_token`, `name`, `owner`, `user`, `mountpoint`, `accepted`
- FROM `*PREFIX*share_external`
- WHERE (`user` = ? OR `user` IN (?))';
- $parameters = [$this->uid, implode(',', $userGroups)];
- $query .= ' ORDER BY `id` ASC';
+ $qb = $this->connection->getQueryBuilder();
+ $qb->select('id', 'share_type', 'parent', 'remote', 'remote_id', 'share_token', 'name', 'owner', 'user', 'mountpoint', 'accepted')
+ ->from('share_external')
+ ->where(
+ $qb->expr()->orX(
+ $qb->expr()->eq('user', $qb->createNamedParameter($this->uid)),
+ $qb->expr()->in(
+ 'user',
+ $qb->createNamedParameter($userGroups, IQueryBuilder::PARAM_STR_ARRAY)
+ )
+ )
+ )
+ ->orderBy('id', 'ASC');
- $sharesQuery = $this->connection->prepare($query);
try {
- $result = $sharesQuery->execute($parameters);
+ $result = $qb->execute();
$shares = $result->fetchAll();
$result->closeCursor();
diff --git a/apps/files_sharing/tests/External/ManagerTest.php b/apps/files_sharing/tests/External/ManagerTest.php
index 2340d057dd7..1a6d83ce719 100644
--- a/apps/files_sharing/tests/External/ManagerTest.php
+++ b/apps/files_sharing/tests/External/ManagerTest.php
@@ -143,9 +143,17 @@ class ManagerTest extends TestCase {
$group1->expects($this->any())->method('getGID')->willReturn('group1');
$group1->expects($this->any())->method('inGroup')->with($this->user)->willReturn(true);
+ $group2 = $this->createMock(IGroup::class);
+ $group2->expects($this->any())->method('getGID')->willReturn('group2');
+ $group2->expects($this->any())->method('inGroup')->with($this->user)->willReturn(true);
+
$this->userManager->expects($this->any())->method('get')->willReturn($this->user);
- $this->groupManager->expects($this->any())->method(('getUserGroups'))->willReturn([$group1]);
- $this->groupManager->expects($this->any())->method(('get'))->with('group1')->willReturn($group1);
+ $this->groupManager->expects($this->any())->method(('getUserGroups'))->willReturn([$group1, $group2]);
+ $this->groupManager->expects($this->any())->method(('get'))
+ ->will($this->returnValueMap([
+ ['group1', $group1],
+ ['group2', $group2],
+ ]));
}
protected function tearDown(): void {