From cc92d5a293e85a8d67ed30e48bcad09fc03325f5 Mon Sep 17 00:00:00 2001
From: Christoph Wurst <christoph@winzerhof-wurst.at>
Date: Tue, 1 Dec 2020 11:37:39 +0100
Subject: [PATCH] Allow unified search results to have attributes

Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
---
 lib/public/Search/SearchResultEntry.php | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

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
@@ -82,6 +82,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
@@ -106,6 +113,19 @@ class SearchResultEntry implements JsonSerializable {
 		$this->rounded = $rounded;
 	}
 
+	/**
+	 * 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
 	 *
@@ -119,6 +139,7 @@ class SearchResultEntry implements JsonSerializable {
 			'resourceUrl' => $this->resourceUrl,
 			'icon' => $this->icon,
 			'rounded' => $this->rounded,
+			'attributes' => $this->attributes,
 		];
 	}
 }
-- 
GitLab