summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorArthur Schiwon <blizzz@arthur-schiwon.de>2023-05-04 11:57:07 +0200
committerArthur Schiwon <blizzz@arthur-schiwon.de>2023-05-16 12:58:47 +0200
commitde008e1109241526a740c3d082511ed58dd2f9a7 (patch)
treebf2afd1621b1722976de1a63f97e5e75fd7e7168 /lib
parent8ec4760645b21bfeca4b58572b321881ffcd2635 (diff)
downloadnextcloud-server-de008e1109241526a740c3d082511ed58dd2f9a7.tar.gz
nextcloud-server-de008e1109241526a740c3d082511ed58dd2f9a7.zip
feat: specify media type via url path: systemtags-current/$mediaType
- only the media part of the mime type can be search, but not the full mime type. It can be added, should it become necessary. - thus fixes previously hardcoded selector for image/ types - also fixes a return type hint - adds a return type hint Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
Diffstat (limited to 'lib')
-rw-r--r--lib/private/Files/Cache/QuerySearchHelper.php4
-rw-r--r--lib/private/Files/Node/Folder.php11
2 files changed, 13 insertions, 2 deletions
diff --git a/lib/private/Files/Cache/QuerySearchHelper.php b/lib/private/Files/Cache/QuerySearchHelper.php
index fdba8a1dd74..19ce5a7b238 100644
--- a/lib/private/Files/Cache/QuerySearchHelper.php
+++ b/lib/private/Files/Cache/QuerySearchHelper.php
@@ -98,6 +98,10 @@ class QuerySearchHelper {
}
}
+
+ /**
+ * @return array<array-key, array{id: int, name: string, visibility: int, editable: int, ref_file_id: int, number_files: int}>
+ */
public function findUsedTagsInCaches(ISearchQuery $searchQuery, array $caches): array {
$query = $this->getQueryBuilder();
$query->selectTagUsage();
diff --git a/lib/private/Files/Node/Folder.php b/lib/private/Files/Node/Folder.php
index e8d507b8a8f..06b902dd64b 100644
--- a/lib/private/Files/Node/Folder.php
+++ b/lib/private/Files/Node/Folder.php
@@ -337,10 +337,17 @@ class Folder extends Node implements \OCP\Files\Folder {
}
/**
- * @return Node[]
+ *
+ * @return array<array-key, array{id: int, name: string, visibility: int, editable: int, ref_file_id: int, number_files: int}>
*/
public function getSystemTags(string $mediaType, int $limit = 0, int $offset = 0): array {
- $query = $this->queryFromOperator(new SearchComparison(ISearchComparison::COMPARE_LIKE, 'mimetype', $mediaType . '/%'), null, $limit, $offset);
+ // Currently query has to have exactly one search condition. If no media type is provided,
+ // we fall back to the presence of a systemtag.
+ if (empty($mediaType)) {
+ $query = $this->queryFromOperator(new SearchComparison(ISearchComparison::COMPARE_LIKE, 'systemtag', '%'), null, $limit, $offset);
+ } else {
+ $query = $this->queryFromOperator(new SearchComparison(ISearchComparison::COMPARE_LIKE, 'mimetype', $mediaType . '/%'), null, $limit, $offset);
+ }
[$caches, ] = $this->getCachesAndMountpointsForSearch();
/** @var QuerySearchHelper $searchHelper */
$searchHelper = \OCP\Server::get(QuerySearchHelper::class);