diff --git a/Web/Models/Entities/Report.php b/Web/Models/Entities/Report.php index c7e9c4b8..2d0d81df 100644 --- a/Web/Models/Entities/Report.php +++ b/Web/Models/Entities/Report.php @@ -72,6 +72,7 @@ class Report extends RowModel else if ($this->getContentType() == "comment") return (new Comments)->get($this->getContentId()); else if ($this->getContentType() == "note") return (new Notes)->get($this->getContentId()); else if ($this->getContentType() == "app") return (new Applications)->get($this->getContentId()); + else if ($this->getContentType() == "user") return (new Users)->get($this->getContentId()); else return null; } @@ -82,15 +83,18 @@ class Report extends RowModel function banUser($initiator) { - $this->getAuthor()->ban("**content-" . $this->getContentType() . "-" . $this->getContentId() . "**", false, time() + $this->getAuthor()->getNewBanTime(), $initiator); + $reason = $this->getContentType() !== "user" ? ("**content-" . $this->getContentType() . "-" . $this->getContentId() . "**") : ("Подозрительная активность"); + $this->getAuthor()->ban($reason, false, time() + $this->getAuthor()->getNewBanTime(), $initiator); } function deleteContent() { - $pubTime = $this->getContentObject()->getPublicationTime(); - $name = $this->getContentObject()->getName(); - $this->getAuthor()->adminNotify("Ваш контент, который вы опубликовали $pubTime ($name) был удалён модераторами инстанса. За повторные или серьёзные нарушения вас могут заблокировать."); - $this->getContentObject()->delete($this->getContentType() !== "app"); + if ($this->getContentType() !== "user") { + $pubTime = $this->getContentObject()->getPublicationTime(); + $name = $this->getContentObject()->getName(); + $this->getAuthor()->adminNotify("Ваш контент, который вы опубликовали $pubTime ($name) был удалён модераторами инстанса. За повторные или серьёзные нарушения вас могут заблокировать."); + $this->getContentObject()->delete($this->getContentType() !== "app"); + } $this->setDeleted(1); $this->save(); } diff --git a/Web/Models/Entities/User.php b/Web/Models/Entities/User.php index 6b8c1051..76c9d700 100644 --- a/Web/Models/Entities/User.php +++ b/Web/Models/Entities/User.php @@ -264,10 +264,10 @@ class User extends RowModel $reason = $ban->getReason(); - preg_match('/\*\*content-(post|photo|video|group|comment|note|app|noSpamTemplate)-(\d+)\*\*$/', $reason, $matches); + preg_match('/\*\*content-(post|photo|video|group|comment|note|app|noSpamTemplate|user)-(\d+)\*\*$/', $reason, $matches); if (sizeof($matches) === 3) { $content_type = $matches[1]; $content_id = (int) $matches[2]; - if ($content_type === "noSpamTemplate") { + if (in_array($content_type, ["noSpamTemplate", "user"])) { $reason = "Подозрительная активность"; } else { if ($for !== "banned") { @@ -282,6 +282,7 @@ class User extends RowModel case "comment": $reason[] = (new Comments)->get($content_id); break; case "note": $reason[] = (new Notes)->get($content_id); break; case "app": $reason[] = (new Applications)->get($content_id); break; + case "user": $reason[] = (new Users)->get($content_id); break; default: $reason[] = null; } } @@ -1171,6 +1172,7 @@ class User extends RowModel { $ban = (new Bans)->get((int) $this->getRecord()->block_reason); if (!$ban || $ban->isOver() || $ban->isPermanent()) return null; + if ($this->canUnbanThemself()) return tr("today"); return date('d.m.Y', $ban->getEndTime()); } diff --git a/Web/Presenters/NoSpamPresenter.php b/Web/Presenters/NoSpamPresenter.php index 4912a24e..fee69cb3 100644 --- a/Web/Presenters/NoSpamPresenter.php +++ b/Web/Presenters/NoSpamPresenter.php @@ -32,7 +32,7 @@ final class NoSpamPresenter extends OpenVKPresenter $this->assertPermission('openvk\Web\Models\Entities\TicketReply', 'write', 0); $targetDir = __DIR__ . '/../Models/Entities/'; - $mode = in_array($this->queryParam("act"), ["form", "templates", "rollback"]) ? $this->queryParam("act") : "form"; + $mode = in_array($this->queryParam("act"), ["form", "templates", "rollback", "reports"]) ? $this->queryParam("act") : "form"; if ($mode === "form") { $this->template->_template = "NoSpam/Index"; @@ -70,6 +70,8 @@ final class NoSpamPresenter extends OpenVKPresenter $filter["id"] = (int)$this->queryParam("id"); } $this->template->templates = iterator_to_array((new NoSpamLogs)->getList($filter)); + } else if ($mode === "reports") { + $this->redirect("/scumfeed"); } else { $template = (new NoSpamLogs)->get((int)$this->postParam("id")); if (!$template || $template->isRollbacked()) diff --git a/Web/Presenters/ReportPresenter.php b/Web/Presenters/ReportPresenter.php index 7d09ddf4..dc965e22 100644 --- a/Web/Presenters/ReportPresenter.php +++ b/Web/Presenters/ReportPresenter.php @@ -51,7 +51,7 @@ final class ReportPresenter extends OpenVKPresenter if(!$id) exit(json_encode([ "error" => tr("error_segmentation") ])); - if(in_array($this->queryParam("type"), ["post", "photo", "video", "group", "comment", "note", "app"])) { + if(in_array($this->queryParam("type"), ["post", "photo", "video", "group", "comment", "note", "app", "user"])) { $report = new Report; $report->setUser_id($this->user->id); $report->setTarget_id($id); diff --git a/Web/Presenters/templates/NoSpam/Index.xml b/Web/Presenters/templates/NoSpam/Index.xml index 16dcef3c..1bc73491 100644 --- a/Web/Presenters/templates/NoSpam/Index.xml +++ b/Web/Presenters/templates/NoSpam/Index.xml @@ -4,7 +4,7 @@ {block header}{include title}{/block} {block content} - {include "Tabs.xml", mode => "form"} +
{include "Tabs.xml", mode => "form"}

diff --git a/Web/Presenters/templates/NoSpam/Tabs.xml b/Web/Presenters/templates/NoSpam/Tabs.xml index 7ef51b2f..e80db91e 100644 --- a/Web/Presenters/templates/NoSpam/Tabs.xml +++ b/Web/Presenters/templates/NoSpam/Tabs.xml @@ -1,8 +1,9 @@ -
- - + + + diff --git a/Web/Presenters/templates/NoSpam/Templates.xml b/Web/Presenters/templates/NoSpam/Templates.xml index f6e7e2e7..83fd77c7 100644 --- a/Web/Presenters/templates/NoSpam/Templates.xml +++ b/Web/Presenters/templates/NoSpam/Templates.xml @@ -4,7 +4,7 @@ {block header}{include title}{/block} {block content} - {include "Tabs.xml", mode => "templates"} +
{include "Tabs.xml", mode => "templates"}