openvk/Web/Models/Entities/Club.php

537 lines
15 KiB
PHP
Raw Normal View History

<?php
declare(strict_types=1);
2020-06-07 19:04:43 +03:00
namespace openvk\Web\Models\Entities;
2020-06-07 19:04:43 +03:00
use openvk\Web\Util\DateTime;
use openvk\Web\Models\RowModel;
2020-08-01 17:22:52 +03:00
use openvk\Web\Models\Entities\{User, Manager};
Groups: Wall: add suggestions (#935) * Wall: add early suggestions * Fix br * Fix empty posts * fck * Add offset for api * Add notifications of new suggestion posts * Fix mentions in suggested posts * 🤮🤢 * Change regex Теперь оно удаляет все теги а не только <br> * Add da koroche pohuy * Эдд апи метходс Методы нестандартные немного * Pon * Add skloneniyia * newlines * int * Update loaders and add avtopodgruzka postov * Update JOERGK.strings * Blin * Remove repeated code, fix loaded buttons on chr... ...ome and fix getting suggested posts via API.Wall.getPost * Fix polls * Fihes Теперь уведомление о принятии поста не приходит, если вы приняли свой же пост Пофикшен баг перехода в предложку Добавлен старый вид постов в предложке Теперь счётчик постов в предложке у прикреплённой группы обновляется при принятии или отклонении поста Убрано всплывающее уведомление об отклонении поста (оно раздражает) Теперь если вы посмотрели все посты на одной странице (не на первой) и на ней не осталось постов, вас телепортирует на предыдущую страницу * Remove ability to delete your accepted psto * oi blin * Improvements 2 api * g * openvk.uk Возможно, приведение кода к кодстайлу (удаление скобочек то есть) * aiaks * al_wall.js -> al_suggestions.js * 👨‍💻 Add 👨‍💻 fading 👨‍💻 * Add "owner's posts' and "other's posts" Давайте рофлить👨‍💻👨‍💻👨‍💻 * planshet openvk Add tabs for post view, add signer's object in wall get and add person icon in microblog * Simplefai ze kod * PHP 8 FIX WATAFAK * Add indesk
2023-11-16 19:44:12 +03:00
use openvk\Web\Models\Repositories\{Users, Clubs, Albums, Managers, Posts};
2020-06-07 19:04:43 +03:00
use Nette\Database\Table\{ActiveRow, GroupedSelection};
use Chandler\Database\DatabaseConnection as DB;
use Chandler\Security\User as ChandlerUser;
class Club extends RowModel
{
use Traits\TBackDrops;
use Traits\TSubscribable;
use Traits\TAudioStatuses;
use Traits\TIgnorable;
2020-06-07 19:04:43 +03:00
protected $tableName = "groups";
public const TYPE_GROUP = 1;
public const TYPE_PUBLIC = 1;
public const TYPE_EVENT = 2;
public const OPEN = 0;
public const CLOSED = 1;
public const PRIVATE = 2;
public const NOT_RELATED = 0;
public const SUBSCRIBED = 1;
public const REQUEST_SENT = 2;
public const WALL_CLOSED = 0;
public const WALL_OPEN = 1;
public const WALL_LIMITED = 2;
public function getId(): int
2020-06-07 19:04:43 +03:00
{
return $this->getRecord()->id;
}
public function getAvatarPhoto(): ?Photo
2020-06-07 19:04:43 +03:00
{
$avAlbum = (new Albums())->getClubAvatarAlbum($this);
2020-06-07 19:04:43 +03:00
$avCount = $avAlbum->getPhotosCount();
$avPhotos = $avAlbum->getPhotos($avCount, 1);
return iterator_to_array($avPhotos)[0] ?? null;
2020-06-07 19:04:43 +03:00
}
public function getAvatarUrl(string $size = "miniscule", $avPhoto = null): string
2020-06-07 19:04:43 +03:00
{
$serverUrl = ovk_scheme(true) . $_SERVER["HTTP_HOST"];
if (!$avPhoto) {
$avPhoto = $this->getAvatarPhoto();
}
return is_null($avPhoto) ? "$serverUrl/assets/packages/static/openvk/img/camera_200.png" : $avPhoto->getURLBySizeId($size);
2020-06-07 19:04:43 +03:00
}
Groups: Wall: add suggestions (#935) * Wall: add early suggestions * Fix br * Fix empty posts * fck * Add offset for api * Add notifications of new suggestion posts * Fix mentions in suggested posts * 🤮🤢 * Change regex Теперь оно удаляет все теги а не только <br> * Add da koroche pohuy * Эдд апи метходс Методы нестандартные немного * Pon * Add skloneniyia * newlines * int * Update loaders and add avtopodgruzka postov * Update JOERGK.strings * Blin * Remove repeated code, fix loaded buttons on chr... ...ome and fix getting suggested posts via API.Wall.getPost * Fix polls * Fihes Теперь уведомление о принятии поста не приходит, если вы приняли свой же пост Пофикшен баг перехода в предложку Добавлен старый вид постов в предложке Теперь счётчик постов в предложке у прикреплённой группы обновляется при принятии или отклонении поста Убрано всплывающее уведомление об отклонении поста (оно раздражает) Теперь если вы посмотрели все посты на одной странице (не на первой) и на ней не осталось постов, вас телепортирует на предыдущую страницу * Remove ability to delete your accepted psto * oi blin * Improvements 2 api * g * openvk.uk Возможно, приведение кода к кодстайлу (удаление скобочек то есть) * aiaks * al_wall.js -> al_suggestions.js * 👨‍💻 Add 👨‍💻 fading 👨‍💻 * Add "owner's posts' and "other's posts" Давайте рофлить👨‍💻👨‍💻👨‍💻 * planshet openvk Add tabs for post view, add signer's object in wall get and add person icon in microblog * Simplefai ze kod * PHP 8 FIX WATAFAK * Add indesk
2023-11-16 19:44:12 +03:00
public function getWallType(): int
Groups: Wall: add suggestions (#935) * Wall: add early suggestions * Fix br * Fix empty posts * fck * Add offset for api * Add notifications of new suggestion posts * Fix mentions in suggested posts * 🤮🤢 * Change regex Теперь оно удаляет все теги а не только <br> * Add da koroche pohuy * Эдд апи метходс Методы нестандартные немного * Pon * Add skloneniyia * newlines * int * Update loaders and add avtopodgruzka postov * Update JOERGK.strings * Blin * Remove repeated code, fix loaded buttons on chr... ...ome and fix getting suggested posts via API.Wall.getPost * Fix polls * Fihes Теперь уведомление о принятии поста не приходит, если вы приняли свой же пост Пофикшен баг перехода в предложку Добавлен старый вид постов в предложке Теперь счётчик постов в предложке у прикреплённой группы обновляется при принятии или отклонении поста Убрано всплывающее уведомление об отклонении поста (оно раздражает) Теперь если вы посмотрели все посты на одной странице (не на первой) и на ней не осталось постов, вас телепортирует на предыдущую страницу * Remove ability to delete your accepted psto * oi blin * Improvements 2 api * g * openvk.uk Возможно, приведение кода к кодстайлу (удаление скобочек то есть) * aiaks * al_wall.js -> al_suggestions.js * 👨‍💻 Add 👨‍💻 fading 👨‍💻 * Add "owner's posts' and "other's posts" Давайте рофлить👨‍💻👨‍💻👨‍💻 * planshet openvk Add tabs for post view, add signer's object in wall get and add person icon in microblog * Simplefai ze kod * PHP 8 FIX WATAFAK * Add indesk
2023-11-16 19:44:12 +03:00
{
return $this->getRecord()->wall;
}
public function getAvatarLink(): string
2020-06-07 19:04:43 +03:00
{
$avPhoto = $this->getAvatarPhoto();
if (!$avPhoto) {
return "javascript:void(0)";
}
2020-06-07 19:04:43 +03:00
$pid = $avPhoto->getPrettyId();
$aid = (new Albums())->getClubAvatarAlbum($this)->getId();
2020-06-07 19:04:43 +03:00
return "/photo$pid?from=album$aid";
}
public function getURL(): string
2020-06-07 19:04:43 +03:00
{
if (!is_null($this->getShortCode())) {
2020-06-07 19:04:43 +03:00
return "/" . $this->getShortCode();
} else {
2020-06-07 19:04:43 +03:00
return "/club" . $this->getId();
}
2020-06-07 19:04:43 +03:00
}
public function getName(): string
2020-06-07 19:04:43 +03:00
{
return $this->getRecord()->name;
2020-06-07 19:04:43 +03:00
}
public function getCanonicalName(): string
2020-06-07 19:04:43 +03:00
{
return $this->getName();
}
public function getOwner(): ?User
2020-06-07 19:04:43 +03:00
{
return (new Users())->get($this->getRecord()->owner);
2020-06-07 19:04:43 +03:00
}
public function getOwnerComment(): string
{
return is_null($this->getRecord()->owner_comment) ? "" : $this->getRecord()->owner_comment;
}
public function isOwnerHidden(): bool
{
return (bool) $this->getRecord()->owner_hidden;
}
public function isOwnerClubPinned(): bool
{
return (bool) $this->getRecord()->owner_club_pinned;
}
public function getDescription(): ?string
2020-06-07 19:04:43 +03:00
{
return $this->getRecord()->about;
}
public function getDescriptionHtml(): ?string
{
if (!is_null($this->getDescription())) {
return nl2br(htmlspecialchars($this->getDescription(), ENT_DISALLOWED | ENT_XHTML));
} else {
return null;
}
}
public function getShortCode(): ?string
2020-06-07 19:04:43 +03:00
{
return $this->getRecord()->shortcode;
}
public function getBanReason(): ?string
2020-06-07 19:04:43 +03:00
{
return $this->getRecord()->block_reason;
}
public function getOpennesStatus(): int
2020-06-07 19:04:43 +03:00
{
return $this->getRecord()->closed;
}
public function getAdministratorsListDisplay(): int
{
return $this->getRecord()->administrators_list_display;
}
public function isEveryoneCanCreateTopics(): bool
{
return (bool) $this->getRecord()->everyone_can_create_topics;
}
public function isDisplayTopicsAboveWallEnabled(): bool
{
return (bool) $this->getRecord()->display_topics_above_wall;
}
public function isHideFromGlobalFeedEnabled(): bool
{
return (bool) $this->getRecord()->hide_from_global_feed;
}
public function isHidingFromGlobalFeedEnforced(): bool
{
return (bool) $this->getRecord()->enforce_hiding_from_global_feed;
}
public function getType(): int
2020-06-07 19:04:43 +03:00
{
return $this->getRecord()->type;
}
public function isVerified(): bool
2020-06-07 19:04:43 +03:00
{
return (bool) $this->getRecord()->verified;
}
public function isBanned(): bool
2020-06-07 19:04:43 +03:00
{
return !is_null($this->getBanReason());
}
public function canPost(): bool
2020-06-07 19:04:43 +03:00
{
return (bool) $this->getRecord()->wall;
2020-06-07 19:04:43 +03:00
}
public function setShortCode(?string $code = null): ?bool
2020-06-07 19:04:43 +03:00
{
if (!is_null($code)) {
if (!preg_match("%^[a-z][a-z0-9\\.\\_]{0,30}[a-z0-9]$%", $code)) {
2020-06-07 19:04:43 +03:00
return false;
}
if (in_array($code, OPENVK_ROOT_CONF["openvk"]["preferences"]["shortcodes"]["forbiddenNames"])) {
2020-06-07 19:04:43 +03:00
return false;
}
if (\Chandler\MVC\Routing\Router::i()->getMatchingRoute("/$code")[0]->presenter !== "UnknownTextRouteStrategy") {
2020-06-11 12:54:20 +03:00
return false;
}
2020-06-11 12:54:20 +03:00
$pUser = DB::i()->getContext()->table("profiles")->where("shortcode", $code)->fetch();
if (!is_null($pUser)) {
2020-06-11 12:54:20 +03:00
return false;
}
2020-06-07 19:04:43 +03:00
}
2020-06-07 19:04:43 +03:00
$this->stateChanges("shortcode", $code);
return true;
}
Groups: Wall: add suggestions (#935) * Wall: add early suggestions * Fix br * Fix empty posts * fck * Add offset for api * Add notifications of new suggestion posts * Fix mentions in suggested posts * 🤮🤢 * Change regex Теперь оно удаляет все теги а не только <br> * Add da koroche pohuy * Эдд апи метходс Методы нестандартные немного * Pon * Add skloneniyia * newlines * int * Update loaders and add avtopodgruzka postov * Update JOERGK.strings * Blin * Remove repeated code, fix loaded buttons on chr... ...ome and fix getting suggested posts via API.Wall.getPost * Fix polls * Fihes Теперь уведомление о принятии поста не приходит, если вы приняли свой же пост Пофикшен баг перехода в предложку Добавлен старый вид постов в предложке Теперь счётчик постов в предложке у прикреплённой группы обновляется при принятии или отклонении поста Убрано всплывающее уведомление об отклонении поста (оно раздражает) Теперь если вы посмотрели все посты на одной странице (не на первой) и на ней не осталось постов, вас телепортирует на предыдущую страницу * Remove ability to delete your accepted psto * oi blin * Improvements 2 api * g * openvk.uk Возможно, приведение кода к кодстайлу (удаление скобочек то есть) * aiaks * al_wall.js -> al_suggestions.js * 👨‍💻 Add 👨‍💻 fading 👨‍💻 * Add "owner's posts' and "other's posts" Давайте рофлить👨‍💻👨‍💻👨‍💻 * planshet openvk Add tabs for post view, add signer's object in wall get and add person icon in microblog * Simplefai ze kod * PHP 8 FIX WATAFAK * Add indesk
2023-11-16 19:44:12 +03:00
public function setWall(int $type)
Groups: Wall: add suggestions (#935) * Wall: add early suggestions * Fix br * Fix empty posts * fck * Add offset for api * Add notifications of new suggestion posts * Fix mentions in suggested posts * 🤮🤢 * Change regex Теперь оно удаляет все теги а не только <br> * Add da koroche pohuy * Эдд апи метходс Методы нестандартные немного * Pon * Add skloneniyia * newlines * int * Update loaders and add avtopodgruzka postov * Update JOERGK.strings * Blin * Remove repeated code, fix loaded buttons on chr... ...ome and fix getting suggested posts via API.Wall.getPost * Fix polls * Fihes Теперь уведомление о принятии поста не приходит, если вы приняли свой же пост Пофикшен баг перехода в предложку Добавлен старый вид постов в предложке Теперь счётчик постов в предложке у прикреплённой группы обновляется при принятии или отклонении поста Убрано всплывающее уведомление об отклонении поста (оно раздражает) Теперь если вы посмотрели все посты на одной странице (не на первой) и на ней не осталось постов, вас телепортирует на предыдущую страницу * Remove ability to delete your accepted psto * oi blin * Improvements 2 api * g * openvk.uk Возможно, приведение кода к кодстайлу (удаление скобочек то есть) * aiaks * al_wall.js -> al_suggestions.js * 👨‍💻 Add 👨‍💻 fading 👨‍💻 * Add "owner's posts' and "other's posts" Давайте рофлить👨‍💻👨‍💻👨‍💻 * planshet openvk Add tabs for post view, add signer's object in wall get and add person icon in microblog * Simplefai ze kod * PHP 8 FIX WATAFAK * Add indesk
2023-11-16 19:44:12 +03:00
{
if ($type > 2 || $type < 0) {
Groups: Wall: add suggestions (#935) * Wall: add early suggestions * Fix br * Fix empty posts * fck * Add offset for api * Add notifications of new suggestion posts * Fix mentions in suggested posts * 🤮🤢 * Change regex Теперь оно удаляет все теги а не только <br> * Add da koroche pohuy * Эдд апи метходс Методы нестандартные немного * Pon * Add skloneniyia * newlines * int * Update loaders and add avtopodgruzka postov * Update JOERGK.strings * Blin * Remove repeated code, fix loaded buttons on chr... ...ome and fix getting suggested posts via API.Wall.getPost * Fix polls * Fihes Теперь уведомление о принятии поста не приходит, если вы приняли свой же пост Пофикшен баг перехода в предложку Добавлен старый вид постов в предложке Теперь счётчик постов в предложке у прикреплённой группы обновляется при принятии или отклонении поста Убрано всплывающее уведомление об отклонении поста (оно раздражает) Теперь если вы посмотрели все посты на одной странице (не на первой) и на ней не осталось постов, вас телепортирует на предыдущую страницу * Remove ability to delete your accepted psto * oi blin * Improvements 2 api * g * openvk.uk Возможно, приведение кода к кодстайлу (удаление скобочек то есть) * aiaks * al_wall.js -> al_suggestions.js * 👨‍💻 Add 👨‍💻 fading 👨‍💻 * Add "owner's posts' and "other's posts" Давайте рофлить👨‍💻👨‍💻👨‍💻 * planshet openvk Add tabs for post view, add signer's object in wall get and add person icon in microblog * Simplefai ze kod * PHP 8 FIX WATAFAK * Add indesk
2023-11-16 19:44:12 +03:00
throw new \LogicException("Invalid wall");
}
Groups: Wall: add suggestions (#935) * Wall: add early suggestions * Fix br * Fix empty posts * fck * Add offset for api * Add notifications of new suggestion posts * Fix mentions in suggested posts * 🤮🤢 * Change regex Теперь оно удаляет все теги а не только <br> * Add da koroche pohuy * Эдд апи метходс Методы нестандартные немного * Pon * Add skloneniyia * newlines * int * Update loaders and add avtopodgruzka postov * Update JOERGK.strings * Blin * Remove repeated code, fix loaded buttons on chr... ...ome and fix getting suggested posts via API.Wall.getPost * Fix polls * Fihes Теперь уведомление о принятии поста не приходит, если вы приняли свой же пост Пофикшен баг перехода в предложку Добавлен старый вид постов в предложке Теперь счётчик постов в предложке у прикреплённой группы обновляется при принятии или отклонении поста Убрано всплывающее уведомление об отклонении поста (оно раздражает) Теперь если вы посмотрели все посты на одной странице (не на первой) и на ней не осталось постов, вас телепортирует на предыдущую страницу * Remove ability to delete your accepted psto * oi blin * Improvements 2 api * g * openvk.uk Возможно, приведение кода к кодстайлу (удаление скобочек то есть) * aiaks * al_wall.js -> al_suggestions.js * 👨‍💻 Add 👨‍💻 fading 👨‍💻 * Add "owner's posts' and "other's posts" Давайте рофлить👨‍💻👨‍💻👨‍💻 * planshet openvk Add tabs for post view, add signer's object in wall get and add person icon in microblog * Simplefai ze kod * PHP 8 FIX WATAFAK * Add indesk
2023-11-16 19:44:12 +03:00
$this->stateChanges("wall", $type);
}
public function isSubscriptionAccepted(User $user): bool
2020-06-07 19:04:43 +03:00
{
return !is_null($this->getRecord()->related("subscriptions.follower")->where([
"follower" => $this->getId(),
"target" => $user->getId(),
])->fetch());
;
2020-06-07 19:04:43 +03:00
}
public function getPostViewStats(bool $unique = false): ?array
2020-06-07 19:04:43 +03:00
{
$edb = eventdb();
if (!$edb) {
return null;
}
2020-06-07 19:04:43 +03:00
$subs = [];
$viral = [];
$total = [];
for ($i = 1; $i < 8; $i++) {
2020-06-07 19:04:43 +03:00
$begin = strtotime("-" . $i . "day midnight");
$end = $i === 1 ? time() + 10 : strtotime("-" . ($i - 1) . "day midnight");
2020-06-07 19:04:43 +03:00
$query = "SELECT COUNT(" . ($unique ? "DISTINCT profile" : "*") . ") AS cnt FROM postViews";
$query .= " WHERE `group`=1 AND owner=" . $this->getId();
$query .= " AND timestamp > $begin AND timestamp < $end";
2020-06-07 19:04:43 +03:00
$sub = $edb->getConnection()->query("$query AND NOT subscribed=0")->fetch()->cnt;
$vir = $edb->getConnection()->query("$query AND subscribed=0")->fetch()->cnt;
$subs[] = $sub;
$viral[] = $vir;
$total[] = $sub + $vir;
}
2020-06-07 19:04:43 +03:00
return [
"total" => [
"x" => array_reverse(range(1, 7)),
"y" => $total,
"type" => "scatter",
"line" => [
"shape" => "spline",
"color" => "#597da3",
],
"name" => $unique ? tr("full_coverage") : tr("all_views"),
2020-06-07 19:04:43 +03:00
],
"subs" => [
"x" => array_reverse(range(1, 7)),
"y" => $subs,
"type" => "scatter",
"line" => [
"shape" => "spline",
"color" => "#b05c91",
],
"fill" => "tozeroy",
"name" => $unique ? tr("subs_coverage") : tr("subs_views"),
2020-06-07 19:04:43 +03:00
],
"viral" => [
"x" => array_reverse(range(1, 7)),
"y" => $viral,
"type" => "scatter",
"line" => [
"shape" => "spline",
"color" => "#4d9fab",
],
"fill" => "tozeroy",
"name" => $unique ? tr("viral_coverage") : tr("viral_views"),
2020-06-07 19:04:43 +03:00
],
];
}
public function getSubscriptionStatus(User $user): bool
2020-06-07 19:04:43 +03:00
{
$subbed = !is_null($this->getRecord()->related("subscriptions.target")->where([
"target" => $this->getId(),
"model" => static::class,
"follower" => $user->getId(),
])->fetch());
2020-06-07 19:04:43 +03:00
return $subbed && ($this->getOpennesStatus() === static::CLOSED ? $this->isSubscriptionAccepted($user) : true);
}
public function getFollowersQuery(string $sort = "follower ASC"): GroupedSelection
2020-06-07 19:04:43 +03:00
{
$query = $this->getRecord()->related("subscriptions.target");
if ($this->getOpennesStatus() === static::OPEN) {
$query = $query->where("model", "openvk\\Web\\Models\\Entities\\Club")->order($sort);
2020-06-07 19:04:43 +03:00
} else {
return false;
}
return $query->group("follower");
2020-06-07 19:04:43 +03:00
}
public function getFollowersCount(): int
2020-06-07 19:04:43 +03:00
{
return sizeof($this->getFollowersQuery());
}
public function getFollowers(int $page = 1, int $perPage = 6, string $sort = "follower ASC"): \Traversable
2020-06-07 19:04:43 +03:00
{
$rels = $this->getFollowersQuery($sort)->page($page, $perPage);
foreach ($rels as $rel) {
$rel = (new Users())->get($rel->follower);
if (!$rel) {
continue;
}
2020-06-07 19:04:43 +03:00
yield $rel;
}
}
Groups: Wall: add suggestions (#935) * Wall: add early suggestions * Fix br * Fix empty posts * fck * Add offset for api * Add notifications of new suggestion posts * Fix mentions in suggested posts * 🤮🤢 * Change regex Теперь оно удаляет все теги а не только <br> * Add da koroche pohuy * Эдд апи метходс Методы нестандартные немного * Pon * Add skloneniyia * newlines * int * Update loaders and add avtopodgruzka postov * Update JOERGK.strings * Blin * Remove repeated code, fix loaded buttons on chr... ...ome and fix getting suggested posts via API.Wall.getPost * Fix polls * Fihes Теперь уведомление о принятии поста не приходит, если вы приняли свой же пост Пофикшен баг перехода в предложку Добавлен старый вид постов в предложке Теперь счётчик постов в предложке у прикреплённой группы обновляется при принятии или отклонении поста Убрано всплывающее уведомление об отклонении поста (оно раздражает) Теперь если вы посмотрели все посты на одной странице (не на первой) и на ней не осталось постов, вас телепортирует на предыдущую страницу * Remove ability to delete your accepted psto * oi blin * Improvements 2 api * g * openvk.uk Возможно, приведение кода к кодстайлу (удаление скобочек то есть) * aiaks * al_wall.js -> al_suggestions.js * 👨‍💻 Add 👨‍💻 fading 👨‍💻 * Add "owner's posts' and "other's posts" Давайте рофлить👨‍💻👨‍💻👨‍💻 * planshet openvk Add tabs for post view, add signer's object in wall get and add person icon in microblog * Simplefai ze kod * PHP 8 FIX WATAFAK * Add indesk
2023-11-16 19:44:12 +03:00
public function getSuggestedPostsCount(User $user = null)
Groups: Wall: add suggestions (#935) * Wall: add early suggestions * Fix br * Fix empty posts * fck * Add offset for api * Add notifications of new suggestion posts * Fix mentions in suggested posts * 🤮🤢 * Change regex Теперь оно удаляет все теги а не только <br> * Add da koroche pohuy * Эдд апи метходс Методы нестандартные немного * Pon * Add skloneniyia * newlines * int * Update loaders and add avtopodgruzka postov * Update JOERGK.strings * Blin * Remove repeated code, fix loaded buttons on chr... ...ome and fix getting suggested posts via API.Wall.getPost * Fix polls * Fihes Теперь уведомление о принятии поста не приходит, если вы приняли свой же пост Пофикшен баг перехода в предложку Добавлен старый вид постов в предложке Теперь счётчик постов в предложке у прикреплённой группы обновляется при принятии или отклонении поста Убрано всплывающее уведомление об отклонении поста (оно раздражает) Теперь если вы посмотрели все посты на одной странице (не на первой) и на ней не осталось постов, вас телепортирует на предыдущую страницу * Remove ability to delete your accepted psto * oi blin * Improvements 2 api * g * openvk.uk Возможно, приведение кода к кодстайлу (удаление скобочек то есть) * aiaks * al_wall.js -> al_suggestions.js * 👨‍💻 Add 👨‍💻 fading 👨‍💻 * Add "owner's posts' and "other's posts" Давайте рофлить👨‍💻👨‍💻👨‍💻 * planshet openvk Add tabs for post view, add signer's object in wall get and add person icon in microblog * Simplefai ze kod * PHP 8 FIX WATAFAK * Add indesk
2023-11-16 19:44:12 +03:00
{
$count = 0;
if (is_null($user)) {
return null;
}
Groups: Wall: add suggestions (#935) * Wall: add early suggestions * Fix br * Fix empty posts * fck * Add offset for api * Add notifications of new suggestion posts * Fix mentions in suggested posts * 🤮🤢 * Change regex Теперь оно удаляет все теги а не только <br> * Add da koroche pohuy * Эдд апи метходс Методы нестандартные немного * Pon * Add skloneniyia * newlines * int * Update loaders and add avtopodgruzka postov * Update JOERGK.strings * Blin * Remove repeated code, fix loaded buttons on chr... ...ome and fix getting suggested posts via API.Wall.getPost * Fix polls * Fihes Теперь уведомление о принятии поста не приходит, если вы приняли свой же пост Пофикшен баг перехода в предложку Добавлен старый вид постов в предложке Теперь счётчик постов в предложке у прикреплённой группы обновляется при принятии или отклонении поста Убрано всплывающее уведомление об отклонении поста (оно раздражает) Теперь если вы посмотрели все посты на одной странице (не на первой) и на ней не осталось постов, вас телепортирует на предыдущую страницу * Remove ability to delete your accepted psto * oi blin * Improvements 2 api * g * openvk.uk Возможно, приведение кода к кодстайлу (удаление скобочек то есть) * aiaks * al_wall.js -> al_suggestions.js * 👨‍💻 Add 👨‍💻 fading 👨‍💻 * Add "owner's posts' and "other's posts" Давайте рофлить👨‍💻👨‍💻👨‍💻 * planshet openvk Add tabs for post view, add signer's object in wall get and add person icon in microblog * Simplefai ze kod * PHP 8 FIX WATAFAK * Add indesk
2023-11-16 19:44:12 +03:00
if ($this->canBeModifiedBy($user)) {
$count = (new Posts())->getSuggestedPostsCount($this->getId());
} else {
$count = (new Posts())->getSuggestedPostsCountByUser($this->getId(), $user->getId());
}
Groups: Wall: add suggestions (#935) * Wall: add early suggestions * Fix br * Fix empty posts * fck * Add offset for api * Add notifications of new suggestion posts * Fix mentions in suggested posts * 🤮🤢 * Change regex Теперь оно удаляет все теги а не только <br> * Add da koroche pohuy * Эдд апи метходс Методы нестандартные немного * Pon * Add skloneniyia * newlines * int * Update loaders and add avtopodgruzka postov * Update JOERGK.strings * Blin * Remove repeated code, fix loaded buttons on chr... ...ome and fix getting suggested posts via API.Wall.getPost * Fix polls * Fihes Теперь уведомление о принятии поста не приходит, если вы приняли свой же пост Пофикшен баг перехода в предложку Добавлен старый вид постов в предложке Теперь счётчик постов в предложке у прикреплённой группы обновляется при принятии или отклонении поста Убрано всплывающее уведомление об отклонении поста (оно раздражает) Теперь если вы посмотрели все посты на одной странице (не на первой) и на ней не осталось постов, вас телепортирует на предыдущую страницу * Remove ability to delete your accepted psto * oi blin * Improvements 2 api * g * openvk.uk Возможно, приведение кода к кодстайлу (удаление скобочек то есть) * aiaks * al_wall.js -> al_suggestions.js * 👨‍💻 Add 👨‍💻 fading 👨‍💻 * Add "owner's posts' and "other's posts" Давайте рофлить👨‍💻👨‍💻👨‍💻 * planshet openvk Add tabs for post view, add signer's object in wall get and add person icon in microblog * Simplefai ze kod * PHP 8 FIX WATAFAK * Add indesk
2023-11-16 19:44:12 +03:00
return $count;
}
public function getManagers(int $page = 1, bool $ignoreHidden = false): \Traversable
2020-06-07 19:04:43 +03:00
{
$rels = $this->getRecord()->related("group_coadmins.club")->page($page, 6);
if ($ignoreHidden) {
$rels = $rels->where("hidden", false);
}
foreach ($rels as $rel) {
$rel = (new Managers())->get($rel->id);
if (!$rel) {
continue;
}
2020-08-01 17:22:52 +03:00
yield $rel;
}
}
public function getManager(User $user, bool $ignoreHidden = false): ?Manager
2020-08-01 17:22:52 +03:00
{
$manager = (new Managers())->getByUserAndClub($user->getId(), $this->getId());
if ($ignoreHidden && $manager !== null && $manager->isHidden()) {
return null;
}
return $manager;
2020-06-07 19:04:43 +03:00
}
public function getManagersCount(bool $ignoreHidden = false): int
2020-06-07 19:04:43 +03:00
{
if ($ignoreHidden) {
return sizeof($this->getRecord()->related("group_coadmins.club")->where("hidden", false)) + (int) !$this->isOwnerHidden();
}
2020-06-07 19:04:43 +03:00
return sizeof($this->getRecord()->related("group_coadmins.club")) + 1;
}
public function addManager(User $user, ?string $comment = null): void
2020-06-07 19:04:43 +03:00
{
DB::i()->getContext()->table("group_coadmins")->insert([
"club" => $this->getId(),
"user" => $user->getId(),
"comment" => $comment,
]);
}
public function removeManager(User $user): void
2020-06-07 19:04:43 +03:00
{
DB::i()->getContext()->table("group_coadmins")->where([
"club" => $this->getId(),
"user" => $user->getId(),
])->delete();
}
public function canBeModifiedBy(User $user): bool
2020-06-07 19:04:43 +03:00
{
$id = $user->getId();
if ($this->getOwner()->getId() === $id) {
2020-06-07 19:04:43 +03:00
return true;
}
2020-06-07 19:04:43 +03:00
return !is_null($this->getRecord()->related("group_coadmins.club")->where("user", $id)->fetch());
}
2021-11-13 15:21:46 +03:00
public function getWebsite(): ?string
{
return $this->getRecord()->website;
}
public function ban(string $reason): void
{
$this->setBlock_Reason($reason);
$this->save();
}
public function unban(): void
{
$this->setBlock_Reason(null);
$this->save();
}
2022-04-14 13:29:07 +03:00
public function canBeViewedBy(?User $user = null)
2023-12-02 20:21:16 +03:00
{
return is_null($this->getBanReason());
}
public function getAlert(): ?string
2022-04-14 13:29:07 +03:00
{
return $this->getRecord()->alert;
}
Music, finally! (#512) * Add audio upload feature * Add audio embed thing * Move bullet.gif to ovk * Draft some music API methods * Add support for base64 ids to Audios.getById * Disallow having more than 65k audios in playlist * Add playlist model * Draft some playlist-related API methods * Fix behabiour of album-related methods Generators f***** me in le a** * Add IDv3 autofill * Add sql dumps i forgor to upload it xdddd * Add playlists sql * Fix audio upload not working on Windows 11 because Windows is the worst operating system which doesn't work properly under any circumstances * Fix cocksex in audio.get yes * Интерфейсы * Interface updade * Update en.strings * Add audio queue * Make repeat button work * Some improvements to audio queue * Фгвшщ йгугу шьзкщмуьутеы * Make shuffle and "наушники" buttons work, add f... avicons when playing audio, save some values (like volume and last played track) to localstorage, add ability to toggle time type in player, fix uploading audios with cover (maybe) and add dragndrop to upload page * Add funny tip with time when hover track div * Add something * Add audios picker & move track in smal player вниз * Summary (required) Description * [WIP] Add calls, stories and clips. Изменены фавиконки (поменьше стали) У миниплеера ползунок теперь в стиле bsdn и большого плеера, добавлен ползунок громкости Добавлена кнопка добавления аудио в группу (у миниплеера) Если вы смотрите аудио группы, которой можете управлять, появляется кнопка "удалить аудио из группы" Снизу плейлиста в списке теперь показывается автор. При прикреплении аудиозаписей к посту теперь есть поиск "по композиции" и "по исполнителю" Добавил explicit.svg, который я забыл добавить в предыдущем коммите. Вкладочки немного переделаны При наведении на кнопки "трек вперёд" или "трек назад" показывается название предыдущего или следующего трека соответственно * 1 new commit to master: [WIP]: Add audios - Теперь группа может разрешать загружать всем треки в неё - Теперь треки загружаются на сервер ajax'ом, и так можно очень много аудио загружать - Вёрстка списка плейлистов изменена, теперь она на гридах - Немного изменено апи, теперь метод editAlbum сохраняет новую информацию ee объект плейлистов теперь возвращают реальное время - Удалены лишние пути из routes.yml - При переключении страниц теперь если на текущей странице есть играющий трек, он нормально подсвечивается - Из init-db.sql удалены таблицы аудиозаписей - В Groups.getSettings и groups.edit теперь есть информация о аудиозаписях * (смешное название коммита) - Теперь на странице пользователя/группы показываются три случайные песни, а не первые три как раньше - Теперь пробел на странице аудио не перемещает вас в низ страницы - Оптимизирован мини-плеер, теперь он инициализируется при любом нажатии на него, а не при наведении - Теперь при завершении проигрывания трека в мини-плеере он ищет другой трек рядом, и если находит то воспроизводит. Будет удобно для постов с подборками треков - Поиск теперь показывает 14 результатов - Теперь при возникновении ошибки загрузки аудио она нормально отображается - Вместе с плеером на странице с аудиозаписями теперь двигаются и вкладки - Добавление аудио в группу по идее должно нормально работать * Implement playlists listens - У плейлистов теперь есть прослушивания в общем. - Прослушивания у большого плеера теперь засчитываются, если трек был дослушан до конца - В объекте плейлистов теперь возвращается listens и cover_url - Получение плееров через /audios/context переписано, повторяющийся код удалён, правда сильно количество строк сократить не получилось - Теперь цвета плеера темнее, а иконка проигрывания изменена - Теперь, если очередь из треков кончилась, то плеер перенаправляет вас в начало очереди. * php 8.2 fixxxxxxxxxxxxxxxxxxxxxxx * Implement audiostatuses Добавлены аудиостатусы (у пользователей), блок с друзьями, слушающих музыку на странице аудиозаписей, объект status_audio в users.get, улучшены настройки приватности и ещё что-то * ? - Переделан метод в классе user для получения друзей с проигрываемыми песнями. Теперь среди них могут появляться и группы (хз стоит ли оставлять это или нет). Так же больше не показываются удалённые пользователи - Трек у плеера теперь двигается немного плавнее. Ещё теперь нету смешных багов с подсказкой времени, когда можно было увести её за экран или промотать дальше трека. Переключить повторение трека теперь можно нажатием кнопки R. - Длинное название трека больше не сносит время - Наверное, теперь аудиозаписи нормально отображаются в темах midnight и modern - Аудиозаписи больше не крашаются, если пользователь неавторизован. - Немного переделан миниплеер. - В миниплеере теперь громкость берётся из локалсторейджа. - Улучшено редактирование аудиозаписей. Теперь данные в дата атрибуты нормально сохраняются, а так же слова песни и метка "explicit" меняются - Удалён css, оставшийся ещё от public technical preview 1, а так же путь /audios{num} - При наведении на трек теперь пропадает время, и на его месте появляются кнопки - Стандартная аватарка в midnight теперь инвертируется - В админке в редактировании аудио теперь показывается дата редактирования, дата создания, длина и оригинальный файл аудио. Так же на странице редактирования больше нет вылетов, если вы задали несуществующий аккаунт * ! - Добавлены строки для мобильной темы - Добавлено предупреждение перед полным удалением плейлиста - Нажатие кнопки M = нажатие кнопки наушников - В классе апи Audio поставлены willExecuteWriteAction, ещё теперь нельзя получить число аудиозаписей у пользователей, которые их закрыли. Ещё теперь нельзя получать uploaded_only аудиозаписи у тех ну вы поняли короче. - При наведении на длинное название песни оно теперь показывается полностью - Надо ещё что-то сюда написать, так что: При редактировании аудиозаписи название окна теперь не "Редактировать", а "Редактировать аудиозапись", а вместо кнопки OK кнопка "Сохранить" * . - Добавлен тур по аудиозаписям, но пока без скриншотов. - "Мои Аудиозаписи" в меню теперь располагаются под Моими Видеозаписями для канона - В настройках приватности "кто может видеть мои аудиозаписи" теперь располагаются под "кто может видеть мои видеозаписи" - В настройках внешнего вида мои аудиозаписи тоже под видео - Изменён <title> на странице аудиозаписей. Теперь показывается "Аудиозаписи" + имя пользователя в родительном падеже. А если это группа, то "Аудиозаписи группы". То же самое с плейлистами - Исправлены ссылка в ссылке на странице с плейлистами - При наведении на название песни больше не сносится иконка explicit - Добавлена максимальная длина названия и описания плейлиста при редактировании. * М - Долокализована админка (точно помню, что уже делал это, но ладно) - Удалён лишний пункт "audios" в getLeftMenuItemStatus (реально) - Если. У плеера есть параметр "hideButtons", то при наведении на него не пропадает время. - На странице редактирования/создания плейлиста если у песни длинное название, то оно да похуй короче. Ну в общем лучше стало - Там где нужно, добавлена строка в конце файла - Возвращена строка "photo" в английской локали (я её случайно удалил :+1: ) * у - У изъятых аудиозаписей больше не показывается кнопка "добавить в группу". Так же при нажатии на кнопку удаления из коллекции окно не всплывает. - "Удаление аудио из группы" тоже лучше работать стало с изъятыми аудио. * з - В пикере аудиозаписей "more..." заменено на "показать больше аудиозаписей" - Если включен режим показа оставшегося времени, то при окончании песни больше не показывается "--1:--1" - В пикере аудиозаписей, если у вас нет аудиозаписей и вы ничего не искали, показывается "Вы ещё не добавляли аудиозаписей" - <hr>'ы стали серыми - Добавлены title'ы у кнопок в большом плеере - Проставлены alt'ы у плейлистов * Musique: linux saport) назар хуйню релизнул кста, плейерс клаб два не слушайте не рекомендую * Update and rename gamma-00000-disco.sql to 00041-music.sql * Update 00041-music.sql --------- Co-authored-by: Ilya Prokopenko <dsrev@protonmail.com> Co-authored-by: n1rwana <aydashkin@vk.com> Co-authored-by: lalka2018 <99399973+lalka2016@users.noreply.github.com> Co-authored-by: veselcraft <veselcraft@icloud.com> Co-authored-by: DeathPleiad <43928323+Parad1seF0x@users.noreply.github.com>
2023-11-12 00:41:07 +03:00
public function getRealId(): int
Music, finally! (#512) * Add audio upload feature * Add audio embed thing * Move bullet.gif to ovk * Draft some music API methods * Add support for base64 ids to Audios.getById * Disallow having more than 65k audios in playlist * Add playlist model * Draft some playlist-related API methods * Fix behabiour of album-related methods Generators f***** me in le a** * Add IDv3 autofill * Add sql dumps i forgor to upload it xdddd * Add playlists sql * Fix audio upload not working on Windows 11 because Windows is the worst operating system which doesn't work properly under any circumstances * Fix cocksex in audio.get yes * Интерфейсы * Interface updade * Update en.strings * Add audio queue * Make repeat button work * Some improvements to audio queue * Фгвшщ йгугу шьзкщмуьутеы * Make shuffle and "наушники" buttons work, add f... avicons when playing audio, save some values (like volume and last played track) to localstorage, add ability to toggle time type in player, fix uploading audios with cover (maybe) and add dragndrop to upload page * Add funny tip with time when hover track div * Add something * Add audios picker & move track in smal player вниз * Summary (required) Description * [WIP] Add calls, stories and clips. Изменены фавиконки (поменьше стали) У миниплеера ползунок теперь в стиле bsdn и большого плеера, добавлен ползунок громкости Добавлена кнопка добавления аудио в группу (у миниплеера) Если вы смотрите аудио группы, которой можете управлять, появляется кнопка "удалить аудио из группы" Снизу плейлиста в списке теперь показывается автор. При прикреплении аудиозаписей к посту теперь есть поиск "по композиции" и "по исполнителю" Добавил explicit.svg, который я забыл добавить в предыдущем коммите. Вкладочки немного переделаны При наведении на кнопки "трек вперёд" или "трек назад" показывается название предыдущего или следующего трека соответственно * 1 new commit to master: [WIP]: Add audios - Теперь группа может разрешать загружать всем треки в неё - Теперь треки загружаются на сервер ajax'ом, и так можно очень много аудио загружать - Вёрстка списка плейлистов изменена, теперь она на гридах - Немного изменено апи, теперь метод editAlbum сохраняет новую информацию ee объект плейлистов теперь возвращают реальное время - Удалены лишние пути из routes.yml - При переключении страниц теперь если на текущей странице есть играющий трек, он нормально подсвечивается - Из init-db.sql удалены таблицы аудиозаписей - В Groups.getSettings и groups.edit теперь есть информация о аудиозаписях * (смешное название коммита) - Теперь на странице пользователя/группы показываются три случайные песни, а не первые три как раньше - Теперь пробел на странице аудио не перемещает вас в низ страницы - Оптимизирован мини-плеер, теперь он инициализируется при любом нажатии на него, а не при наведении - Теперь при завершении проигрывания трека в мини-плеере он ищет другой трек рядом, и если находит то воспроизводит. Будет удобно для постов с подборками треков - Поиск теперь показывает 14 результатов - Теперь при возникновении ошибки загрузки аудио она нормально отображается - Вместе с плеером на странице с аудиозаписями теперь двигаются и вкладки - Добавление аудио в группу по идее должно нормально работать * Implement playlists listens - У плейлистов теперь есть прослушивания в общем. - Прослушивания у большого плеера теперь засчитываются, если трек был дослушан до конца - В объекте плейлистов теперь возвращается listens и cover_url - Получение плееров через /audios/context переписано, повторяющийся код удалён, правда сильно количество строк сократить не получилось - Теперь цвета плеера темнее, а иконка проигрывания изменена - Теперь, если очередь из треков кончилась, то плеер перенаправляет вас в начало очереди. * php 8.2 fixxxxxxxxxxxxxxxxxxxxxxx * Implement audiostatuses Добавлены аудиостатусы (у пользователей), блок с друзьями, слушающих музыку на странице аудиозаписей, объект status_audio в users.get, улучшены настройки приватности и ещё что-то * ? - Переделан метод в классе user для получения друзей с проигрываемыми песнями. Теперь среди них могут появляться и группы (хз стоит ли оставлять это или нет). Так же больше не показываются удалённые пользователи - Трек у плеера теперь двигается немного плавнее. Ещё теперь нету смешных багов с подсказкой времени, когда можно было увести её за экран или промотать дальше трека. Переключить повторение трека теперь можно нажатием кнопки R. - Длинное название трека больше не сносит время - Наверное, теперь аудиозаписи нормально отображаются в темах midnight и modern - Аудиозаписи больше не крашаются, если пользователь неавторизован. - Немного переделан миниплеер. - В миниплеере теперь громкость берётся из локалсторейджа. - Улучшено редактирование аудиозаписей. Теперь данные в дата атрибуты нормально сохраняются, а так же слова песни и метка "explicit" меняются - Удалён css, оставшийся ещё от public technical preview 1, а так же путь /audios{num} - При наведении на трек теперь пропадает время, и на его месте появляются кнопки - Стандартная аватарка в midnight теперь инвертируется - В админке в редактировании аудио теперь показывается дата редактирования, дата создания, длина и оригинальный файл аудио. Так же на странице редактирования больше нет вылетов, если вы задали несуществующий аккаунт * ! - Добавлены строки для мобильной темы - Добавлено предупреждение перед полным удалением плейлиста - Нажатие кнопки M = нажатие кнопки наушников - В классе апи Audio поставлены willExecuteWriteAction, ещё теперь нельзя получить число аудиозаписей у пользователей, которые их закрыли. Ещё теперь нельзя получать uploaded_only аудиозаписи у тех ну вы поняли короче. - При наведении на длинное название песни оно теперь показывается полностью - Надо ещё что-то сюда написать, так что: При редактировании аудиозаписи название окна теперь не "Редактировать", а "Редактировать аудиозапись", а вместо кнопки OK кнопка "Сохранить" * . - Добавлен тур по аудиозаписям, но пока без скриншотов. - "Мои Аудиозаписи" в меню теперь располагаются под Моими Видеозаписями для канона - В настройках приватности "кто может видеть мои аудиозаписи" теперь располагаются под "кто может видеть мои видеозаписи" - В настройках внешнего вида мои аудиозаписи тоже под видео - Изменён <title> на странице аудиозаписей. Теперь показывается "Аудиозаписи" + имя пользователя в родительном падеже. А если это группа, то "Аудиозаписи группы". То же самое с плейлистами - Исправлены ссылка в ссылке на странице с плейлистами - При наведении на название песни больше не сносится иконка explicit - Добавлена максимальная длина названия и описания плейлиста при редактировании. * М - Долокализована админка (точно помню, что уже делал это, но ладно) - Удалён лишний пункт "audios" в getLeftMenuItemStatus (реально) - Если. У плеера есть параметр "hideButtons", то при наведении на него не пропадает время. - На странице редактирования/создания плейлиста если у песни длинное название, то оно да похуй короче. Ну в общем лучше стало - Там где нужно, добавлена строка в конце файла - Возвращена строка "photo" в английской локали (я её случайно удалил :+1: ) * у - У изъятых аудиозаписей больше не показывается кнопка "добавить в группу". Так же при нажатии на кнопку удаления из коллекции окно не всплывает. - "Удаление аудио из группы" тоже лучше работать стало с изъятыми аудио. * з - В пикере аудиозаписей "more..." заменено на "показать больше аудиозаписей" - Если включен режим показа оставшегося времени, то при окончании песни больше не показывается "--1:--1" - В пикере аудиозаписей, если у вас нет аудиозаписей и вы ничего не искали, показывается "Вы ещё не добавляли аудиозаписей" - <hr>'ы стали серыми - Добавлены title'ы у кнопок в большом плеере - Проставлены alt'ы у плейлистов * Musique: linux saport) назар хуйню релизнул кста, плейерс клаб два не слушайте не рекомендую * Update and rename gamma-00000-disco.sql to 00041-music.sql * Update 00041-music.sql --------- Co-authored-by: Ilya Prokopenko <dsrev@protonmail.com> Co-authored-by: n1rwana <aydashkin@vk.com> Co-authored-by: lalka2018 <99399973+lalka2016@users.noreply.github.com> Co-authored-by: veselcraft <veselcraft@icloud.com> Co-authored-by: DeathPleiad <43928323+Parad1seF0x@users.noreply.github.com>
2023-11-12 00:41:07 +03:00
{
return $this->getId() * -1;
}
public function isEveryoneCanUploadAudios(): bool
Music, finally! (#512) * Add audio upload feature * Add audio embed thing * Move bullet.gif to ovk * Draft some music API methods * Add support for base64 ids to Audios.getById * Disallow having more than 65k audios in playlist * Add playlist model * Draft some playlist-related API methods * Fix behabiour of album-related methods Generators f***** me in le a** * Add IDv3 autofill * Add sql dumps i forgor to upload it xdddd * Add playlists sql * Fix audio upload not working on Windows 11 because Windows is the worst operating system which doesn't work properly under any circumstances * Fix cocksex in audio.get yes * Интерфейсы * Interface updade * Update en.strings * Add audio queue * Make repeat button work * Some improvements to audio queue * Фгвшщ йгугу шьзкщмуьутеы * Make shuffle and "наушники" buttons work, add f... avicons when playing audio, save some values (like volume and last played track) to localstorage, add ability to toggle time type in player, fix uploading audios with cover (maybe) and add dragndrop to upload page * Add funny tip with time when hover track div * Add something * Add audios picker & move track in smal player вниз * Summary (required) Description * [WIP] Add calls, stories and clips. Изменены фавиконки (поменьше стали) У миниплеера ползунок теперь в стиле bsdn и большого плеера, добавлен ползунок громкости Добавлена кнопка добавления аудио в группу (у миниплеера) Если вы смотрите аудио группы, которой можете управлять, появляется кнопка "удалить аудио из группы" Снизу плейлиста в списке теперь показывается автор. При прикреплении аудиозаписей к посту теперь есть поиск "по композиции" и "по исполнителю" Добавил explicit.svg, который я забыл добавить в предыдущем коммите. Вкладочки немного переделаны При наведении на кнопки "трек вперёд" или "трек назад" показывается название предыдущего или следующего трека соответственно * 1 new commit to master: [WIP]: Add audios - Теперь группа может разрешать загружать всем треки в неё - Теперь треки загружаются на сервер ajax'ом, и так можно очень много аудио загружать - Вёрстка списка плейлистов изменена, теперь она на гридах - Немного изменено апи, теперь метод editAlbum сохраняет новую информацию ee объект плейлистов теперь возвращают реальное время - Удалены лишние пути из routes.yml - При переключении страниц теперь если на текущей странице есть играющий трек, он нормально подсвечивается - Из init-db.sql удалены таблицы аудиозаписей - В Groups.getSettings и groups.edit теперь есть информация о аудиозаписях * (смешное название коммита) - Теперь на странице пользователя/группы показываются три случайные песни, а не первые три как раньше - Теперь пробел на странице аудио не перемещает вас в низ страницы - Оптимизирован мини-плеер, теперь он инициализируется при любом нажатии на него, а не при наведении - Теперь при завершении проигрывания трека в мини-плеере он ищет другой трек рядом, и если находит то воспроизводит. Будет удобно для постов с подборками треков - Поиск теперь показывает 14 результатов - Теперь при возникновении ошибки загрузки аудио она нормально отображается - Вместе с плеером на странице с аудиозаписями теперь двигаются и вкладки - Добавление аудио в группу по идее должно нормально работать * Implement playlists listens - У плейлистов теперь есть прослушивания в общем. - Прослушивания у большого плеера теперь засчитываются, если трек был дослушан до конца - В объекте плейлистов теперь возвращается listens и cover_url - Получение плееров через /audios/context переписано, повторяющийся код удалён, правда сильно количество строк сократить не получилось - Теперь цвета плеера темнее, а иконка проигрывания изменена - Теперь, если очередь из треков кончилась, то плеер перенаправляет вас в начало очереди. * php 8.2 fixxxxxxxxxxxxxxxxxxxxxxx * Implement audiostatuses Добавлены аудиостатусы (у пользователей), блок с друзьями, слушающих музыку на странице аудиозаписей, объект status_audio в users.get, улучшены настройки приватности и ещё что-то * ? - Переделан метод в классе user для получения друзей с проигрываемыми песнями. Теперь среди них могут появляться и группы (хз стоит ли оставлять это или нет). Так же больше не показываются удалённые пользователи - Трек у плеера теперь двигается немного плавнее. Ещё теперь нету смешных багов с подсказкой времени, когда можно было увести её за экран или промотать дальше трека. Переключить повторение трека теперь можно нажатием кнопки R. - Длинное название трека больше не сносит время - Наверное, теперь аудиозаписи нормально отображаются в темах midnight и modern - Аудиозаписи больше не крашаются, если пользователь неавторизован. - Немного переделан миниплеер. - В миниплеере теперь громкость берётся из локалсторейджа. - Улучшено редактирование аудиозаписей. Теперь данные в дата атрибуты нормально сохраняются, а так же слова песни и метка "explicit" меняются - Удалён css, оставшийся ещё от public technical preview 1, а так же путь /audios{num} - При наведении на трек теперь пропадает время, и на его месте появляются кнопки - Стандартная аватарка в midnight теперь инвертируется - В админке в редактировании аудио теперь показывается дата редактирования, дата создания, длина и оригинальный файл аудио. Так же на странице редактирования больше нет вылетов, если вы задали несуществующий аккаунт * ! - Добавлены строки для мобильной темы - Добавлено предупреждение перед полным удалением плейлиста - Нажатие кнопки M = нажатие кнопки наушников - В классе апи Audio поставлены willExecuteWriteAction, ещё теперь нельзя получить число аудиозаписей у пользователей, которые их закрыли. Ещё теперь нельзя получать uploaded_only аудиозаписи у тех ну вы поняли короче. - При наведении на длинное название песни оно теперь показывается полностью - Надо ещё что-то сюда написать, так что: При редактировании аудиозаписи название окна теперь не "Редактировать", а "Редактировать аудиозапись", а вместо кнопки OK кнопка "Сохранить" * . - Добавлен тур по аудиозаписям, но пока без скриншотов. - "Мои Аудиозаписи" в меню теперь располагаются под Моими Видеозаписями для канона - В настройках приватности "кто может видеть мои аудиозаписи" теперь располагаются под "кто может видеть мои видеозаписи" - В настройках внешнего вида мои аудиозаписи тоже под видео - Изменён <title> на странице аудиозаписей. Теперь показывается "Аудиозаписи" + имя пользователя в родительном падеже. А если это группа, то "Аудиозаписи группы". То же самое с плейлистами - Исправлены ссылка в ссылке на странице с плейлистами - При наведении на название песни больше не сносится иконка explicit - Добавлена максимальная длина названия и описания плейлиста при редактировании. * М - Долокализована админка (точно помню, что уже делал это, но ладно) - Удалён лишний пункт "audios" в getLeftMenuItemStatus (реально) - Если. У плеера есть параметр "hideButtons", то при наведении на него не пропадает время. - На странице редактирования/создания плейлиста если у песни длинное название, то оно да похуй короче. Ну в общем лучше стало - Там где нужно, добавлена строка в конце файла - Возвращена строка "photo" в английской локали (я её случайно удалил :+1: ) * у - У изъятых аудиозаписей больше не показывается кнопка "добавить в группу". Так же при нажатии на кнопку удаления из коллекции окно не всплывает. - "Удаление аудио из группы" тоже лучше работать стало с изъятыми аудио. * з - В пикере аудиозаписей "more..." заменено на "показать больше аудиозаписей" - Если включен режим показа оставшегося времени, то при окончании песни больше не показывается "--1:--1" - В пикере аудиозаписей, если у вас нет аудиозаписей и вы ничего не искали, показывается "Вы ещё не добавляли аудиозаписей" - <hr>'ы стали серыми - Добавлены title'ы у кнопок в большом плеере - Проставлены alt'ы у плейлистов * Musique: linux saport) назар хуйню релизнул кста, плейерс клаб два не слушайте не рекомендую * Update and rename gamma-00000-disco.sql to 00041-music.sql * Update 00041-music.sql --------- Co-authored-by: Ilya Prokopenko <dsrev@protonmail.com> Co-authored-by: n1rwana <aydashkin@vk.com> Co-authored-by: lalka2018 <99399973+lalka2016@users.noreply.github.com> Co-authored-by: veselcraft <veselcraft@icloud.com> Co-authored-by: DeathPleiad <43928323+Parad1seF0x@users.noreply.github.com>
2023-11-12 00:41:07 +03:00
{
return (bool) $this->getRecord()->everyone_can_upload_audios;
}
public function canUploadAudio(?User $user): bool
Music, finally! (#512) * Add audio upload feature * Add audio embed thing * Move bullet.gif to ovk * Draft some music API methods * Add support for base64 ids to Audios.getById * Disallow having more than 65k audios in playlist * Add playlist model * Draft some playlist-related API methods * Fix behabiour of album-related methods Generators f***** me in le a** * Add IDv3 autofill * Add sql dumps i forgor to upload it xdddd * Add playlists sql * Fix audio upload not working on Windows 11 because Windows is the worst operating system which doesn't work properly under any circumstances * Fix cocksex in audio.get yes * Интерфейсы * Interface updade * Update en.strings * Add audio queue * Make repeat button work * Some improvements to audio queue * Фгвшщ йгугу шьзкщмуьутеы * Make shuffle and "наушники" buttons work, add f... avicons when playing audio, save some values (like volume and last played track) to localstorage, add ability to toggle time type in player, fix uploading audios with cover (maybe) and add dragndrop to upload page * Add funny tip with time when hover track div * Add something * Add audios picker & move track in smal player вниз * Summary (required) Description * [WIP] Add calls, stories and clips. Изменены фавиконки (поменьше стали) У миниплеера ползунок теперь в стиле bsdn и большого плеера, добавлен ползунок громкости Добавлена кнопка добавления аудио в группу (у миниплеера) Если вы смотрите аудио группы, которой можете управлять, появляется кнопка "удалить аудио из группы" Снизу плейлиста в списке теперь показывается автор. При прикреплении аудиозаписей к посту теперь есть поиск "по композиции" и "по исполнителю" Добавил explicit.svg, который я забыл добавить в предыдущем коммите. Вкладочки немного переделаны При наведении на кнопки "трек вперёд" или "трек назад" показывается название предыдущего или следующего трека соответственно * 1 new commit to master: [WIP]: Add audios - Теперь группа может разрешать загружать всем треки в неё - Теперь треки загружаются на сервер ajax'ом, и так можно очень много аудио загружать - Вёрстка списка плейлистов изменена, теперь она на гридах - Немного изменено апи, теперь метод editAlbum сохраняет новую информацию ee объект плейлистов теперь возвращают реальное время - Удалены лишние пути из routes.yml - При переключении страниц теперь если на текущей странице есть играющий трек, он нормально подсвечивается - Из init-db.sql удалены таблицы аудиозаписей - В Groups.getSettings и groups.edit теперь есть информация о аудиозаписях * (смешное название коммита) - Теперь на странице пользователя/группы показываются три случайные песни, а не первые три как раньше - Теперь пробел на странице аудио не перемещает вас в низ страницы - Оптимизирован мини-плеер, теперь он инициализируется при любом нажатии на него, а не при наведении - Теперь при завершении проигрывания трека в мини-плеере он ищет другой трек рядом, и если находит то воспроизводит. Будет удобно для постов с подборками треков - Поиск теперь показывает 14 результатов - Теперь при возникновении ошибки загрузки аудио она нормально отображается - Вместе с плеером на странице с аудиозаписями теперь двигаются и вкладки - Добавление аудио в группу по идее должно нормально работать * Implement playlists listens - У плейлистов теперь есть прослушивания в общем. - Прослушивания у большого плеера теперь засчитываются, если трек был дослушан до конца - В объекте плейлистов теперь возвращается listens и cover_url - Получение плееров через /audios/context переписано, повторяющийся код удалён, правда сильно количество строк сократить не получилось - Теперь цвета плеера темнее, а иконка проигрывания изменена - Теперь, если очередь из треков кончилась, то плеер перенаправляет вас в начало очереди. * php 8.2 fixxxxxxxxxxxxxxxxxxxxxxx * Implement audiostatuses Добавлены аудиостатусы (у пользователей), блок с друзьями, слушающих музыку на странице аудиозаписей, объект status_audio в users.get, улучшены настройки приватности и ещё что-то * ? - Переделан метод в классе user для получения друзей с проигрываемыми песнями. Теперь среди них могут появляться и группы (хз стоит ли оставлять это или нет). Так же больше не показываются удалённые пользователи - Трек у плеера теперь двигается немного плавнее. Ещё теперь нету смешных багов с подсказкой времени, когда можно было увести её за экран или промотать дальше трека. Переключить повторение трека теперь можно нажатием кнопки R. - Длинное название трека больше не сносит время - Наверное, теперь аудиозаписи нормально отображаются в темах midnight и modern - Аудиозаписи больше не крашаются, если пользователь неавторизован. - Немного переделан миниплеер. - В миниплеере теперь громкость берётся из локалсторейджа. - Улучшено редактирование аудиозаписей. Теперь данные в дата атрибуты нормально сохраняются, а так же слова песни и метка "explicit" меняются - Удалён css, оставшийся ещё от public technical preview 1, а так же путь /audios{num} - При наведении на трек теперь пропадает время, и на его месте появляются кнопки - Стандартная аватарка в midnight теперь инвертируется - В админке в редактировании аудио теперь показывается дата редактирования, дата создания, длина и оригинальный файл аудио. Так же на странице редактирования больше нет вылетов, если вы задали несуществующий аккаунт * ! - Добавлены строки для мобильной темы - Добавлено предупреждение перед полным удалением плейлиста - Нажатие кнопки M = нажатие кнопки наушников - В классе апи Audio поставлены willExecuteWriteAction, ещё теперь нельзя получить число аудиозаписей у пользователей, которые их закрыли. Ещё теперь нельзя получать uploaded_only аудиозаписи у тех ну вы поняли короче. - При наведении на длинное название песни оно теперь показывается полностью - Надо ещё что-то сюда написать, так что: При редактировании аудиозаписи название окна теперь не "Редактировать", а "Редактировать аудиозапись", а вместо кнопки OK кнопка "Сохранить" * . - Добавлен тур по аудиозаписям, но пока без скриншотов. - "Мои Аудиозаписи" в меню теперь располагаются под Моими Видеозаписями для канона - В настройках приватности "кто может видеть мои аудиозаписи" теперь располагаются под "кто может видеть мои видеозаписи" - В настройках внешнего вида мои аудиозаписи тоже под видео - Изменён <title> на странице аудиозаписей. Теперь показывается "Аудиозаписи" + имя пользователя в родительном падеже. А если это группа, то "Аудиозаписи группы". То же самое с плейлистами - Исправлены ссылка в ссылке на странице с плейлистами - При наведении на название песни больше не сносится иконка explicit - Добавлена максимальная длина названия и описания плейлиста при редактировании. * М - Долокализована админка (точно помню, что уже делал это, но ладно) - Удалён лишний пункт "audios" в getLeftMenuItemStatus (реально) - Если. У плеера есть параметр "hideButtons", то при наведении на него не пропадает время. - На странице редактирования/создания плейлиста если у песни длинное название, то оно да похуй короче. Ну в общем лучше стало - Там где нужно, добавлена строка в конце файла - Возвращена строка "photo" в английской локали (я её случайно удалил :+1: ) * у - У изъятых аудиозаписей больше не показывается кнопка "добавить в группу". Так же при нажатии на кнопку удаления из коллекции окно не всплывает. - "Удаление аудио из группы" тоже лучше работать стало с изъятыми аудио. * з - В пикере аудиозаписей "more..." заменено на "показать больше аудиозаписей" - Если включен режим показа оставшегося времени, то при окончании песни больше не показывается "--1:--1" - В пикере аудиозаписей, если у вас нет аудиозаписей и вы ничего не искали, показывается "Вы ещё не добавляли аудиозаписей" - <hr>'ы стали серыми - Добавлены title'ы у кнопок в большом плеере - Проставлены alt'ы у плейлистов * Musique: linux saport) назар хуйню релизнул кста, плейерс клаб два не слушайте не рекомендую * Update and rename gamma-00000-disco.sql to 00041-music.sql * Update 00041-music.sql --------- Co-authored-by: Ilya Prokopenko <dsrev@protonmail.com> Co-authored-by: n1rwana <aydashkin@vk.com> Co-authored-by: lalka2018 <99399973+lalka2016@users.noreply.github.com> Co-authored-by: veselcraft <veselcraft@icloud.com> Co-authored-by: DeathPleiad <43928323+Parad1seF0x@users.noreply.github.com>
2023-11-12 00:41:07 +03:00
{
if (!$user) {
return null;
}
Music, finally! (#512) * Add audio upload feature * Add audio embed thing * Move bullet.gif to ovk * Draft some music API methods * Add support for base64 ids to Audios.getById * Disallow having more than 65k audios in playlist * Add playlist model * Draft some playlist-related API methods * Fix behabiour of album-related methods Generators f***** me in le a** * Add IDv3 autofill * Add sql dumps i forgor to upload it xdddd * Add playlists sql * Fix audio upload not working on Windows 11 because Windows is the worst operating system which doesn't work properly under any circumstances * Fix cocksex in audio.get yes * Интерфейсы * Interface updade * Update en.strings * Add audio queue * Make repeat button work * Some improvements to audio queue * Фгвшщ йгугу шьзкщмуьутеы * Make shuffle and "наушники" buttons work, add f... avicons when playing audio, save some values (like volume and last played track) to localstorage, add ability to toggle time type in player, fix uploading audios with cover (maybe) and add dragndrop to upload page * Add funny tip with time when hover track div * Add something * Add audios picker & move track in smal player вниз * Summary (required) Description * [WIP] Add calls, stories and clips. Изменены фавиконки (поменьше стали) У миниплеера ползунок теперь в стиле bsdn и большого плеера, добавлен ползунок громкости Добавлена кнопка добавления аудио в группу (у миниплеера) Если вы смотрите аудио группы, которой можете управлять, появляется кнопка "удалить аудио из группы" Снизу плейлиста в списке теперь показывается автор. При прикреплении аудиозаписей к посту теперь есть поиск "по композиции" и "по исполнителю" Добавил explicit.svg, который я забыл добавить в предыдущем коммите. Вкладочки немного переделаны При наведении на кнопки "трек вперёд" или "трек назад" показывается название предыдущего или следующего трека соответственно * 1 new commit to master: [WIP]: Add audios - Теперь группа может разрешать загружать всем треки в неё - Теперь треки загружаются на сервер ajax'ом, и так можно очень много аудио загружать - Вёрстка списка плейлистов изменена, теперь она на гридах - Немного изменено апи, теперь метод editAlbum сохраняет новую информацию ee объект плейлистов теперь возвращают реальное время - Удалены лишние пути из routes.yml - При переключении страниц теперь если на текущей странице есть играющий трек, он нормально подсвечивается - Из init-db.sql удалены таблицы аудиозаписей - В Groups.getSettings и groups.edit теперь есть информация о аудиозаписях * (смешное название коммита) - Теперь на странице пользователя/группы показываются три случайные песни, а не первые три как раньше - Теперь пробел на странице аудио не перемещает вас в низ страницы - Оптимизирован мини-плеер, теперь он инициализируется при любом нажатии на него, а не при наведении - Теперь при завершении проигрывания трека в мини-плеере он ищет другой трек рядом, и если находит то воспроизводит. Будет удобно для постов с подборками треков - Поиск теперь показывает 14 результатов - Теперь при возникновении ошибки загрузки аудио она нормально отображается - Вместе с плеером на странице с аудиозаписями теперь двигаются и вкладки - Добавление аудио в группу по идее должно нормально работать * Implement playlists listens - У плейлистов теперь есть прослушивания в общем. - Прослушивания у большого плеера теперь засчитываются, если трек был дослушан до конца - В объекте плейлистов теперь возвращается listens и cover_url - Получение плееров через /audios/context переписано, повторяющийся код удалён, правда сильно количество строк сократить не получилось - Теперь цвета плеера темнее, а иконка проигрывания изменена - Теперь, если очередь из треков кончилась, то плеер перенаправляет вас в начало очереди. * php 8.2 fixxxxxxxxxxxxxxxxxxxxxxx * Implement audiostatuses Добавлены аудиостатусы (у пользователей), блок с друзьями, слушающих музыку на странице аудиозаписей, объект status_audio в users.get, улучшены настройки приватности и ещё что-то * ? - Переделан метод в классе user для получения друзей с проигрываемыми песнями. Теперь среди них могут появляться и группы (хз стоит ли оставлять это или нет). Так же больше не показываются удалённые пользователи - Трек у плеера теперь двигается немного плавнее. Ещё теперь нету смешных багов с подсказкой времени, когда можно было увести её за экран или промотать дальше трека. Переключить повторение трека теперь можно нажатием кнопки R. - Длинное название трека больше не сносит время - Наверное, теперь аудиозаписи нормально отображаются в темах midnight и modern - Аудиозаписи больше не крашаются, если пользователь неавторизован. - Немного переделан миниплеер. - В миниплеере теперь громкость берётся из локалсторейджа. - Улучшено редактирование аудиозаписей. Теперь данные в дата атрибуты нормально сохраняются, а так же слова песни и метка "explicit" меняются - Удалён css, оставшийся ещё от public technical preview 1, а так же путь /audios{num} - При наведении на трек теперь пропадает время, и на его месте появляются кнопки - Стандартная аватарка в midnight теперь инвертируется - В админке в редактировании аудио теперь показывается дата редактирования, дата создания, длина и оригинальный файл аудио. Так же на странице редактирования больше нет вылетов, если вы задали несуществующий аккаунт * ! - Добавлены строки для мобильной темы - Добавлено предупреждение перед полным удалением плейлиста - Нажатие кнопки M = нажатие кнопки наушников - В классе апи Audio поставлены willExecuteWriteAction, ещё теперь нельзя получить число аудиозаписей у пользователей, которые их закрыли. Ещё теперь нельзя получать uploaded_only аудиозаписи у тех ну вы поняли короче. - При наведении на длинное название песни оно теперь показывается полностью - Надо ещё что-то сюда написать, так что: При редактировании аудиозаписи название окна теперь не "Редактировать", а "Редактировать аудиозапись", а вместо кнопки OK кнопка "Сохранить" * . - Добавлен тур по аудиозаписям, но пока без скриншотов. - "Мои Аудиозаписи" в меню теперь располагаются под Моими Видеозаписями для канона - В настройках приватности "кто может видеть мои аудиозаписи" теперь располагаются под "кто может видеть мои видеозаписи" - В настройках внешнего вида мои аудиозаписи тоже под видео - Изменён <title> на странице аудиозаписей. Теперь показывается "Аудиозаписи" + имя пользователя в родительном падеже. А если это группа, то "Аудиозаписи группы". То же самое с плейлистами - Исправлены ссылка в ссылке на странице с плейлистами - При наведении на название песни больше не сносится иконка explicit - Добавлена максимальная длина названия и описания плейлиста при редактировании. * М - Долокализована админка (точно помню, что уже делал это, но ладно) - Удалён лишний пункт "audios" в getLeftMenuItemStatus (реально) - Если. У плеера есть параметр "hideButtons", то при наведении на него не пропадает время. - На странице редактирования/создания плейлиста если у песни длинное название, то оно да похуй короче. Ну в общем лучше стало - Там где нужно, добавлена строка в конце файла - Возвращена строка "photo" в английской локали (я её случайно удалил :+1: ) * у - У изъятых аудиозаписей больше не показывается кнопка "добавить в группу". Так же при нажатии на кнопку удаления из коллекции окно не всплывает. - "Удаление аудио из группы" тоже лучше работать стало с изъятыми аудио. * з - В пикере аудиозаписей "more..." заменено на "показать больше аудиозаписей" - Если включен режим показа оставшегося времени, то при окончании песни больше не показывается "--1:--1" - В пикере аудиозаписей, если у вас нет аудиозаписей и вы ничего не искали, показывается "Вы ещё не добавляли аудиозаписей" - <hr>'ы стали серыми - Добавлены title'ы у кнопок в большом плеере - Проставлены alt'ы у плейлистов * Musique: linux saport) назар хуйню релизнул кста, плейерс клаб два не слушайте не рекомендую * Update and rename gamma-00000-disco.sql to 00041-music.sql * Update 00041-music.sql --------- Co-authored-by: Ilya Prokopenko <dsrev@protonmail.com> Co-authored-by: n1rwana <aydashkin@vk.com> Co-authored-by: lalka2018 <99399973+lalka2016@users.noreply.github.com> Co-authored-by: veselcraft <veselcraft@icloud.com> Co-authored-by: DeathPleiad <43928323+Parad1seF0x@users.noreply.github.com>
2023-11-12 00:41:07 +03:00
return $this->isEveryoneCanUploadAudios() || $this->canBeModifiedBy($user);
}
public function canUploadDocs(?User $user): bool
{
if (!$user) {
return false;
}
return $this->canBeModifiedBy($user);
}
public function getAudiosCollectionSize()
Music, finally! (#512) * Add audio upload feature * Add audio embed thing * Move bullet.gif to ovk * Draft some music API methods * Add support for base64 ids to Audios.getById * Disallow having more than 65k audios in playlist * Add playlist model * Draft some playlist-related API methods * Fix behabiour of album-related methods Generators f***** me in le a** * Add IDv3 autofill * Add sql dumps i forgor to upload it xdddd * Add playlists sql * Fix audio upload not working on Windows 11 because Windows is the worst operating system which doesn't work properly under any circumstances * Fix cocksex in audio.get yes * Интерфейсы * Interface updade * Update en.strings * Add audio queue * Make repeat button work * Some improvements to audio queue * Фгвшщ йгугу шьзкщмуьутеы * Make shuffle and "наушники" buttons work, add f... avicons when playing audio, save some values (like volume and last played track) to localstorage, add ability to toggle time type in player, fix uploading audios with cover (maybe) and add dragndrop to upload page * Add funny tip with time when hover track div * Add something * Add audios picker & move track in smal player вниз * Summary (required) Description * [WIP] Add calls, stories and clips. Изменены фавиконки (поменьше стали) У миниплеера ползунок теперь в стиле bsdn и большого плеера, добавлен ползунок громкости Добавлена кнопка добавления аудио в группу (у миниплеера) Если вы смотрите аудио группы, которой можете управлять, появляется кнопка "удалить аудио из группы" Снизу плейлиста в списке теперь показывается автор. При прикреплении аудиозаписей к посту теперь есть поиск "по композиции" и "по исполнителю" Добавил explicit.svg, который я забыл добавить в предыдущем коммите. Вкладочки немного переделаны При наведении на кнопки "трек вперёд" или "трек назад" показывается название предыдущего или следующего трека соответственно * 1 new commit to master: [WIP]: Add audios - Теперь группа может разрешать загружать всем треки в неё - Теперь треки загружаются на сервер ajax'ом, и так можно очень много аудио загружать - Вёрстка списка плейлистов изменена, теперь она на гридах - Немного изменено апи, теперь метод editAlbum сохраняет новую информацию ee объект плейлистов теперь возвращают реальное время - Удалены лишние пути из routes.yml - При переключении страниц теперь если на текущей странице есть играющий трек, он нормально подсвечивается - Из init-db.sql удалены таблицы аудиозаписей - В Groups.getSettings и groups.edit теперь есть информация о аудиозаписях * (смешное название коммита) - Теперь на странице пользователя/группы показываются три случайные песни, а не первые три как раньше - Теперь пробел на странице аудио не перемещает вас в низ страницы - Оптимизирован мини-плеер, теперь он инициализируется при любом нажатии на него, а не при наведении - Теперь при завершении проигрывания трека в мини-плеере он ищет другой трек рядом, и если находит то воспроизводит. Будет удобно для постов с подборками треков - Поиск теперь показывает 14 результатов - Теперь при возникновении ошибки загрузки аудио она нормально отображается - Вместе с плеером на странице с аудиозаписями теперь двигаются и вкладки - Добавление аудио в группу по идее должно нормально работать * Implement playlists listens - У плейлистов теперь есть прослушивания в общем. - Прослушивания у большого плеера теперь засчитываются, если трек был дослушан до конца - В объекте плейлистов теперь возвращается listens и cover_url - Получение плееров через /audios/context переписано, повторяющийся код удалён, правда сильно количество строк сократить не получилось - Теперь цвета плеера темнее, а иконка проигрывания изменена - Теперь, если очередь из треков кончилась, то плеер перенаправляет вас в начало очереди. * php 8.2 fixxxxxxxxxxxxxxxxxxxxxxx * Implement audiostatuses Добавлены аудиостатусы (у пользователей), блок с друзьями, слушающих музыку на странице аудиозаписей, объект status_audio в users.get, улучшены настройки приватности и ещё что-то * ? - Переделан метод в классе user для получения друзей с проигрываемыми песнями. Теперь среди них могут появляться и группы (хз стоит ли оставлять это или нет). Так же больше не показываются удалённые пользователи - Трек у плеера теперь двигается немного плавнее. Ещё теперь нету смешных багов с подсказкой времени, когда можно было увести её за экран или промотать дальше трека. Переключить повторение трека теперь можно нажатием кнопки R. - Длинное название трека больше не сносит время - Наверное, теперь аудиозаписи нормально отображаются в темах midnight и modern - Аудиозаписи больше не крашаются, если пользователь неавторизован. - Немного переделан миниплеер. - В миниплеере теперь громкость берётся из локалсторейджа. - Улучшено редактирование аудиозаписей. Теперь данные в дата атрибуты нормально сохраняются, а так же слова песни и метка "explicit" меняются - Удалён css, оставшийся ещё от public technical preview 1, а так же путь /audios{num} - При наведении на трек теперь пропадает время, и на его месте появляются кнопки - Стандартная аватарка в midnight теперь инвертируется - В админке в редактировании аудио теперь показывается дата редактирования, дата создания, длина и оригинальный файл аудио. Так же на странице редактирования больше нет вылетов, если вы задали несуществующий аккаунт * ! - Добавлены строки для мобильной темы - Добавлено предупреждение перед полным удалением плейлиста - Нажатие кнопки M = нажатие кнопки наушников - В классе апи Audio поставлены willExecuteWriteAction, ещё теперь нельзя получить число аудиозаписей у пользователей, которые их закрыли. Ещё теперь нельзя получать uploaded_only аудиозаписи у тех ну вы поняли короче. - При наведении на длинное название песни оно теперь показывается полностью - Надо ещё что-то сюда написать, так что: При редактировании аудиозаписи название окна теперь не "Редактировать", а "Редактировать аудиозапись", а вместо кнопки OK кнопка "Сохранить" * . - Добавлен тур по аудиозаписям, но пока без скриншотов. - "Мои Аудиозаписи" в меню теперь располагаются под Моими Видеозаписями для канона - В настройках приватности "кто может видеть мои аудиозаписи" теперь располагаются под "кто может видеть мои видеозаписи" - В настройках внешнего вида мои аудиозаписи тоже под видео - Изменён <title> на странице аудиозаписей. Теперь показывается "Аудиозаписи" + имя пользователя в родительном падеже. А если это группа, то "Аудиозаписи группы". То же самое с плейлистами - Исправлены ссылка в ссылке на странице с плейлистами - При наведении на название песни больше не сносится иконка explicit - Добавлена максимальная длина названия и описания плейлиста при редактировании. * М - Долокализована админка (точно помню, что уже делал это, но ладно) - Удалён лишний пункт "audios" в getLeftMenuItemStatus (реально) - Если. У плеера есть параметр "hideButtons", то при наведении на него не пропадает время. - На странице редактирования/создания плейлиста если у песни длинное название, то оно да похуй короче. Ну в общем лучше стало - Там где нужно, добавлена строка в конце файла - Возвращена строка "photo" в английской локали (я её случайно удалил :+1: ) * у - У изъятых аудиозаписей больше не показывается кнопка "добавить в группу". Так же при нажатии на кнопку удаления из коллекции окно не всплывает. - "Удаление аудио из группы" тоже лучше работать стало с изъятыми аудио. * з - В пикере аудиозаписей "more..." заменено на "показать больше аудиозаписей" - Если включен режим показа оставшегося времени, то при окончании песни больше не показывается "--1:--1" - В пикере аудиозаписей, если у вас нет аудиозаписей и вы ничего не искали, показывается "Вы ещё не добавляли аудиозаписей" - <hr>'ы стали серыми - Добавлены title'ы у кнопок в большом плеере - Проставлены alt'ы у плейлистов * Musique: linux saport) назар хуйню релизнул кста, плейерс клаб два не слушайте не рекомендую * Update and rename gamma-00000-disco.sql to 00041-music.sql * Update 00041-music.sql --------- Co-authored-by: Ilya Prokopenko <dsrev@protonmail.com> Co-authored-by: n1rwana <aydashkin@vk.com> Co-authored-by: lalka2018 <99399973+lalka2016@users.noreply.github.com> Co-authored-by: veselcraft <veselcraft@icloud.com> Co-authored-by: DeathPleiad <43928323+Parad1seF0x@users.noreply.github.com>
2023-11-12 00:41:07 +03:00
{
return (new \openvk\Web\Models\Repositories\Audios())->getClubCollectionSize($this);
Music, finally! (#512) * Add audio upload feature * Add audio embed thing * Move bullet.gif to ovk * Draft some music API methods * Add support for base64 ids to Audios.getById * Disallow having more than 65k audios in playlist * Add playlist model * Draft some playlist-related API methods * Fix behabiour of album-related methods Generators f***** me in le a** * Add IDv3 autofill * Add sql dumps i forgor to upload it xdddd * Add playlists sql * Fix audio upload not working on Windows 11 because Windows is the worst operating system which doesn't work properly under any circumstances * Fix cocksex in audio.get yes * Интерфейсы * Interface updade * Update en.strings * Add audio queue * Make repeat button work * Some improvements to audio queue * Фгвшщ йгугу шьзкщмуьутеы * Make shuffle and "наушники" buttons work, add f... avicons when playing audio, save some values (like volume and last played track) to localstorage, add ability to toggle time type in player, fix uploading audios with cover (maybe) and add dragndrop to upload page * Add funny tip with time when hover track div * Add something * Add audios picker & move track in smal player вниз * Summary (required) Description * [WIP] Add calls, stories and clips. Изменены фавиконки (поменьше стали) У миниплеера ползунок теперь в стиле bsdn и большого плеера, добавлен ползунок громкости Добавлена кнопка добавления аудио в группу (у миниплеера) Если вы смотрите аудио группы, которой можете управлять, появляется кнопка "удалить аудио из группы" Снизу плейлиста в списке теперь показывается автор. При прикреплении аудиозаписей к посту теперь есть поиск "по композиции" и "по исполнителю" Добавил explicit.svg, который я забыл добавить в предыдущем коммите. Вкладочки немного переделаны При наведении на кнопки "трек вперёд" или "трек назад" показывается название предыдущего или следующего трека соответственно * 1 new commit to master: [WIP]: Add audios - Теперь группа может разрешать загружать всем треки в неё - Теперь треки загружаются на сервер ajax'ом, и так можно очень много аудио загружать - Вёрстка списка плейлистов изменена, теперь она на гридах - Немного изменено апи, теперь метод editAlbum сохраняет новую информацию ee объект плейлистов теперь возвращают реальное время - Удалены лишние пути из routes.yml - При переключении страниц теперь если на текущей странице есть играющий трек, он нормально подсвечивается - Из init-db.sql удалены таблицы аудиозаписей - В Groups.getSettings и groups.edit теперь есть информация о аудиозаписях * (смешное название коммита) - Теперь на странице пользователя/группы показываются три случайные песни, а не первые три как раньше - Теперь пробел на странице аудио не перемещает вас в низ страницы - Оптимизирован мини-плеер, теперь он инициализируется при любом нажатии на него, а не при наведении - Теперь при завершении проигрывания трека в мини-плеере он ищет другой трек рядом, и если находит то воспроизводит. Будет удобно для постов с подборками треков - Поиск теперь показывает 14 результатов - Теперь при возникновении ошибки загрузки аудио она нормально отображается - Вместе с плеером на странице с аудиозаписями теперь двигаются и вкладки - Добавление аудио в группу по идее должно нормально работать * Implement playlists listens - У плейлистов теперь есть прослушивания в общем. - Прослушивания у большого плеера теперь засчитываются, если трек был дослушан до конца - В объекте плейлистов теперь возвращается listens и cover_url - Получение плееров через /audios/context переписано, повторяющийся код удалён, правда сильно количество строк сократить не получилось - Теперь цвета плеера темнее, а иконка проигрывания изменена - Теперь, если очередь из треков кончилась, то плеер перенаправляет вас в начало очереди. * php 8.2 fixxxxxxxxxxxxxxxxxxxxxxx * Implement audiostatuses Добавлены аудиостатусы (у пользователей), блок с друзьями, слушающих музыку на странице аудиозаписей, объект status_audio в users.get, улучшены настройки приватности и ещё что-то * ? - Переделан метод в классе user для получения друзей с проигрываемыми песнями. Теперь среди них могут появляться и группы (хз стоит ли оставлять это или нет). Так же больше не показываются удалённые пользователи - Трек у плеера теперь двигается немного плавнее. Ещё теперь нету смешных багов с подсказкой времени, когда можно было увести её за экран или промотать дальше трека. Переключить повторение трека теперь можно нажатием кнопки R. - Длинное название трека больше не сносит время - Наверное, теперь аудиозаписи нормально отображаются в темах midnight и modern - Аудиозаписи больше не крашаются, если пользователь неавторизован. - Немного переделан миниплеер. - В миниплеере теперь громкость берётся из локалсторейджа. - Улучшено редактирование аудиозаписей. Теперь данные в дата атрибуты нормально сохраняются, а так же слова песни и метка "explicit" меняются - Удалён css, оставшийся ещё от public technical preview 1, а так же путь /audios{num} - При наведении на трек теперь пропадает время, и на его месте появляются кнопки - Стандартная аватарка в midnight теперь инвертируется - В админке в редактировании аудио теперь показывается дата редактирования, дата создания, длина и оригинальный файл аудио. Так же на странице редактирования больше нет вылетов, если вы задали несуществующий аккаунт * ! - Добавлены строки для мобильной темы - Добавлено предупреждение перед полным удалением плейлиста - Нажатие кнопки M = нажатие кнопки наушников - В классе апи Audio поставлены willExecuteWriteAction, ещё теперь нельзя получить число аудиозаписей у пользователей, которые их закрыли. Ещё теперь нельзя получать uploaded_only аудиозаписи у тех ну вы поняли короче. - При наведении на длинное название песни оно теперь показывается полностью - Надо ещё что-то сюда написать, так что: При редактировании аудиозаписи название окна теперь не "Редактировать", а "Редактировать аудиозапись", а вместо кнопки OK кнопка "Сохранить" * . - Добавлен тур по аудиозаписям, но пока без скриншотов. - "Мои Аудиозаписи" в меню теперь располагаются под Моими Видеозаписями для канона - В настройках приватности "кто может видеть мои аудиозаписи" теперь располагаются под "кто может видеть мои видеозаписи" - В настройках внешнего вида мои аудиозаписи тоже под видео - Изменён <title> на странице аудиозаписей. Теперь показывается "Аудиозаписи" + имя пользователя в родительном падеже. А если это группа, то "Аудиозаписи группы". То же самое с плейлистами - Исправлены ссылка в ссылке на странице с плейлистами - При наведении на название песни больше не сносится иконка explicit - Добавлена максимальная длина названия и описания плейлиста при редактировании. * М - Долокализована админка (точно помню, что уже делал это, но ладно) - Удалён лишний пункт "audios" в getLeftMenuItemStatus (реально) - Если. У плеера есть параметр "hideButtons", то при наведении на него не пропадает время. - На странице редактирования/создания плейлиста если у песни длинное название, то оно да похуй короче. Ну в общем лучше стало - Там где нужно, добавлена строка в конце файла - Возвращена строка "photo" в английской локали (я её случайно удалил :+1: ) * у - У изъятых аудиозаписей больше не показывается кнопка "добавить в группу". Так же при нажатии на кнопку удаления из коллекции окно не всплывает. - "Удаление аудио из группы" тоже лучше работать стало с изъятыми аудио. * з - В пикере аудиозаписей "more..." заменено на "показать больше аудиозаписей" - Если включен режим показа оставшегося времени, то при окончании песни больше не показывается "--1:--1" - В пикере аудиозаписей, если у вас нет аудиозаписей и вы ничего не искали, показывается "Вы ещё не добавляли аудиозаписей" - <hr>'ы стали серыми - Добавлены title'ы у кнопок в большом плеере - Проставлены alt'ы у плейлистов * Musique: linux saport) назар хуйню релизнул кста, плейерс клаб два не слушайте не рекомендую * Update and rename gamma-00000-disco.sql to 00041-music.sql * Update 00041-music.sql --------- Co-authored-by: Ilya Prokopenko <dsrev@protonmail.com> Co-authored-by: n1rwana <aydashkin@vk.com> Co-authored-by: lalka2018 <99399973+lalka2016@users.noreply.github.com> Co-authored-by: veselcraft <veselcraft@icloud.com> Co-authored-by: DeathPleiad <43928323+Parad1seF0x@users.noreply.github.com>
2023-11-12 00:41:07 +03:00
}
public function toVkApiStruct(?User $user = null, string $fields = ''): object
{
$res = (object) [];
$res->id = $this->getId();
$res->name = $this->getName();
$res->screen_name = $this->getShortCode() ?? "club" . $this->getId();
$res->is_closed = false;
$res->type = 'group';
$res->is_member = $user ? (int) $this->getSubscriptionStatus($user) : 0;
$res->deactivated = null;
$res->can_access_closed = true;
if (!is_array($fields)) {
$fields = explode(',', $fields);
}
$avatar_photo = $this->getAvatarPhoto();
foreach ($fields as $field) {
switch ($field) {
case 'verified':
$res->verified = (int) $this->isVerified();
break;
case 'site':
$res->site = $this->getWebsite();
break;
case 'description':
$res->description = $this->getDescription();
break;
case 'background':
$res->background = $this->getBackDropPictureURLs();
break;
case 'photo_50':
$res->photo_50 = $this->getAvatarUrl('miniscule', $avatar_photo);
break;
case 'photo_100':
$res->photo_100 = $this->getAvatarUrl('tiny', $avatar_photo);
break;
case 'photo_200':
$res->photo_200 = $this->getAvatarUrl('normal', $avatar_photo);
break;
case 'photo_max':
$res->photo_max = $this->getAvatarUrl('original', $avatar_photo);
break;
case 'members_count':
$res->members_count = $this->getFollowersCount();
break;
case 'real_id':
$res->real_id = $this->getRealId();
break;
}
}
Music, finally! (#512) * Add audio upload feature * Add audio embed thing * Move bullet.gif to ovk * Draft some music API methods * Add support for base64 ids to Audios.getById * Disallow having more than 65k audios in playlist * Add playlist model * Draft some playlist-related API methods * Fix behabiour of album-related methods Generators f***** me in le a** * Add IDv3 autofill * Add sql dumps i forgor to upload it xdddd * Add playlists sql * Fix audio upload not working on Windows 11 because Windows is the worst operating system which doesn't work properly under any circumstances * Fix cocksex in audio.get yes * Интерфейсы * Interface updade * Update en.strings * Add audio queue * Make repeat button work * Some improvements to audio queue * Фгвшщ йгугу шьзкщмуьутеы * Make shuffle and "наушники" buttons work, add f... avicons when playing audio, save some values (like volume and last played track) to localstorage, add ability to toggle time type in player, fix uploading audios with cover (maybe) and add dragndrop to upload page * Add funny tip with time when hover track div * Add something * Add audios picker & move track in smal player вниз * Summary (required) Description * [WIP] Add calls, stories and clips. Изменены фавиконки (поменьше стали) У миниплеера ползунок теперь в стиле bsdn и большого плеера, добавлен ползунок громкости Добавлена кнопка добавления аудио в группу (у миниплеера) Если вы смотрите аудио группы, которой можете управлять, появляется кнопка "удалить аудио из группы" Снизу плейлиста в списке теперь показывается автор. При прикреплении аудиозаписей к посту теперь есть поиск "по композиции" и "по исполнителю" Добавил explicit.svg, который я забыл добавить в предыдущем коммите. Вкладочки немного переделаны При наведении на кнопки "трек вперёд" или "трек назад" показывается название предыдущего или следующего трека соответственно * 1 new commit to master: [WIP]: Add audios - Теперь группа может разрешать загружать всем треки в неё - Теперь треки загружаются на сервер ajax'ом, и так можно очень много аудио загружать - Вёрстка списка плейлистов изменена, теперь она на гридах - Немного изменено апи, теперь метод editAlbum сохраняет новую информацию ee объект плейлистов теперь возвращают реальное время - Удалены лишние пути из routes.yml - При переключении страниц теперь если на текущей странице есть играющий трек, он нормально подсвечивается - Из init-db.sql удалены таблицы аудиозаписей - В Groups.getSettings и groups.edit теперь есть информация о аудиозаписях * (смешное название коммита) - Теперь на странице пользователя/группы показываются три случайные песни, а не первые три как раньше - Теперь пробел на странице аудио не перемещает вас в низ страницы - Оптимизирован мини-плеер, теперь он инициализируется при любом нажатии на него, а не при наведении - Теперь при завершении проигрывания трека в мини-плеере он ищет другой трек рядом, и если находит то воспроизводит. Будет удобно для постов с подборками треков - Поиск теперь показывает 14 результатов - Теперь при возникновении ошибки загрузки аудио она нормально отображается - Вместе с плеером на странице с аудиозаписями теперь двигаются и вкладки - Добавление аудио в группу по идее должно нормально работать * Implement playlists listens - У плейлистов теперь есть прослушивания в общем. - Прослушивания у большого плеера теперь засчитываются, если трек был дослушан до конца - В объекте плейлистов теперь возвращается listens и cover_url - Получение плееров через /audios/context переписано, повторяющийся код удалён, правда сильно количество строк сократить не получилось - Теперь цвета плеера темнее, а иконка проигрывания изменена - Теперь, если очередь из треков кончилась, то плеер перенаправляет вас в начало очереди. * php 8.2 fixxxxxxxxxxxxxxxxxxxxxxx * Implement audiostatuses Добавлены аудиостатусы (у пользователей), блок с друзьями, слушающих музыку на странице аудиозаписей, объект status_audio в users.get, улучшены настройки приватности и ещё что-то * ? - Переделан метод в классе user для получения друзей с проигрываемыми песнями. Теперь среди них могут появляться и группы (хз стоит ли оставлять это или нет). Так же больше не показываются удалённые пользователи - Трек у плеера теперь двигается немного плавнее. Ещё теперь нету смешных багов с подсказкой времени, когда можно было увести её за экран или промотать дальше трека. Переключить повторение трека теперь можно нажатием кнопки R. - Длинное название трека больше не сносит время - Наверное, теперь аудиозаписи нормально отображаются в темах midnight и modern - Аудиозаписи больше не крашаются, если пользователь неавторизован. - Немного переделан миниплеер. - В миниплеере теперь громкость берётся из локалсторейджа. - Улучшено редактирование аудиозаписей. Теперь данные в дата атрибуты нормально сохраняются, а так же слова песни и метка "explicit" меняются - Удалён css, оставшийся ещё от public technical preview 1, а так же путь /audios{num} - При наведении на трек теперь пропадает время, и на его месте появляются кнопки - Стандартная аватарка в midnight теперь инвертируется - В админке в редактировании аудио теперь показывается дата редактирования, дата создания, длина и оригинальный файл аудио. Так же на странице редактирования больше нет вылетов, если вы задали несуществующий аккаунт * ! - Добавлены строки для мобильной темы - Добавлено предупреждение перед полным удалением плейлиста - Нажатие кнопки M = нажатие кнопки наушников - В классе апи Audio поставлены willExecuteWriteAction, ещё теперь нельзя получить число аудиозаписей у пользователей, которые их закрыли. Ещё теперь нельзя получать uploaded_only аудиозаписи у тех ну вы поняли короче. - При наведении на длинное название песни оно теперь показывается полностью - Надо ещё что-то сюда написать, так что: При редактировании аудиозаписи название окна теперь не "Редактировать", а "Редактировать аудиозапись", а вместо кнопки OK кнопка "Сохранить" * . - Добавлен тур по аудиозаписям, но пока без скриншотов. - "Мои Аудиозаписи" в меню теперь располагаются под Моими Видеозаписями для канона - В настройках приватности "кто может видеть мои аудиозаписи" теперь располагаются под "кто может видеть мои видеозаписи" - В настройках внешнего вида мои аудиозаписи тоже под видео - Изменён <title> на странице аудиозаписей. Теперь показывается "Аудиозаписи" + имя пользователя в родительном падеже. А если это группа, то "Аудиозаписи группы". То же самое с плейлистами - Исправлены ссылка в ссылке на странице с плейлистами - При наведении на название песни больше не сносится иконка explicit - Добавлена максимальная длина названия и описания плейлиста при редактировании. * М - Долокализована админка (точно помню, что уже делал это, но ладно) - Удалён лишний пункт "audios" в getLeftMenuItemStatus (реально) - Если. У плеера есть параметр "hideButtons", то при наведении на него не пропадает время. - На странице редактирования/создания плейлиста если у песни длинное название, то оно да похуй короче. Ну в общем лучше стало - Там где нужно, добавлена строка в конце файла - Возвращена строка "photo" в английской локали (я её случайно удалил :+1: ) * у - У изъятых аудиозаписей больше не показывается кнопка "добавить в группу". Так же при нажатии на кнопку удаления из коллекции окно не всплывает. - "Удаление аудио из группы" тоже лучше работать стало с изъятыми аудио. * з - В пикере аудиозаписей "more..." заменено на "показать больше аудиозаписей" - Если включен режим показа оставшегося времени, то при окончании песни больше не показывается "--1:--1" - В пикере аудиозаписей, если у вас нет аудиозаписей и вы ничего не искали, показывается "Вы ещё не добавляли аудиозаписей" - <hr>'ы стали серыми - Добавлены title'ы у кнопок в большом плеере - Проставлены alt'ы у плейлистов * Musique: linux saport) назар хуйню релизнул кста, плейерс клаб два не слушайте не рекомендую * Update and rename gamma-00000-disco.sql to 00041-music.sql * Update 00041-music.sql --------- Co-authored-by: Ilya Prokopenko <dsrev@protonmail.com> Co-authored-by: n1rwana <aydashkin@vk.com> Co-authored-by: lalka2018 <99399973+lalka2016@users.noreply.github.com> Co-authored-by: veselcraft <veselcraft@icloud.com> Co-authored-by: DeathPleiad <43928323+Parad1seF0x@users.noreply.github.com>
2023-11-12 00:41:07 +03:00
return $res;
}
2020-06-07 19:04:43 +03:00
}