diff --git a/VKAPI/Handlers/Reports.php b/VKAPI/Handlers/Reports.php new file mode 100644 index 00000000..104e3594 --- /dev/null +++ b/VKAPI/Handlers/Reports.php @@ -0,0 +1,41 @@ +requireUser(); + $this->willExecuteWriteAction(); + + if ($id <= 0) { + $this->fail(100, "ID must be a positive number"); + } + + if(mb_strlen(trim($reason)) === 0) { + $this->fail(100, "Reason can't be empty"); + } + + if ($type === "user" && $id === $this->getUser()->getId()) { + $this->fail(100, "You can't report yourself"); + } + + if(in_array($type, ["post", "photo", "video", "group", "comment", "note", "app", "user"])) { + if (count(iterator_to_array((new ReportsRepo)->getDuplicates($type, $id, NULL, $this->getUser()->getId()))) <= 0) { + $report = new Report; + $report->setUser_id($this->getUser()->getId()); + $report->setTarget_id($id); + $report->setType($type); + $report->setReason($reason); + $report->setCreated(time()); + $report->save(); + } + + return (object) [ "reason" => $reason ]; + } else { + $this->fail(3, "Unable to submit a report on this content type"); + } + } +} diff --git a/Web/Presenters/ReportPresenter.php b/Web/Presenters/ReportPresenter.php index a87154c8..b6b6da97 100644 --- a/Web/Presenters/ReportPresenter.php +++ b/Web/Presenters/ReportPresenter.php @@ -88,6 +88,9 @@ final class ReportPresenter extends OpenVKPresenter if(!$id) exit(json_encode([ "error" => tr("error_segmentation") ])); + if ($this->queryParam("type") === "user" && $id === $this->user->id) + exit(json_encode(["reason" => "You can't report yourself"])); + if(in_array($this->queryParam("type"), ["post", "photo", "video", "group", "comment", "note", "app", "user"])) { if (count(iterator_to_array($this->reports->getDuplicates($this->queryParam("type"), $id, NULL, $this->user->id))) <= 0) { $report = new Report;