aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/files/lib/Search/FilesSearchProvider.php5
-rw-r--r--lib/public/Search/SearchResultEntry.php21
2 files changed, 25 insertions, 1 deletions
diff --git a/apps/files/lib/Search/FilesSearchProvider.php b/apps/files/lib/Search/FilesSearchProvider.php
index 5c97e771ab7..a3c6120ef13 100644
--- a/apps/files/lib/Search/FilesSearchProvider.php
+++ b/apps/files/lib/Search/FilesSearchProvider.php
@@ -110,13 +110,16 @@ class FilesSearchProvider implements IProvider {
? $this->urlGenerator->linkToRouteAbsolute('core.Preview.getPreviewByFileId', ['x' => 32, 'y' => 32, 'fileId' => $result->id])
: '';
- return new SearchResultEntry(
+ $searchResultEntry = new SearchResultEntry(
$thumbnailUrl,
$result->name,
$this->formatSubline($result),
$this->urlGenerator->getAbsoluteURL($result->link),
$result->type === 'folder' ? 'icon-folder' : $this->mimeTypeDetector->mimeTypeIcon($result->mime_type)
);
+ $searchResultEntry->addAttribute('fileId', (string)$result->id);
+ $searchResultEntry->addAttribute('path', $result->path);
+ return $searchResultEntry;
}, $this->fileSearch->search($query->getTerm()))
);
}
diff --git a/lib/public/Search/SearchResultEntry.php b/lib/public/Search/SearchResultEntry.php
index b661ced5014..347c3fcd289 100644
--- a/lib/public/Search/SearchResultEntry.php
+++ b/lib/public/Search/SearchResultEntry.php
@@ -83,6 +83,13 @@ class SearchResultEntry implements JsonSerializable {
protected $rounded;
/**
+ * @var string[]
+ * @psalm-var array<string, string>
+ * @since 20.0.0
+ */
+ protected $attributes = [];
+
+ /**
* @param string $thumbnailUrl a relative or absolute URL to the thumbnail or icon of the entry
* @param string $title a main title of the entry
* @param string $subline the secondary line of the entry
@@ -107,6 +114,19 @@ class SearchResultEntry implements JsonSerializable {
}
/**
+ * Add optional attributes to the result entry, e.g. an ID or some other
+ * context information that can be read by the client application
+ *
+ * @param string $key
+ * @param string $value
+ *
+ * @since 20.0.0
+ */
+ public function addAttribute(string $key, string $value): void {
+ $this->attributes[$key] = $value;
+ }
+
+ /**
* @return array
*
* @since 20.0.0
@@ -119,6 +139,7 @@ class SearchResultEntry implements JsonSerializable {
'resourceUrl' => $this->resourceUrl,
'icon' => $this->icon,
'rounded' => $this->rounded,
+ 'attributes' => $this->attributes,
];
}
}