mirror of
https://github.com/openvk/openvk
synced 2024-12-23 00:51:03 +03:00
Clubs: Group bans fixed (#946)
This commit is contained in:
parent
4a65096e64
commit
8ca3de8afa
7 changed files with 82 additions and 15 deletions
|
@ -128,7 +128,8 @@ final class AdminPresenter extends OpenVKPresenter
|
||||||
$club->save();
|
$club->save();
|
||||||
break;
|
break;
|
||||||
case "ban":
|
case "ban":
|
||||||
$club->setBlock_reason($this->postParam("ban_reason"));
|
$reason = mb_strlen(trim($this->postParam("ban_reason"))) > 0 ? $this->postParam("ban_reason") : NULL;
|
||||||
|
$club->setBlock_reason($reason);
|
||||||
$club->save();
|
$club->save();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,9 @@ final class CommentPresenter extends OpenVKPresenter
|
||||||
$comment = (new Comments)->get($id);
|
$comment = (new Comments)->get($id);
|
||||||
if(!$comment || $comment->isDeleted()) $this->notFound();
|
if(!$comment || $comment->isDeleted()) $this->notFound();
|
||||||
|
|
||||||
|
if ($comment->getTarget() instanceof Post && $comment->getTarget()->getWallOwner()->isBanned())
|
||||||
|
$this->flashFail("err", tr("error"), tr("forbidden"));
|
||||||
|
|
||||||
if(!is_null($this->user)) $comment->toggleLike($this->user->identity);
|
if(!is_null($this->user)) $comment->toggleLike($this->user->identity);
|
||||||
|
|
||||||
$this->redirect($_SERVER["HTTP_REFERER"]);
|
$this->redirect($_SERVER["HTTP_REFERER"]);
|
||||||
|
@ -48,6 +51,9 @@ final class CommentPresenter extends OpenVKPresenter
|
||||||
else if($entity instanceof Topic)
|
else if($entity instanceof Topic)
|
||||||
$club = $entity->getClub();
|
$club = $entity->getClub();
|
||||||
|
|
||||||
|
if ($entity instanceof Post && $entity->getWallOwner()->isBanned())
|
||||||
|
$this->flashFail("err", tr("error"), tr("forbidden"));
|
||||||
|
|
||||||
if($_FILES["_vid_attachment"] && OPENVK_ROOT_CONF['openvk']['preferences']['videos']['disableUploading'])
|
if($_FILES["_vid_attachment"] && OPENVK_ROOT_CONF['openvk']['preferences']['videos']['disableUploading'])
|
||||||
$this->flashFail("err", tr("error"), "Video uploads are disabled by the system administrator.");
|
$this->flashFail("err", tr("error"), "Video uploads are disabled by the system administrator.");
|
||||||
|
|
||||||
|
@ -130,6 +136,8 @@ final class CommentPresenter extends OpenVKPresenter
|
||||||
if(!$comment) $this->notFound();
|
if(!$comment) $this->notFound();
|
||||||
if(!$comment->canBeDeletedBy($this->user->identity))
|
if(!$comment->canBeDeletedBy($this->user->identity))
|
||||||
$this->throwError(403, "Forbidden", "У вас недостаточно прав чтобы редактировать этот ресурс.");
|
$this->throwError(403, "Forbidden", "У вас недостаточно прав чтобы редактировать этот ресурс.");
|
||||||
|
if ($comment->getTarget() instanceof Post && $comment->getTarget()->getWallOwner()->isBanned())
|
||||||
|
$this->flashFail("err", tr("error"), tr("forbidden"));
|
||||||
|
|
||||||
$comment->delete();
|
$comment->delete();
|
||||||
$this->flashFail(
|
$this->flashFail(
|
||||||
|
|
|
@ -23,11 +23,15 @@ final class GroupPresenter extends OpenVKPresenter
|
||||||
$club = $this->clubs->get($id);
|
$club = $this->clubs->get($id);
|
||||||
if(!$club) {
|
if(!$club) {
|
||||||
$this->notFound();
|
$this->notFound();
|
||||||
|
} else {
|
||||||
|
if ($club->isBanned()) {
|
||||||
|
$this->template->_template = "Group/Banned.xml";
|
||||||
} else {
|
} else {
|
||||||
$this->template->albums = (new Albums)->getClubAlbums($club, 1, 3);
|
$this->template->albums = (new Albums)->getClubAlbums($club, 1, 3);
|
||||||
$this->template->albumsCount = (new Albums)->getClubAlbumsCount($club);
|
$this->template->albumsCount = (new Albums)->getClubAlbumsCount($club);
|
||||||
$this->template->topics = (new Topics)->getLastTopics($club, 3);
|
$this->template->topics = (new Topics)->getLastTopics($club, 3);
|
||||||
$this->template->topicsCount = (new Topics)->getClubTopicsCount($club);
|
$this->template->topicsCount = (new Topics)->getClubTopicsCount($club);
|
||||||
|
}
|
||||||
|
|
||||||
$this->template->club = $club;
|
$this->template->club = $club;
|
||||||
}
|
}
|
||||||
|
@ -72,6 +76,7 @@ final class GroupPresenter extends OpenVKPresenter
|
||||||
|
|
||||||
$club = $this->clubs->get((int) $this->postParam("id"));
|
$club = $this->clubs->get((int) $this->postParam("id"));
|
||||||
if(!$club) exit("Invalid state");
|
if(!$club) exit("Invalid state");
|
||||||
|
if ($club->isBanned()) $this->flashFail("err", tr("error"), tr("forbidden"));
|
||||||
|
|
||||||
$club->toggleSubscription($this->user->identity);
|
$club->toggleSubscription($this->user->identity);
|
||||||
|
|
||||||
|
@ -83,6 +88,8 @@ final class GroupPresenter extends OpenVKPresenter
|
||||||
$this->assertUserLoggedIn();
|
$this->assertUserLoggedIn();
|
||||||
|
|
||||||
$this->template->club = $this->clubs->get($id);
|
$this->template->club = $this->clubs->get($id);
|
||||||
|
if ($this->template->club->isBanned()) $this->flashFail("err", tr("error"), tr("forbidden"));
|
||||||
|
|
||||||
$this->template->onlyShowManagers = $this->queryParam("onlyAdmins") == "1";
|
$this->template->onlyShowManagers = $this->queryParam("onlyAdmins") == "1";
|
||||||
if($this->template->onlyShowManagers) {
|
if($this->template->onlyShowManagers) {
|
||||||
$this->template->followers = NULL;
|
$this->template->followers = NULL;
|
||||||
|
@ -118,6 +125,8 @@ final class GroupPresenter extends OpenVKPresenter
|
||||||
$this->badRequest();
|
$this->badRequest();
|
||||||
|
|
||||||
$club = $this->clubs->get($id);
|
$club = $this->clubs->get($id);
|
||||||
|
if ($club->isBanned()) $this->flashFail("err", tr("error"), tr("forbidden"));
|
||||||
|
|
||||||
$user = (new Users)->get((int) $user);
|
$user = (new Users)->get((int) $user);
|
||||||
if(!$user || !$club)
|
if(!$user || !$club)
|
||||||
$this->notFound();
|
$this->notFound();
|
||||||
|
@ -194,6 +203,8 @@ final class GroupPresenter extends OpenVKPresenter
|
||||||
$club = $this->clubs->get($id);
|
$club = $this->clubs->get($id);
|
||||||
if(!$club || !$club->canBeModifiedBy($this->user->identity))
|
if(!$club || !$club->canBeModifiedBy($this->user->identity))
|
||||||
$this->notFound();
|
$this->notFound();
|
||||||
|
else if ($club->isBanned())
|
||||||
|
$this->flashFail("err", tr("error"), tr("forbidden"));
|
||||||
else
|
else
|
||||||
$this->template->club = $club;
|
$this->template->club = $club;
|
||||||
|
|
||||||
|
@ -255,6 +266,7 @@ final class GroupPresenter extends OpenVKPresenter
|
||||||
{
|
{
|
||||||
$photo = new Photo;
|
$photo = new Photo;
|
||||||
$club = $this->clubs->get($id);
|
$club = $this->clubs->get($id);
|
||||||
|
if ($club->isBanned()) $this->flashFail("err", tr("error"), tr("forbidden"));
|
||||||
if($_SERVER["REQUEST_METHOD"] === "POST" && $_FILES["ava"]["error"] === UPLOAD_ERR_OK) {
|
if($_SERVER["REQUEST_METHOD"] === "POST" && $_FILES["ava"]["error"] === UPLOAD_ERR_OK) {
|
||||||
try {
|
try {
|
||||||
$anon = OPENVK_ROOT_CONF["openvk"]["preferences"]["wall"]["anonymousPosting"]["enable"];
|
$anon = OPENVK_ROOT_CONF["openvk"]["preferences"]["wall"]["anonymousPosting"]["enable"];
|
||||||
|
@ -343,6 +355,8 @@ final class GroupPresenter extends OpenVKPresenter
|
||||||
$club = $this->clubs->get($id);
|
$club = $this->clubs->get($id);
|
||||||
if(!$club->canBeModifiedBy($this->user->identity))
|
if(!$club->canBeModifiedBy($this->user->identity))
|
||||||
$this->notFound();
|
$this->notFound();
|
||||||
|
else if ($club->isBanned())
|
||||||
|
$this->flashFail("err", tr("error"), tr("forbidden"));
|
||||||
else
|
else
|
||||||
$this->template->club = $club;
|
$this->template->club = $club;
|
||||||
|
|
||||||
|
@ -375,6 +389,7 @@ final class GroupPresenter extends OpenVKPresenter
|
||||||
$this->flashFail("err", tr("error"), tr("incorrect_password"));
|
$this->flashFail("err", tr("error"), tr("incorrect_password"));
|
||||||
|
|
||||||
$club = $this->clubs->get($id);
|
$club = $this->clubs->get($id);
|
||||||
|
if ($club->isBanned()) $this->flashFail("err", tr("error"), tr("forbidden"));
|
||||||
$newOwner = (new Users)->get($newOwnerId);
|
$newOwner = (new Users)->get($newOwnerId);
|
||||||
if($this->user->id !== $club->getOwner()->getId())
|
if($this->user->id !== $club->getOwner()->getId())
|
||||||
$this->flashFail("err", tr("error"), tr("forbidden"));
|
$this->flashFail("err", tr("error"), tr("forbidden"));
|
||||||
|
|
|
@ -46,13 +46,13 @@ final class WallPresenter extends OpenVKPresenter
|
||||||
function renderWall(int $user, bool $embedded = false): void
|
function renderWall(int $user, bool $embedded = false): void
|
||||||
{
|
{
|
||||||
$owner = ($user < 0 ? (new Clubs) : (new Users))->get(abs($user));
|
$owner = ($user < 0 ? (new Clubs) : (new Users))->get(abs($user));
|
||||||
|
if ($owner->isBanned())
|
||||||
|
$this->flashFail("err", tr("error"), tr("forbidden"));
|
||||||
|
|
||||||
if(is_null($this->user)) {
|
if(is_null($this->user)) {
|
||||||
$canPost = false;
|
$canPost = false;
|
||||||
} else if($user > 0) {
|
} else if($user > 0) {
|
||||||
if(!$owner->isBanned())
|
|
||||||
$canPost = $owner->getPrivacyPermission("wall.write", $this->user->identity);
|
$canPost = $owner->getPrivacyPermission("wall.write", $this->user->identity);
|
||||||
else
|
|
||||||
$this->flashFail("err", tr("error"), tr("forbidden"));
|
|
||||||
} else if($user < 0) {
|
} else if($user < 0) {
|
||||||
if($owner->canBeModifiedBy($this->user->identity))
|
if($owner->canBeModifiedBy($this->user->identity))
|
||||||
$canPost = true;
|
$canPost = true;
|
||||||
|
@ -100,6 +100,8 @@ final class WallPresenter extends OpenVKPresenter
|
||||||
} else if($user < 0) {
|
} else if($user < 0) {
|
||||||
if($owner->canBeModifiedBy($this->user->identity))
|
if($owner->canBeModifiedBy($this->user->identity))
|
||||||
$canPost = true;
|
$canPost = true;
|
||||||
|
else if ($owner->isBanned())
|
||||||
|
$this->flashFail("err", tr("error"), tr("forbidden"));
|
||||||
else
|
else
|
||||||
$canPost = $owner->canPost();
|
$canPost = $owner->canPost();
|
||||||
} else {
|
} else {
|
||||||
|
@ -212,11 +214,12 @@ final class WallPresenter extends OpenVKPresenter
|
||||||
|
|
||||||
$wallOwner = ($wall > 0 ? (new Users)->get($wall) : (new Clubs)->get($wall * -1))
|
$wallOwner = ($wall > 0 ? (new Users)->get($wall) : (new Clubs)->get($wall * -1))
|
||||||
?? $this->flashFail("err", tr("failed_to_publish_post"), tr("error_4"));
|
?? $this->flashFail("err", tr("failed_to_publish_post"), tr("error_4"));
|
||||||
|
|
||||||
|
if ($wallOwner->isBanned())
|
||||||
|
$this->flashFail("err", tr("error"), tr("forbidden"));
|
||||||
|
|
||||||
if($wall > 0) {
|
if($wall > 0) {
|
||||||
if(!$wallOwner->isBanned())
|
|
||||||
$canPost = $wallOwner->getPrivacyPermission("wall.write", $this->user->identity);
|
$canPost = $wallOwner->getPrivacyPermission("wall.write", $this->user->identity);
|
||||||
else
|
|
||||||
$this->flashFail("err", tr("not_enough_permissions"), tr("not_enough_permissions_comment"));
|
|
||||||
} else if($wall < 0) {
|
} else if($wall < 0) {
|
||||||
if($wallOwner->canBeModifiedBy($this->user->identity))
|
if($wallOwner->canBeModifiedBy($this->user->identity))
|
||||||
$canPost = true;
|
$canPost = true;
|
||||||
|
@ -354,6 +357,9 @@ final class WallPresenter extends OpenVKPresenter
|
||||||
} else {
|
} else {
|
||||||
$this->template->wallOwner = (new Clubs)->get(abs($post->getTargetWall()));
|
$this->template->wallOwner = (new Clubs)->get(abs($post->getTargetWall()));
|
||||||
$this->template->isWallOfGroup = true;
|
$this->template->isWallOfGroup = true;
|
||||||
|
|
||||||
|
if ($this->template->wallOwner->isBanned())
|
||||||
|
$this->flashFail("err", tr("error"), tr("forbidden"));
|
||||||
}
|
}
|
||||||
$this->template->cCount = $post->getCommentsCount();
|
$this->template->cCount = $post->getCommentsCount();
|
||||||
$this->template->cPage = (int) ($_GET["p"] ?? 1);
|
$this->template->cPage = (int) ($_GET["p"] ?? 1);
|
||||||
|
@ -369,6 +375,9 @@ final class WallPresenter extends OpenVKPresenter
|
||||||
$post = $this->posts->getPostById($wall, $post_id);
|
$post = $this->posts->getPostById($wall, $post_id);
|
||||||
if(!$post || $post->isDeleted()) $this->notFound();
|
if(!$post || $post->isDeleted()) $this->notFound();
|
||||||
|
|
||||||
|
if ($post->getWallOwner()->isBanned())
|
||||||
|
$this->flashFail("err", tr("error"), tr("forbidden"));
|
||||||
|
|
||||||
if(!is_null($this->user)) {
|
if(!is_null($this->user)) {
|
||||||
$post->toggleLike($this->user->identity);
|
$post->toggleLike($this->user->identity);
|
||||||
}
|
}
|
||||||
|
@ -387,6 +396,9 @@ final class WallPresenter extends OpenVKPresenter
|
||||||
if(!$post || $post->isDeleted())
|
if(!$post || $post->isDeleted())
|
||||||
$this->notFound();
|
$this->notFound();
|
||||||
|
|
||||||
|
if ($post->getWallOwner()->isBanned())
|
||||||
|
$this->flashFail("err", tr("error"), tr("forbidden"));
|
||||||
|
|
||||||
$where = $this->postParam("type") ?? "wall";
|
$where = $this->postParam("type") ?? "wall";
|
||||||
$groupId = NULL;
|
$groupId = NULL;
|
||||||
$flags = 0;
|
$flags = 0;
|
||||||
|
@ -444,6 +456,9 @@ final class WallPresenter extends OpenVKPresenter
|
||||||
$wallOwner = ($wall > 0 ? (new Users)->get($wall) : (new Clubs)->get($wall * -1))
|
$wallOwner = ($wall > 0 ? (new Users)->get($wall) : (new Clubs)->get($wall * -1))
|
||||||
?? $this->flashFail("err", tr("failed_to_delete_post"), tr("error_4"));
|
?? $this->flashFail("err", tr("failed_to_delete_post"), tr("error_4"));
|
||||||
|
|
||||||
|
if ($wallOwner->isBanned())
|
||||||
|
$this->flashFail("err", tr("error"), tr("forbidden"));
|
||||||
|
|
||||||
if($wall < 0) $canBeDeletedByOtherUser = $wallOwner->canBeModifiedBy($this->user->identity);
|
if($wall < 0) $canBeDeletedByOtherUser = $wallOwner->canBeModifiedBy($this->user->identity);
|
||||||
else $canBeDeletedByOtherUser = false;
|
else $canBeDeletedByOtherUser = false;
|
||||||
|
|
||||||
|
@ -468,6 +483,9 @@ final class WallPresenter extends OpenVKPresenter
|
||||||
if(!$post)
|
if(!$post)
|
||||||
$this->notFound();
|
$this->notFound();
|
||||||
|
|
||||||
|
if ($post->getWallOwner()->isBanned())
|
||||||
|
$this->flashFail("err", tr("error"), tr("forbidden"));
|
||||||
|
|
||||||
if(!$post->canBePinnedBy($this->user->identity))
|
if(!$post->canBePinnedBy($this->user->identity))
|
||||||
$this->flashFail("err", tr("not_enough_permissions"), tr("not_enough_permissions_comment"));
|
$this->flashFail("err", tr("not_enough_permissions"), tr("not_enough_permissions_comment"));
|
||||||
|
|
||||||
|
|
22
Web/Presenters/templates/Group/Banned.xml
Normal file
22
Web/Presenters/templates/Group/Banned.xml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{extends "../@layout.xml"}
|
||||||
|
|
||||||
|
{block title}{$club->getCanonicalName()}{/block}
|
||||||
|
|
||||||
|
{block header}{include title}{/block}
|
||||||
|
|
||||||
|
{block content}
|
||||||
|
<center>
|
||||||
|
<img src="/assets/packages/static/openvk/img/oof.apng" alt="Сообщество заблокировано." style="width: 20%;"/>
|
||||||
|
<p>
|
||||||
|
{tr("group_banned", htmlentities($club->getCanonicalName()))|noescape}
|
||||||
|
<br/>
|
||||||
|
{_user_banned_comment} <b>{$club->getBanReason()}</b>.
|
||||||
|
</p>
|
||||||
|
{if isset($thisUser)}
|
||||||
|
<p n:if="$thisUser->getChandlerUser()->can('access')->model('admin')->whichBelongsTo(NULL)">
|
||||||
|
<br />
|
||||||
|
<a href="/admin/clubs/id{$club->getId()}?act=ban" target="_blank" class="button">{_edit}</a>
|
||||||
|
</p>
|
||||||
|
{/if}
|
||||||
|
</center>
|
||||||
|
{/block}
|
|
@ -331,6 +331,8 @@
|
||||||
"search_by_groups" = "Search by groups";
|
"search_by_groups" = "Search by groups";
|
||||||
"search_group_desc" = "Here you can browse through the existing groups and choose a group to suit your needs...";
|
"search_group_desc" = "Here you can browse through the existing groups and choose a group to suit your needs...";
|
||||||
|
|
||||||
|
"group_banned" = "Unfortunately, we had to block the <b>$1</b> group.";
|
||||||
|
|
||||||
/* Albums */
|
/* Albums */
|
||||||
|
|
||||||
"create" = "Create";
|
"create" = "Create";
|
||||||
|
|
|
@ -314,6 +314,7 @@
|
||||||
"search_group" = "Поиск группы";
|
"search_group" = "Поиск группы";
|
||||||
"search_by_groups" = "Поиск по группам";
|
"search_by_groups" = "Поиск по группам";
|
||||||
"search_group_desc" = "Здесь Вы можете просмотреть существующие группы и выбрать группу себе по вкусу...";
|
"search_group_desc" = "Здесь Вы можете просмотреть существующие группы и выбрать группу себе по вкусу...";
|
||||||
|
"group_banned" = "К сожалению, нам пришлось заблокировать сообщество <b>$1</b>.";
|
||||||
|
|
||||||
/* Albums */
|
/* Albums */
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue