mirror of
https://github.com/openvk/openvk
synced 2024-12-22 16:42:32 +03:00
Add quickban button for admins
This commit is contained in:
parent
fafc3b4fb9
commit
af6eeb882c
4 changed files with 60 additions and 1 deletions
|
@ -517,6 +517,21 @@ class User extends RowModel
|
|||
return !is_null($this->getPendingPhoneVerification());
|
||||
}
|
||||
|
||||
function ban(string $reason): void
|
||||
{
|
||||
$subs = DatabaseConnection::i()->getContext()->table("subscriptions");
|
||||
$subs = $subs->where(
|
||||
"follower = ? OR (target = ? AND model = ?)",
|
||||
$this->getId(),
|
||||
$this->getId(),
|
||||
get_class($this),
|
||||
);
|
||||
$subs->delete();
|
||||
|
||||
$this->setBlock_Reason($reason);
|
||||
$this->save();
|
||||
}
|
||||
|
||||
function verifyNumber(string $code): bool
|
||||
{
|
||||
$ver = $this->getPendingPhoneVerification();
|
||||
|
|
|
@ -27,7 +27,9 @@ final class AdminPresenter extends OpenVKPresenter
|
|||
|
||||
function onStartup(): void
|
||||
{
|
||||
exit("Не реализовано...");
|
||||
parent::onStartup();
|
||||
|
||||
$this->assertPermission("admin", "access", -1);
|
||||
}
|
||||
|
||||
function renderIndex(): void
|
||||
|
@ -82,4 +84,14 @@ final class AdminPresenter extends OpenVKPresenter
|
|||
{
|
||||
|
||||
}
|
||||
|
||||
function renderQuickBan(int $id): void
|
||||
{
|
||||
$user = $this->users->get($id);
|
||||
if(!$user)
|
||||
exit(json_encode([ "error" => "User does not exist" ]));
|
||||
|
||||
$user->ban($this->queryParam("reason"));
|
||||
exit(json_encode([ "reason" => $this->queryParam("reason") ]));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -72,6 +72,12 @@
|
|||
</a>
|
||||
{/if}
|
||||
|
||||
{if $thisUser->getChandlerUser()->can("access")->model("admin")->whichBelongsTo(NULL)}
|
||||
<a href="javascript:banUser()" class="profile_link">
|
||||
Забанить пользователя
|
||||
</a>
|
||||
{/if}
|
||||
|
||||
{var subStatus = $user->getSubscriptionStatus($thisUser)}
|
||||
{if $subStatus === 0}
|
||||
<form action="/setSub/user" method="post">
|
||||
|
@ -445,6 +451,30 @@
|
|||
</div>
|
||||
|
||||
{presenter "openvk!Wall->wall", $user->getId()}
|
||||
|
||||
<script n:if="isset($thisUser) && $thisUser->getChandlerUser()->can('access')->model('admin')->whichBelongsTo(NULL)">
|
||||
function banUser() {
|
||||
uBanMsgTxt = "Вы собираетесь забанить пользователя " + {$user->getCanonicalName()} + ".";
|
||||
uBanMsgTxt += "<br/><b>Предупреждение</b>: Это действие удалит все подписки пользователя и отпишет всех от него.";
|
||||
uBanMsgTxt += "<br/><br/><b>Причина бана</b>: <input type='text' id='uBanMsgInput' placeholder='насрал в штаны' />"
|
||||
|
||||
MessageBox("Забанить " + {$user->getFirstName()}, uBanMsgTxt, ["Подтвердить", "Отмена"], [
|
||||
(function() {
|
||||
res = document.querySelector("#uBanMsgInput").value;
|
||||
xhr = new XMLHttpRequest();
|
||||
xhr.open("GET", "/admin/ban.pl/" + {$user->getId()} + "?reason=" + res, true);
|
||||
xhr.onload = (function() {
|
||||
if(xhr.responseText.indexOf("reason") === -1)
|
||||
MessageBox("Ошибка", "Не удалось забанить пользователя...", ["OK"], [Function.noop]);
|
||||
else
|
||||
MessageBox("Операция успешна", "Пользователь заблокирован", ["OK"], [Function.noop]);
|
||||
});
|
||||
xhr.send(null);
|
||||
}),
|
||||
Function.noop
|
||||
])
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
|
||||
{/if}
|
||||
|
|
|
@ -191,6 +191,8 @@ routes:
|
|||
handler: "Admin->clubs"
|
||||
- url: "/admin/clubs/id{num}"
|
||||
handler: "Admin->club"
|
||||
- url: "/admin/ban.pl/{num}"
|
||||
handler: "Admin->quickBan"
|
||||
- url: "/sandbox_cocksex"
|
||||
handler: "About->sandbox"
|
||||
- url: "/{?shortCode}"
|
||||
|
|
Loading…
Reference in a new issue