This commit is contained in:
n1rwana 2022-08-28 15:04:10 +03:00
parent ae0258c78b
commit 82a5aaf8b8
6 changed files with 22 additions and 38 deletions

View file

@ -22,6 +22,11 @@ class Blacklists
yield new BlacklistItem($blacklistItem); yield new BlacklistItem($blacklistItem);
} }
function getByAuthorAndTarget(int $author, int $target): ?BlacklistItem
{
return new BlacklistItem($this->blacklists->where(["author" => $author, "target" => $target])->fetch());
}
function getCount(User $user): int function getCount(User $user): int
{ {
return sizeof($this->blacklists->where("author", $user->getId())->fetch()); return sizeof($this->blacklists->where("author", $user->getId())->fetch());
@ -32,6 +37,6 @@ class Blacklists
if (!$author || !$target) if (!$author || !$target)
return FALSE; return FALSE;
return sizeof(DB::i()->getContext()->table("blacklists")->where(["author" => $author->getId(), "target" => $target->getId()])->fetch()) > 0; return !is_null($this->getByAuthorAndTarget($author->getId(), $target->getId()));
} }
} }

View file

@ -34,9 +34,10 @@ final class BlacklistPresenter extends OpenVKPresenter
$this->willExecuteWriteAction(); $this->willExecuteWriteAction();
$this->assertUserLoggedIn(); $this->assertUserLoggedIn();
$record = new BlacklistItem(DB::i()->getContext()->table("blacklists")->where([ "author" => $this->user->identity->getId(), "target" => $this->postParam("id") ])->fetch()); $record = $this->blacklists->getByAuthorAndTarget($this->user->identity->getId(), $this->postParam("id"));
//$record = new BlacklistItem(DB::i()->getContext()->table("blacklists")->where([ "author" => $this->user->identity->getId(), "target" => ])->fetch());
$name = $record->getTarget()->getCanonicalName(); $name = $record->getTarget()->getCanonicalName();
$record->delete(FALSE); $record->delete(false);
$this->flashFail("succ", "Успех", "$name удалён из чёрного списка."); $this->flashFail("succ", "Успех", "$name удалён из чёрного списка.");
} }

View file

