From 1b2cf8f1041f66db2f7567b52d31360e4ec441eb Mon Sep 17 00:00:00 2001 From: Ilya Prokopenko Date: Sun, 26 Sep 2021 08:34:22 +0300 Subject: [PATCH] Reports: Added report window --- Web/Presenters/ReportPresenter.php | 52 +++++++++++--------------- Web/Presenters/templates/Wall/Post.xml | 28 +++++++++++++- Web/routes.yml | 2 + 3 files changed, 50 insertions(+), 32 deletions(-) diff --git a/Web/Presenters/ReportPresenter.php b/Web/Presenters/ReportPresenter.php index 3b6970e1..de03a5e7 100644 --- a/Web/Presenters/ReportPresenter.php +++ b/Web/Presenters/ReportPresenter.php @@ -41,41 +41,31 @@ final class ReportPresenter extends OpenVKPresenter $this->template->report = $report; } - function renderCreate(): void + function renderCreate(int $id): void { $this->assertUserLoggedIn(); $this->willExecuteWriteAction(); - // ЛАПСКИЙ Я НЕ ДО КОНЦА ДОДЕЛАЛ Я ПРОСТО МЫТЬСЯ ПОШЁЛ - // А ВОТ ЩА ДОДЕЛАЮ - // апд 01:00 по мск доделал фронт вроде!!!! if(!$id) - $this->notFound(); + exit(json_encode([ "error" => tr("error_segmentation") ])); + + // At this moment, only Posts will be implemented + if($this->queryParam("type") == 'posts') { + $post = (new Posts)->get(intval($id)); + if(!$post) + exit(json_encode([ "error" => "Unable to report nonexistent content" ])); + + $report = new Report; + $report->setUser_id($this->user->id); + $report->setTarget_id($id); + $report->setType($this->queryParam("type")); + $report->setReason($this->queryParam("reason")); + $report->setCreated(time()); + $report->save(); - if($_SERVER["REQUEST_METHOD"] === "POST") { - if(empty($this->postParam("type")) && empty($this->postParam('id'))) { - $this->flashFail("err", tr("error"), tr("error_segmentation")); - } - - // At this moment, only Posts will be implemented - if($this->postParam("type") == 'posts') { - $post = (new Posts)->get(intval($this->postParam("id"))); - if(!$post) - $this->flashFail("err", "Ага! Попался, гадёныш блядь!", "Нельзя отправить жалобу на несуществующий контент"); - - $report = new Report; - $report->setUser_id($this->user->id); - $note->setContent_id($this->postParam("id")); - $note->setReason($this->postParam("reason")); - $note->setCreated(time()); - $note->setType($this->postParam("type")); - $note->save(); - - $this->flashFail("suc", "Жалоба отправлена", "Скоро её рассмотрят модераторы"); - } else { - $this->flashFail("err", "Пока низя", "Нельзя отправить жалобу на данный тип контента"); - } - + exit(json_encode([ "reason" => $this->queryParam("reason") ])); + } else { + exit(json_encode([ "error" => "Unable to submit a report on this content type" ])); } } @@ -88,7 +78,7 @@ final class ReportPresenter extends OpenVKPresenter if($this->postParam("ban")) { $report = $this->report->get($id); if(!$report) $this->notFound(); - if($note->isDeleted()) $this->notFound(); + if($report->isDeleted()) $this->notFound(); if(is_null($this->user)) $this->flashFail("err", "Ошибка доступа", "Недостаточно прав для модификации данного ресурса."); @@ -98,7 +88,7 @@ final class ReportPresenter extends OpenVKPresenter }else if($this->postParam("delete")){ $report = $this->report->get($id); if(!$report) $this->notFound(); - if($note->isDeleted()) $this->notFound(); + if($report->isDeleted()) $this->notFound(); if(is_null($this->user)) $this->flashFail("err", "Ошибка доступа", "Недостаточно прав для модификации данного ресурса."); diff --git a/Web/Presenters/templates/Wall/Post.xml b/Web/Presenters/templates/Wall/Post.xml index 4699c491..509963b3 100644 --- a/Web/Presenters/templates/Wall/Post.xml +++ b/Web/Presenters/templates/Wall/Post.xml @@ -28,9 +28,35 @@

{_actions}

{if isset($thisUser)} {var canDelete = $post->canBeDeletedBy($thisUser)} + {if $thisUser->getId() != $post->getOwner()->getId()} + {var canReport = true} + {/if} {/if} {_delete} - {_report} + {_report} + {/block} diff --git a/Web/routes.yml b/Web/routes.yml index 3629a214..6f149f70 100644 --- a/Web/routes.yml +++ b/Web/routes.yml @@ -219,6 +219,8 @@ routes: handler: "Report->view" - url: "/admin/reportAction{num}" handler: "Report->action" + - url: "/report.pl/{num}" + handler: "Report->create" - url: "/method/{text}.{text}" handler: "VKAPI->route" - url: "/token"