diff --git a/Web/Models/Entities/Club.php b/Web/Models/Entities/Club.php index 31485129..2de240e0 100644 --- a/Web/Models/Entities/Club.php +++ b/Web/Models/Entities/Club.php @@ -401,6 +401,11 @@ class Club extends RowModel return (object) $res; } + function isAnonCommentsAllowed(): bool + { + return (bool) $this->getRecord()->allow_anon_comments; + } + use Traits\TBackDrops; use Traits\TSubscribable; } diff --git a/Web/Models/Entities/User.php b/Web/Models/Entities/User.php index e5b8da06..efbf5cd9 100644 --- a/Web/Models/Entities/User.php +++ b/Web/Models/Entities/User.php @@ -1237,6 +1237,11 @@ class User extends RowModel return $res; } + + function isAnonCommentsAllowed(): bool + { + return (bool) $this->getRecord()->allow_anon_comments; + } use Traits\TBackDrops; use Traits\TSubscribable; diff --git a/Web/Presenters/CommentPresenter.php b/Web/Presenters/CommentPresenter.php index cb0efd0d..cb1c04a8 100644 --- a/Web/Presenters/CommentPresenter.php +++ b/Web/Presenters/CommentPresenter.php @@ -57,6 +57,8 @@ final class CommentPresenter extends OpenVKPresenter if($_FILES["_vid_attachment"] && OPENVK_ROOT_CONF['openvk']['preferences']['videos']['disableUploading']) $this->flashFail("err", tr("error"), "Video uploads are disabled by the system administrator."); + $anon = OPENVK_ROOT_CONF["openvk"]["preferences"]["wall"]["anonymousPosting"]["enable"] && $this->postParam("anon") === "on" && $entity->getWallOwner()->isAnonCommentsAllowed(); + $flags = 0; if($this->postParam("as_group") === "on" && !is_null($club) && $club->canBeModifiedBy($this->user->identity)) $flags |= 0b10000000; @@ -98,9 +100,10 @@ final class CommentPresenter extends OpenVKPresenter $comment->setModel(get_class($entity)); $comment->setTarget($entity->getId()); $comment->setContent($this->postParam("text")); + $comment->setAnonymous($anon); $comment->setCreated(time()); $comment->setFlags($flags); - $comment->save(); + $comment->save(); } catch (\LengthException $ex) { $this->flashFail("err", "Не удалось опубликовать комментарий", "Комментарий слишком большой."); } diff --git a/Web/Presenters/GroupPresenter.php b/Web/Presenters/GroupPresenter.php index d8fbcb79..0a77e8df 100644 --- a/Web/Presenters/GroupPresenter.php +++ b/Web/Presenters/GroupPresenter.php @@ -219,6 +219,7 @@ final class GroupPresenter extends OpenVKPresenter $club->setEveryone_Can_Create_Topics(empty($this->postParam("everyone_can_create_topics")) ? 0 : 1); $club->setDisplay_Topics_Above_Wall(empty($this->postParam("display_topics_above_wall")) ? 0 : 1); $club->setHide_From_Global_Feed(empty($this->postParam("hide_from_global_feed")) ? 0 : 1); + $club->setAllow_Anon_Comments(empty($this->postParam("allow_anon_comments")) ? 0 : 1); $website = $this->postParam("website") ?? ""; if(empty($website)) diff --git a/Web/Presenters/UserPresenter.php b/Web/Presenters/UserPresenter.php index 9cfa3654..590a456c 100644 --- a/Web/Presenters/UserPresenter.php +++ b/Web/Presenters/UserPresenter.php @@ -418,6 +418,8 @@ final class UserPresenter extends OpenVKPresenter if(!$user->setShortCode(empty($this->postParam("sc")) ? NULL : $this->postParam("sc"))) $this->flashFail("err", tr("error"), tr("error_shorturl_incorrect")); + + $user->setAllow_Anon_Comments(empty($this->postParam("allow_anon_comments")) ? 0 : 1); } else if($_GET['act'] === "privacy") { $settings = [ "page.read", diff --git a/Web/Presenters/templates/Group/Edit.xml b/Web/Presenters/templates/Group/Edit.xml index 22f0b490..28231d13 100644 --- a/Web/Presenters/templates/Group/Edit.xml +++ b/Web/Presenters/templates/Group/Edit.xml @@ -101,7 +101,14 @@ {_group_dont_display_administrators_list}
- + + + + + + {_allow_anon_comments} + + diff --git a/Web/Presenters/templates/User/Settings.xml b/Web/Presenters/templates/User/Settings.xml index e61f900d..9c375bf9 100644 --- a/Web/Presenters/templates/User/Settings.xml +++ b/Web/Presenters/templates/User/Settings.xml @@ -101,6 +101,15 @@ +
+ + + + + + {_allow_anon_comments} + + diff --git a/Web/Presenters/templates/components/comments.xml b/Web/Presenters/templates/components/comments.xml index 3290e35c..069bff63 100644 --- a/Web/Presenters/templates/components/comments.xml +++ b/Web/Presenters/templates/components/comments.xml @@ -3,8 +3,9 @@
{var $commentsURL = "/al_comments/create/$model/" . $parent->getId()} {var $club = $parent instanceof \openvk\Web\Models\Entities\Post && $parent->getTargetWall() < 0 ? (new openvk\Web\Models\Repositories\Clubs)->get(abs($parent->getTargetWall())) : $club} + {var $oObj = $parent->getWallOwner()} {if !$readOnly} - {include "textArea.xml", route => $commentsURL, postOpts => false, graffiti => (bool) ovkGetQuirk("comments.allow-graffiti"), club => $club} + {include "textArea.xml", route => $commentsURL, postOpts => false, graffiti => (bool) ovkGetQuirk("comments.allow-graffiti"), club => $club, isComment => true, oObj => $oObj} {/if}
diff --git a/Web/Presenters/templates/components/textArea.xml b/Web/Presenters/templates/components/textArea.xml index f76649d6..4f3d9262 100644 --- a/Web/Presenters/templates/components/textArea.xml +++ b/Web/Presenters/templates/components/textArea.xml @@ -17,8 +17,8 @@
+ {var $anonEnabled = OPENVK_ROOT_CONF['openvk']['preferences']['wall']['anonymousPosting']['enable'] && $oObj->isAnonCommentsAllowed()}
- {var $anonEnabled = OPENVK_ROOT_CONF['openvk']['preferences']['wall']['anonymousPosting']['enable']} {if !is_null($thisUser) && !is_null($club ?? NULL) && $owner < 0} {if $club->canBeModifiedBy($thisUser)}