Added permissions and `isDisabled` for comments
authorAlexander Ebert <ebert@woltlab.com>
Mon, 6 Mar 2017 14:33:38 +0000 (15:33 +0100)
committerAlexander Ebert <ebert@woltlab.com>
Mon, 6 Mar 2017 14:33:38 +0000 (15:33 +0100)
See #2219

com.woltlab.wcf/userGroupOption.xml
wcfsetup/install/files/lib/data/comment/Comment.class.php
wcfsetup/install/files/lib/data/comment/response/CommentResponse.class.php
wcfsetup/install/lang/de.xml
wcfsetup/install/lang/en.xml
wcfsetup/setup/db/install.sql

index 56358406bc9f667f951d92779b6cb0b406dab43f..5cb3aa245a7f631f825fb756a364bff00417ed27 100644 (file)
@@ -704,6 +704,11 @@ png</defaultvalue>
                                <optiontype>boolean</optiontype>
                                <defaultvalue>1</defaultvalue>
                        </option>
+                       <option name="user.page.canAddCommentWithoutModeration">
+                               <categoryname>user.page</categoryname>
+                               <optiontype>boolean</optiontype>
+                               <defaultvalue>1</defaultvalue>
+                       </option>
                        <option name="user.page.canEditComment">
                                <categoryname>user.page</categoryname>
                                <optiontype>boolean</optiontype>
@@ -728,6 +733,11 @@ png</defaultvalue>
                                <optiontype>boolean</optiontype>
                                <defaultvalue>1</defaultvalue>
                        </option>
+                       <option name="user.page.canAddCommentWithoutModeration">
+                               <categoryname>user.article</categoryname>
+                               <optiontype>boolean</optiontype>
+                               <defaultvalue>1</defaultvalue>
+                       </option>
                        <option name="user.article.canEditComment">
                                <categoryname>user.article</categoryname>
                                <optiontype>boolean</optiontype>
@@ -838,6 +848,11 @@ png</defaultvalue>
                                <optiontype>boolean</optiontype>
                                <defaultvalue>1</defaultvalue>
                        </option>
+                       <option name="user.page.canAddCommentWithoutModeration">
+                               <categoryname>user.profileComment</categoryname>
+                               <optiontype>boolean</optiontype>
+                               <defaultvalue>1</defaultvalue>
+                       </option>
                        <option name="user.profileComment.canEditComment">
                                <categoryname>user.profileComment</categoryname>
                                <optiontype>boolean</optiontype>
index 52d6cbeb90fe7f421950d0fa05579749c5c03582..8a80c84ddf03cefa5f9dae2c4085dd8bd195d848 100644 (file)
@@ -25,6 +25,7 @@ use wcf\util\StringUtil;
  * @property-read      integer         $responses              number of responses on the comment
  * @property-read      string          $responseIDs            serialized array with the ids of the five latest comment responses
  * @property-read       integer         $enableHtml             is 1 if HTML will rendered in the comment, otherwise 0
