From c8a97f8b8de0a7dacf3f23b3bb60cafd0543c11c Mon Sep 17 00:00:00 2001 From: ZAZiOs <85897688+ZAZiOs@users.noreply.github.com> Date: Sun, 29 Jun 2025 17:12:55 +0300 Subject: [PATCH] fix(API): users bdate field, can edit/delete comments (#1359) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit И парочка фиксов или фич которые позволяют работать OpenVK Native так как надо. 1. add openvk native support - Просто добавил определение натива как android/ios клиент 2. Добавил /.well-known/assetlinks.json - По этому адресу автоматически стучится андроид чтобы проверить что приложению можно открывать ссылки с этого адреса по умолчанию. 3. Добавил поле bdate в users 4. Добавил инфу о том может ли редачить или удалять комментарий пользователь. --- VKAPI/Handlers/Users.php | 26 +++++++++++++++++++++ VKAPI/Handlers/Wall.php | 2 ++ Web/Models/Entities/Post.php | 2 ++ Web/Models/Entities/User.php | 2 ++ Web/Presenters/AboutPresenter.php | 23 ++++++++++++++++++ Web/routes.yml | 2 ++ Web/static/img/app_icons/openvk_native.png | Bin 0 -> 37916 bytes data/clients.xml | 4 +++- 8 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 Web/static/img/app_icons/openvk_native.png diff --git a/VKAPI/Handlers/Users.php b/VKAPI/Handlers/Users.php index bafce3d8..73ddcee4 100644 --- a/VKAPI/Handlers/Users.php +++ b/VKAPI/Handlers/Users.php @@ -317,6 +317,32 @@ final class Users extends VKAPIRequestHandler $response[$i]->custom_fields = $append_array; break; + case "bdate": + if (!$canView) { + $response[$i]->bdate = "01.01.1970"; + break; + } + $visibility = $usr->getBirthdayPrivacy(); + $response[$i]->bdate_visibility = $visibility; + + $birthday = $usr->getBirthday(); + if ($birthday) { + switch ($visibility) { + case 1: + $response[$i]->bdate = $birthday->format('%d.%m'); + break; + case 2: + $response[$i]->bdate = $birthday->format('%d.%m.%Y'); + break; + case 0: + default: + $response[$i]->bdate = null; + break; + } + } else { + $response[$i]->bdate = null; + } + break; } } diff --git a/VKAPI/Handlers/Wall.php b/VKAPI/Handlers/Wall.php index f1fdf978..c1a8619d 100644 --- a/VKAPI/Handlers/Wall.php +++ b/VKAPI/Handlers/Wall.php @@ -877,6 +877,8 @@ final class Wall extends VKAPIRequestHandler "id" => $comment->getId(), "from_id" => $oid, "date" => $comment->getPublicationTime()->timestamp(), + "can_edit" => $post->canBeEditedBy($this->getUser()), + "can_delete" => $post->canBeDeletedBy($this->getUser()), "text" => $comment->getText(false), "post_id" => $post->getVirtualId(), "owner_id" => method_exists($post, 'isPostedOnBehalfOfGroup') && $post->isPostedOnBehalfOfGroup() ? $post->getOwner()->getId() * -1 : $post->getOwner()->getId(), diff --git a/Web/Models/Entities/Post.php b/Web/Models/Entities/Post.php index 4079f566..bb833c04 100644 --- a/Web/Models/Entities/Post.php +++ b/Web/Models/Entities/Post.php @@ -176,11 +176,13 @@ class Post extends Postable $platform = $this->getRecord()->api_source_name; if ($forAPI) { switch ($platform) { + case 'openvk_native': case 'openvk_refresh_android': case 'openvk_legacy_android': return 'android'; break; + case 'openvk_native_ios': case 'openvk_ios': case 'openvk_legacy_ios': return 'iphone'; diff --git a/Web/Models/Entities/User.php b/Web/Models/Entities/User.php index 2f336f4a..e0fa0a76 100644 --- a/Web/Models/Entities/User.php +++ b/Web/Models/Entities/User.php @@ -971,11 +971,13 @@ class User extends RowModel $platform = $this->getRecord()->client_name; if ($forAPI) { switch ($platform) { + case 'openvk_native': case 'openvk_refresh_android': case 'openvk_legacy_android': return 'android'; break; + case 'openvk_native_ios': case 'openvk_ios': case 'openvk_legacy_ios': return 'iphone'; diff --git a/Web/Presenters/AboutPresenter.php b/Web/Presenters/AboutPresenter.php index 9e8e975e..5d52db90 100644 --- a/Web/Presenters/AboutPresenter.php +++ b/Web/Presenters/AboutPresenter.php @@ -147,6 +147,29 @@ final class AboutPresenter extends OpenVKPresenter $this->redirect("https://github.com/openvk/openvk#readme"); } + public function renderAssetLinksJSON(): void + { + # Необходимо любому андроид приложению для автоматического разрешения принимать ссылки с этого сайта. + # Не шарю как писать норм на php поэтому тут чутка на вайбкодил - искренне ваш, ZAZiOs. + header("Content-Type: application/json"); + + $data = [ + [ + "relation" => ["delegate_permission/common.handle_all_urls"], + "target" => [ + "namespace" => "android_app", + "package_name" => "oss.OpenVK.Native", + "sha256_cert_fingerprints" => [ + "79:67:14:23:DC:6E:FA:49:64:1F:F1:81:0E:B0:A3:AE:6E:88:AB:0D:CF:BC:02:96:F3:6D:76:6B:82:94:D6:9C", + ], + ], + ], + ]; + + echo json_encode($data, JSON_UNESCAPED_SLASHES); + exit; + } + public function renderDev(): void { $this->redirect("https://docs.ovk.to/"); diff --git a/Web/routes.yml b/Web/routes.yml index f1cf2af6..f4323dca 100644 --- a/Web/routes.yml +++ b/Web/routes.yml @@ -407,6 +407,8 @@ routes: handler: "About->robotsTxt" - url: "/humans.txt" handler: "About->humansTxt" + - url: "/.well-known/assetlinks.json" + handler: "About->AssetLinksJSON" - url: "/dev" handler: "About->dev" - url: "/iapi/getPhotosFromPost/{num}_{num}" diff --git a/Web/static/img/app_icons/openvk_native.png b/Web/static/img/app_icons/openvk_native.png new file mode 100644 index 0000000000000000000000000000000000000000..56d8913307d276a6bb75cf03970319bcd8a9c720 GIT binary patch literal 37916 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 - \ No newline at end of file + + +