@ -18,12 +18,8 @@ final class NotesPresenter extends OpenVKPresenter
{ {
$user = (new Users)->get($owner); $user = (new Users)->get($owner);
if(!$user) $this->notFound(); if(!$user) $this->notFound();
if(!$user->getPrivacyPermission('notes.read', $this->user->identity ?? NULL)) { if(!$user->getPrivacyPermission('notes.read', $this->user->identity ?? NULL))
if ((new Blacklists)->isBanned($user, $this->user->identity))
$this->flashFail("err", tr("forbidden"), "Пользователь внёс Вас в чёрный список.");
$this->flashFail("err", tr("forbidden"), tr("forbidden_comment")); $this->flashFail("err", tr("forbidden"), tr("forbidden_comment"));
}
$this->template->notes = $this->notes->getUserNotes($user, (int)($this->queryParam("p") ?? 1)); $this->template->notes = $this->notes->getUserNotes($user, (int)($this->queryParam("p") ?? 1));
$this->template->count = $this->notes->getUserNotesCount($user); $this->template->count = $this->notes->getUserNotesCount($user);

View file

@ -24,12 +24,9 @@ final class PhotosPresenter extends OpenVKPresenter
if($owner > 0) { if($owner > 0) {
$user = $this->users->get($owner); $user = $this->users->get($owner);
if(!$user) $this->notFound(); if(!$user) $this->notFound();
if (!$user->getPrivacyPermission('photos.read', $this->user->identity ?? NULL)) { if (!$user->getPrivacyPermission('photos.read', $this->user->identity ?? NULL))
if ((new Blacklists)->isBanned($user, $this->user->identity))
$this->flashFail("err", tr("forbidden"), "Пользователь внёс Вас в чёрный список.");
$this->flashFail("err", tr("forbidden"), tr("forbidden_comment")); $this->flashFail("err", tr("forbidden"), tr("forbidden_comment"));
}
$this->template->albums = $this->albums->getUserAlbums($user, $this->queryParam("p") ?? 1); $this->template->albums = $this->albums->getUserAlbums($user, $this->queryParam("p") ?? 1);
$this->template->count = $this->albums->getUserAlbumsCount($user); $this->template->count = $this->albums->getUserAlbumsCount($user);
$this->template->owner = $user; $this->template->owner = $user;
@ -147,13 +144,9 @@ final class PhotosPresenter extends OpenVKPresenter
if($owner > 0 /* bc we currently don't have perms for clubs */) { if($owner > 0 /* bc we currently don't have perms for clubs */) {
$ownerObject = (new Users)->get($owner); $ownerObject = (new Users)->get($owner);
if(!$ownerObject->getPrivacyPermission('photos.read', $this->user->identity ?? NULL)) { if(!$ownerObject->getPrivacyPermission('photos.read', $this->user->identity ?? NULL))
if ((new Blacklists)->isBanned($ownerObject, $this->user->identity))
$this->flashFail("err", tr("forbidden"), "Пользователь внёс Вас в чёрный список.");
$this->flashFail("err", tr("forbidden"), tr("forbidden_comment")); $this->flashFail("err", tr("forbidden"), tr("forbidden_comment"));
} }
}
$this->template->album = $album; $this->template->album = $album;
$this->template->photos = iterator_to_array( $album->getPhotos( (int) ($this->queryParam("p") ?? 1), 20) ); $this->template->photos = iterator_to_array( $album->getPhotos( (int) ($this->queryParam("p") ?? 1), 20) );

View file

@ -34,8 +34,9 @@ final class UserPresenter extends OpenVKPresenter
if ($this->user->identity) if ($this->user->identity)
if ($this->blacklists->isBanned($user, $this->user->identity)) { if ($this->blacklists->isBanned($user, $this->user->identity)) {
if ($this->user->identity->isAdmin()) { if ($this->user->identity->isAdmin()) {
if (OPENVK_ROOT_CONF["openvk"]["preferences"]["security"]["blacklists"]["applyToAdmins"]) if (OPENVK_ROOT_CONF["openvk"]["preferences"]["security"]["blacklists"]["applyToAdmins"]) {
$this->flashFail("err", tr("forbidden"), "Пользователь внёс Вас в чёрный список."); $this->flashFail("err", tr("forbidden"), "Пользователь внёс Вас в чёрный список.");
}
} else { } else {
$this->flashFail("err", tr("forbidden"), "Пользователь внёс Вас в чёрный список."); $this->flashFail("err", tr("forbidden"), "Пользователь внёс Вас в чёрный список.");
} }
@ -56,11 +57,11 @@ final class UserPresenter extends OpenVKPresenter
$this->template->videosCount = (new Videos)->getUserVideosCount($user); $this->template->videosCount = (new Videos)->getUserVideosCount($user);
$this->template->notes = (new Notes)->getUserNotes($user, 1, 4); $this->template->notes = (new Notes)->getUserNotes($user, 1, 4);
$this->template->notesCount = (new Notes)->getUserNotesCount($user); $this->template->notesCount = (new Notes)->getUserNotesCount($user);
$this->template->blacklists = $this->blacklists; $this->template->blacklists = (new Blacklists);
$this->template->user = $user; $this->template->user = $user;
$this->template->isBlacklistedThem = $this->blacklists->isBanned($this->user->identity, $user); $this->template->isBlacklistedThem = $this->template->blacklists->isBanned($this->user->identity, $user);
$this->template->isBlacklistedByThem = $this->blacklists->isBanned($user, $this->user->identity); $this->template->isBlacklistedByThem = $this->template->blacklists->isBanned($user, $this->user->identity);
} }
} }
@ -72,12 +73,8 @@ final class UserPresenter extends OpenVKPresenter
$page = abs($this->queryParam("p") ?? 1); $page = abs($this->queryParam("p") ?? 1);
if(!$user) if(!$user)
$this->notFound(); $this->notFound();
elseif (!$user->getPrivacyPermission('friends.read', $this->user->identity ?? NULL)) { elseif (!$user->getPrivacyPermission('friends.read', $this->user->identity ?? NULL))
if ($this->blacklists->isBanned($user, $this->user->identity))
$this->flashFail("err", tr("forbidden"), "Пользователь внёс Вас в чёрный список.");
$this->flashFail("err", tr("forbidden"), tr("forbidden_comment")); $this->flashFail("err", tr("forbidden"), tr("forbidden_comment"));
}
else else
$this->template->user = $user; $this->template->user = $user;
@ -104,12 +101,8 @@ final class UserPresenter extends OpenVKPresenter
$user = $this->users->get($id); $user = $this->users->get($id);
if(!$user) if(!$user)
$this->notFound(); $this->notFound();
elseif (!$user->getPrivacyPermission('groups.read', $this->user->identity ?? NULL)) { elseif (!$user->getPrivacyPermission('groups.read', $this->user->identity ?? NULL))
if ($this->blacklists->isBanned($user, $this->user->identity))
$this->flashFail("err", tr("forbidden"), "Пользователь внёс Вас в чёрный список.");
$this->flashFail("err", tr("forbidden"), tr("forbidden_comment")); $this->flashFail("err", tr("forbidden"), tr("forbidden_comment"));
}
else { else {
if($this->queryParam("act") === "managed" && $this->user->id !== $user->getId()) if($this->queryParam("act") === "managed" && $this->user->id !== $user->getId())
$this->flashFail("err", tr("forbidden"), tr("forbidden_comment")); $this->flashFail("err", tr("forbidden"), tr("forbidden_comment"));

View file

@ -21,12 +21,8 @@ final class VideosPresenter extends OpenVKPresenter
{ {
$user = $this->users->get($id); $user = $this->users->get($id);
if(!$user) $this->notFound(); if(!$user) $this->notFound();
if(!$user->getPrivacyPermission('videos.read', $this->user->identity ?? NULL)) { if(!$user->getPrivacyPermission('videos.read', $this->user->identity ?? NULL))
if ((new Blacklists)->isBanned($user, $this->user->identity))
$this->flashFail("err", tr("forbidden"), "Пользователь внёс Вас в чёрный список.");
$this->flashFail("err", tr("forbidden"), tr("forbidden_comment")); $this->flashFail("err", tr("forbidden"), tr("forbidden_comment"));
}
$this->template->user = $user; $this->template->user = $user;
$this->template->videos = $this->videos->getByUser($user, (int) ($this->queryParam("p") ?? 1)); $this->template->videos = $this->videos->getByUser($user, (int) ($this->queryParam("p") ?? 1));