API для отправки жалобы

This commit is contained in:
n1rwana 2023-08-11 20:39:40 +03:00
parent ee2e5e8d1c
commit 00f5b53ea8
No known key found for this signature in database
GPG key ID: 184A60085ABF17D8
2 changed files with 44 additions and 0 deletions

View file

@ -0,0 +1,41 @@
<?php declare(strict_types=1);
namespace openvk\VKAPI\Handlers;
use openvk\Web\Models\Entities\Report;
use openvk\Web\Models\Repositories\Reports as ReportsRepo;
final class Reports extends VKAPIRequestHandler
{
function add(string $type, int $id, string $reason): object
{
$this->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");
}
}
}

View file

@ -88,6 +88,9 @@ final class ReportPresenter extends OpenVKPresenter
if(!$id) if(!$id)
exit(json_encode([ "error" => tr("error_segmentation") ])); 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(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) { if (count(iterator_to_array($this->reports->getDuplicates($this->queryParam("type"), $id, NULL, $this->user->id))) <= 0) {
$report = new Report; $report = new Report;