Метод API для одобренных тегов

Запрос одобренных тегов и проверка конкретного на одобренность, частичные правки мусорных варнов в логах, полунерабочая функция проверки строки на соответствие ASCII, проверки ввода в методе создания поста, мелкие оптимизации запросов к БД в методе запроса данных юзера.
This commit is contained in:
2024-01-20 20:05:45 +03:00
parent e180c04e44
commit 93a2286d46
10 changed files with 151 additions and 14 deletions

View File

@ -4,18 +4,20 @@
// Includes
if ($IS_FRONTEND) {
if (isset($IS_FRONTEND) && $IS_FRONTEND) {
require_once("api/_auth.php");
require_once("api/_utils.php");
require_once("api/_errorslist.php");
require_once("api/_types.php");
require_once("api/user/index.php");
require_once("api/tags/index.php");
} else {
require_once("../_auth.php");
require_once("../_utils.php");
require_once("../_errorslist.php");
require_once("../_types.php");
require_once("../user/index.php");
require_once("../tags/index.php");
}
@ -203,12 +205,20 @@ function Post_Create_Method (array $req, array $files): ReturnT {
return new ReturnT(err_code: E_UIN_BADARGS, err_desc: "tags string length exceeds limit: " . strval($Config["posting"]["tags"]["max_raw_input_str_length"]));
elseif ($tagsLen < 1)
return new ReturnT(err_code: E_UIN_BADARGS, err_desc: "tags cant be empty");
// TODO: check if it is ASCII string
// Check if supplied string is ASCII
if (!Utils_IsAscii($req["tags"]))
return new ReturnT(err_code: E_UIN_BADARGS, err_desc: "tags must be ASCII-only");
// Parsing tags
$parsedTags = Post_ParseRawTagString($req["tags"]);
if ($parsedTags->IsError())
return $parsedTags;
// TODO: check if tags are approved
$parsedTags = $parsedTags->GetData();
// Check if tags are approved
foreach ($parsedTags as $singleTag) {
if (!Tags_IsTagApproved($singleTag))
return new ReturnT(err_code: E_UIN_BADARGS, err_desc: "tag $singleTag is not approved");
}
// Concatenating parsed tags to single comma-separated string
$tags = implode(",", $parsedTags);
// Check user role TODO: add rate-limiting, instead of this

View File

@ -87,7 +87,7 @@ function Post_GetByID (int $id): ReturnT {
$result["edit_lock"] = $d["edit_lock"];
$r = Post_AddView($id); // TODO: add rate-limit or completely rework
if ($r.IsError())
if ($r->IsError())
return $r;
return new ReturnT(data: $result);