From 3aa2e130cd0047e36fadf6f6fe6e9cf303c3ed99 Mon Sep 17 00:00:00 2001 From: Louis Chmn Date: Thu, 26 Mar 2026 10:54:08 +0100 Subject: [PATCH] feat(systemtag): Add $user context to create and update tag Signed-off-by: Louis Chmn --- lib/private/SystemTag/SystemTagManager.php | 7 ++++--- lib/public/SystemTag/ISystemTagManager.php | 8 ++++++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/lib/private/SystemTag/SystemTagManager.php b/lib/private/SystemTag/SystemTagManager.php index 3a9b48eec1f..f83c8176f1a 100644 --- a/lib/private/SystemTag/SystemTagManager.php +++ b/lib/private/SystemTag/SystemTagManager.php @@ -159,8 +159,8 @@ class SystemTagManager implements ISystemTagManager { } } - public function createTag(string $tagName, bool $userVisible, bool $userAssignable): ISystemTag { - $user = $this->userSession->getUser(); + public function createTag(string $tagName, bool $userVisible, bool $userAssignable, ?IUser $user = null): ISystemTag { + $user ??= $this->userSession->getUser(); if (!$this->canUserCreateTag($user)) { throw new TagCreationForbiddenException(); } @@ -219,6 +219,7 @@ class SystemTagManager implements ISystemTagManager { bool $userVisible, bool $userAssignable, ?string $color, + ?IUser $user = null, ): void { try { $tags = $this->getTagsByIds($tagId); @@ -228,7 +229,7 @@ class SystemTagManager implements ISystemTagManager { ); } - $user = $this->userSession->getUser(); + $user ??= $this->userSession->getUser(); if (!$this->canUserUpdateTag($user)) { throw new TagUpdateForbiddenException(); } diff --git a/lib/public/SystemTag/ISystemTagManager.php b/lib/public/SystemTag/ISystemTagManager.php index 6df2cf3474b..bcfe98455f1 100644 --- a/lib/public/SystemTag/ISystemTagManager.php +++ b/lib/public/SystemTag/ISystemTagManager.php @@ -61,6 +61,7 @@ interface ISystemTagManager { * @param string $tagName tag name * @param bool $userVisible whether the tag is visible by users * @param bool $userAssignable whether the tag is assignable by users + * @param ?IUser $user the user that wants to create a tag. Null to use the one in session. * * @return ISystemTag system tag * @@ -69,8 +70,9 @@ interface ISystemTagManager { * * @since 9.0.0 * @since 31.0.0 Can throw TagCreationForbiddenExceptionif user doesn't have the right to create a new tag + * @since 34.0.0 Added nullable $user parameter */ - public function createTag(string $tagName, bool $userVisible, bool $userAssignable): ISystemTag; + public function createTag(string $tagName, bool $userVisible, bool $userAssignable, ?IUser $user = null): ISystemTag; /** * Returns all known tags, optionally filtered by visibility. @@ -92,6 +94,7 @@ interface ISystemTagManager { * @param bool $userVisible whether the tag is visible by users * @param bool $userAssignable whether the tag is assignable by users * @param string $color color + * @param ?IUser $user the user that wants to update a tag. Null to use the one in session. * * @throws TagNotFoundException if tag with the given id does not exist * @throws TagAlreadyExistsException if there is already another tag @@ -99,8 +102,9 @@ interface ISystemTagManager { * * @since 9.0.0 * @since 31.0.0 `$color` parameter added + * @since 34.0.0 Added nullable $user parameter */ - public function updateTag(string $tagId, string $newName, bool $userVisible, bool $userAssignable, ?string $color); + public function updateTag(string $tagId, string $newName, bool $userVisible, bool $userAssignable, ?string $color, ?IUser $user = null): void; /** * Delete the given tags from the database and all their relationships.