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
3 changes: 3 additions & 0 deletions com.woltlab.wcf/aclOption.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
<option name="canSetLabel">
<objecttype>com.woltlab.wcf.label</objecttype>
</option>
<option name="canViewCategory">
<objecttype>com.woltlab.wcf.article.category</objecttype>
</option>
<option name="canReadArticle">
<objecttype>com.woltlab.wcf.article.category</objecttype>
</option>
Expand Down
6 changes: 6 additions & 0 deletions com.woltlab.wcf/userGroupOption.xml
Original file line number Diff line number Diff line change
Expand Up @@ -874,6 +874,12 @@ bmp</defaultvalue>
<admindefaultvalue>1</admindefaultvalue>
<usersonly>1</usersonly>
</option>
<option name="user.article.canViewCategory">
<categoryname>user.article</categoryname>
<optiontype>boolean</optiontype>
<defaultvalue>1</defaultvalue>
<options>module_article</options>
</option>
<option name="user.article.canReadArticle">
<categoryname>user.article</categoryname>
<optiontype>boolean</optiontype>
Expand Down
6 changes: 5 additions & 1 deletion wcfsetup/install/files/lib/data/article/Article.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,11 @@ public function canRead(?UserProfile $user = null): bool
}

if ($this->getCategory()) {
return $this->getCategory()->isAccessible($user->getDecoratedObject());
if (!$this->getCategory()->isAccessible($user->getDecoratedObject())) {
return false;
}

return (bool)$this->getCategory()->getPermission('canReadArticle', $user->getDecoratedObject());
}

return $user->getPermission('user.article.canRead');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public function isAccessible(?User $user = null)
}

// check permissions
return $this->getPermission('canReadArticle', $user);
return $this->getPermission('canViewCategory', $user);
}

/**
Expand Down Expand Up @@ -117,7 +117,7 @@ public function getTitle(): string
* @param string[] $permissions
* @return int[]
*/
public static function getAccessibleCategoryIDs(array $permissions = ['canReadArticle'])
public static function getAccessibleCategoryIDs(array $permissions = ['canViewCategory'])
{
$categoryIDs = [];
foreach (CategoryHandler::getInstance()->getCategories(self::OBJECT_TYPE_NAME) as $category) {
Expand Down
2 changes: 2 additions & 0 deletions wcfsetup/install/lang/de.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
<category name="wcf.acl.option">
<item name="wcf.acl.option.com.woltlab.wcf.label.canViewLabel"><![CDATA[Kann Labels sehen]]></item>
<item name="wcf.acl.option.com.woltlab.wcf.label.canSetLabel"><![CDATA[Kann Labels setzen]]></item>
<item name="wcf.acl.option.com.woltlab.wcf.article.category.canViewCategory"><![CDATA[Kann Kategorie betreten]]></item>
<item name="wcf.acl.option.com.woltlab.wcf.article.category.canReadArticle"><![CDATA[Kann Artikel lesen]]></item>
</category>
<category name="wcf.acp.ad">
Expand Down Expand Up @@ -917,6 +918,7 @@ Sie erreichen das Fehlerprotokoll unter: {link controller='ExceptionLogView' isE
<item name="wcf.acp.group.option.user.article.canAddCommentWithoutModeration"><![CDATA[Kann Kommentare ohne Moderation erstellen]]></item>
<item name="wcf.acp.group.option.user.article.canDeleteComment"><![CDATA[Kann eigene Kommentare löschen]]></item>
<item name="wcf.acp.group.option.user.article.canEditComment"><![CDATA[Kann eigene Kommentare bearbeiten]]></item>
<item name="wcf.acp.group.option.user.article.canViewCategory"><![CDATA[Kann Kategorien betreten]]></item>
<item name="wcf.acp.group.option.user.article.canReadArticle"><![CDATA[Kann Artikel lesen]]></item>
<item name="wcf.acp.group.option.user.page.canAddComment"><![CDATA[Kann Kommentare erstellen]]></item>
<item name="wcf.acp.group.option.user.page.canAddCommentWithoutModeration"><![CDATA[Kann Kommentare ohne Moderation erstellen]]></item>
Expand Down
2 changes: 2 additions & 0 deletions wcfsetup/install/lang/en.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
<category name="wcf.acl.option">
<item name="wcf.acl.option.com.woltlab.wcf.label.canViewLabel"><![CDATA[Can view labels]]></item>
<item name="wcf.acl.option.com.woltlab.wcf.label.canSetLabel"><![CDATA[Can set labels]]></item>
<item name="wcf.acl.option.com.woltlab.wcf.article.category.canViewCategory"><![CDATA[Can access the category]]></item>
<item name="wcf.acl.option.com.woltlab.wcf.article.category.canReadArticle"><![CDATA[Can read articles]]></item>
</category>
<category name="wcf.acp.ad">
Expand Down Expand Up @@ -893,6 +894,7 @@ You can access the error log at: {link controller='ExceptionLogView' isEmail=tru
<item name="wcf.acp.group.option.user.article.canAddCommentWithoutModeration"><![CDATA[Can create comments without approval]]></item>
<item name="wcf.acp.group.option.user.article.canDeleteComment"><![CDATA[Can delete their comments]]></item>
<item name="wcf.acp.group.option.user.article.canEditComment"><![CDATA[Can edit their comments]]></item>
<item name="wcf.acp.group.option.user.article.canViewCategory"><![CDATA[Can access categories]]></item>
<item name="wcf.acp.group.option.user.article.canReadArticle"><![CDATA[Can read articles]]></item>
<item name="wcf.acp.group.option.user.page.canAddComment"><![CDATA[Can create comments]]></item>
<item name="wcf.acp.group.option.user.page.canAddCommentWithoutModeration"><![CDATA[Can create comments without approval]]></item>
Expand Down
Loading