From 9542dde18433af45d60c693dc94a6197422de310 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julius=20H=C3=A4rtl?= Date: Wed, 9 Aug 2023 11:01:52 +0200 Subject: [PATCH] fix: Also detect reference to simple card urls MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Julius Härtl --- lib/Reference/CardReferenceProvider.php | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/Reference/CardReferenceProvider.php b/lib/Reference/CardReferenceProvider.php index 45e0c0d8c..f00b4f856 100644 --- a/lib/Reference/CardReferenceProvider.php +++ b/lib/Reference/CardReferenceProvider.php @@ -111,6 +111,10 @@ class CardReferenceProvider extends ADiscoverableReferenceProvider implements IS $noIndexMatch = preg_match('/^' . preg_quote($start, '/') . '\/#\/board\/[0-9]+\/card\/[0-9]+$/', $referenceText) === 1; $indexMatch = preg_match('/^' . preg_quote($startIndex, '/') . '\/#\/board\/[0-9]+\/card\/[0-9]+$/', $referenceText) === 1; + // link example: https://nextcloud.local/index.php/apps/deck/card/11 + $noIndexMatch = preg_match('/^' . preg_quote($start, '/') . '\/card\/[0-9]+$/', $referenceText) === 1; + $indexMatch = preg_match('/^' . preg_quote($startIndex, '/') . '\/card\/[0-9]+$/', $referenceText) === 1; + return $noIndexMatch || $indexMatch; } @@ -124,8 +128,8 @@ class CardReferenceProvider extends ADiscoverableReferenceProvider implements IS [$boardId, $cardId] = $ids; try { $card = $this->cardService->find((int) $cardId)->jsonSerialize(); - $board = $this->boardService->find((int) $boardId)->jsonSerialize(); $stack = $this->stackService->find((int) $card['stackId'])->jsonSerialize(); + $board = $this->boardService->find((int)($boardId ?? $stack['boardId']))->jsonSerialize(); } catch (NoPermissionException $e) { // Skip throwing if user has no permissions return null; @@ -202,6 +206,16 @@ class CardReferenceProvider extends ADiscoverableReferenceProvider implements IS return [$matches2[1], $matches2[2]]; } + preg_match('/^' . preg_quote($start, '/') . '\/card\/([0-9]+)$/', $url, $matches); + if ($matches && count($matches) > 1) { + return [null, $matches[1]]; + } + + preg_match('/^' . preg_quote($startIndex, '/') . '\/card\/([0-9]+)$/', $url, $matches2); + if ($matches2 && count($matches2) > 1) { + return [null, $matches2[1]]; + } + return null; }