Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions lib/private/SystemTag/SystemTagManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -159,8 +159,8 @@ public function getGeneratedByAITag(): ISystemTag {
}
}

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();
}
Expand Down Expand Up @@ -219,6 +219,7 @@ public function updateTag(
bool $userVisible,
bool $userAssignable,
?string $color,
?IUser $user = null,
): void {
try {
$tags = $this->getTagsByIds($tagId);
Expand All @@ -228,7 +229,7 @@ public function updateTag(
);
}

$user = $this->userSession->getUser();
$user ??= $this->userSession->getUser();
if (!$this->canUserUpdateTag($user)) {
throw new TagUpdateForbiddenException();
}
Expand Down
8 changes: 6 additions & 2 deletions lib/public/SystemTag/ISystemTagManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ public function getGeneratedByAITag(): ISystemTag;
* @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
*
Expand All @@ -69,8 +70,9 @@ public function getGeneratedByAITag(): ISystemTag;
*
* @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.
Expand All @@ -92,15 +94,17 @@ public function getAllTags($visibilityFilter = null, $nameSearchPattern = null):
* @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
* with the same attributes
*
* @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.
Expand Down
10 changes: 4 additions & 6 deletions tests/lib/SystemTag/SystemTagManagerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -296,22 +296,22 @@ public static function updateTagProvider(): array {
return [
[
// update name
['one', true, true, '0082c9'],
['one', true, true],
['two', true, true, '0082c9']
],
[
// update one flag
['one', false, true, null],
['one', false, true],
['one', true, true, '0082c9']
],
[
// update all flags
['one', false, false, '0082c9'],
['one', false, false],
['one', true, true, null]
],
[
// update all
['one', false, false, '0082c9'],
['one', false, false],
['two', true, true, '0082c9']
],
];
Expand All @@ -323,7 +323,6 @@ public function testUpdateTag($tagCreate, $tagUpdated): void {
$tagCreate[0],
$tagCreate[1],
$tagCreate[2],
$tagCreate[3],
);
$this->tagManager->updateTag(
$tag1->getId(),
Expand All @@ -336,7 +335,6 @@ public function testUpdateTag($tagCreate, $tagUpdated): void {
$tagUpdated[0],
$tagUpdated[1],
$tagUpdated[2],
$tagUpdated[3],
);

$this->assertEquals($tag2->getId(), $tag1->getId());
Expand Down
Loading