+ * @property-read      integer         $isDisabled             is 1 if the comment is disabled, otherwise 0
  */
 class Comment extends DatabaseObject implements IMessage {
        use TUserContent;
index 4ba92bf89556769a5d0622fa247d065f232202b6..fa30c110e8829459ac5af2204b872962c4a7d2e2 100644 (file)
@@ -22,6 +22,7 @@ use wcf\util\StringUtil;
  * @property-read      integer|null    $userID         id of the user who wrote the comment response or `null` if the user does not exist anymore or if the comment response has been written by a guest
  * @property-read      string          $username       name of the user or guest who wrote the comment response
  * @property-read      string          $message        comment response message
+ * @property-read      integer         $isDisabled     is 1 if the comment response is disabled, otherwise 0
  */
 class CommentResponse extends DatabaseObject implements IMessage {
        use TUserContent;
index d31829bc0377e58ac7814aad067b759e530c06b3..37073036f2e8eb9ad48ec05e66ec4c7197a52f1f 100644 (file)
                <item name="wcf.acp.group.option.user.like.canLike"><![CDATA[Kann Inhalte liken]]></item>
                <item name="wcf.acp.group.option.category.user.profileComment"><![CDATA[Benutzerprofil-Pinnwand]]></item>
                <item name="wcf.acp.group.option.user.profileComment.canAddComment"><![CDATA[Kann Kommentare erstellen]]></item>
+               <item name="wcf.acp.group.option.user.profileComment.canAddCommentWithoutModeration"><![CDATA[Kann Kommentare ohne Moderation erstellen]]></item>
                <item name="wcf.acp.group.option.user.profileComment.canEditComment"><![CDATA[Kann eigene Kommentare bearbeiten]]></item>
                <item name="wcf.acp.group.option.user.profileComment.canDeleteComment"><![CDATA[Kann eigene Kommentare löschen]]></item>
                <item name="wcf.acp.group.option.user.profileComment.canDeleteCommentInOwnProfile"><![CDATA[Kann Kommentare an der eigenen Pinnwand löschen]]></item>
                <item name="wcf.acp.group.option.mod.page.canEditComment"><![CDATA[Kann Kommentare bearbeiten]]></item>
                <item name="wcf.acp.group.option.mod.page.canModerateComment"><![CDATA[Kann Kommentare moderieren]]></item>
                <item name="wcf.acp.group.option.user.article.canAddComment"><![CDATA[Kann Kommentare erstellen]]></item>
+               <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.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>
                <item name="wcf.acp.group.option.user.page.canDeleteComment"><![CDATA[Kann eigene Kommentare löschen]]></item>
                <item name="wcf.acp.group.option.user.page.canEditComment"><![CDATA[Kann eigene Kommentare bearbeiten]]></item>
        </category>
index cc91dedab083fa927926019369e7f64e93a3196c..07bb7db52c0eae368e8fab974a51ab106ecb6b34 100644 (file)
@@ -484,6 +484,7 @@ Examples for medium ID detection:
                <item name="wcf.acp.group.option.user.like.canLike"><![CDATA[Can like content]]></item>
                <item name="wcf.acp.group.option.category.user.profileComment"><![CDATA[User Profile Wall]]></item>
                <item name="wcf.acp.group.option.user.profileComment.canAddComment"><![CDATA[Can create comments]]></item>
+               <item name="wcf.acp.group.option.user.profileComment.canAddCommentWithoutModeration"><![CDATA[Can create comments without approval]]></item>
                <item name="wcf.acp.group.option.user.profileComment.canEditComment"><![CDATA[Can edit their comments]]></item>
                <item name="wcf.acp.group.option.user.profileComment.canDeleteComment"><![CDATA[Can delete their comments]]></item>
                <item name="wcf.acp.group.option.user.profileComment.canDeleteCommentInOwnProfile"><![CDATA[Can delete users’ comments on their wall]]></item>
@@ -551,10 +552,12 @@ Examples for medium ID detection:
                <item name="wcf.acp.group.option.mod.page.canEditComment"><![CDATA[Can edit comments]]></item>
                <item name="wcf.acp.group.option.mod.page.canModerateComment"><![CDATA[Can moderate comments]]></item>
                <item name="wcf.acp.group.option.user.article.canAddComment"><![CDATA[Can create comments]]></item>
+               <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.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>
                <item name="wcf.acp.group.option.user.page.canDeleteComment"><![CDATA[Can delete their comments]]></item>
                <item name="wcf.acp.group.option.user.page.canEditComment"><![CDATA[Can edit their comments]]></item>
        </category>
index 14679f2c773f2acddfe5f89ada7040ac78cfeecf..65bef88bd74ef1e1ad663b595432bfbcb2b9b68c 100644 (file)
@@ -380,8 +380,9 @@ CREATE TABLE wcf1_comment (
        responses MEDIUMINT(7) NOT NULL DEFAULT '0',
        responseIDs VARCHAR(255) NOT NULL DEFAULT '',
        enableHtml TINYINT(1) NOT NULL DEFAULT 0,
+       isDisabled TINYINT(1) NOT NULL DEFAULT 0,
        
-       KEY (objectTypeID, objectID, time),
+       KEY (objectTypeID, objectID, isDisabled, time),
        KEY lastCommentTime (userID, time)
 );
 
@@ -393,8 +394,9 @@ CREATE TABLE wcf1_comment_response (
        userID INT(10),
        username VARCHAR(255) NOT NULL,
        message TEXT NOT NULL,
+       isDisabled TINYINT(1) NOT NULL DEFAULT 0,
        
-       KEY (commentID, time),
+       KEY (commentID, isDisabled, time),
        KEY lastResponseTime (userID, time)
 );