diff options
author | Julius Härtl <jus@bitgrid.net> | 2019-01-29 12:23:14 +0100 |
---|---|---|
committer | Julius Härtl <jus@bitgrid.net> | 2019-03-01 20:56:18 +0100 |
commit | e404ce7096b9e4666f91cdca2e837d8ecd802357 (patch) | |
tree | 59a12d81420cc7803d881384b2f012ab9db9faa7 /lib/private | |
parent | 53ac9bdda17e5141fceaec1a895f733c13c73c7a (diff) | |
download | nextcloud-server-e404ce7096b9e4666f91cdca2e837d8ecd802357.tar.gz nextcloud-server-e404ce7096b9e4666f91cdca2e837d8ecd802357.zip |
Implement search and rename in backend
Signed-off-by: Julius Härtl <jus@bitgrid.net>
Diffstat (limited to 'lib/private')
-rw-r--r-- | lib/private/Collaboration/Resources/Manager.php | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/lib/private/Collaboration/Resources/Manager.php b/lib/private/Collaboration/Resources/Manager.php index c11382c2f1d..9f083b3c676 100644 --- a/lib/private/Collaboration/Resources/Manager.php +++ b/lib/private/Collaboration/Resources/Manager.php @@ -68,6 +68,35 @@ class Manager implements IManager { } /** + * @param int $id + * @return ICollection + * @throws CollectionException when the collection could not be found + * @since 15.0.0 + */ + public function searchCollections(IUser $user, string $filter, int $limit = 50, int $start = 0): array { + $query = $this->connection->getQueryBuilder(); + $query->select('*') + ->from('collres_collections') + ->where($query->expr()->iLike('name', $query->createNamedParameter($filter, IQueryBuilder::PARAM_STR))) + ->setMaxResults($limit) + ->setFirstResult($start); + $result = $query->execute(); + $collections = []; + /** TODO: this is a huge performance bottleneck */ + while ($row = $result->fetch()) { + $collection = new Collection($this, $this->connection, (int)$row['id'], (string)$row['name']); + if ($collection->canAccess($user)) { + $collections[] = $collection; + } + } + $result->closeCursor(); + + // TODO: call with increased first result if no matches found + + return $collections; + } + + /** * @param string $name * @return ICollection * @since 15.0.0 @@ -199,4 +228,19 @@ class Manager implements IManager { return ''; } + + /** + * @param string $name + * @return ICollection + * @since 15.0.0 + */ + public function renameCollection(int $id, string $name): ICollection { + $query = $this->connection->getQueryBuilder(); + $query->update('collres_collections') + ->set('name', $query->createNamedParameter($name)) + ->where($query->expr()->eq('id', $query->createNamedParameter($id, IQueryBuilder::PARAM_INT))); + $query->execute(); + + return new Collection($this, $this->connection, $id, $name); + } } |