mirror of
https://github.com/openvk/openvk
synced 2024-12-23 00:51:03 +03:00
Compare commits
21 commits
51276d66cc
...
890beb1ce7
Author | SHA1 | Date | |
---|---|---|---|
|
890beb1ce7 | ||
|
a350ff870a | ||
|
32fb69da5f | ||
|
b011fe51e4 | ||
|
1cb5b68136 | ||
|
216312e58d | ||
ef659beef4 | |||
|
0dd7b5c1f0 | ||
|
9100a83044 | ||
3c53564d57 | |||
|
b4fd4f018c | ||
|
47a61d19d7 | ||
|
4040a303ae | ||
507bbfaba5 | |||
|
f4c0805a6a | ||
76dedd6b82 | |||
|
8f7a98c59e | ||
|
299dbd0755 | ||
|
a60c990838 | ||
3ceb27e532 | |||
99a2e3a8e6 |
35 changed files with 1755 additions and 1354 deletions
146
.github/workflows/build.yaml
vendored
146
.github/workflows/build.yaml
vendored
|
@ -1,14 +1,6 @@
|
|||
name: Build images
|
||||
|
||||
on:
|
||||
push:
|
||||
# Publish `master` as Docker `latest` image.
|
||||
branches:
|
||||
- master
|
||||
|
||||
# Publish `v1.2.3` tags as releases.
|
||||
tags:
|
||||
- v*
|
||||
on: [push, pull_request]
|
||||
|
||||
env:
|
||||
BASE_IMAGE_NAME: openvk
|
||||
|
@ -17,24 +9,21 @@ env:
|
|||
DB_VERSION: "10.9"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
buildbase:
|
||||
name: Build base images
|
||||
strategy:
|
||||
matrix:
|
||||
arch: ['x86_64']
|
||||
platform: [amd64, arm64]
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: github.event_name == 'push'
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
lfs: false
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
uses: docker/setup-qemu-action@v3
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Change repository string to lowercase
|
||||
id: repositorystring
|
||||
|
@ -42,29 +31,114 @@ jobs:
|
|||
with:
|
||||
string: ${{ github.repository }}
|
||||
|
||||
- name: Base image meta
|
||||
id: basemeta
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
images: |
|
||||
ghcr.io/${{ steps.repositorystring.outputs.lowercase }}/${{env.BASE_IMAGE_NAME}}
|
||||
labels: |
|
||||
org.opencontainers.image.documentation=https://github.com/OpenVK/openvk/blob/master/install/automated/docker/Readme.md
|
||||
tags: |
|
||||
type=sha
|
||||
type=ref,event=branch
|
||||
type=ref,event=pr
|
||||
type=ref,event=tag
|
||||
type=raw,value=latest,enable={{is_default_branch}}
|
||||
|
||||
- name: Log into registry
|
||||
if: github.event_name != 'pull_request'
|
||||
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
|
||||
|
||||
- name: Build base image
|
||||
run: |
|
||||
IMAGE_ID=ghcr.io/${{ steps.repositorystring.outputs.lowercase }}/$BASE_IMAGE_NAME
|
||||
IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]')
|
||||
VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,')
|
||||
[[ "${{ github.ref }}" == "refs/tags/"* ]] && VERSION=$(echo $VERSION | sed -e 's/^v//')
|
||||
[ "$VERSION" == "master" ] && VERSION=latest
|
||||
echo IMAGE_ID=$IMAGE_ID
|
||||
echo VERSION=$VERSION
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
platforms: linux/${{matrix.platform}}
|
||||
file: install/automated/docker/openvk.Dockerfile
|
||||
tags: ${{ steps.basemeta.outputs.tags }}
|
||||
labels: ${{ steps.basemeta.outputs.labels }}
|
||||
push: ${{ github.event_name != 'pull_request' }}
|
||||
build-args: |
|
||||
GITREPO=${{ steps.repositorystring.outputs.lowercase }}
|
||||
|
||||
docker buildx build --platform linux/amd64,linux/arm64 -t $IMAGE_ID:$VERSION . --push -f install/automated/docker/openvk.Dockerfile --build-arg GITREPO=${{ steps.repositorystring.outputs.lowercase }}
|
||||
builddb:
|
||||
name: Build DB images
|
||||
strategy:
|
||||
matrix:
|
||||
platform: [amd64, arm64]
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Change repository string to lowercase
|
||||
id: repositorystring
|
||||
uses: Entepotenz/change-string-case-action-min-dependencies@v1.1.0
|
||||
with:
|
||||
string: ${{ github.repository }}
|
||||
|
||||
- name: MariaDB primary meta
|
||||
id: db-primarymeta
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
images: |
|
||||
ghcr.io/${{ steps.repositorystring.outputs.lowercase }}/${{env.DB_IMAGE_NAME}}
|
||||
labels: |
|
||||
org.opencontainers.image.title=OpenVK MariaDB (Primary)
|
||||
org.opencontainers.image.description=OpenVK's image for MariaDB for primary database.
|
||||
org.opencontainers.image.documentation=https://github.com/OpenVK/openvk/blob/master/install/automated/docker/Readme.md
|
||||
tags: |
|
||||
type=sha,prefix=${{env.DB_VERSION}}-primary-sha-
|
||||
type=ref,event=branch,prefix=${{env.DB_VERSION}}-primary-
|
||||
type=ref,event=pr,prefix=${{env.DB_VERSION}}-primary-pr-
|
||||
type=ref,event=tag,prefix=${{env.DB_VERSION}}-primary-
|
||||
type=raw,value=${{env.DB_VERSION}}-primary,enable={{is_default_branch}}
|
||||
|
||||
- name: MariaDB event meta
|
||||
id: db-eventmeta
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
images: |
|
||||
ghcr.io/${{ steps.repositorystring.outputs.lowercase }}/${{env.DB_IMAGE_NAME}}
|
||||
labels: |
|
||||
org.opencontainers.image.title=OpenVK MariaDB (EventDB)
|
||||
org.opencontainers.image.description=OpenVK's image for MariaDB for event database.
|
||||
org.opencontainers.image.documentation=https://github.com/OpenVK/openvk/blob/master/install/automated/docker/Readme.md
|
||||
tags: |
|
||||
type=sha,prefix=${{env.DB_VERSION}}-eventdb-sha-
|
||||
type=ref,event=branch,prefix=${{env.DB_VERSION}}-eventdb-
|
||||
type=ref,event=pr,prefix=${{env.DB_VERSION}}-eventdb-pr-
|
||||
type=ref,event=tag,prefix=${{env.DB_VERSION}}-eventdb-
|
||||
type=raw,value=${{env.DB_VERSION}}-eventdb,enable={{is_default_branch}}
|
||||
|
||||
- name: Log into registry
|
||||
if: github.event_name != 'pull_request'
|
||||
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
|
||||
|
||||
- name: Build MariaDB primary image
|
||||
run: |
|
||||
IMAGE_NAME=ghcr.io/${{ steps.repositorystring.outputs.lowercase }}/$DB_IMAGE_NAME:$DB_VERSION-primary
|
||||
|
||||
docker buildx build --platform linux/amd64,linux/arm64 -t $IMAGE_NAME . --push -f install/automated/docker/mariadb-primary.Dockerfile --build-arg VERSION=$DB_VERSION
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
push: ${{ github.event_name != 'pull_request' }}
|
||||
platforms: linux/${{matrix.platform}}
|
||||
file: install/automated/docker/mariadb-primary.Dockerfile
|
||||
tags: ${{ steps.db-primarymeta.outputs.tags }}
|
||||
labels: ${{ steps.db-primarymeta.outputs.labels }}
|
||||
build-args: |
|
||||
VERSION=${{env.DB_VERSION}}
|
||||
|
||||
- name: Build MariaDB event image
|
||||
run: |
|
||||
IMAGE_NAME=ghcr.io/${{ steps.repositorystring.outputs.lowercase }}/$EVENT_IMAGE_NAME:$DB_VERSION-eventdb
|
||||
|
||||
docker buildx build --platform linux/amd64,linux/arm64 -t $IMAGE_NAME . --push -f install/automated/docker/mariadb-eventdb.Dockerfile --build-arg VERSION=$DB_VERSION
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
push: ${{ github.event_name != 'pull_request' }}
|
||||
platforms: linux/${{matrix.platform}}
|
||||
file: install/automated/docker/mariadb-eventdb.Dockerfile
|
||||
tags: ${{ steps.db-eventmeta.outputs.tags }}
|
||||
labels: ${{ steps.db-eventmeta.outputs.labels }}
|
||||
build-args: |
|
||||
VERSION=${{env.DB_VERSION}}
|
|
@ -4,7 +4,7 @@ _[Русский](README_RU.md)_
|
|||
|
||||
**OpenVK** is an attempt to create a simple CMS that ~~cosplays~~ imitates old VKontakte. Code provided here is not stable yet.
|
||||
|
||||
VKontakte belongs to Pavel Durov and VK Group.
|
||||
VKontakte belongs to VK (formerly Mail.ru Group).
|
||||
|
||||
To be honest, we don't know whether if it even works. However, this version is maintained and we will be happy to accept your bugreports [in our bug tracker](https://github.com/openvk/openvk/projects/1). You should also be able to submit them using [ticketing system](https://ovk.to/support?act=new) (you will need an OpenVK account for this).
|
||||
|
||||
|
@ -36,7 +36,7 @@ Here is our minimum hardware recommendation:
|
|||
|
||||
### Installation procedure
|
||||
|
||||
1. Install PHP 7.4, web-server, Composer, Node.js, Yarn and [Chandler](https://github.com/openvk/chandler)
|
||||
1. Install PHP 7.4, web-server, Composer, Node.js, NPM and [Chandler](https://github.com/openvk/chandler)
|
||||
|
||||
* PHP 8 is still being tested; the functionality of the engine on this version of PHP is not yet guaranteed.
|
||||
|
||||
|
@ -65,7 +65,7 @@ ln -s /path/to/chandler/extensions/available/openvk /path/to/chandler/extensions
|
|||
7. Copy `openvk-example.yml` to `openvk.yml` and change options to your liking
|
||||
8. Run `composer install` in OpenVK directory
|
||||
9. Run `composer install` in commitcaptcha directory
|
||||
10. Move to `Web/static/js` and execute `yarn install`
|
||||
10. Move to `Web/static/js` and execute `npm install`
|
||||
11. Set `openvk` as your root app in `chandler.yml`
|
||||
|
||||
Once you are done, you can login as a system administrator on the network itself (no registration required):
|
||||
|
|
|
@ -4,7 +4,7 @@ _[English](README.md)_
|
|||
|
||||
**OpenVK** — это попытка создать простую CMS, которая ~~косплеит~~ имитирует старый ВКонтакте. На данный момент, представленный здесь исходный код проекта пока не является стабильным.
|
||||
|
||||
ВКонтакте принадлежит Павлу Дурову и VK Group.
|
||||
ВКонтакте принадлежит VK (в прошлом Mail.ru Group).
|
||||
|
||||
Честно говоря, мы даже не знаем, работает ли она вообще. Однако, эта версия поддерживается, и мы будем рады принять ваши сообщения об ошибках [в нашем баг-трекере](https://github.com/openvk/openvk/projects/1). Вы также можете отправлять их через [вкладку "Помощь"](https://ovk.to/support?act=new) (для этого вам понадобится учетная запись OpenVK).
|
||||
|
||||
|
@ -28,7 +28,7 @@ _[English](README.md)_
|
|||
|
||||
### Процедура установки
|
||||
|
||||
1. Установите PHP 7.4, веб-сервер, Composer, Node.js, Yarn и [Chandler](https://github.com/openvk/chandler)
|
||||
1. Установите PHP 7.4, веб-сервер, Composer, Node.js, NPM и [Chandler](https://github.com/openvk/chandler)
|
||||
|
||||
* PHP 8 пока ещё тестируется, работоспособность движка на этой версии PHP пока не гарантируется.
|
||||
|
||||
|
@ -57,7 +57,7 @@ ln -s /path/to/chandler/extensions/available/openvk /path/to/chandler/extensions
|
|||
7. Скопируйте `openvk-example.yml` в `openvk.yml` и измените параметры под свои нужды
|
||||
8. Запустите `composer install` в директории OpenVK
|
||||
9. Запустите `composer install` в директории commitcaptcha
|
||||
10. Перейдите в `Web/static/js` и выполните `yarn install`
|
||||
10. Перейдите в `Web/static/js` и выполните `npm install`
|
||||
11. Установите `openvk` в качестве корневого приложения в файле `chandler.yml`
|
||||
|
||||
После этого вы можете войти как системный администратор в саму сеть (регистрация не требуется):
|
||||
|
|
|
@ -32,6 +32,7 @@ final class Newsfeed extends VKAPIRequestHandler
|
|||
->select("id")
|
||||
->where("wall IN (?)", $ids)
|
||||
->where("deleted", 0)
|
||||
->where("suggested", 0)
|
||||
->where("id < (?)", empty($start_from) ? PHP_INT_MAX : $start_from)
|
||||
->where("? <= created", empty($start_time) ? 0 : $start_time)
|
||||
->where("? >= created", empty($end_time) ? PHP_INT_MAX : $end_time)
|
||||
|
@ -56,6 +57,15 @@ final class Newsfeed extends VKAPIRequestHandler
|
|||
|
||||
if($this->getUser()->getNsfwTolerance() === User::NSFW_INTOLERANT)
|
||||
$queryBase .= " AND `nsfw` = 0";
|
||||
|
||||
if($return_banned == 0) {
|
||||
$ignored_sources_ids = $this->getUser()->getIgnoredSources(0, OPENVK_ROOT_CONF['openvk']['preferences']['newsfeed']['ignoredSourcesLimit'] ?? 50, true);
|
||||
|
||||
if(sizeof($ignored_sources_ids) > 0) {
|
||||
$imploded_ids = implode("', '", $ignored_sources_ids);
|
||||
$queryBase .= " AND `posts`.`wall` NOT IN ('$imploded_ids')";
|
||||
}
|
||||
}
|
||||
|
||||
$start_from = empty($start_from) ? PHP_INT_MAX : $start_from;
|
||||
$start_time = empty($start_time) ? 0 : $start_time;
|
||||
|
@ -74,4 +84,152 @@ final class Newsfeed extends VKAPIRequestHandler
|
|||
|
||||
return $response;
|
||||
}
|
||||
|
||||
function getByType(string $feed_type = 'top', string $fields = "", int $start_from = 0, int $start_time = 0, int $end_time = 0, int $offset = 0, int $count = 30, int $extended = 0, int $return_banned = 0)
|
||||
{
|
||||
$this->requireUser();
|
||||
|
||||
switch($feed_type) {
|
||||
case 'top':
|
||||
return $this->getGlobal($fields, $start_from, $start_time, $end_time, $offset, $count, $extended, $return_banned);
|
||||
break;
|
||||
default:
|
||||
return $this->get($fields, $start_from, $start_time, $end_time, $offset, $count, $extended);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function getBanned(int $extended = 0, string $fields = "", string $name_case = "nom", int $merge = 0): object
|
||||
{
|
||||
$this->requireUser();
|
||||
|
||||
$offset = 0;
|
||||
$count = OPENVK_ROOT_CONF['openvk']['preferences']['newsfeed']['ignoredSourcesLimit'] ?? 50;
|
||||
$banned = $this->getUser()->getIgnoredSources($offset, $count, ($extended != 1));
|
||||
$return_object = (object) [
|
||||
'groups' => [],
|
||||
'members' => [],
|
||||
];
|
||||
|
||||
if($extended == 0) {
|
||||
foreach($banned as $ban) {
|
||||
if($ban > 0)
|
||||
$return_object->members[] = $ban;
|
||||
else
|
||||
$return_object->groups[] = $ban;
|
||||
}
|
||||
} else {
|
||||
if($merge == 1) {
|
||||
$return_object = (object) [
|
||||
'count' => sizeof($banned),
|
||||
'items' => [],
|
||||
];
|
||||
|
||||
foreach($banned as $ban) {
|
||||
$return_object->items[] = $ban->toVkApiStruct($this->getUser(), $fields);
|
||||
}
|
||||
} else {
|
||||
$return_object = (object) [
|
||||
'groups' => [],
|
||||
'profiles' => [],
|
||||
];
|
||||
|
||||
foreach($banned as $ban) {
|
||||
if($ban->getRealId() > 0)
|
||||
$return_object->profiles[] = $ban->toVkApiStruct($this->getUser(), $fields);
|
||||
else
|
||||
$return_object->groups[] = $ban->toVkApiStruct($this->getUser(), $fields);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $return_object;
|
||||
}
|
||||
|
||||
function addBan(string $user_ids = "", string $group_ids = "")
|
||||
{
|
||||
$this->requireUser();
|
||||
$this->willExecuteWriteAction();
|
||||
|
||||
# Formatting input ids
|
||||
if(!empty($user_ids)) {
|
||||
$user_ids = array_map(function($el) {
|
||||
return (int)$el;
|
||||
}, explode(',', $user_ids));
|
||||
$user_ids = array_unique($user_ids);
|
||||
} else
|
||||
$user_ids = [];
|
||||
|
||||
if(!empty($group_ids)) {
|
||||
$group_ids = array_map(function($el) {
|
||||
return abs((int)$el) * -1;
|
||||
}, explode(',', $group_ids));
|
||||
$group_ids = array_unique($group_ids);
|
||||
} else
|
||||
$group_ids = [];
|
||||
|
||||
$ids = array_merge($user_ids, $group_ids);
|
||||
if(sizeof($ids) < 1)
|
||||
return 0;
|
||||
|
||||
if(sizeof($ids) > 10)
|
||||
$this->fail(-10, "Limit of 'ids' is 10");
|
||||
|
||||
$config_limit = OPENVK_ROOT_CONF['openvk']['preferences']['newsfeed']['ignoredSourcesLimit'] ?? 50;
|
||||
$user_ignores = $this->getUser()->getIgnoredSourcesCount();
|
||||
if(($user_ignores + sizeof($ids)) > $config_limit) {
|
||||
$this->fail(-50, "Ignoring limit exceeded");
|
||||
}
|
||||
|
||||
$entities = get_entities($ids);
|
||||
$successes = 0;
|
||||
foreach($entities as $entity) {
|
||||
if(!$entity || $entity->getRealId() === $this->getUser()->getRealId() || $entity->isHideFromGlobalFeedEnabled() || $entity->isIgnoredBy($this->getUser())) continue;
|
||||
|
||||
$entity->addIgnore($this->getUser());
|
||||
$successes += 1;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
function deleteBan(string $user_ids = "", string $group_ids = "")
|
||||
{
|
||||
$this->requireUser();
|
||||
$this->willExecuteWriteAction();
|
||||
|
||||
if(!empty($user_ids)) {
|
||||
$user_ids = array_map(function($el) {
|
||||
return (int)$el;
|
||||
}, explode(',', $user_ids));
|
||||
$user_ids = array_unique($user_ids);
|
||||
} else
|
||||
$user_ids = [];
|
||||
|
||||
if(!empty($group_ids)) {
|
||||
$group_ids = array_map(function($el) {
|
||||
return abs((int)$el) * -1;
|
||||
}, explode(',', $group_ids));
|
||||
$group_ids = array_unique($group_ids);
|
||||
} else
|
||||
$group_ids = [];
|
||||
|
||||
$ids = array_merge($user_ids, $group_ids);
|
||||
if(sizeof($ids) < 1)
|
||||
return 0;
|
||||
|
||||
if(sizeof($ids) > 10)
|
||||
$this->fail(-10, "Limit of ids is 10");
|
||||
|
||||
$entities = get_entities($ids);
|
||||
$successes = 0;
|
||||
foreach($entities as $entity) {
|
||||
if(!$entity || $entity->getRealId() === $this->getUser()->getRealId() || !$entity->isIgnoredBy($this->getUser())) continue;
|
||||
|
||||
$entity->removeIgnore($this->getUser());
|
||||
$successes += 1;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -42,10 +42,11 @@ class Club extends RowModel
|
|||
return iterator_to_array($avPhotos)[0] ?? NULL;
|
||||
}
|
||||
|
||||
function getAvatarUrl(string $size = "miniscule"): string
|
||||
function getAvatarUrl(string $size = "miniscule", $avPhoto = NULL): string
|
||||
{
|
||||
$serverUrl = ovk_scheme(true) . $_SERVER["HTTP_HOST"];
|
||||
$avPhoto = $this->getAvatarPhoto();
|
||||
if(!$avPhoto)
|
||||
$avPhoto = $this->getAvatarPhoto();
|
||||
|
||||
return is_null($avPhoto) ? "$serverUrl/assets/packages/static/openvk/img/camera_200.png" : $avPhoto->getURLBySizeId($size);
|
||||
}
|
||||
|
@ -443,30 +444,57 @@ class Club extends RowModel
|
|||
|
||||
$res->id = $this->getId();
|
||||
$res->name = $this->getName();
|
||||
$res->screen_name = $this->getShortCode();
|
||||
$res->is_closed = 0;
|
||||
$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->is_admin = $user && $this->canBeModifiedBy($user);
|
||||
$res->can_access_closed = true;
|
||||
|
||||
if($user && $this->canBeModifiedBy($user)) {
|
||||
$res->admin_level = 3;
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
$res->is_member = $user && $this->getSubscriptionStatus($user) ? 1 : 0;
|
||||
|
||||
$res->type = "group";
|
||||
$res->photo_50 = $this->getAvatarUrl("miniscule");
|
||||
$res->photo_100 = $this->getAvatarUrl("tiny");
|
||||
$res->photo_200 = $this->getAvatarUrl("normal");
|
||||
|
||||
$res->can_create_topic = $user && $this->canBeModifiedBy($user) ? 1 : ($this->isEveryoneCanCreateTopics() ? 1 : 0);
|
||||
|
||||
$res->can_post = $user && $this->canBeModifiedBy($user) ? 1 : ($this->canPost() ? 1 : 0);
|
||||
|
||||
return $res;
|
||||
}
|
||||
|
||||
use Traits\TBackDrops;
|
||||
use Traits\TSubscribable;
|
||||
use Traits\TAudioStatuses;
|
||||
use Traits\TIgnorable;
|
||||
}
|
||||
|
|
55
Web/Models/Entities/Traits/TIgnorable.php
Normal file
55
Web/Models/Entities/Traits/TIgnorable.php
Normal file
|
@ -0,0 +1,55 @@
|
|||
<?php declare(strict_types=1);
|
||||
namespace openvk\Web\Models\Entities\Traits;
|
||||
use Chandler\Database\DatabaseConnection;
|
||||
use openvk\Web\Models\Entities\User;
|
||||
|
||||
trait TIgnorable
|
||||
{
|
||||
function isIgnoredBy(User $user = NULL): bool
|
||||
{
|
||||
if(!$user)
|
||||
return false;
|
||||
|
||||
$ctx = DatabaseConnection::i()->getContext();
|
||||
$data = [
|
||||
"owner" => $user->getId(),
|
||||
"source" => $this->getRealId(),
|
||||
];
|
||||
|
||||
$sub = $ctx->table("ignored_sources")->where($data);
|
||||
return $sub->count() > 0;
|
||||
}
|
||||
|
||||
function addIgnore(User $for_user): bool
|
||||
{
|
||||
DatabaseConnection::i()->getContext()->table("ignored_sources")->insert([
|
||||
"owner" => $for_user->getId(),
|
||||
"source" => $this->getRealId(),
|
||||
]);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function removeIgnore(User $for_user): bool
|
||||
{
|
||||
DatabaseConnection::i()->getContext()->table("ignored_sources")->where([
|
||||
"owner" => $for_user->getId(),
|
||||
"source" => $this->getRealId(),
|
||||
])->delete();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function toggleIgnore(User $for_user): bool
|
||||
{
|
||||
if($this->isIgnoredBy($for_user)) {
|
||||
$this->removeIgnore($for_user);
|
||||
|
||||
return false;
|
||||
} else {
|
||||
$this->addIgnore($for_user);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -112,7 +112,7 @@ class User extends RowModel
|
|||
return "/id" . $this->getId();
|
||||
}
|
||||
|
||||
function getAvatarUrl(string $size = "miniscule"): string
|
||||
function getAvatarUrl(string $size = "miniscule", $avPhoto = NULL): string
|
||||
{
|
||||
$serverUrl = ovk_scheme(true) . $_SERVER["HTTP_HOST"];
|
||||
|
||||
|
@ -121,7 +121,9 @@ class User extends RowModel
|
|||
else if($this->isBanned())
|
||||
return "$serverUrl/assets/packages/static/openvk/img/banned.jpg";
|
||||
|
||||
$avPhoto = $this->getAvatarPhoto();
|
||||
if(!$avPhoto)
|
||||
$avPhoto = $this->getAvatarPhoto();
|
||||
|
||||
if(is_null($avPhoto))
|
||||
return "$serverUrl/assets/packages/static/openvk/img/camera_200.png";
|
||||
else
|
||||
|
@ -1344,11 +1346,6 @@ class User extends RowModel
|
|||
$res->first_name = $this->getFirstName();
|
||||
$res->last_name = $this->getLastName();
|
||||
$res->deactivated = $this->isDeactivated();
|
||||
$res->photo_50 = $this->getAvatarURL();
|
||||
$res->photo_100 = $this->getAvatarURL("tiny");
|
||||
$res->photo_200 = $this->getAvatarURL("normal");
|
||||
$res->photo_id = !is_null($this->getAvatarPhoto()) ? $this->getAvatarPhoto()->getPrettyId() : NULL;
|
||||
|
||||
$res->is_closed = $this->isClosed();
|
||||
|
||||
if(!is_null($user))
|
||||
|
@ -1357,17 +1354,60 @@ class User extends RowModel
|
|||
if(!is_array($fields))
|
||||
$fields = explode(',', $fields);
|
||||
|
||||
$avatar_photo = $this->getAvatarPhoto();
|
||||
foreach($fields as $field) {
|
||||
switch($field) {
|
||||
case 'is_dead':
|
||||
$res->is_dead = $user->isDead();
|
||||
$res->is_dead = $this->isDead();
|
||||
break;
|
||||
case 'verified':
|
||||
$res->verified = (int)$this->isVerified();
|
||||
break;
|
||||
case 'sex':
|
||||
$res->sex = $this->isFemale() ? 1 : ($this->isNeutral() ? 0 : 2);
|
||||
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 'photo_id':
|
||||
$res->photo_id = $avatar_photo ? $avatar_photo->getPrettyId() : NULL;
|
||||
break;
|
||||
case 'background':
|
||||
$res->background = $this->getBackDropPictureURLs();
|
||||
break;
|
||||
case 'reg_date':
|
||||
$res->reg_date = $this->getRegistrationTime()->timestamp();
|
||||
break;
|
||||
case 'nickname':
|
||||
$res->nickname = $this->getPseudo();
|
||||
break;
|
||||
case 'rating':
|
||||
$res->rating = $this->getRating();
|
||||
break;
|
||||
case 'status':
|
||||
$res->status = $this->getStatus();
|
||||
break;
|
||||
case 'screen_name':
|
||||
$res->screen_name = $this->getShortCode() ?? "id".$this->getId();
|
||||
break;
|
||||
case 'real_id':
|
||||
$res->real_id = $this->getRealId();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return $res;
|
||||
}
|
||||
|
||||
|
||||
function getAudiosCollectionSize()
|
||||
{
|
||||
return (new \openvk\Web\Models\Repositories\Audios)->getUserCollectionSize($this);
|
||||
|
@ -1407,7 +1447,40 @@ class User extends RowModel
|
|||
return $returnArr;
|
||||
}
|
||||
|
||||
function getIgnoredSources(int $offset = 0, int $limit = 10, bool $onlyIds = false)
|
||||
{
|
||||
$sources = DatabaseConnection::i()->getContext()->table("ignored_sources")->where("owner", $this->getId())->limit($limit, $offset)->order('id DESC');
|
||||
$output_array = [];
|
||||
|
||||
foreach($sources as $source) {
|
||||
if($onlyIds) {
|
||||
$output_array[] = (int)$source->source;
|
||||
} else {
|
||||
$ignored_source_model = NULL;
|
||||
$ignored_source_id = (int)$source->source;
|
||||
|
||||
if($ignored_source_id > 0)
|
||||
$ignored_source_model = (new Users)->get($ignored_source_id);
|
||||
else
|
||||
$ignored_source_model = (new Clubs)->get(abs($ignored_source_id));
|
||||
|
||||
if(!$ignored_source_model)
|
||||
continue;
|
||||
|
||||
$output_array[] = $ignored_source_model;
|
||||
}
|
||||
}
|
||||
|
||||
return $output_array;
|
||||
}
|
||||
|
||||
function getIgnoredSourcesCount()
|
||||
{
|
||||
return DatabaseConnection::i()->getContext()->table("ignored_sources")->where("owner", $this->getId())->count();
|
||||
}
|
||||
|
||||
use Traits\TBackDrops;
|
||||
use Traits\TSubscribable;
|
||||
use Traits\TAudioStatuses;
|
||||
use Traits\TIgnorable;
|
||||
}
|
||||
|
|
|
@ -43,6 +43,18 @@ class Clubs
|
|||
return $this->toClub($this->clubs->get($id));
|
||||
}
|
||||
|
||||
function getByIds(array $ids = []): array
|
||||
{
|
||||
$clubs = $this->clubs->select('*')->where('id IN (?)', $ids);
|
||||
$clubs_array = [];
|
||||
|
||||
foreach($clubs as $club) {
|
||||
$clubs_array[] = $this->toClub($club);
|
||||
}
|
||||
|
||||
return $clubs_array;
|
||||
}
|
||||
|
||||
function find(string $query, array $params = [], array $order = ['type' => 'id', 'invert' => false], int $page = 1, ?int $perPage = NULL): \Traversable
|
||||
{
|
||||
$query = "%$query%";
|
||||
|
|
|
@ -28,6 +28,18 @@ class Users
|
|||
{
|
||||
return $this->toUser($this->users->get($id));
|
||||
}
|
||||
|
||||
function getByIds(array $ids = []): array
|
||||
{
|
||||
$users = $this->users->select('*')->where('id IN (?)', $ids);
|
||||
$users_array = [];
|
||||
|
||||
foreach($users as $user) {
|
||||
$users_array[] = $this->toUser($user);
|
||||
}
|
||||
|
||||
return $users_array;
|
||||
}
|
||||
|
||||
function getByShortURL(string $url): ?User
|
||||
{
|
||||
|
|
|
@ -43,6 +43,7 @@ final class GroupPresenter extends OpenVKPresenter
|
|||
}
|
||||
|
||||
$this->template->club = $club;
|
||||
$this->template->ignore_status = $club->isIgnoredBy($this->user->identity);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -54,6 +54,10 @@ final class UserPresenter extends OpenVKPresenter
|
|||
$this->template->audioStatus = $user->getCurrentAudioStatus();
|
||||
|
||||
$this->template->user = $user;
|
||||
|
||||
if($id !== $this->user->id) {
|
||||
$this->template->ignore_status = $user->isIgnoredBy($this->user->identity);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -197,6 +197,16 @@ final class WallPresenter extends OpenVKPresenter
|
|||
if($this->user->identity->getNsfwTolerance() === User::NSFW_INTOLERANT)
|
||||
$queryBase .= " AND `nsfw` = 0";
|
||||
|
||||
if(((int)$this->queryParam('return_banned')) == 0) {
|
||||
$ignored_sources_ids = $this->user->identity->getIgnoredSources(0, OPENVK_ROOT_CONF['openvk']['preferences']['newsfeed']['ignoredSourcesLimit'] ?? 50, true);
|
||||
|
||||
if(sizeof($ignored_sources_ids) > 0) {
|
||||
$imploded_ids = implode("', '", $ignored_sources_ids);
|
||||
|
||||
$queryBase .= " AND `posts`.`wall` NOT IN ('$imploded_ids')";
|
||||
}
|
||||
}
|
||||
|
||||
$posts = DatabaseConnection::i()->getConnection()->query("SELECT `posts`.`id` " . $queryBase . " ORDER BY `created` DESC LIMIT " . $pPage . " OFFSET " . ($page - 1) * $pPage);
|
||||
$count = DatabaseConnection::i()->getConnection()->query("SELECT COUNT(*) " . $queryBase)->fetch()->{"COUNT(*)"};
|
||||
|
||||
|
|
|
@ -243,9 +243,9 @@
|
|||
|
||||
<div class="floating_sidebar">
|
||||
<a id="minilink-friends" class="minilink" href="/friends{$thisUser->getId()}">
|
||||
<object type="internal/link" n:if="$thisUser->getFollowersCount() > 0">
|
||||
<object type="internal/link" n:if="$thisUser->getRequestsCount() > 0">
|
||||
<div class="counter">
|
||||
+{$thisUser->getFollowersCount()}
|
||||
+{$thisUser->getRequestsCount()}
|
||||
</div>
|
||||
</object>
|
||||
<img src="/assets/packages/static/openvk/img/friends.svg">
|
||||
|
@ -387,6 +387,7 @@
|
|||
|
||||
{ifset $thisUser}
|
||||
{script "js/al_notifs.js"}
|
||||
{script "js/al_feed.js"}
|
||||
{/ifset}
|
||||
|
||||
<script>bsdnHydrate();</script>
|
||||
|
|
|
@ -385,8 +385,8 @@
|
|||
<tr>
|
||||
<td class="e">
|
||||
Vladimir Barinov (veselcraft), Celestora, Konstantin Kichulkin (kosfurler),
|
||||
Nikita Volkov (sup_ban), Daniel Myslivets, Maxim Leshchenko (maksales / maksalees)
|
||||
and n1rwana
|
||||
Daniel Myslivets, Maxim Leshchenko (maksales / maksalees), n1rwana and
|
||||
Jillian Österreich (Lumaeris)
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -400,7 +400,7 @@
|
|||
<tr>
|
||||
<td class="e">
|
||||
Vladimir Barinov (veselcraft) and Konstantin Kichulkin (kosfurler)<br/>
|
||||
OpenVK is a free open source software that "cosplays" (or imitates) older versions of a Russian social network called VKontakte. VKontakte belongs to Pavel Durov and VK Group.
|
||||
OpenVK is a free open source software that "cosplays" (or imitates) older versions of a Russian social network called VKontakte. VKontakte belongs to VK (formerly Mail.ru Group).
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -447,7 +447,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="e">Initial hosting</td>
|
||||
<td class="v">Lumaeris and Celestora</td>
|
||||
<td class="v">Jillian Österreich (Lumaeris) and Celestora</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="e">Initial bug-tracker hosting</td>
|
||||
|
@ -459,7 +459,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="e">Illustrations</td>
|
||||
<td class="v">Ash Defenders, Polina Katunina (RousPhaul)</td>
|
||||
<td class="v">Ash Defenders, Polina Katunina (ktp0li)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="e">Best barmaid</td>
|
||||
|
@ -479,9 +479,9 @@
|
|||
</tr>
|
||||
<tr class="e">
|
||||
<td>
|
||||
kovaltim, Vladimir Lapskiy (0x7d5), Alexander Minkin (WerySkok), Polina Katunina (RousPhaul), veth,
|
||||
kovaltim, Vladimir Lapskiy (0x7d5), Alexander Minkin (WerySkok), Polina Katunina (ktp0li), veth,
|
||||
Egor Shevchenko, Vadim Korovin (yuni), Ash Defenders,
|
||||
Pavel Silaev, Dmitriy Daemon, Lumaeris,
|
||||
Pavel Silaev, Dmitriy Daemon, Jillian Österreich (Lumaeris),
|
||||
cmed404 and unknown tester, who disappeared shortly after trying to upload post with cat.
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -194,6 +194,9 @@
|
|||
}
|
||||
</script>
|
||||
{/if}
|
||||
<a n:if="!$club->isHideFromGlobalFeedEnabled()" class="profile_link" style="display:block;" id="__ignoreSomeone" data-val='{!$ignore_status ? 1 : 0}' data-id="{$club->getRealId()}">
|
||||
{if !$ignore_status}{_ignore_club}{else}{_unignore_club}{/if}
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<div class="content_title_expanded" onclick="hidePanel(this);">
|
||||
|
|
|
@ -166,6 +166,9 @@
|
|||
{/if}
|
||||
|
||||
<a class="profile_link" style="display:block;width:96%;" href="javascript:reportUser()">{_report}</a>
|
||||
<a n:if="!$user->isHideFromGlobalFeedEnabled()" class="profile_link" style="display:block;width:96%;" id="__ignoreSomeone" data-val='{!$ignore_status ? 1 : 0}' data-id="{$user->getId()}">
|
||||
{if !$ignore_status}{_ignore_user}{else}{_unignore_user}{/if}
|
||||
</a>
|
||||
<script>
|
||||
function reportUser() {
|
||||
uReportMsgTxt = tr("going_to_report_user");
|
||||
|
|
|
@ -15,6 +15,8 @@
|
|||
<div n:attr="id => (isset($globalFeed) ? 'activetabs' : 'ki')" class="tab">
|
||||
<a n:attr="id => (isset($globalFeed) ? 'act_tab_a' : 'ki')" href="/feed/all">{_all_news}</a>
|
||||
</div>
|
||||
|
||||
<a href='#' id="__feed_settings_link" data-pagescount='{ceil($paginatorConf->count / $paginatorConf->perPage)}'>{_feed_settings}</a>
|
||||
</div>
|
||||
|
||||
<div n:class="postFeedWrapper, $thisUser->hasMicroblogEnabled() ? postFeedWrapperMicroblog">
|
||||
|
|
|
@ -88,3 +88,7 @@ div.ovk-video > div > img
|
|||
height: 31px;
|
||||
min-width: 30px;
|
||||
}
|
||||
|
||||
.entity_vertical_list .entity_vertical_list_item img {
|
||||
border-radius: 20px;
|
||||
}
|
||||
|
|
|
@ -657,6 +657,16 @@ input[type=checkbox]:checked:disabled {
|
|||
background-position: 0 -42px;
|
||||
}
|
||||
|
||||
input[type="number"] {
|
||||
border: 1px solid #C0CAD5;
|
||||
padding: 3px;
|
||||
font-size: 11px;
|
||||
font-family: tahoma, verdana, arial, sans-serif;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
#auth {
|
||||
padding: 10px;
|
||||
}
|
||||
|
@ -2185,6 +2195,10 @@ table td[width="120"] {
|
|||
border-radius: 2px;
|
||||
}
|
||||
|
||||
.mb_tab:hover {
|
||||
background: #e2e0e0;
|
||||
}
|
||||
|
||||
.mb_tab div, .mb_tab > a {
|
||||
padding: 5px 9px;
|
||||
display: block;
|
||||
|
@ -3541,6 +3555,7 @@ hr {
|
|||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
gap: 4px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.entity_vertical_list .entity_vertical_list_item .first_column {
|
||||
|
@ -3701,3 +3716,44 @@ hr {
|
|||
.hoverable_color:hover {
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
#__feed_settings_link {
|
||||
float: right;
|
||||
margin-right: 3px;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
#__feed_settings_link:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#_feed_settings_container {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#_feed_settings_container #__content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 4px;
|
||||
padding: 5px;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#_feed_settings_container #__content .settings_item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
#_feed_settings_container #__content .final_settings_item {
|
||||
align-self: end;
|
||||
margin-top: 74px;
|
||||
}
|
||||
|
||||
#_feed_settings_container #pageNumber {
|
||||
width: 70px;
|
||||
}
|
||||
|
||||
#_feed_settings_container .entity_vertical_list {
|
||||
height: 206px;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
|
270
Web/static/js/al_feed.js
Normal file
270
Web/static/js/al_feed.js
Normal file
|
@ -0,0 +1,270 @@
|
|||
//u('.postFeedPageSelect').attr('style', 'display:none')
|
||||
// Source ignoring
|
||||
u(document).on("click", "#__ignoreSomeone", async (e) => {
|
||||
e.preventDefault()
|
||||
|
||||
const TARGET = u(e.target)
|
||||
const ENTITY_ID = Number(e.target.dataset.id)
|
||||
const VAL = Number(e.target.dataset.val)
|
||||
const ACT = VAL == 1 ? 'ignore' : 'unignore'
|
||||
const METHOD_NAME = ACT == 'ignore' ? 'addBan' : 'deleteBan'
|
||||
const PARAM_NAME = ENTITY_ID < 0 ? 'group_ids' : 'user_ids'
|
||||
const ENTITY_NAME = ENTITY_ID < 0 ? 'club' : 'user'
|
||||
const URL = `/method/newsfeed.${METHOD_NAME}?auth_mechanism=roaming&${PARAM_NAME}=${Math.abs(ENTITY_ID)}`
|
||||
|
||||
TARGET.addClass('lagged')
|
||||
const REQ = await fetch(URL)
|
||||
const RES = await REQ.json()
|
||||
TARGET.removeClass('lagged')
|
||||
|
||||
if(RES.error_code) {
|
||||
switch(RES.error_code) {
|
||||
case -10:
|
||||
fastError(';/')
|
||||
break
|
||||
case -50:
|
||||
fastError(tr('ignored_sources_limit'))
|
||||
break
|
||||
default:
|
||||
fastError(res.error_msg)
|
||||
break
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
if(RES.response == 1) {
|
||||
if(ACT == 'unignore') {
|
||||
TARGET.attr('data-val', '1')
|
||||
TARGET.html(tr(`ignore_${ENTITY_NAME}`))
|
||||
} else {
|
||||
TARGET.attr('data-val', '0')
|
||||
TARGET.html(tr(`unignore_${ENTITY_NAME}`))
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
u(document).on('click', '#__feed_settings_link', (e) => {
|
||||
e.preventDefault()
|
||||
|
||||
let current_tab = 'main';
|
||||
const body = `
|
||||
<div id='_feed_settings_container'>
|
||||
<div id='_tabs'>
|
||||
<div class="mb_tabs">
|
||||
<div class="mb_tab" data-name='main'>
|
||||
<a>
|
||||
${tr('main')}
|
||||
</a>
|
||||
</div>
|
||||
<div class="mb_tab" data-name='ignored'>
|
||||
<a>
|
||||
${tr('ignored_sources')}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id='__content'></div>
|
||||
</div>
|
||||
`
|
||||
|
||||
MessageBox(tr("feed_settings"), body, [tr("close")], [Function.noop])
|
||||
u('.ovk-diag-body').attr('style', 'padding:0px;height: 255px;')
|
||||
|
||||
async function __switchTab(tab)
|
||||
{
|
||||
current_tab = tab
|
||||
u(`#_feed_settings_container .mb_tab`).attr('id', 'ki')
|
||||
u(`#_feed_settings_container .mb_tab[data-name='${tab}']`).attr('id', 'active')
|
||||
u(`#_feed_settings_container .mb_tabs input`).remove()
|
||||
|
||||
switch(current_tab) {
|
||||
case 'main':
|
||||
const __temp_url = new URL(location.href)
|
||||
const PAGES_COUNT = Number(e.target.dataset.pagescount ?? '10')
|
||||
const CURRENT_PERPAGE = Number(__temp_url.searchParams.get('posts') ?? 10)
|
||||
const CURRENT_PAGE = Number(__temp_url.searchParams.get('p') ?? 1)
|
||||
const CURRENT_RETURN_BANNED = Number(__temp_url.searchParams.get('return_banned') ?? 0)
|
||||
const COUNT = [1, 5, 10, 20, 30, 40, 50]
|
||||
u('#_feed_settings_container #__content').html(`
|
||||
<table cellspacing="7" cellpadding="0" border="0" align="center">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td width="120" valign="top">
|
||||
<span class="nobold">${tr('posts_per_page')}</span>
|
||||
</td>
|
||||
<td>
|
||||
<select id="pageSelect"></select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="120" valign="top">
|
||||
<span class="nobold">${tr('start_from_page')}</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type='number' min='1' max='${PAGES_COUNT}' id='pageNumber' value='${CURRENT_PAGE}' placeholder='${CURRENT_PAGE}'>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="120" valign="top">
|
||||
<span class="nobold">
|
||||
<input type='checkbox' id="showIgnored" ${CURRENT_RETURN_BANNED == 1 ? 'checked' : ''}>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
${tr('show_ignored_sources')}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="120" valign="top">
|
||||
</td>
|
||||
<td>
|
||||
<input class='button' type='button' value='${tr('apply')}'>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
`)
|
||||
|
||||
u(`#_feed_settings_container #__content input[type='button']`).on('click', (e) => {
|
||||
const INPUT_PAGES_COUNT = parseInt(u('#_feed_settings_container #__content #pageSelect').nodes[0].selectedOptions[0].value ?? '10')
|
||||
const INPUT_PAGE = parseInt(u('#_feed_settings_container #__content #pageNumber').nodes[0].value ?? '1')
|
||||
const INPUT_IGNORED = Number(u('#_feed_settings_container #__content #showIgnored').nodes[0].checked ?? false)
|
||||
|
||||
const FINAL_URL = new URL(location.href)
|
||||
|
||||
if(CURRENT_PERPAGE != INPUT_PAGES_COUNT) {
|
||||
FINAL_URL.searchParams.set('posts', INPUT_PAGES_COUNT)
|
||||
}
|
||||
|
||||
if(CURRENT_PAGE != INPUT_PAGE && INPUT_PAGE <= PAGES_COUNT) {
|
||||
FINAL_URL.searchParams.set('p', Math.max(1, INPUT_PAGE))
|
||||
}
|
||||
|
||||
if(INPUT_IGNORED == 1) {
|
||||
FINAL_URL.searchParams.set('return_banned', 1)
|
||||
} else {
|
||||
FINAL_URL.searchParams.delete('return_banned')
|
||||
}
|
||||
|
||||
window.location.assign(FINAL_URL.href)
|
||||
})
|
||||
|
||||
COUNT.forEach(item => {
|
||||
u('#_feed_settings_container #pageSelect').append(`
|
||||
<option value="${item}" ${item == CURRENT_PERPAGE ? 'selected' : ''}>${item}</option>
|
||||
`)
|
||||
})
|
||||
|
||||
break
|
||||
case 'ignored':
|
||||
u('#_feed_settings_container #__content').html(`
|
||||
<div id='gif_loader'></div>
|
||||
`)
|
||||
if(!window.openvk.ignored_list) {
|
||||
const IGNORED_RES = await fetch('/method/newsfeed.getBanned?auth_mechanism=roaming&extended=1&fields=real_id,screen_name,photo_50&merge=1')
|
||||
const IGNORED_LIST = await IGNORED_RES.json()
|
||||
|
||||
window.openvk.ignored_list = IGNORED_LIST
|
||||
}
|
||||
|
||||
u('#_feed_settings_container #__content').html(`
|
||||
<div class='entity_vertical_list mini'></div>
|
||||
`)
|
||||
|
||||
u('#_feed_settings_container .mb_tabs').append(`
|
||||
<input class='button lagged' id='_remove_ignores' type='button' value='${tr('stop_ignore')}'>
|
||||
`)
|
||||
|
||||
if(window.openvk.ignored_list.error_code) {
|
||||
fastError(IGNORED_LIST.error_msg)
|
||||
return
|
||||
}
|
||||
|
||||
if(window.openvk.ignored_list.response.items.length < 1) {
|
||||
u('#_feed_settings_container #__content').html(`
|
||||
<div class="information">
|
||||
${tr('no_ignores_count')}
|
||||
</div>`)
|
||||
u('#_remove_ignores').remove()
|
||||
}
|
||||
|
||||
window.openvk.ignored_list.response.items.forEach(ignore_item => {
|
||||
let name = ignore_item.name
|
||||
if(!name) {
|
||||
name = ignore_item.first_name + ' ' + ignore_item.last_name
|
||||
}
|
||||
|
||||
u('#_feed_settings_container #__content .entity_vertical_list').append(`
|
||||
<label class='entity_vertical_list_item with_third_column' data-id='${ignore_item.real_id}'>
|
||||
<div class='first_column'>
|
||||
<a href='/${ignore_item.screen_name}' class='avatar'>
|
||||
<img src='${ignore_item.photo_50}'>
|
||||
</a>
|
||||
|
||||
<div class='info'>
|
||||
<b class='noOverflow'>
|
||||
<a href="/${ignore_item.screen_name}">
|
||||
${ovk_proc_strtr(escapeHtml(name), 100)}
|
||||
</a>
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='third_column' style="display: grid; align-items: center;">
|
||||
<input type='checkbox' name='remove_me'>
|
||||
</div>
|
||||
</label>
|
||||
`)
|
||||
})
|
||||
|
||||
u("#_feed_settings_container").on("click", "input[name='remove_me']", async (e) => {
|
||||
const checks_count = u(`input[name='remove_me']:checked`).length
|
||||
if(checks_count > 0) {
|
||||
u('.mb_tabs #_remove_ignores').removeClass('lagged')
|
||||
} else {
|
||||
u('.mb_tabs #_remove_ignores').addClass('lagged')
|
||||
}
|
||||
|
||||
if(checks_count > 10) {
|
||||
e.preventDefault()
|
||||
}
|
||||
})
|
||||
|
||||
u('#_feed_settings_container').on('click', '#_remove_ignores', async (e) => {
|
||||
e.target.classList.add('lagged')
|
||||
|
||||
const ids = []
|
||||
u('#__content .entity_vertical_list label').nodes.forEach(item => {
|
||||
const _checkbox = item.querySelector(`input[type='checkbox'][name='remove_me']`)
|
||||
if(_checkbox.checked) {
|
||||
ids.push(item.dataset.id)
|
||||
}
|
||||
})
|
||||
|
||||
const user_ids = []
|
||||
const group_ids = []
|
||||
ids.forEach(id => {
|
||||
id > 0 ? user_ids.push(id) : group_ids.push(Math.abs(id))
|
||||
})
|
||||
|
||||
const res = await fetch(`/method/newsfeed.deleteBan?auth_mechanism=roaming&user_ids=${user_ids.join(',')}&group_ids=${group_ids.join(',')}`)
|
||||
const resp = await res.json()
|
||||
if(resp.error_code) {
|
||||
console.error(resp.error_msg)
|
||||
return
|
||||
}
|
||||
|
||||
window.openvk.ignored_list = null
|
||||
__switchTab('ignored')
|
||||
})
|
||||
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
u("#_feed_settings_container").on("click", ".mb_tab a", async (e) => {
|
||||
await __switchTab(u(e.target).closest('.mb_tab').attr('data-name'))
|
||||
})
|
||||
|
||||
__switchTab('main')
|
||||
})
|
754
Web/static/js/package-lock.json
generated
754
Web/static/js/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -1,424 +0,0 @@
|
|||
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||
# yarn lockfile v1
|
||||
|
||||
|
||||
"@atlassian/aui@^9.6.0":
|
||||
version "9.6.0"
|
||||
resolved "https://registry.yarnpkg.com/@atlassian/aui/-/aui-9.6.0.tgz#9f35e67359022f1e6d5efa2653e79aeec95b9e77"
|
||||
integrity sha512-o/bCufj0tUU6pRk3AWoXlcyVMTMx4QswB1UY5oJWSjopA+z/QUx0fhc4rRIIbxP0MrJMNRDpgPyuzkoPb7Z7ow==
|
||||
dependencies:
|
||||
"@atlassian/tipsy" "1.3.3"
|
||||
"@popperjs/core" "2.11.6"
|
||||
backbone "1.4.1"
|
||||
css.escape "1.5.1"
|
||||
dompurify "2.4.5"
|
||||
fancy-file-input "2.0.4"
|
||||
jquery-ui "1.13.2"
|
||||
skatejs "0.13.17"
|
||||
skatejs-template-html "0.0.0"
|
||||
trim-extra-html-whitespace "1.3.0"
|
||||
underscore "1.13.6"
|
||||
|
||||
"@atlassian/tipsy@1.3.3":
|
||||
version "1.3.3"
|
||||
resolved "https://registry.yarnpkg.com/@atlassian/tipsy/-/tipsy-1.3.3.tgz#3f77754c4c70324c5c938e41abaa2ca682f22036"
|
||||
integrity sha512-6jd9wdoiPdCbwsNi1Xrn/oMdGz22dKPeCoZ/cCGKqjnh+UYkBKb5W3spW+WNqRSxGvVtfUEEg6TXotRK/FPDaw==
|
||||
|
||||
"@popperjs/core@2.11.6", "@popperjs/core@^2.9.0":
|
||||
version "2.11.6"
|
||||
resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.6.tgz#cee20bd55e68a1720bdab363ecf0c821ded4cd45"
|
||||
integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==
|
||||
|
||||
asap@~2.0.3:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
|
||||
integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=
|
||||
|
||||
backbone@1.4.1:
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/backbone/-/backbone-1.4.1.tgz#099a78184bc07b034048a8332229c2ccca1e3e62"
|
||||
integrity sha512-ADy1ztN074YkWbHi8ojJVFe3vAanO/lrzMGZWUClIP7oDD/Pjy2vrASraUP+2EVCfIiTtCW4FChVow01XneivA==
|
||||
dependencies:
|
||||
underscore ">=1.8.3"
|
||||
|
||||
codem-isoboxer@0.3.6:
|
||||
version "0.3.6"
|
||||
resolved "https://registry.yarnpkg.com/codem-isoboxer/-/codem-isoboxer-0.3.6.tgz#867f670459b881d44f39168d5ff2a8f14c16151d"
|
||||
integrity sha512-LuO8/7LW6XuR5ERn1yavXAfodGRhuY2yP60JTZIw5yNYMCE5lUVbk3NFUCJxjnphQH+Xemp5hOGb1LgUXm00Xw==
|
||||
|
||||
core-js@^1.0.0:
|
||||
version "1.2.7"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
|
||||
integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=
|
||||
|
||||
create-react-class@^15.7.0:
|
||||
version "15.7.0"
|
||||
resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.7.0.tgz#7499d7ca2e69bb51d13faf59bd04f0c65a1d6c1e"
|
||||
integrity sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng==
|
||||
dependencies:
|
||||
loose-envify "^1.3.1"
|
||||
object-assign "^4.1.1"
|
||||
|
||||
cropperjs@^1.6.1:
|
||||
version "1.6.1"
|
||||
resolved "https://registry.yarnpkg.com/cropperjs/-/cropperjs-1.6.1.tgz#fd132021d93b824b1b0f2c2c3b763419fb792d89"
|
||||
integrity sha512-F4wsi+XkDHCOMrHMYjrTEE4QBOrsHHN5/2VsVAaRq8P7E5z7xQpT75S+f/9WikmBEailas3+yo+6zPIomW+NOA==
|
||||
|
||||
css.escape@1.5.1:
|
||||
version "1.5.1"
|
||||
resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb"
|
||||
integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==
|
||||
|
||||
dashjs@^4.3.0:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.yarnpkg.com/dashjs/-/dashjs-4.3.0.tgz#cccda5a490cabf6c3b48aa887ec8c8ac0df1a233"
|
||||
integrity sha512-cqpnJaPQpEY4DsEdF9prwD00+5dp5EGHCFc7yo9n2uuAH9k4zPkZJwXQ8dXmVRhPf3M89JfKSoAYIP3dbXmqcg==
|
||||
dependencies:
|
||||
codem-isoboxer "0.3.6"
|
||||
es6-promise "^4.2.8"
|
||||
fast-deep-equal "2.0.1"
|
||||
html-entities "^1.2.1"
|
||||
imsc "^1.0.2"
|
||||
localforage "^1.7.1"
|
||||
|
||||
dompurify@2.4.5:
|
||||
version "2.4.5"
|
||||
resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.4.5.tgz#0e89a27601f0bad978f9a924e7a05d5d2cccdd87"
|
||||
integrity sha512-jggCCd+8Iqp4Tsz0nIvpcb22InKEBrGz5dw3EQJMs8HPJDsKbFIO3STYtAvCfDx26Muevn1MHVI0XxjgFfmiSA==
|
||||
|
||||
encoding@^0.1.11:
|
||||
version "0.1.13"
|
||||
resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9"
|
||||
integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==
|
||||
dependencies:
|
||||
iconv-lite "^0.6.2"
|
||||
|
||||
es6-promise@^4.2.8:
|
||||
version "4.2.8"
|
||||
resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a"
|
||||
integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==
|
||||
|
||||
event-lite@^0.1.1:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/event-lite/-/event-lite-0.1.2.tgz#838a3e0fdddef8cc90f128006c8e55a4e4e4c11b"
|
||||
integrity sha512-HnSYx1BsJ87/p6swwzv+2v6B4X+uxUteoDfRxsAb1S1BePzQqOLevVmkdA15GHJVd9A9Ok6wygUR18Hu0YeV9g==
|
||||
|
||||
fancy-file-input@2.0.4:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/fancy-file-input/-/fancy-file-input-2.0.4.tgz#698c216482e07649a827681c4db3054fddc9a32b"
|
||||
integrity sha512-l+J0WwDl4nM/zMJ/C8qleYnXMUJKsLng7c5uWH/miAiHoTvPDtEoLW1tmVO6Cy2O8i/1VfA+2YOwg/Q3+kgO6w==
|
||||
|
||||
fast-deep-equal@2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
|
||||
integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
|
||||
|
||||
fbjs@^0.8.0:
|
||||
version "0.8.17"
|
||||
resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd"
|
||||
integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=
|
||||
dependencies:
|
||||
core-js "^1.0.0"
|
||||
isomorphic-fetch "^2.1.1"
|
||||
loose-envify "^1.0.0"
|
||||
object-assign "^4.1.0"
|
||||
promise "^7.1.1"
|
||||
setimmediate "^1.0.5"
|
||||
ua-parser-js "^0.7.18"
|
||||
|
||||
handlebars@^4.7.7:
|
||||
version "4.7.7"
|
||||
resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1"
|
||||
integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==
|
||||
dependencies:
|
||||
minimist "^1.2.5"
|
||||
neo-async "^2.6.0"
|
||||
source-map "^0.6.1"
|
||||
wordwrap "^1.0.0"
|
||||
optionalDependencies:
|
||||
uglify-js "^3.1.4"
|
||||
|
||||
html-entities@^1.2.1:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc"
|
||||
integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==
|
||||
|
||||
iconv-lite@^0.6.2:
|
||||
version "0.6.3"
|
||||
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
|
||||
integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
|
||||
dependencies:
|
||||
safer-buffer ">= 2.1.2 < 3.0.0"
|
||||
|
||||
id3js@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/id3js/-/id3js-2.1.1.tgz#0c307d0d2f194bc5fa7a809bbed0b1a93577f16d"
|
||||
integrity sha512-9Gi+sG0RHSa5qn8hkwi2KCl+2jV8YrtiZidXbOO3uLfRAxc2jilRg0fiQ3CbeoAmR7G7ap3RVs1kqUVhIyZaog==
|
||||
|
||||
ieee754@^1.1.8:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
|
||||
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
|
||||
|
||||
immediate@~3.0.5:
|
||||
version "3.0.6"
|
||||
resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
|
||||
integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=
|
||||
|
||||
imsc@^1.0.2:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/imsc/-/imsc-1.1.3.tgz#e96a60a50d4000dd7b44097272768b9fd6a4891d"
|
||||
integrity sha512-IY0hMkVTNoqoYwKEp5UvNNKp/A5jeJUOrIO7judgOyhHT+xC6PA4VBOMAOhdtAYbMRHx9DTgI8p6Z6jhYQPFDA==
|
||||
dependencies:
|
||||
sax "1.2.1"
|
||||
|
||||
int64-buffer@^0.1.9:
|
||||
version "0.1.10"
|
||||
resolved "https://registry.yarnpkg.com/int64-buffer/-/int64-buffer-0.1.10.tgz#277b228a87d95ad777d07c13832022406a473423"
|
||||
integrity sha1-J3siiofZWtd30HwTgyAiQGpHNCM=
|
||||
|
||||
is-stream@^1.0.1:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
|
||||
integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
|
||||
|
||||
isarray@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
|
||||
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
|
||||
|
||||
isomorphic-fetch@^2.1.1:
|
||||
version "2.2.1"
|
||||
resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9"
|
||||
integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=
|
||||
dependencies:
|
||||
node-fetch "^1.0.1"
|
||||
whatwg-fetch ">=0.10.0"
|
||||
|
||||
jquery-ui@1.13.2:
|
||||
version "1.13.2"
|
||||
resolved "https://registry.yarnpkg.com/jquery-ui/-/jquery-ui-1.13.2.tgz#de03580ae6604773602f8d786ad1abfb75232034"
|
||||
integrity sha512-wBZPnqWs5GaYJmo1Jj0k/mrSkzdQzKDwhXNtHKcBdAcKVxMM3KNYFq+iJ2i1rwiG53Z8M4mTn3Qxrm17uH1D4Q==
|
||||
dependencies:
|
||||
jquery ">=1.8.0 <4.0.0"
|
||||
|
||||
"jquery@>=1.8.0 <4.0.0":
|
||||
version "3.6.0"
|
||||
resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470"
|
||||
integrity sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==
|
||||
|
||||
jquery@^3.0.0:
|
||||
version "3.7.0"
|
||||
resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.7.0.tgz#fe2c01a05da500709006d8790fe21c8a39d75612"
|
||||
integrity sha512-umpJ0/k8X0MvD1ds0P9SfowREz2LenHsQaxSohMZ5OMNEU2r0tf8pdeEFTHMFxWVxKNyU9rTtK3CWzUCTKJUeQ==
|
||||
|
||||
"js-tokens@^3.0.0 || ^4.0.0":
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
|
||||
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
|
||||
|
||||
knockout@^3.5.1:
|
||||
version "3.5.1"
|
||||
resolved "https://registry.yarnpkg.com/knockout/-/knockout-3.5.1.tgz#62c81e81843bea2008fd23c575edd9ca978e75cf"
|
||||
integrity sha512-wRJ9I4az0QcsH7A4v4l0enUpkS++MBx0BnL/68KaLzJg7x1qmbjSlwEoCNol7KTYZ+pmtI7Eh2J0Nu6/2Z5J/Q==
|
||||
|
||||
ky@^0.19.0:
|
||||
version "0.19.0"
|
||||
resolved "https://registry.yarnpkg.com/ky/-/ky-0.19.0.tgz#d6ad117e89efe2d85a1c2e91462d48ca1cda1f7a"
|
||||
integrity sha512-RkDgbg5ahMv1MjHfJI2WJA2+Qbxq0iNSLWhreYiCHeHry9Q12sedCnP5KYGPt7sydDvsyH+8UcG6Kanq5mpsyw==
|
||||
|
||||
lie@3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e"
|
||||
integrity sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=
|
||||
dependencies:
|
||||
immediate "~3.0.5"
|
||||
|
||||
literallycanvas@^0.5.2:
|
||||
version "0.5.2"
|
||||
resolved "https://registry.yarnpkg.com/literallycanvas/-/literallycanvas-0.5.2.tgz#7d4800a8d9c4b38a593e91695d52466689586abd"
|
||||
integrity sha512-SPxZ0DfzUWOXBPnsFD/Y1OulGKpv33IKGB+DCoUkNKQsc38kRDy1mGjbWbs/JAAyIGM1C9Y0CYI23SQmtXR5aw==
|
||||
dependencies:
|
||||
react-addons-pure-render-mixin "^15.1"
|
||||
|
||||
localforage@^1.7.1:
|
||||
version "1.10.0"
|
||||
resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.10.0.tgz#5c465dc5f62b2807c3a84c0c6a1b1b3212781dd4"
|
||||
integrity sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==
|
||||
dependencies:
|
||||
lie "3.1.1"
|
||||
|
||||
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
|
||||
integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
|
||||
dependencies:
|
||||
js-tokens "^3.0.0 || ^4.0.0"
|
||||
|
||||
minimist@^1.2.5:
|
||||
version "1.2.6"
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
|
||||
integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
|
||||
|
||||
monaco-editor@^0.20.0:
|
||||
version "0.20.0"
|
||||
resolved "https://registry.yarnpkg.com/monaco-editor/-/monaco-editor-0.20.0.tgz#5d5009343a550124426cb4d965a4d27a348b4dea"
|
||||
integrity sha512-hkvf4EtPJRMQlPC3UbMoRs0vTAFAYdzFQ+gpMb8A+9znae1c43q8Mab9iVsgTcg/4PNiLGGn3SlDIa8uvK1FIQ==
|
||||
|
||||
msgpack-lite@^0.1.26:
|
||||
version "0.1.26"
|
||||
resolved "https://registry.yarnpkg.com/msgpack-lite/-/msgpack-lite-0.1.26.tgz#dd3c50b26f059f25e7edee3644418358e2a9ad89"
|
||||
integrity sha1-3TxQsm8FnyXn7e42REGDWOKprYk=
|
||||
dependencies:
|
||||
event-lite "^0.1.1"
|
||||
ieee754 "^1.1.8"
|
||||
int64-buffer "^0.1.9"
|
||||
isarray "^1.0.0"
|
||||
|
||||
neo-async@^2.6.0:
|
||||
version "2.6.2"
|
||||
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
|
||||
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
|
||||
|
||||
node-fetch@^1.0.1:
|
||||
version "1.7.3"
|
||||
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
|
||||
integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==
|
||||
dependencies:
|
||||
encoding "^0.1.11"
|
||||
is-stream "^1.0.1"
|
||||
|
||||
object-assign@^4.1.0, object-assign@^4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
|
||||
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
|
||||
|
||||
plotly.js-dist@^1.52.3:
|
||||
version "1.52.3"
|
||||
resolved "https://registry.yarnpkg.com/plotly.js-dist/-/plotly.js-dist-1.52.3.tgz#4c16c6da6adab6cdba169087b5005bdddbf10834"
|
||||
integrity sha512-kpuNwveRk6M/5cCW1ZgJTbMLD0bRZhJlLK0cUHVkTsP/PWKCVJqO3QiiqrypFGE/xEhWfHCY+YKAKjMmEbo4Gw==
|
||||
|
||||
promise@^7.1.1:
|
||||
version "7.3.1"
|
||||
resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
|
||||
integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==
|
||||
dependencies:
|
||||
asap "~2.0.3"
|
||||
|
||||
react-addons-pure-render-mixin@^15.1:
|
||||
version "15.6.3"
|
||||
resolved "https://registry.yarnpkg.com/react-addons-pure-render-mixin/-/react-addons-pure-render-mixin-15.6.3.tgz#5dc73af0fa32186dbc4887f20667b46d3f9caed7"
|
||||
integrity sha512-e7F2OsLiyYGr9SHWHGlI/FfHRh+kbYx0hNfdN5zivHIf4vzeno7gsRJKXg71E35CpUCnre+JfM6UgWWgsvJBzA==
|
||||
dependencies:
|
||||
object-assign "^4.1.0"
|
||||
|
||||
react-dom-factories@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/react-dom-factories/-/react-dom-factories-1.0.2.tgz#eb7705c4db36fb501b3aa38ff759616aa0ff96e0"
|
||||
integrity sha1-63cFxNs2+1AbOqOP91lhaqD/luA=
|
||||
|
||||
react-dom@15.1:
|
||||
version "15.1.0"
|
||||
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.1.0.tgz#d0c2b24c8b47a41a2b9ec766662d4e686f353153"
|
||||
integrity sha1-0MKyTItHpBornsdmZi1OaG81MVM=
|
||||
|
||||
react@15.1:
|
||||
version "15.1.0"
|
||||
resolved "https://registry.yarnpkg.com/react/-/react-15.1.0.tgz#5f7a9f085a00509898efd2b24cb12ea1dfaf8b40"
|
||||
integrity sha1-X3qfCFoAUJiY79KyTLEuod+vi0A=
|
||||
dependencies:
|
||||
fbjs "^0.8.0"
|
||||
loose-envify "^1.1.0"
|
||||
object-assign "^4.1.0"
|
||||
|
||||
requirejs@^2.3.6:
|
||||
version "2.3.6"
|
||||
resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.6.tgz#e5093d9601c2829251258c0b9445d4d19fa9e7c9"
|
||||
integrity sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==
|
||||
|
||||
"safer-buffer@>= 2.1.2 < 3.0.0":
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
||||
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||
|
||||
sax@1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a"
|
||||
integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o=
|
||||
|
||||
setimmediate@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
|
||||
integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
|
||||
|
||||
skatejs-template-html@0.0.0:
|
||||
version "0.0.0"
|
||||
resolved "https://registry.yarnpkg.com/skatejs-template-html/-/skatejs-template-html-0.0.0.tgz#e990c1a7d4b58b7305ffcc3338939bf402023df7"
|
||||
integrity sha1-6ZDBp9S1i3MF/8wzOJOb9AICPfc=
|
||||
|
||||
skatejs@0.13.17:
|
||||
version "0.13.17"
|
||||
resolved "https://registry.yarnpkg.com/skatejs/-/skatejs-0.13.17.tgz#7a21fbb3434da45e52b47b61647168ee9e778071"
|
||||
integrity sha1-eiH7s0NNpF5StHthZHFo7p53gHE=
|
||||
|
||||
soundjs@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/soundjs/-/soundjs-1.0.1.tgz#99970542d28d0df2a1ebd061ae75c961a98c8180"
|
||||
integrity sha512-MgFPvmKYfpcNiE3X5XybNvScie3DMQlZgmNzUn4puBcpw64f4LqjH/fhM8Sb/eTJ8hK57Crr7mWy0bfJOqPj6Q==
|
||||
|
||||
source-map@^0.6.1:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
|
||||
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
|
||||
|
||||
textfit@^2.4.0:
|
||||
version "2.4.0"
|
||||
resolved "https://registry.yarnpkg.com/textfit/-/textfit-2.4.0.tgz#80cba8006bfb9c3d9d552739257957bdda95c79c"
|
||||
integrity sha512-/x4aoY5+/tJmu+iwpBH1yw75TFp86M6X15SvaaY/Eep7YySQYtqdOifEtfvVyMwzl7SZ+G4RQw00FD9g5R6i1Q==
|
||||
|
||||
tippy.js@^6.3.7:
|
||||
version "6.3.7"
|
||||
resolved "https://registry.yarnpkg.com/tippy.js/-/tippy.js-6.3.7.tgz#8ccfb651d642010ed9a32ff29b0e9e19c5b8c61c"
|
||||
integrity sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==
|
||||
dependencies:
|
||||
"@popperjs/core" "^2.9.0"
|
||||
|
||||
trim-extra-html-whitespace@1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/trim-extra-html-whitespace/-/trim-extra-html-whitespace-1.3.0.tgz#b47efb0d1a5f2a56a85cc45cea525651e93404cf"
|
||||
integrity sha1-tH77DRpfKlaoXMRc6lJWUek0BM8=
|
||||
|
||||
ua-parser-js@^0.7.18:
|
||||
version "0.7.33"
|
||||
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.33.tgz#1d04acb4ccef9293df6f70f2c3d22f3030d8b532"
|
||||
integrity sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==
|
||||
|
||||
uglify-js@^3.1.4:
|
||||
version "3.17.3"
|
||||
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.3.tgz#f0feedf019c4510f164099e8d7e72ff2d7304377"
|
||||
integrity sha512-JmMFDME3iufZnBpyKL+uS78LRiC+mK55zWfM5f/pWBJfpOttXAqYfdDGRukYhJuyRinvPVAtUhvy7rlDybNtFg==
|
||||
|
||||
umbrellajs@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/umbrellajs/-/umbrellajs-3.1.0.tgz#a4e6f0f6381f9d93110b5eee962e0e0864b10bd0"
|
||||
integrity sha512-3qichMg1Q6EetLweBAT0L55O2W6CJe9qyiSt1RBnf+bcOqwJ4R7e2PDcoIUrCsg+uRo3DXOvurWdklBu0ia7fg==
|
||||
|
||||
underscore@1.13.6:
|
||||
version "1.13.6"
|
||||
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441"
|
||||
integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==
|
||||
|
||||
underscore@>=1.8.3:
|
||||
version "1.13.1"
|
||||
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.1.tgz#0c1c6bd2df54b6b69f2314066d65b6cde6fcf9d1"
|
||||
integrity sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==
|
||||
|
||||
whatwg-fetch@>=0.10.0:
|
||||
version "3.6.2"
|
||||
resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c"
|
||||
integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==
|
||||
|
||||
wordwrap@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
|
||||
integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==
|
|
@ -293,6 +293,45 @@ function parseAttachments($attachments, array $allow_types = ['photo', 'video',
|
|||
return $output_attachments;
|
||||
}
|
||||
|
||||
function get_entity_by_id(int $id)
|
||||
{
|
||||
if($id > 0)
|
||||
return (new openvk\Web\Models\Repositories\Users)->get($id);
|
||||
|
||||
return (new openvk\Web\Models\Repositories\Clubs)->get(abs($id));
|
||||
}
|
||||
|
||||
function get_entities(array $ids = []): array
|
||||
{
|
||||
$main_result = [];
|
||||
$users = [];
|
||||
$clubs = [];
|
||||
foreach($ids as $id) {
|
||||
$id = (int)$id;
|
||||
if($id < 0)
|
||||
$clubs[] = abs($id);
|
||||
|
||||
if($id > 0)
|
||||
$users[] = $id;
|
||||
}
|
||||
|
||||
if(sizeof($users) > 0) {
|
||||
$users_tmp = (new openvk\Web\Models\Repositories\Users)->getByIds($users);
|
||||
foreach($users_tmp as $user) {
|
||||
$main_result[] = $user;
|
||||
}
|
||||
}
|
||||
|
||||
if(sizeof($clubs) > 0) {
|
||||
$clubs_tmp = (new openvk\Web\Models\Repositories\Clubs)->getByIds($clubs);
|
||||
foreach($clubs_tmp as $club) {
|
||||
$main_result[] = $club;
|
||||
}
|
||||
}
|
||||
|
||||
return $main_result;
|
||||
}
|
||||
|
||||
function ovk_scheme(bool $with_slashes = false): string
|
||||
{
|
||||
$scheme = ovk_is_ssl() ? "https" : "http";
|
||||
|
|
373
composer.lock
generated
373
composer.lock
generated
|
@ -4,7 +4,7 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "0d3b0eb1916eaf088444ef637743284a",
|
||||
"content-hash": "987e26c5520b71fccd0cd31de00eead2",
|
||||
"packages": [
|
||||
{
|
||||
"name": "al/emoji-detector",
|
||||
|
@ -197,16 +197,16 @@
|
|||
},
|
||||
{
|
||||
"name": "chillerlan/php-settings-container",
|
||||
"version": "3.2.0",
|
||||
"version": "3.2.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/chillerlan/php-settings-container.git",
|
||||
"reference": "8f93648fac8e6bacac8e00a8d325eba4950295e6"
|
||||
"reference": "95ed3e9676a1d47cab2e3174d19b43f5dbf52681"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/chillerlan/php-settings-container/zipball/8f93648fac8e6bacac8e00a8d325eba4950295e6",
|
||||
"reference": "8f93648fac8e6bacac8e00a8d325eba4950295e6",
|
||||
"url": "https://api.github.com/repos/chillerlan/php-settings-container/zipball/95ed3e9676a1d47cab2e3174d19b43f5dbf52681",
|
||||
"reference": "95ed3e9676a1d47cab2e3174d19b43f5dbf52681",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -214,15 +214,16 @@
|
|||
"php": "^8.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"phan/phan": "^5.4",
|
||||
"phpmd/phpmd": "^2.15",
|
||||
"phpstan/phpstan": "^1.11",
|
||||
"phpstan/phpstan-deprecation-rules": "^1.2",
|
||||
"phpunit/phpunit": "^10.5",
|
||||
"squizlabs/php_codesniffer": "^3.9"
|
||||
"squizlabs/php_codesniffer": "^3.10"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"chillerlan\\Settings\\": "src/"
|
||||
"chillerlan\\Settings\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
|
@ -258,7 +259,7 @@
|
|||
"type": "ko_fi"
|
||||
}
|
||||
],
|
||||
"time": "2024-03-02T20:07:15+00:00"
|
||||
"time": "2024-07-16T11:13:48+00:00"
|
||||
},
|
||||
{
|
||||
"name": "erusev/parsedown",
|
||||
|
@ -266,20 +267,20 @@
|
|||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/erusev/parsedown.git",
|
||||
"reference": "1ff038273949df7d6a455352659a878f3c89b29c"
|
||||
"reference": "582f9f9cd12a894a0901bef1652854a3c5a1d874"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/erusev/parsedown/zipball/1ff038273949df7d6a455352659a878f3c89b29c",
|
||||
"reference": "1ff038273949df7d6a455352659a878f3c89b29c",
|
||||
"url": "https://api.github.com/repos/erusev/parsedown/zipball/582f9f9cd12a894a0901bef1652854a3c5a1d874",
|
||||
"reference": "582f9f9cd12a894a0901bef1652854a3c5a1d874",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-mbstring": "*",
|
||||
"php": ">=5.3.0"
|
||||
"php": ">=7.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^4.8.35"
|
||||
"phpunit/phpunit": "^7.5|^8.5|^9.6"
|
||||
},
|
||||
"default-branch": true,
|
||||
"type": "library",
|
||||
|
@ -309,7 +310,7 @@
|
|||
"issues": "https://github.com/erusev/parsedown/issues",
|
||||
"source": "https://github.com/erusev/parsedown/tree/master"
|
||||
},
|
||||
"time": "2024-03-12T05:27:45+00:00"
|
||||
"time": "2024-10-12T07:06:08+00:00"
|
||||
},
|
||||
{
|
||||
"name": "ezyang/htmlpurifier",
|
||||
|
@ -317,12 +318,12 @@
|
|||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/ezyang/htmlpurifier.git",
|
||||
"reference": "4828fdf45a93eeeacfcbcc855f96f9a7e6b4ed44"
|
||||
"reference": "cb56001e54359df7ae76dc522d08845dc741621b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/4828fdf45a93eeeacfcbcc855f96f9a7e6b4ed44",
|
||||
"reference": "4828fdf45a93eeeacfcbcc855f96f9a7e6b4ed44",
|
||||
"url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/cb56001e54359df7ae76dc522d08845dc741621b",
|
||||
"reference": "cb56001e54359df7ae76dc522d08845dc741621b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -369,9 +370,9 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/ezyang/htmlpurifier/issues",
|
||||
"source": "https://github.com/ezyang/htmlpurifier/tree/master"
|
||||
"source": "https://github.com/ezyang/htmlpurifier/tree/v4.18.0"
|
||||
},
|
||||
"time": "2024-03-13T03:41:45+00:00"
|
||||
"time": "2024-11-01T03:51:45+00:00"
|
||||
},
|
||||
{
|
||||
"name": "guzzlehttp/guzzle",
|
||||
|
@ -678,12 +679,12 @@
|
|||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/JamesHeinrich/getID3.git",
|
||||
"reference": "143af3325ee40e77c5d041d3f674c8bdd4762dc7"
|
||||
"reference": "eb358a0d4943c0cc23e783f1a72141f46153c13a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/JamesHeinrich/getID3/zipball/143af3325ee40e77c5d041d3f674c8bdd4762dc7",
|
||||
"reference": "143af3325ee40e77c5d041d3f674c8bdd4762dc7",
|
||||
"url": "https://api.github.com/repos/JamesHeinrich/getID3/zipball/eb358a0d4943c0cc23e783f1a72141f46153c13a",
|
||||
"reference": "eb358a0d4943c0cc23e783f1a72141f46153c13a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -738,7 +739,7 @@
|
|||
"issues": "https://github.com/JamesHeinrich/getID3/issues",
|
||||
"source": "https://github.com/JamesHeinrich/getID3/tree/master"
|
||||
},
|
||||
"time": "2024-03-26T12:26:30+00:00"
|
||||
"time": "2024-09-20T19:45:51+00:00"
|
||||
},
|
||||
{
|
||||
"name": "league/uri",
|
||||
|
@ -1099,20 +1100,20 @@
|
|||
},
|
||||
{
|
||||
"name": "psr/http-factory",
|
||||
"version": "1.0.2",
|
||||
"version": "1.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-fig/http-factory.git",
|
||||
"reference": "e616d01114759c4c489f93b099585439f795fe35"
|
||||
"reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35",
|
||||
"reference": "e616d01114759c4c489f93b099585439f795fe35",
|
||||
"url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
|
||||
"reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.0.0",
|
||||
"php": ">=7.1",
|
||||
"psr/http-message": "^1.0 || ^2.0"
|
||||
},
|
||||
"type": "library",
|
||||
|
@ -1136,7 +1137,7 @@
|
|||
"homepage": "https://www.php-fig.org/"
|
||||
}
|
||||
],
|
||||
"description": "Common interfaces for PSR-7 HTTP message factories",
|
||||
"description": "PSR-17: Common interfaces for PSR-7 HTTP message factories",
|
||||
"keywords": [
|
||||
"factory",
|
||||
"http",
|
||||
|
@ -1148,9 +1149,9 @@
|
|||
"response"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/php-fig/http-factory/tree/1.0.2"
|
||||
"source": "https://github.com/php-fig/http-factory"
|
||||
},
|
||||
"time": "2023-04-10T20:10:41+00:00"
|
||||
"time": "2024-04-15T12:06:14+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/http-message",
|
||||
|
@ -1318,21 +1319,22 @@
|
|||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/scssphp/scssphp.git",
|
||||
"reference": "5659341b5da400dafd5672171215f4534c06236b"
|
||||
"reference": "12d3cdf0fc2a73e9438ded5a5a82fb353b68d718"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/scssphp/scssphp/zipball/5659341b5da400dafd5672171215f4534c06236b",
|
||||
"reference": "5659341b5da400dafd5672171215f4534c06236b",
|
||||
"url": "https://api.github.com/repos/scssphp/scssphp/zipball/12d3cdf0fc2a73e9438ded5a5a82fb353b68d718",
|
||||
"reference": "12d3cdf0fc2a73e9438ded5a5a82fb353b68d718",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-ctype": "*",
|
||||
"ext-json": "*",
|
||||
"league/uri": "^7.4@dev",
|
||||
"league/uri-interfaces": "^7.3",
|
||||
"league/uri": "^7.4",
|
||||
"league/uri-interfaces": "^7.4",
|
||||
"php": ">=8.1",
|
||||
"symfony/filesystem": "^5.4 || ^6.0 || ^7.0"
|
||||
"symfony/filesystem": "^5.4 || ^6.0 || ^7.0",
|
||||
"symfony/polyfill-mbstring": "^1.30"
|
||||
},
|
||||
"require-dev": {
|
||||
"bamarni/composer-bin-plugin": "^1.4",
|
||||
|
@ -1347,8 +1349,7 @@
|
|||
"zurb/foundation": "~6.7.0"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-iconv": "Can be used as fallback when ext-mbstring is not available",
|
||||
"ext-mbstring": "For best performance, mbstring should be installed as it is faster than ext-iconv"
|
||||
"ext-mbstring": "For best performance, mbstring should be installed as it is faster than the polyfill"
|
||||
},
|
||||
"default-branch": true,
|
||||
"type": "library",
|
||||
|
@ -1392,7 +1393,7 @@
|
|||
"issues": "https://github.com/scssphp/scssphp/issues",
|
||||
"source": "https://github.com/scssphp/scssphp/tree/main"
|
||||
},
|
||||
"time": "2024-01-13T13:17:46+00:00"
|
||||
"time": "2024-10-24T15:03:30+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/console",
|
||||
|
@ -1400,12 +1401,12 @@
|
|||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/console.git",
|
||||
"reference": "39f75d9d73d0c11952fdcecf4877b4d0f62a8f6e"
|
||||
"reference": "108d436c2af470858bdaba3257baab3a74172017"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/console/zipball/39f75d9d73d0c11952fdcecf4877b4d0f62a8f6e",
|
||||
"reference": "39f75d9d73d0c11952fdcecf4877b4d0f62a8f6e",
|
||||
"url": "https://api.github.com/repos/symfony/console/zipball/108d436c2af470858bdaba3257baab3a74172017",
|
||||
"reference": "108d436c2af470858bdaba3257baab3a74172017",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -1491,20 +1492,20 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-02-20T16:33:57+00:00"
|
||||
"time": "2024-10-08T07:27:17+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/deprecation-contracts",
|
||||
"version": "v3.4.0",
|
||||
"version": "v3.5.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/deprecation-contracts.git",
|
||||
"reference": "7c3aff79d10325257a001fcf92d991f24fc967cf"
|
||||
"reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf",
|
||||
"reference": "7c3aff79d10325257a001fcf92d991f24fc967cf",
|
||||
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1",
|
||||
"reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -1513,7 +1514,7 @@
|
|||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "3.4-dev"
|
||||
"dev-main": "3.5-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/contracts",
|
||||
|
@ -1542,7 +1543,7 @@
|
|||
"description": "A generic function and convention to trigger deprecation notices",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0"
|
||||
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -1558,27 +1559,30 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-05-23T14:45:45+00:00"
|
||||
"time": "2024-04-18T09:32:20+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/filesystem",
|
||||
"version": "v6.4.3",
|
||||
"version": "v7.2.0-BETA1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/filesystem.git",
|
||||
"reference": "7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb"
|
||||
"reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/filesystem/zipball/7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb",
|
||||
"reference": "7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb",
|
||||
"url": "https://api.github.com/repos/symfony/filesystem/zipball/b8dce482de9d7c9fe2891155035a7248ab5c7fdb",
|
||||
"reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.1",
|
||||
"php": ">=8.2",
|
||||
"symfony/polyfill-ctype": "~1.8",
|
||||
"symfony/polyfill-mbstring": "~1.8"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/process": "^6.4|^7.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
|
@ -1605,7 +1609,7 @@
|
|||
"description": "Provides basic utilities for the filesystem",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/filesystem/tree/v6.4.3"
|
||||
"source": "https://github.com/symfony/filesystem/tree/v7.2.0-BETA1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -1621,24 +1625,24 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-01-23T14:51:35+00:00"
|
||||
"time": "2024-10-25T15:15:23+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-ctype",
|
||||
"version": "v1.29.0",
|
||||
"version": "v1.31.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-ctype.git",
|
||||
"reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4"
|
||||
"reference": "a3cc8b044a6ea513310cbd48ef7333b384945638"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4",
|
||||
"reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638",
|
||||
"reference": "a3cc8b044a6ea513310cbd48ef7333b384945638",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1"
|
||||
"php": ">=7.2"
|
||||
},
|
||||
"provide": {
|
||||
"ext-ctype": "*"
|
||||
|
@ -1684,7 +1688,7 @@
|
|||
"portable"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0"
|
||||
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -1700,24 +1704,24 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-01-29T20:11:03+00:00"
|
||||
"time": "2024-09-09T11:45:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-intl-grapheme",
|
||||
"version": "v1.29.0",
|
||||
"version": "v1.31.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
|
||||
"reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f"
|
||||
"reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f",
|
||||
"reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
|
||||
"reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1"
|
||||
"php": ">=7.2"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-intl": "For best performance"
|
||||
|
@ -1762,7 +1766,7 @@
|
|||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0"
|
||||
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -1778,26 +1782,25 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-01-29T20:11:03+00:00"
|
||||
"time": "2024-09-09T11:45:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-intl-idn",
|
||||
"version": "v1.29.0",
|
||||
"version": "v1.31.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-intl-idn.git",
|
||||
"reference": "a287ed7475f85bf6f61890146edbc932c0fff919"
|
||||
"reference": "c36586dcf89a12315939e00ec9b4474adcb1d773"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a287ed7475f85bf6f61890146edbc932c0fff919",
|
||||
"reference": "a287ed7475f85bf6f61890146edbc932c0fff919",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/c36586dcf89a12315939e00ec9b4474adcb1d773",
|
||||
"reference": "c36586dcf89a12315939e00ec9b4474adcb1d773",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1",
|
||||
"symfony/polyfill-intl-normalizer": "^1.10",
|
||||
"symfony/polyfill-php72": "^1.10"
|
||||
"php": ">=7.2",
|
||||
"symfony/polyfill-intl-normalizer": "^1.10"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-intl": "For best performance"
|
||||
|
@ -1846,7 +1849,7 @@
|
|||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.29.0"
|
||||
"source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.31.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -1862,24 +1865,24 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-01-29T20:11:03+00:00"
|
||||
"time": "2024-09-09T11:45:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-intl-normalizer",
|
||||
"version": "v1.29.0",
|
||||
"version": "v1.31.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
|
||||
"reference": "bc45c394692b948b4d383a08d7753968bed9a83d"
|
||||
"reference": "3833d7255cc303546435cb650316bff708a1c75c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d",
|
||||
"reference": "bc45c394692b948b4d383a08d7753968bed9a83d",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c",
|
||||
"reference": "3833d7255cc303546435cb650316bff708a1c75c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1"
|
||||
"php": ">=7.2"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-intl": "For best performance"
|
||||
|
@ -1927,7 +1930,7 @@
|
|||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0"
|
||||
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -1943,24 +1946,24 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-01-29T20:11:03+00:00"
|
||||
"time": "2024-09-09T11:45:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-mbstring",
|
||||
"version": "v1.29.0",
|
||||
"version": "v1.31.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
||||
"reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec"
|
||||
"reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
|
||||
"reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341",
|
||||
"reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1"
|
||||
"php": ">=7.2"
|
||||
},
|
||||
"provide": {
|
||||
"ext-mbstring": "*"
|
||||
|
@ -2007,7 +2010,7 @@
|
|||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0"
|
||||
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -2023,97 +2026,24 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-01-29T20:11:03+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-php72",
|
||||
"version": "v1.29.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-php72.git",
|
||||
"reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/861391a8da9a04cbad2d232ddd9e4893220d6e25",
|
||||
"reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"thanks": {
|
||||
"name": "symfony/polyfill",
|
||||
"url": "https://github.com/symfony/polyfill"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
"bootstrap.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"Symfony\\Polyfill\\Php72\\": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Nicolas Grekas",
|
||||
"email": "p@tchwork.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
|
||||
"homepage": "https://symfony.com",
|
||||
"keywords": [
|
||||
"compatibility",
|
||||
"polyfill",
|
||||
"portable",
|
||||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-php72/tree/v1.29.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-01-29T20:11:03+00:00"
|
||||
"time": "2024-09-09T11:45:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-php73",
|
||||
"version": "v1.29.0",
|
||||
"version": "v1.31.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-php73.git",
|
||||
"reference": "21bd091060673a1177ae842c0ef8fe30893114d2"
|
||||
"reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/21bd091060673a1177ae842c0ef8fe30893114d2",
|
||||
"reference": "21bd091060673a1177ae842c0ef8fe30893114d2",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/0f68c03565dcaaf25a890667542e8bd75fe7e5bb",
|
||||
"reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1"
|
||||
"php": ">=7.2"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
|
@ -2156,7 +2086,7 @@
|
|||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-php73/tree/v1.29.0"
|
||||
"source": "https://github.com/symfony/polyfill-php73/tree/v1.31.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -2172,24 +2102,24 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-01-29T20:11:03+00:00"
|
||||
"time": "2024-09-09T11:45:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-php80",
|
||||
"version": "v1.29.0",
|
||||
"version": "v1.31.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-php80.git",
|
||||
"reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b"
|
||||
"reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
|
||||
"reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8",
|
||||
"reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1"
|
||||
"php": ">=7.2"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
|
@ -2236,7 +2166,7 @@
|
|||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0"
|
||||
"source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -2252,25 +2182,26 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-01-29T20:11:03+00:00"
|
||||
"time": "2024-09-09T11:45:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/service-contracts",
|
||||
"version": "v3.4.1",
|
||||
"version": "v3.5.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/service-contracts.git",
|
||||
"reference": "fe07cbc8d837f60caf7018068e350cc5163681a0"
|
||||
"reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0",
|
||||
"reference": "fe07cbc8d837f60caf7018068e350cc5163681a0",
|
||||
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f",
|
||||
"reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.1",
|
||||
"psr/container": "^1.1|^2.0"
|
||||
"psr/container": "^1.1|^2.0",
|
||||
"symfony/deprecation-contracts": "^2.5|^3"
|
||||
},
|
||||
"conflict": {
|
||||
"ext-psr": "<1.1|>=2"
|
||||
|
@ -2278,7 +2209,7 @@
|
|||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "3.4-dev"
|
||||
"dev-main": "3.5-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/contracts",
|
||||
|
@ -2318,7 +2249,7 @@
|
|||
"standards"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/service-contracts/tree/v3.4.1"
|
||||
"source": "https://github.com/symfony/service-contracts/tree/v3.5.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -2334,20 +2265,20 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-12-26T14:02:43+00:00"
|
||||
"time": "2024-04-18T09:32:20+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/string",
|
||||
"version": "v6.4.4",
|
||||
"version": "v6.4.13",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/string.git",
|
||||
"reference": "4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9"
|
||||
"reference": "38371c60c71c72b3d64d8d76f6b1bb81a2cc3627"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/string/zipball/4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9",
|
||||
"reference": "4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9",
|
||||
"url": "https://api.github.com/repos/symfony/string/zipball/38371c60c71c72b3d64d8d76f6b1bb81a2cc3627",
|
||||
"reference": "38371c60c71c72b3d64d8d76f6b1bb81a2cc3627",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -2404,7 +2335,7 @@
|
|||
"utf8"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/string/tree/v6.4.4"
|
||||
"source": "https://github.com/symfony/string/tree/v6.4.13"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -2420,7 +2351,7 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-02-01T13:16:41+00:00"
|
||||
"time": "2024-09-25T14:18:03+00:00"
|
||||
},
|
||||
{
|
||||
"name": "vearutop/php-obscene-censor-rus",
|
||||
|
@ -2525,12 +2456,12 @@
|
|||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/wapmorgan/Morphos.git",
|
||||
"reference": "302b56636cf604ad07e20020076d8a4880554286"
|
||||
"reference": "d22876709756b538a52b30a50a3f37cd89efeb91"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/wapmorgan/Morphos/zipball/302b56636cf604ad07e20020076d8a4880554286",
|
||||
"reference": "302b56636cf604ad07e20020076d8a4880554286",
|
||||
"url": "https://api.github.com/repos/wapmorgan/Morphos/zipball/d22876709756b538a52b30a50a3f37cd89efeb91",
|
||||
"reference": "d22876709756b538a52b30a50a3f37cd89efeb91",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -2592,7 +2523,7 @@
|
|||
"issues": "https://github.com/wapmorgan/Morphos/issues",
|
||||
"source": "https://github.com/wapmorgan/Morphos/tree/master"
|
||||
},
|
||||
"time": "2024-03-26T07:24:27+00:00"
|
||||
"time": "2024-09-26T12:41:09+00:00"
|
||||
},
|
||||
{
|
||||
"name": "whichbrowser/parser",
|
||||
|
@ -2600,12 +2531,12 @@
|
|||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/WhichBrowser/Parser-PHP.git",
|
||||
"reference": "1044880bc792dbce5948fbff22ae731c43c280d9"
|
||||
"reference": "581d614d686bfbec3529ad60562a5213ac5d8d72"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/WhichBrowser/Parser-PHP/zipball/1044880bc792dbce5948fbff22ae731c43c280d9",
|
||||
"reference": "1044880bc792dbce5948fbff22ae731c43c280d9",
|
||||
"url": "https://api.github.com/repos/WhichBrowser/Parser-PHP/zipball/581d614d686bfbec3529ad60562a5213ac5d8d72",
|
||||
"reference": "581d614d686bfbec3529ad60562a5213ac5d8d72",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -2629,8 +2560,7 @@
|
|||
"autoload": {
|
||||
"psr-4": {
|
||||
"WhichBrowser\\": [
|
||||
"src/",
|
||||
"tests/src/"
|
||||
"src/"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
@ -2655,28 +2585,28 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/WhichBrowser/Parser-PHP/issues",
|
||||
"source": "https://github.com/WhichBrowser/Parser-PHP/tree/v2.1.7"
|
||||
"source": "https://github.com/WhichBrowser/Parser-PHP/tree/v2.1.8"
|
||||
},
|
||||
"time": "2022-04-19T20:14:54+00:00"
|
||||
"time": "2024-04-17T12:47:41+00:00"
|
||||
}
|
||||
],
|
||||
"packages-dev": [],
|
||||
"aliases": [],
|
||||
"minimum-stability": "beta",
|
||||
"stability-flags": {
|
||||
"whichbrowser/parser": 20,
|
||||
"james-heinrich/getid3": 20,
|
||||
"rybakit/msgpack": 20,
|
||||
"wapmorgan/binary-stream": 20,
|
||||
"al/emoji-detector": 20,
|
||||
"ezyang/htmlpurifier": 20,
|
||||
"scssphp/scssphp": 20,
|
||||
"lfkeitel/phptotp": 20,
|
||||
"vearutop/php-obscene-censor-rus": 20,
|
||||
"erusev/parsedown": 20,
|
||||
"bhaktaraz/php-rss-generator": 20,
|
||||
"erusev/parsedown": 20,
|
||||
"ezyang/htmlpurifier": 20,
|
||||
"james-heinrich/getid3": 20,
|
||||
"lfkeitel/phptotp": 20,
|
||||
"rybakit/msgpack": 20,
|
||||
"scssphp/scssphp": 20,
|
||||
"symfony/console": 20,
|
||||
"wapmorgan/morphos": 20
|
||||
"vearutop/php-obscene-censor-rus": 20,
|
||||
"wapmorgan/binary-stream": 20,
|
||||
"wapmorgan/morphos": 20,
|
||||
"whichbrowser/parser": 20
|
||||
},
|
||||
"prefer-stable": false,
|
||||
"prefer-lowest": false,
|
||||
|
@ -2684,8 +2614,9 @@
|
|||
"php": "~7.3||~8.1",
|
||||
"ext-openssl": "*",
|
||||
"ext-simplexml": "*",
|
||||
"ext-sodium": "*"
|
||||
"ext-sodium": "*",
|
||||
"ext-iconv": "*"
|
||||
},
|
||||
"platform-dev": [],
|
||||
"plugin-api-version": "2.3.0"
|
||||
"platform-dev": {},
|
||||
"plugin-api-version": "2.6.0"
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@ docker build -t ghcr.io/openvk/openvk/php:8.2-apache ../../.. -f base-php-apache
|
|||
DB images:
|
||||
```
|
||||
docker build -t ghcr.io/openvk/openvk/mariadb:10.9-primary ../../.. -f mariadb-primary.Dockerfile
|
||||
docker build -t ghcr.io/openvk/openvk/mariadb:10.9-eventdb ../../.. --f mariadb-eventdb.Dockerfile
|
||||
docker build -t ghcr.io/openvk/openvk/mariadb:10.9-eventdb ../../.. -f mariadb-eventdb.Dockerfile
|
||||
```
|
||||
OpenVK main image:
|
||||
```
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
ARG GITREPO=openvk/openvk
|
||||
FROM ghcr.io/${GITREPO}/php:8.2-cli as builder
|
||||
FROM ghcr.io/${GITREPO}/php:8.2-cli AS builder
|
||||
|
||||
WORKDIR /opt
|
||||
|
||||
|
@ -27,15 +27,15 @@ ADD composer.* .
|
|||
|
||||
RUN composer install
|
||||
|
||||
FROM docker.io/node:14 as nodejs
|
||||
FROM docker.io/node:20 AS nodejs
|
||||
|
||||
COPY --from=builder /opt/chandler /opt/chandler
|
||||
|
||||
WORKDIR /opt/chandler/extensions/available/openvk/Web/static/js
|
||||
|
||||
ADD Web/static/js/package.json Web/static/js/package-lock.json Web/static/js/yarn.lock ./
|
||||
ADD Web/static/js/package.json Web/static/js/package-lock.json ./
|
||||
|
||||
RUN yarn install
|
||||
RUN npm ci
|
||||
|
||||
WORKDIR /opt/chandler/extensions/available/openvk
|
||||
|
||||
|
@ -57,4 +57,6 @@ VOLUME [ "/opt/chandler/extensions/available/openvk/tmp/api-storage/audios" ]
|
|||
VOLUME [ "/opt/chandler/extensions/available/openvk/tmp/api-storage/photos" ]
|
||||
VOLUME [ "/opt/chandler/extensions/available/openvk/tmp/api-storage/videos" ]
|
||||
|
||||
USER www-data
|
||||
USER www-data
|
||||
|
||||
WORKDIR /opt/chandler/extensions/available/openvk
|
||||
|
|
2
install/sqls/00049-ignored-sources.sql
Normal file
2
install/sqls/00049-ignored-sources.sql
Normal file
|
@ -0,0 +1,2 @@
|
|||
CREATE TABLE `ignored_sources` (`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT , `owner` BIGINT(20) UNSIGNED NOT NULL , `source` BIGINT(20) NOT NULL , PRIMARY KEY (`id`), INDEX (`owner`)) ENGINE = InnoDB;
|
||||
ALTER TABLE `ignored_sources` ADD INDEX `owner_source` (`owner`, `source`);
|
|
@ -219,6 +219,7 @@
|
|||
"my_news" = "My news";
|
||||
"all_news" = "All news";
|
||||
"posts_per_page" = "Number of posts per page";
|
||||
"show_ignored_sources" = "Show ignored sources";
|
||||
|
||||
"attachment" = "Attachment";
|
||||
"post_as_group" = "Post as group";
|
||||
|
@ -251,6 +252,17 @@
|
|||
|
||||
"edited_short" = "edited";
|
||||
|
||||
"feed_settings" = "Feed settings";
|
||||
"ignored_sources" = "Ignored sources";
|
||||
"ignore_user" = "Ignore user";
|
||||
"unignore_user" = "Unignore user";
|
||||
|
||||
"ignore_club" = "Ignore club";
|
||||
"unignore_club" = "Unignore club";
|
||||
"no_ignores_count" = "No ignored sources.";
|
||||
"stop_ignore" = "Unignore";
|
||||
"start_from_page" = "Start from page";
|
||||
|
||||
"all_posts" = "All posts";
|
||||
"users_posts" = "Posts by $1";
|
||||
"clubs_posts" = "Group's posts";
|
||||
|
@ -1549,6 +1561,9 @@
|
|||
"group_is_banned" = "Group was successfully banned";
|
||||
|
||||
"description_too_long" = "Description is too long.";
|
||||
"invalid_club" = "This group does not exists.";
|
||||
"invalid_user" = "This user does not exists.";
|
||||
"ignored_sources_limit" = "Limit of ignored sources has exceed";
|
||||
|
||||
"invalid_audio" = "Invalid audio.";
|
||||
"do_not_have_audio" = "You don't have this audio.";
|
||||
|
@ -1769,6 +1784,7 @@
|
|||
"action_successfully" = "Success";
|
||||
"exit_noun" = "Exit";
|
||||
"exit_confirmation" = "Are you sure want to exit?";
|
||||
"apply" = "Apply";
|
||||
|
||||
/* User Alerts */
|
||||
|
||||
|
@ -2073,7 +2089,7 @@
|
|||
"showing_x_y" = "(showing $1—$2)";
|
||||
"no_results_by_this_query" = "Nothing was found by this query.";
|
||||
"s_additional" = "Additional";
|
||||
"s_it_is_you" = "it is you";
|
||||
"s_it_is_you" = "that's you";
|
||||
|
||||
/* BadBrowser */
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ list:
|
|||
flag: "ua"
|
||||
name: "Ukrainian"
|
||||
native_name: "Українcька"
|
||||
author: "Aqukie (yaroslav.bielograd@ukr.net), Andrej Lenťaj, Maxim Hrabovi (dechioyo) and Kirill (mbsoft)"
|
||||
author: "Jaroslav (ovk.to/id6908), Andrej Lenťaj, Maxim Hrabovi (dechioyo) and Kirill (mbsoft)"
|
||||
- code: "by"
|
||||
flag: "by"
|
||||
name: "Belarussian"
|
||||
|
|
|
@ -204,6 +204,7 @@
|
|||
"my_news" = "Мои новости";
|
||||
"all_news" = "Все новости";
|
||||
"posts_per_page" = "Количество записей на странице";
|
||||
"show_ignored_sources" = "Показывать игнорируемые источники";
|
||||
"attachment" = "Вложение";
|
||||
"post_as_group" = "От имени сообщества";
|
||||
"comment_as_group" = "От имени сообщества";
|
||||
|
@ -231,6 +232,17 @@
|
|||
"post_is_ad" = "Этот пост был размещён за взятку.";
|
||||
"edited_short" = "ред.";
|
||||
|
||||
"feed_settings" = "Настройки ленты";
|
||||
"ignored_sources" = "Игнорируемые источники";
|
||||
"ignore_user" = "Игнорировать пользователя";
|
||||
"unignore_user" = "Не игнорировать пользователя";
|
||||
|
||||
"ignore_club" = "Игнорировать группу";
|
||||
"unignore_club" = "Не игнорировать группу";
|
||||
"no_ignores_count" = "Игнорируемых источников нет.";
|
||||
"stop_ignore" = "Не игнорировать";
|
||||
"start_from_page" = "Начинать со страницы";
|
||||
|
||||
"all_posts" = "Все записи";
|
||||
"users_posts" = "Записи $1";
|
||||
"clubs_posts" = "Записи сообщества";
|
||||
|
@ -1450,6 +1462,11 @@
|
|||
"group_owner_is_banned" = "Создатель сообщества успешно забанен.";
|
||||
"group_is_banned" = "Сообщество успешно забанено";
|
||||
"description_too_long" = "Описание слишком длинное.";
|
||||
|
||||
"invalid_club" = "Такой группы не существует.";
|
||||
"invalid_user" = "Такого пользователя не существует.";
|
||||
"ignored_sources_limit" = "Превышен лимит игнорируемых источников.";
|
||||
|
||||
"invalid_audio" = "Такой аудиозаписи не существует.";
|
||||
"do_not_have_audio" = "У вас нет этой аудиозаписи.";
|
||||
"do_have_audio" = "У вас уже есть эта аудиозапись.";
|
||||
|
@ -1659,6 +1676,7 @@
|
|||
"action_successfully" = "Операция успешна";
|
||||
"exit_noun" = "Выход";
|
||||
"exit_confirmation" = "Уверены, что хотите выйти?";
|
||||
"apply" = "Применить";
|
||||
|
||||
/* User alerts */
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -52,6 +52,8 @@ openvk:
|
|||
strict: false
|
||||
music:
|
||||
exposeOriginalURLs: true
|
||||
newsfeed:
|
||||
ignoredSourcesLimit: 50
|
||||
wall:
|
||||
christian: false
|
||||
anonymousPosting:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
.page_header {
|
||||
background-image: url('/themepack/midnight/0.0.3.0/resource/xheader.png') !important;
|
||||
background-image: url('/themepack/midnight/0.0.3.1/resource/xheader.png') !important;
|
||||
}
|
||||
|
||||
.page_custom_header {
|
||||
background-image: url('/themepack/midnight/0.0.3.0/resource/xheader_custom.png') !important;
|
||||
background-image: url('/themepack/midnight/0.0.3.1/resource/xheader_custom.png') !important;
|
||||
}
|
||||
|
|
|
@ -186,8 +186,12 @@ hr {
|
|||
.menu_divider,
|
||||
.ovk-diag-action,
|
||||
.minilink .counter,
|
||||
.topGrayBlock {
|
||||
background-color: #2c2640;
|
||||
.topGrayBlock,
|
||||
.showMore,
|
||||
.showMoreAudiosPlaylist,
|
||||
#showMorePhotos,
|
||||
#showMoreVideos {
|
||||
background-color: #2c2640 !important;
|
||||
}
|
||||
|
||||
.bsdn_contextMenu {
|
||||
|
@ -313,11 +317,11 @@ tr.v,
|
|||
}
|
||||
|
||||
.content_title_expanded {
|
||||
background-image: url("/themepack/midnight/0.0.3.0/resource/flex_arrow_open.png") !important;
|
||||
background-image: url("/themepack/midnight/0.0.3.1/resource/flex_arrow_open.png") !important;
|
||||
}
|
||||
|
||||
.content_title_unexpanded {
|
||||
background-image: url("/themepack/midnight/0.0.3.0/resource/flex_arrow_shut.gif") !important;
|
||||
background-image: url("/themepack/midnight/0.0.3.1/resource/flex_arrow_shut.gif") !important;
|
||||
}
|
||||
|
||||
.ovk-video>.preview,
|
||||
|
@ -344,17 +348,17 @@ tr.h {
|
|||
|
||||
.page_yellowheader {
|
||||
color: #c6d2e8;
|
||||
background-image: url("/themepack/midnight/0.0.3.0/resource/header_purple.png") !important;
|
||||
background-image: url("/themepack/midnight/0.0.3.1/resource/header_purple.png") !important;
|
||||
background-color: #231f34;
|
||||
border-color: #231f34;
|
||||
}
|
||||
|
||||
.page_header {
|
||||
background-image: url("/themepack/midnight/0.0.3.0/resource/header.png") !important;
|
||||
background-image: url("/themepack/midnight/0.0.3.1/resource/header.png") !important;
|
||||
}
|
||||
|
||||
.page_custom_header {
|
||||
background-image: url("/themepack/midnight/0.0.3.0/resource/header_custom.png") !important;
|
||||
background-image: url("/themepack/midnight/0.0.3.1/resource/header_custom.png") !important;
|
||||
}
|
||||
|
||||
.page_yellowheader span,
|
||||
|
@ -392,11 +396,11 @@ select,
|
|||
}
|
||||
|
||||
input[type="checkbox"] {
|
||||
background-image: url("/themepack/midnight/0.0.3.0/resource/checkbox.png") !important;
|
||||
background-image: url("/themepack/midnight/0.0.3.1/resource/checkbox.png") !important;
|
||||
}
|
||||
|
||||
input[type="radio"] {
|
||||
background-image: url("/themepack/midnight/0.0.3.0/resource/radio.png") !important;
|
||||
background-image: url("/themepack/midnight/0.0.3.1/resource/radio.png") !important;
|
||||
}
|
||||
|
||||
.header_navigation .link, .header_navigation .header_divider_stick {
|
||||
|
@ -404,20 +408,20 @@ input[type="radio"] {
|
|||
}
|
||||
|
||||
.heart {
|
||||
background-image: url("/themepack/midnight/0.0.3.0/resource/like.gif") !important;
|
||||
background-image: url("/themepack/midnight/0.0.3.1/resource/like.gif") !important;
|
||||
}
|
||||
|
||||
.pinned-mark,
|
||||
.post-author .pin {
|
||||
background-image: url("/themepack/midnight/0.0.3.0/resource/pin.png") !important;
|
||||
background-image: url("/themepack/midnight/0.0.3.1/resource/pin.png") !important;
|
||||
}
|
||||
|
||||
.repost-icon {
|
||||
background-image: url("/themepack/midnight/0.0.3.0/resource/published.gif") !important;
|
||||
background-image: url("/themepack/midnight/0.0.3.1/resource/published.gif") !important;
|
||||
}
|
||||
|
||||
.post-author .delete {
|
||||
background-image: url("/themepack/midnight/0.0.3.0/resource/input_clear.gif") !important;
|
||||
background-image: url("/themepack/midnight/0.0.3.1/resource/input_clear.gif") !important;
|
||||
}
|
||||
|
||||
.user-alert {
|
||||
|
@ -450,7 +454,7 @@ input[type="radio"] {
|
|||
}
|
||||
|
||||
#backdropEditor {
|
||||
background-image: url("/themepack/midnight/0.0.3.0/resource/backdrop-editor.gif") !important;
|
||||
background-image: url("/themepack/midnight/0.0.3.1/resource/backdrop-editor.gif") !important;
|
||||
border-color: #473e66 !important;
|
||||
}
|
||||
|
||||
|
@ -588,11 +592,6 @@ ul {
|
|||
cursor: pointer;
|
||||
}
|
||||
|
||||
.showMore,
|
||||
.showMoreAudiosPlaylist {
|
||||
background: #181826 !important;
|
||||
}
|
||||
|
||||
/* Tour */
|
||||
.rightNav h1 {
|
||||
background: #000;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
id: midnight
|
||||
version: "0.0.3.0"
|
||||
version: "0.0.3.1"
|
||||
openvk_version: 0
|
||||
enabled: 1
|
||||
metadata:
|
||||
|
|
Loading…
Reference in a new issue