]> source.dussan.org Git - nextcloud-server.git/commitdiff
feat(comments): Support mentioning emails
authorJoas Schilling <coding@schilljs.com>
Thu, 17 Oct 2024 10:34:18 +0000 (12:34 +0200)
committerJoas Schilling <coding@schilljs.com>
Thu, 17 Oct 2024 12:27:42 +0000 (14:27 +0200)
Signed-off-by: Joas Schilling <coding@schilljs.com>
lib/private/Comments/Comment.php

index 0308d01ab9a8904b4f84a748aae3af0c32a16f07..46912720a3c7ebebf9bc089bc33a99401eb89be4 100644 (file)
@@ -202,7 +202,7 @@ class Comment implements IComment {
         *
         */
        public function getMentions(): array {
-               $ok = preg_match_all("/\B(?<![^a-z0-9_\-@\.\'\s])@(\"guest\/[a-f0-9]+\"|\"(?:federated_)?(?:group|team|user){1}\/[a-z0-9_\-@\.\' \/:]+\"|\"[a-z0-9_\-@\.\' ]+\"|[a-z0-9_\-@\.\']+)/i", $this->getMessage(), $mentions);
+               $ok = preg_match_all("/\B(?<![^a-z0-9_\-@\.\'\s])@(\"(guest|email)\/[a-f0-9]+\"|\"(?:federated_)?(?:group|team|user){1}\/[a-z0-9_\-@\.\' \/:]+\"|\"[a-z0-9_\-@\.\' ]+\"|[a-z0-9_\-@\.\']+)/i", $this->getMessage(), $mentions);
                if (!$ok || !isset($mentions[0])) {
                        return [];
                }
@@ -217,6 +217,10 @@ class Comment implements IComment {
 
                        if (str_starts_with($cleanId, 'guest/')) {
                                $result[] = ['type' => 'guest', 'id' => $cleanId];
+                       } elseif (str_starts_with($cleanId, 'email/')) {
+                               /** @var non-empty-lowercase-string $cleanId */
+                               $cleanId = substr($cleanId, 6);
+                               $result[] = ['type' => 'email', 'id' => $cleanId];
                        } elseif (str_starts_with($cleanId, 'federated_group/')) {
                                $result[] = ['type' => 'federated_group', 'id' => substr($cleanId, 16)];
                        } elseif (str_starts_with($cleanId, 'group/')) {