From 1902967a70667f3346649eb174ce684902783827 Mon Sep 17 00:00:00 2001
From: mirzaev
Date: Fri, 22 Nov 2024 11:58:27 +0700
Subject: [PATCH] pizdets optimized
---
.gitignore | 2 -
composer.json | 25 +-
composer.lock | 1687 +++++++++++++++++
examples/nginx/server.conf | 53 +
.../repression/system/controllers/core.php | 93 +-
.../system/controllers/error_controller.php | 44 -
.../repression/system/controllers/index.php | 169 ++
.../system/controllers/index_controller.php | 71 -
.../site/repression/system/database/views.csv | 19 +
.../site/repression/system/models/core.php | 145 +-
.../system/models/enumerations/language.php | 48 +
.../system/models/interfaces/csv.php | 91 +
.../repression/system/models/traits/csv.php | 135 ++
.../repression/system/models/traits/file.php | 104 +
.../site/repression/system/models/views.php | 630 ++++--
.../site/repression/system/public/index.php | 31 +-
.../repression/system/public/js/account.js | 0
.../repression/system/public/js/bloodchaos.js | 0
.../repression/system/public/js/hollow.js | 0
.../repression/system/public/js/perlin.js | 0
.../system/public/js/womb3-simplex.js | 0
.../site/repression/system/public/robots.txt | 0
.../site/repression/system/public/sitemap.xml | 0
.../{ => themes/default}/css/account.css | 0
.../public/{ => themes/default}/css/books.css | 0
.../{ => themes/default}/css/hotline.css | 0
.../default}/css/icon_authentication.css | 0
.../{ => themes/default}/css/icon_eye.css | 0
.../public/{ => themes/default}/css/logo.css | 0
.../public/{ => themes/default}/css/main.css | 222 +--
.../public/{ => themes/default}/css/popup.css | 2 +-
.../{ => themes/default}/css/troller.css | 0
.../{ => themes/default}/css/upload.css | 0
.../default}/fonts/commissioner.ttf | Bin
.../{ => themes/default}/images/NAVALNY.svg | 0
.../{ => themes/default}/images/bebra.png | Bin
.../{ => themes/default}/images/botnet.svg | 0
.../default}/images/chill_bebra.png | Bin
.../default}/images/crying_bebra.png | Bin
.../default}/images/evil_bebra.png | Bin
.../{ => themes/default}/images/favicon/0.gif | Bin
.../{ => themes/default}/images/favicon/1.gif | Bin
.../default}/images/favicon/10.gif | Bin
.../default}/images/favicon/11.gif | Bin
.../default}/images/favicon/12.gif | Bin
.../default}/images/favicon/13.gif | Bin
.../default}/images/favicon/14.gif | Bin
.../default}/images/favicon/15.gif | Bin
.../default}/images/favicon/16.gif | Bin
.../default}/images/favicon/17.gif | Bin
.../default}/images/favicon/18.gif | Bin
.../default}/images/favicon/19.gif | Bin
.../{ => themes/default}/images/favicon/2.gif | Bin
.../default}/images/favicon/20.gif | Bin
.../default}/images/favicon/21.gif | Bin
.../default}/images/favicon/22.gif | Bin
.../default}/images/favicon/23.gif | Bin
.../default}/images/favicon/24.gif | Bin
.../default}/images/favicon/25.gif | Bin
.../default}/images/favicon/26.gif | Bin
.../{ => themes/default}/images/favicon/3.gif | Bin
.../{ => themes/default}/images/favicon/4.gif | Bin
.../{ => themes/default}/images/favicon/5.gif | Bin
.../{ => themes/default}/images/favicon/6.gif | Bin
.../{ => themes/default}/images/favicon/7.gif | Bin
.../{ => themes/default}/images/favicon/8.gif | Bin
.../{ => themes/default}/images/favicon/9.gif | Bin
.../default}/images/favicon/favicon.gif | Bin
.../images/favicon/favicon_alternative.gif | Bin
.../default}/images/favicon_2/0.gif | Bin
.../default}/images/favicon_2/1.gif | Bin
.../default}/images/favicon_2/10.gif | Bin
.../default}/images/favicon_2/11.gif | Bin
.../default}/images/favicon_2/12.gif | Bin
.../default}/images/favicon_2/13.gif | Bin
.../default}/images/favicon_2/14.gif | Bin
.../default}/images/favicon_2/15.gif | Bin
.../default}/images/favicon_2/16.gif | Bin
.../default}/images/favicon_2/17.gif | Bin
.../default}/images/favicon_2/18.gif | Bin
.../default}/images/favicon_2/19.gif | Bin
.../default}/images/favicon_2/2.gif | Bin
.../default}/images/favicon_2/20.gif | Bin
.../default}/images/favicon_2/21.gif | Bin
.../default}/images/favicon_2/22.gif | Bin
.../default}/images/favicon_2/23.gif | Bin
.../default}/images/favicon_2/24.gif | Bin
.../default}/images/favicon_2/25.gif | Bin
.../default}/images/favicon_2/26.gif | Bin
.../default}/images/favicon_2/27.gif | Bin
.../default}/images/favicon_2/28.gif | Bin
.../default}/images/favicon_2/29.gif | Bin
.../default}/images/favicon_2/3.gif | Bin
.../default}/images/favicon_2/30.gif | Bin
.../default}/images/favicon_2/31.gif | Bin
.../default}/images/favicon_2/32.gif | Bin
.../default}/images/favicon_2/33.gif | Bin
.../default}/images/favicon_2/34.gif | Bin
.../default}/images/favicon_2/35.gif | Bin
.../default}/images/favicon_2/36.gif | Bin
.../default}/images/favicon_2/37.gif | Bin
.../default}/images/favicon_2/38.gif | Bin
.../default}/images/favicon_2/39.gif | Bin
.../default}/images/favicon_2/4.gif | Bin
.../default}/images/favicon_2/40.gif | Bin
.../default}/images/favicon_2/41.gif | Bin
.../default}/images/favicon_2/42.gif | Bin
.../default}/images/favicon_2/43.gif | Bin
.../default}/images/favicon_2/44.gif | Bin
.../default}/images/favicon_2/45.gif | Bin
.../default}/images/favicon_2/46.gif | Bin
.../default}/images/favicon_2/47.gif | Bin
.../default}/images/favicon_2/48.gif | Bin
.../default}/images/favicon_2/49.gif | Bin
.../default}/images/favicon_2/5.gif | Bin
.../default}/images/favicon_2/50.gif | Bin
.../default}/images/favicon_2/51.gif | Bin
.../default}/images/favicon_2/52.gif | Bin
.../default}/images/favicon_2/53.gif | Bin
.../default}/images/favicon_2/54.gif | Bin
.../default}/images/favicon_2/55.gif | Bin
.../default}/images/favicon_2/56.gif | Bin
.../default}/images/favicon_2/57.gif | Bin
.../default}/images/favicon_2/58.gif | Bin
.../default}/images/favicon_2/59.gif | Bin
.../default}/images/favicon_2/6.gif | Bin
.../default}/images/favicon_2/60.gif | Bin
.../default}/images/favicon_2/61.gif | Bin
.../default}/images/favicon_2/62.gif | Bin
.../default}/images/favicon_2/63.gif | Bin
.../default}/images/favicon_2/64.gif | Bin
.../default}/images/favicon_2/65.gif | Bin
.../default}/images/favicon_2/66.gif | Bin
.../default}/images/favicon_2/67.gif | Bin
.../default}/images/favicon_2/68.gif | Bin
.../default}/images/favicon_2/69.gif | Bin
.../default}/images/favicon_2/7.gif | Bin
.../default}/images/favicon_2/70.gif | Bin
.../default}/images/favicon_2/71.gif | Bin
.../default}/images/favicon_2/8.gif | Bin
.../default}/images/favicon_2/9.gif | Bin
.../default}/images/favicon_2/favicon.gif | Bin
.../{ => themes/default}/images/fuck.png | Bin
.../{ => themes/default}/images/furgal.jpg | Bin
.../{ => themes/default}/images/just.png | Bin
.../{ => themes/default}/images/keylogger.svg | 0
.../{ => themes/default}/images/logo.png | Bin
.../default}/images/logo_compressed.png | Bin
.../{ => themes/default}/images/logo_red.png | Bin
.../default}/images/logo_red_compressed.png | Bin
.../default}/images/logo_red_white.png | Bin
.../images/logo_red_white_compressed.png | Bin
.../images/marta_with_broken_heart.png | Bin
.../{ => themes/default}/images/minecraft.svg | 0
.../{ => themes/default}/images/miner.svg | 0
.../{ => themes/default}/images/mirzaev.jpg | Bin
.../{ => themes/default}/images/mirzaev.png | Bin
.../{ => themes/default}/images/mirzaev2.png | Bin
.../{ => themes/default}/images/mirzaev3.jpg | Bin
.../default}/images/mirzaev_real.png | Bin
.../{ => themes/default}/images/misha.png | Bin
.../default}/images/no_comments.png | Bin
.../{ => themes/default}/images/nu_tipa.png | Bin
.../default}/images/photo_with_hand.png | Bin
.../default}/images/photo_with_kitten.png | Bin
.../default}/images/photo_with_knife.png | Bin
.../default}/images/pmc_boykisser.png | Bin
.../{ => themes/default}/images/pooping.jpg | Bin
.../{ => themes/default}/images/reasons/0.png | Bin
.../{ => themes/default}/images/reasons/1.png | Bin
.../{ => themes/default}/images/reasons/2.png | Bin
.../{ => themes/default}/images/scary.png | Bin
.../{ => themes/default}/images/squidchad.png | Bin
.../{ => themes/default}/images/stealer.svg | 0
.../{ => themes/default}/images/suck.jpg | Bin
.../{ => themes/default}/images/suck2.png | Bin
.../{ => themes/default}/images/suck3.jpg | Bin
.../{ => themes/default}/images/suck3.png | Bin
.../{ => themes/default}/images/truth.jpg | Bin
.../default}/images/two_bebras.png | Bin
.../{ => themes/default}/images/wet_bebra.png | Bin
.../{ => themes/default}/images/what.png | Bin
.../{ => themes/default}/images/what2.jpg | Bin
.../{ => themes/default}/images/xiaomi.jpg | Bin
.../{ => themes/default}/sounds/beep.mp3 | Bin
.../{ => themes/default}/sounds/beep.wav | 0
.../{ => themes/default}/sounds/bonk.mp3 | Bin
.../default}/sounds/instasamka/1.mp3 | Bin
.../default}/sounds/instasamka/10.mp3 | Bin
.../default}/sounds/instasamka/11.mp3 | Bin
.../default}/sounds/instasamka/2.mp3 | Bin
.../default}/sounds/instasamka/3.mp3 | Bin
.../default}/sounds/instasamka/4.mp3 | Bin
.../default}/sounds/instasamka/5.mp3 | Bin
.../default}/sounds/instasamka/6.mp3 | Bin
.../default}/sounds/instasamka/7.mp3 | Bin
.../default}/sounds/instasamka/8.mp3 | Bin
.../default}/sounds/instasamka/9.mp3 | Bin
.../{ => themes/default}/sounds/iphone.mp3 | Bin
.../{ => themes/default}/sounds/putin.mp3 | Bin
.../default}/sounds/southern/1.mp3 | Bin
.../default}/sounds/southern/2.mp3 | Bin
.../default}/sounds/southern/3.mp3 | Bin
.../public/{ => themes/default}/sounds/vk.mp3 | Bin
.../{ => themes/default}/sounds/what.mp3 | Bin
.../{ => themes/default}/sounds/whatsup.mp3 | Bin
.../{ => themes/default}/sounds/wow.mp3 | Bin
.../storage/214547089/avatar/200x200.jpg | Bin
.../{ => themes/default}/videos/bahmut.mp4 | Bin
.../{ => themes/default}/videos/end.mp4 | Bin
.../{ => themes/default}/videos/end_post.mp4 | Bin
.../{ => themes/default}/videos/reasons/0.mp4 | Bin
.../{ => themes/default}/videos/reasons/1.mp4 | Bin
.../repression/system/settings/.gitignore | 0
.../system/settings/arangodb.php.sample | 8 -
.../system/settings/ipinfo.php.sample | 0
.../site/repression/system/views/manager.php | 25 -
.../repression/system/views/templater.php | 201 ++
.../{ => themes/default}/account/element.html | 4 +-
.../views/{ => themes/default}/article.html | 38 +-
.../views/{ => themes/default}/aside.html | 2 +-
.../views/{ => themes/default}/core.html | 4 +-
.../views/{ => themes/default}/footer.html | 0
.../views/{ => themes/default}/head.html | 47 +-
.../views/{ => themes/default}/header.html | 2 +-
.../{ => themes/default}/hotline/index.html | 2 +-
.../views/{ => themes/default}/index.html | 111 +-
.../system/views/{ => themes/default}/js.html | 0
.../{ => themes/default}/popups/welcome.html | 6 +-
.../views/{ => themes/default}/troller.html | 14 +-
230 files changed, 3243 insertions(+), 792 deletions(-)
create mode 100755 composer.lock
create mode 100755 examples/nginx/server.conf
delete mode 100755 mirzaev/site/repression/system/controllers/error_controller.php
create mode 100755 mirzaev/site/repression/system/controllers/index.php
delete mode 100755 mirzaev/site/repression/system/controllers/index_controller.php
create mode 100755 mirzaev/site/repression/system/database/views.csv
create mode 100755 mirzaev/site/repression/system/models/enumerations/language.php
create mode 100755 mirzaev/site/repression/system/models/interfaces/csv.php
create mode 100755 mirzaev/site/repression/system/models/traits/csv.php
create mode 100755 mirzaev/site/repression/system/models/traits/file.php
mode change 100644 => 100755 mirzaev/site/repression/system/public/js/account.js
mode change 100644 => 100755 mirzaev/site/repression/system/public/js/bloodchaos.js
mode change 100644 => 100755 mirzaev/site/repression/system/public/js/hollow.js
mode change 100644 => 100755 mirzaev/site/repression/system/public/js/perlin.js
mode change 100644 => 100755 mirzaev/site/repression/system/public/js/womb3-simplex.js
mode change 100644 => 100755 mirzaev/site/repression/system/public/robots.txt
mode change 100644 => 100755 mirzaev/site/repression/system/public/sitemap.xml
rename mirzaev/site/repression/system/public/{ => themes/default}/css/account.css (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/css/books.css (100%)
rename mirzaev/site/repression/system/public/{ => themes/default}/css/hotline.css (100%)
rename mirzaev/site/repression/system/public/{ => themes/default}/css/icon_authentication.css (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/css/icon_eye.css (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/css/logo.css (100%)
rename mirzaev/site/repression/system/public/{ => themes/default}/css/main.css (77%)
rename mirzaev/site/repression/system/public/{ => themes/default}/css/popup.css (92%)
rename mirzaev/site/repression/system/public/{ => themes/default}/css/troller.css (100%)
rename mirzaev/site/repression/system/public/{ => themes/default}/css/upload.css (100%)
rename mirzaev/site/repression/system/public/{ => themes/default}/fonts/commissioner.ttf (100%)
rename mirzaev/site/repression/system/public/{ => themes/default}/images/NAVALNY.svg (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/bebra.png (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/botnet.svg (100%)
rename mirzaev/site/repression/system/public/{ => themes/default}/images/chill_bebra.png (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/crying_bebra.png (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/evil_bebra.png (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon/0.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon/1.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon/10.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon/11.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon/12.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon/13.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon/14.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon/15.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon/16.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon/17.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon/18.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon/19.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon/2.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon/20.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon/21.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon/22.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon/23.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon/24.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon/25.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon/26.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon/3.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon/4.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon/5.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon/6.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon/7.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon/8.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon/9.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon/favicon.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon/favicon_alternative.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/0.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/1.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/10.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/11.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/12.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/13.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/14.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/15.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/16.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/17.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/18.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/19.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/2.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/20.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/21.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/22.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/23.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/24.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/25.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/26.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/27.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/28.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/29.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/3.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/30.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/31.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/32.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/33.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/34.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/35.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/36.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/37.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/38.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/39.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/4.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/40.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/41.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/42.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/43.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/44.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/45.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/46.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/47.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/48.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/49.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/5.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/50.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/51.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/52.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/53.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/54.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/55.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/56.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/57.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/58.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/59.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/6.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/60.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/61.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/62.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/63.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/64.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/65.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/66.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/67.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/68.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/69.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/7.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/70.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/71.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/8.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/9.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/favicon_2/favicon.gif (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/fuck.png (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/furgal.jpg (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/just.png (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/keylogger.svg (100%)
rename mirzaev/site/repression/system/public/{ => themes/default}/images/logo.png (100%)
rename mirzaev/site/repression/system/public/{ => themes/default}/images/logo_compressed.png (100%)
rename mirzaev/site/repression/system/public/{ => themes/default}/images/logo_red.png (100%)
rename mirzaev/site/repression/system/public/{ => themes/default}/images/logo_red_compressed.png (100%)
rename mirzaev/site/repression/system/public/{ => themes/default}/images/logo_red_white.png (100%)
rename mirzaev/site/repression/system/public/{ => themes/default}/images/logo_red_white_compressed.png (100%)
rename mirzaev/site/repression/system/public/{ => themes/default}/images/marta_with_broken_heart.png (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/minecraft.svg (100%)
rename mirzaev/site/repression/system/public/{ => themes/default}/images/miner.svg (100%)
rename mirzaev/site/repression/system/public/{ => themes/default}/images/mirzaev.jpg (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/mirzaev.png (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/mirzaev2.png (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/mirzaev3.jpg (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/mirzaev_real.png (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/misha.png (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/no_comments.png (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/nu_tipa.png (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/photo_with_hand.png (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/photo_with_kitten.png (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/photo_with_knife.png (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/pmc_boykisser.png (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/pooping.jpg (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/reasons/0.png (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/reasons/1.png (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/reasons/2.png (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/scary.png (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/squidchad.png (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/stealer.svg (100%)
rename mirzaev/site/repression/system/public/{ => themes/default}/images/suck.jpg (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/suck2.png (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/suck3.jpg (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/suck3.png (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/truth.jpg (100%)
rename mirzaev/site/repression/system/public/{ => themes/default}/images/two_bebras.png (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/wet_bebra.png (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/what.png (100%)
rename mirzaev/site/repression/system/public/{ => themes/default}/images/what2.jpg (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/images/xiaomi.jpg (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/sounds/beep.mp3 (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/sounds/beep.wav (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/sounds/bonk.mp3 (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/sounds/instasamka/1.mp3 (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/sounds/instasamka/10.mp3 (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/sounds/instasamka/11.mp3 (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/sounds/instasamka/2.mp3 (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/sounds/instasamka/3.mp3 (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/sounds/instasamka/4.mp3 (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/sounds/instasamka/5.mp3 (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/sounds/instasamka/6.mp3 (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/sounds/instasamka/7.mp3 (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/sounds/instasamka/8.mp3 (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/sounds/instasamka/9.mp3 (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/sounds/iphone.mp3 (100%)
rename mirzaev/site/repression/system/public/{ => themes/default}/sounds/putin.mp3 (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/sounds/southern/1.mp3 (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/sounds/southern/2.mp3 (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/sounds/southern/3.mp3 (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/sounds/vk.mp3 (100%)
rename mirzaev/site/repression/system/public/{ => themes/default}/sounds/what.mp3 (100%)
rename mirzaev/site/repression/system/public/{ => themes/default}/sounds/whatsup.mp3 (100%)
rename mirzaev/site/repression/system/public/{ => themes/default}/sounds/wow.mp3 (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/storage/214547089/avatar/200x200.jpg (100%)
rename mirzaev/site/repression/system/public/{ => themes/default}/videos/bahmut.mp4 (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/videos/end.mp4 (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/videos/end_post.mp4 (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/videos/reasons/0.mp4 (100%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/public/{ => themes/default}/videos/reasons/1.mp4 (100%)
mode change 100644 => 100755
mode change 100644 => 100755 mirzaev/site/repression/system/settings/.gitignore
delete mode 100644 mirzaev/site/repression/system/settings/arangodb.php.sample
mode change 100644 => 100755 mirzaev/site/repression/system/settings/ipinfo.php.sample
delete mode 100755 mirzaev/site/repression/system/views/manager.php
create mode 100755 mirzaev/site/repression/system/views/templater.php
rename mirzaev/site/repression/system/views/{ => themes/default}/account/element.html (63%)
rename mirzaev/site/repression/system/views/{ => themes/default}/article.html (93%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/views/{ => themes/default}/aside.html (64%)
rename mirzaev/site/repression/system/views/{ => themes/default}/core.html (69%)
rename mirzaev/site/repression/system/views/{ => themes/default}/footer.html (100%)
rename mirzaev/site/repression/system/views/{ => themes/default}/head.html (61%)
rename mirzaev/site/repression/system/views/{ => themes/default}/header.html (70%)
rename mirzaev/site/repression/system/views/{ => themes/default}/hotline/index.html (88%)
rename mirzaev/site/repression/system/views/{ => themes/default}/index.html (74%)
rename mirzaev/site/repression/system/views/{ => themes/default}/js.html (100%)
rename mirzaev/site/repression/system/views/{ => themes/default}/popups/welcome.html (86%)
mode change 100644 => 100755
rename mirzaev/site/repression/system/views/{ => themes/default}/troller.html (69%)
diff --git a/.gitignore b/.gitignore
index 39d1d27..ee2e43b 100755
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,2 @@
!.gitignore
-composer.phar
-composer.lock
vendor
diff --git a/composer.json b/composer.json
index c290a57..b74d176 100755
--- a/composer.json
+++ b/composer.json
@@ -1,10 +1,11 @@
{
"name": "mirzaev/site-repression",
- "description": "",
+ "description": "An article about how i was kidnapped by PMC Wagner operatives",
"readme": "README.md",
"keywords": [
"repression",
- "site"
+ "site",
+ "article"
],
"type": "site",
"homepage": "https://git.mirzaev.sexy/mirzaev/site-repression",
@@ -14,7 +15,7 @@
"name": "Arsen Mirzaev Tatyano-Muradovich",
"email": "arsen@mirzaev.sexy",
"homepage": "https://mirzaev.sexy",
- "role": "Programmer"
+ "role": "Victim"
}
],
"support": {
@@ -22,28 +23,16 @@
"issues": "https://git.mirzaev.sexy/mirzaev/site-repression/issues"
},
"require": {
- "php": "~8.3",
- "ext-sodium": "~8.3",
- "mirzaev/minimal": "^2.2.0",
- "mirzaev/accounts": "~1.2.x-dev",
- "mirzaev/arangodb": "^1.0.0",
- "mirzaev/vk": "^4.0",
- "triagens/arangodb": "~3.9.x-dev",
+ "php": "~8.4",
+ "ext-sodium": "~8.4",
+ "mirzaev/minimal": "^3.2.0",
"twig/twig": "^3.4",
"guzzlehttp/guzzle": "^7.5",
"ipinfo/ipinfo": "^3.0"
},
- "require-dev": {
- "phpunit/phpunit": "~9.5"
- },
"autoload": {
"psr-4": {
"mirzaev\\site\\repression\\": "mirzaev/site/repression/system"
}
- },
- "autoload-dev": {
- "psr-4": {
- "mirzaev\\site\\repression\\tests\\": "mirzaev/site/repression/tests"
- }
}
}
diff --git a/composer.lock b/composer.lock
new file mode 100755
index 0000000..8bfdb58
--- /dev/null
+++ b/composer.lock
@@ -0,0 +1,1687 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+ "This file is @generated automatically"
+ ],
+ "content-hash": "eecec1d990b67950775d4f0e55e99562",
+ "packages": [
+ {
+ "name": "guzzlehttp/guzzle",
+ "version": "7.9.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/guzzle.git",
+ "reference": "d281ed313b989f213357e3be1a179f02196ac99b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d281ed313b989f213357e3be1a179f02196ac99b",
+ "reference": "d281ed313b989f213357e3be1a179f02196ac99b",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "guzzlehttp/promises": "^1.5.3 || ^2.0.3",
+ "guzzlehttp/psr7": "^2.7.0",
+ "php": "^7.2.5 || ^8.0",
+ "psr/http-client": "^1.0",
+ "symfony/deprecation-contracts": "^2.2 || ^3.0"
+ },
+ "provide": {
+ "psr/http-client-implementation": "1.0"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.8.2",
+ "ext-curl": "*",
+ "guzzle/client-integration-tests": "3.0.2",
+ "php-http/message-factory": "^1.1",
+ "phpunit/phpunit": "^8.5.39 || ^9.6.20",
+ "psr/log": "^1.1 || ^2.0 || ^3.0"
+ },
+ "suggest": {
+ "ext-curl": "Required for CURL handler support",
+ "ext-intl": "Required for Internationalized Domain Name (IDN) support",
+ "psr/log": "Required for using the Log middleware"
+ },
+ "type": "library",
+ "extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/functions_include.php"
+ ],
+ "psr-4": {
+ "GuzzleHttp\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "Jeremy Lindblom",
+ "email": "jeremeamia@gmail.com",
+ "homepage": "https://github.com/jeremeamia"
+ },
+ {
+ "name": "George Mponos",
+ "email": "gmponos@gmail.com",
+ "homepage": "https://github.com/gmponos"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://github.com/sagikazarmark"
+ },
+ {
+ "name": "Tobias Schultze",
+ "email": "webmaster@tubo-world.de",
+ "homepage": "https://github.com/Tobion"
+ }
+ ],
+ "description": "Guzzle is a PHP HTTP client library",
+ "keywords": [
+ "client",
+ "curl",
+ "framework",
+ "http",
+ "http client",
+ "psr-18",
+ "psr-7",
+ "rest",
+ "web service"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/guzzle/issues",
+ "source": "https://github.com/guzzle/guzzle/tree/7.9.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-07-24T11:22:20+00:00"
+ },
+ {
+ "name": "guzzlehttp/promises",
+ "version": "2.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/promises.git",
+ "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/f9c436286ab2892c7db7be8c8da4ef61ccf7b455",
+ "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2.5 || ^8.0"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.8.2",
+ "phpunit/phpunit": "^8.5.39 || ^9.6.20"
+ },
+ "type": "library",
+ "extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "GuzzleHttp\\Promise\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ },
+ {
+ "name": "Tobias Schultze",
+ "email": "webmaster@tubo-world.de",
+ "homepage": "https://github.com/Tobion"
+ }
+ ],
+ "description": "Guzzle promises library",
+ "keywords": [
+ "promise"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/promises/issues",
+ "source": "https://github.com/guzzle/promises/tree/2.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-10-17T10:06:22+00:00"
+ },
+ {
+ "name": "guzzlehttp/psr7",
+ "version": "2.7.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/psr7.git",
+ "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201",
+ "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2.5 || ^8.0",
+ "psr/http-factory": "^1.0",
+ "psr/http-message": "^1.1 || ^2.0",
+ "ralouphie/getallheaders": "^3.0"
+ },
+ "provide": {
+ "psr/http-factory-implementation": "1.0",
+ "psr/http-message-implementation": "1.0"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.8.2",
+ "http-interop/http-factory-tests": "0.9.0",
+ "phpunit/phpunit": "^8.5.39 || ^9.6.20"
+ },
+ "suggest": {
+ "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
+ },
+ "type": "library",
+ "extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "GuzzleHttp\\Psr7\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "George Mponos",
+ "email": "gmponos@gmail.com",
+ "homepage": "https://github.com/gmponos"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://github.com/sagikazarmark"
+ },
+ {
+ "name": "Tobias Schultze",
+ "email": "webmaster@tubo-world.de",
+ "homepage": "https://github.com/Tobion"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://sagikazarmark.hu"
+ }
+ ],
+ "description": "PSR-7 message implementation that also provides common utility methods",
+ "keywords": [
+ "http",
+ "message",
+ "psr-7",
+ "request",
+ "response",
+ "stream",
+ "uri",
+ "url"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/psr7/issues",
+ "source": "https://github.com/guzzle/psr7/tree/2.7.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-07-18T11:15:46+00:00"
+ },
+ {
+ "name": "ipinfo/ipinfo",
+ "version": "v3.1.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ipinfo/php.git",
+ "reference": "f38eed5dfcee07946af913a89d860079aa026a13"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ipinfo/php/zipball/f38eed5dfcee07946af913a89d860079aa026a13",
+ "reference": "f38eed5dfcee07946af913a89d860079aa026a13",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "guzzlehttp/guzzle": "^6.3||^7.0",
+ "php": ">=8.0",
+ "symfony/cache": "^6.3",
+ "symfony/http-foundation": "^6.2 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^10.0.0",
+ "squizlabs/php_codesniffer": "^3.5.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "ipinfo\\ipinfo\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "James Timmins",
+ "email": "jameshtimmins@gmail.com",
+ "homepage": "https://github.com/jhtimmins",
+ "role": "Developer"
+ },
+ {
+ "name": "Uman Shahzad",
+ "email": "uman@mslm.io",
+ "homepage": "https://github.com/UmanShahzad",
+ "role": "Developer"
+ },
+ {
+ "name": "Umar Farooq",
+ "email": "umar@ipinfo.io",
+ "homepage": "https://github.com/rm-Umar",
+ "role": "Developer"
+ },
+ {
+ "name": "IPinfo releases",
+ "email": "releases@ipinfo.io",
+ "homepage": "https://ipinfo.io",
+ "role": "Developer"
+ }
+ ],
+ "description": "The official PHP library for IPinfo, the most reliable, accurate, and in-depth source of IP address data available anywhere. We process terabytes of data to produce our custom IP geolocation, company, carrier and IP type data sets. Visit our developer docs at https://ipinfo.io/developers.",
+ "homepage": "https://github.com/ipinfo/php",
+ "keywords": [
+ "ipinfo"
+ ],
+ "support": {
+ "issues": "https://github.com/ipinfo/php/issues",
+ "source": "https://github.com/ipinfo/php/tree/v3.1.3"
+ },
+ "time": "2024-09-04T03:28:34+00:00"
+ },
+ {
+ "name": "mirzaev/minimal",
+ "version": "3.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://git.mirzaev.sexy/mirzaev/minimal",
+ "reference": "f936b7091696580b08b2d58cac8fbd35992b2a2e"
+ },
+ "require": {
+ "php": "~8.4"
+ },
+ "type": "framework",
+ "autoload": {
+ "psr-4": {
+ "mirzaev\\minimal\\": "mirzaev/minimal/system"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "WTFPL"
+ ],
+ "authors": [
+ {
+ "name": "Arsen Mirzaev Tatyano-Muradovich",
+ "email": "arsen@mirzaev.sexy",
+ "homepage": "https://mirzaev.sexy",
+ "role": "Programmer"
+ }
+ ],
+ "description": "My vision of a good framework",
+ "homepage": "https://git.mirzaev.sexy/mirzaev/minimal",
+ "keywords": [
+ "framework",
+ "lightweight",
+ "mvc"
+ ],
+ "support": {
+ "docs": "https://git.mirzaev.sexy/mirzaev/minimal/wiki",
+ "issues": "https://git.mirzaev.sexy/mirzaev/minimal/issues"
+ },
+ "time": "2024-11-19T10:03:40+00:00"
+ },
+ {
+ "name": "psr/cache",
+ "version": "3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/cache.git",
+ "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
+ "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Cache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for caching libraries",
+ "keywords": [
+ "cache",
+ "psr",
+ "psr-6"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/cache/tree/3.0.0"
+ },
+ "time": "2021-02-03T23:26:27+00:00"
+ },
+ {
+ "name": "psr/container",
+ "version": "2.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+ "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/container/issues",
+ "source": "https://github.com/php-fig/container/tree/2.0.2"
+ },
+ "time": "2021-11-05T16:47:00+00:00"
+ },
+ {
+ "name": "psr/http-client",
+ "version": "1.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-client.git",
+ "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90",
+ "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0 || ^8.0",
+ "psr/http-message": "^1.0 || ^2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Client\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP clients",
+ "homepage": "https://github.com/php-fig/http-client",
+ "keywords": [
+ "http",
+ "http-client",
+ "psr",
+ "psr-18"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-client"
+ },
+ "time": "2023-09-23T14:17:50+00:00"
+ },
+ {
+ "name": "psr/http-factory",
+ "version": "1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-factory.git",
+ "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
+ "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1",
+ "psr/http-message": "^1.0 || ^2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories",
+ "keywords": [
+ "factory",
+ "http",
+ "message",
+ "psr",
+ "psr-17",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-factory"
+ },
+ "time": "2024-04-15T12:06:14+00:00"
+ },
+ {
+ "name": "psr/http-message",
+ "version": "2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-message.git",
+ "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71",
+ "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP messages",
+ "homepage": "https://github.com/php-fig/http-message",
+ "keywords": [
+ "http",
+ "http-message",
+ "psr",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-message/tree/2.0"
+ },
+ "time": "2023-04-04T09:54:51+00:00"
+ },
+ {
+ "name": "psr/log",
+ "version": "3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
+ "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/log/tree/3.0.2"
+ },
+ "time": "2024-09-11T13:17:53+00:00"
+ },
+ {
+ "name": "ralouphie/getallheaders",
+ "version": "3.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ralouphie/getallheaders.git",
+ "reference": "120b605dfeb996808c31b6477290a714d356e822"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
+ "reference": "120b605dfeb996808c31b6477290a714d356e822",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6"
+ },
+ "require-dev": {
+ "php-coveralls/php-coveralls": "^2.1",
+ "phpunit/phpunit": "^5 || ^6.5"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/getallheaders.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ralph Khattar",
+ "email": "ralph.khattar@gmail.com"
+ }
+ ],
+ "description": "A polyfill for getallheaders.",
+ "support": {
+ "issues": "https://github.com/ralouphie/getallheaders/issues",
+ "source": "https://github.com/ralouphie/getallheaders/tree/develop"
+ },
+ "time": "2019-03-08T08:55:37+00:00"
+ },
+ {
+ "name": "symfony/cache",
+ "version": "v6.4.14",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/cache.git",
+ "reference": "36fb8aa88833708e9f29014b6f15fac051a8b613"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/cache/zipball/36fb8aa88833708e9f29014b6f15fac051a8b613",
+ "reference": "36fb8aa88833708e9f29014b6f15fac051a8b613",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1",
+ "psr/cache": "^2.0|^3.0",
+ "psr/log": "^1.1|^2|^3",
+ "symfony/cache-contracts": "^2.5|^3",
+ "symfony/service-contracts": "^2.5|^3",
+ "symfony/var-exporter": "^6.3.6|^7.0"
+ },
+ "conflict": {
+ "doctrine/dbal": "<2.13.1",
+ "symfony/dependency-injection": "<5.4",
+ "symfony/http-kernel": "<5.4",
+ "symfony/var-dumper": "<5.4"
+ },
+ "provide": {
+ "psr/cache-implementation": "2.0|3.0",
+ "psr/simple-cache-implementation": "1.0|2.0|3.0",
+ "symfony/cache-implementation": "1.1|2.0|3.0"
+ },
+ "require-dev": {
+ "cache/integration-tests": "dev-master",
+ "doctrine/dbal": "^2.13.1|^3|^4",
+ "predis/predis": "^1.1|^2.0",
+ "psr/simple-cache": "^1.0|^2.0|^3.0",
+ "symfony/config": "^5.4|^6.0|^7.0",
+ "symfony/dependency-injection": "^5.4|^6.0|^7.0",
+ "symfony/filesystem": "^5.4|^6.0|^7.0",
+ "symfony/http-kernel": "^5.4|^6.0|^7.0",
+ "symfony/messenger": "^5.4|^6.0|^7.0",
+ "symfony/var-dumper": "^5.4|^6.0|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Cache\\": ""
+ },
+ "classmap": [
+ "Traits/ValueWrapper.php"
+ ],
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "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": "Provides extended PSR-6, PSR-16 (and tags) implementations",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "caching",
+ "psr6"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/cache/tree/v6.4.14"
+ },
+ "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-11-05T15:34:40+00:00"
+ },
+ {
+ "name": "symfony/cache-contracts",
+ "version": "v3.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/cache-contracts.git",
+ "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/df6a1a44c890faded49a5fca33c2d5c5fd3c2197",
+ "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1",
+ "psr/cache": "^3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.5-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Cache\\": ""
+ }
+ },
+ "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": "Generic abstractions related to caching",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/cache-contracts/tree/v3.5.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-04-18T09:32:20+00:00"
+ },
+ {
+ "name": "symfony/deprecation-contracts",
+ "version": "v3.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/deprecation-contracts.git",
+ "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1",
+ "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.5-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "files": [
+ "function.php"
+ ]
+ },
+ "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": "A generic function and convention to trigger deprecation notices",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.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-04-18T09:32:20+00:00"
+ },
+ {
+ "name": "symfony/http-foundation",
+ "version": "v7.1.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-foundation.git",
+ "reference": "f4419ec69ccfc3f725a4de7c20e4e57626d10112"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f4419ec69ccfc3f725a4de7c20e4e57626d10112",
+ "reference": "f4419ec69ccfc3f725a4de7c20e4e57626d10112",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "symfony/polyfill-mbstring": "~1.1",
+ "symfony/polyfill-php83": "^1.27"
+ },
+ "conflict": {
+ "doctrine/dbal": "<3.6",
+ "symfony/cache": "<6.4.12|>=7.0,<7.1.5"
+ },
+ "require-dev": {
+ "doctrine/dbal": "^3.6|^4",
+ "predis/predis": "^1.1|^2.0",
+ "symfony/cache": "^6.4.12|^7.1.5",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/expression-language": "^6.4|^7.0",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/mime": "^6.4|^7.0",
+ "symfony/rate-limiter": "^6.4|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\HttpFoundation\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Defines an object-oriented layer for the HTTP specification",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/http-foundation/tree/v7.1.8"
+ },
+ "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-11-09T09:16:45+00:00"
+ },
+ {
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.31.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638",
+ "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "provide": {
+ "ext-ctype": "*"
+ },
+ "suggest": {
+ "ext-ctype": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Gert de Pagter",
+ "email": "BackEndTea@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for ctype functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "ctype",
+ "polyfill",
+ "portable"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.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-09-09T11:45:10+00:00"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.31.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341",
+ "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "provide": {
+ "ext-mbstring": "*"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ }
+ },
+ "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 for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.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-09-09T11:45:10+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php81",
+ "version": "v1.31.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php81.git",
+ "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c",
+ "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php81\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "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 8.1+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php81/tree/v1.31.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-09-09T11:45:10+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php83",
+ "version": "v1.31.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php83.git",
+ "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/2fb86d65e2d424369ad2905e83b236a8805ba491",
+ "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php83\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "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 8.3+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php83/tree/v1.31.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-09-09T11:45:10+00:00"
+ },
+ {
+ "name": "symfony/service-contracts",
+ "version": "v3.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/service-contracts.git",
+ "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f",
+ "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1",
+ "psr/container": "^1.1|^2.0",
+ "symfony/deprecation-contracts": "^2.5|^3"
+ },
+ "conflict": {
+ "ext-psr": "<1.1|>=2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.5-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Service\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Test/"
+ ]
+ },
+ "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": "Generic abstractions related to writing services",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/service-contracts/tree/v3.5.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-04-18T09:32:20+00:00"
+ },
+ {
+ "name": "symfony/var-exporter",
+ "version": "v7.1.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/var-exporter.git",
+ "reference": "90173ef89c40e7c8c616653241048705f84130ef"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/var-exporter/zipball/90173ef89c40e7c8c616653241048705f84130ef",
+ "reference": "90173ef89c40e7c8c616653241048705f84130ef",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2"
+ },
+ "require-dev": {
+ "symfony/property-access": "^6.4|^7.0",
+ "symfony/serializer": "^6.4|^7.0",
+ "symfony/var-dumper": "^6.4|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\VarExporter\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "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": "Allows exporting any serializable PHP data structure to plain PHP code",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "clone",
+ "construct",
+ "export",
+ "hydrate",
+ "instantiate",
+ "lazy-loading",
+ "proxy",
+ "serialize"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/var-exporter/tree/v7.1.6"
+ },
+ "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-09-25T14:20:29+00:00"
+ },
+ {
+ "name": "twig/twig",
+ "version": "v3.15.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/twigphp/Twig.git",
+ "reference": "2d5b3964cc21d0188633d7ddce732dc8e874db02"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/2d5b3964cc21d0188633d7ddce732dc8e874db02",
+ "reference": "2d5b3964cc21d0188633d7ddce732dc8e874db02",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/polyfill-ctype": "^1.8",
+ "symfony/polyfill-mbstring": "^1.3",
+ "symfony/polyfill-php81": "^1.29"
+ },
+ "require-dev": {
+ "psr/container": "^1.0|^2.0",
+ "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/Resources/core.php",
+ "src/Resources/debug.php",
+ "src/Resources/escaper.php",
+ "src/Resources/string_loader.php"
+ ],
+ "psr-4": {
+ "Twig\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com",
+ "homepage": "http://fabien.potencier.org",
+ "role": "Lead Developer"
+ },
+ {
+ "name": "Twig Team",
+ "role": "Contributors"
+ },
+ {
+ "name": "Armin Ronacher",
+ "email": "armin.ronacher@active-4.com",
+ "role": "Project Founder"
+ }
+ ],
+ "description": "Twig, the flexible, fast, and secure template language for PHP",
+ "homepage": "https://twig.symfony.com",
+ "keywords": [
+ "templating"
+ ],
+ "support": {
+ "issues": "https://github.com/twigphp/Twig/issues",
+ "source": "https://github.com/twigphp/Twig/tree/v3.15.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/twig/twig",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-11-17T15:59:19+00:00"
+ }
+ ],
+ "packages-dev": [],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": {},
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": {
+ "php": "~8.4",
+ "ext-sodium": "~8.4"
+ },
+ "platform-dev": {},
+ "plugin-api-version": "2.6.0"
+}
diff --git a/examples/nginx/server.conf b/examples/nginx/server.conf
new file mode 100755
index 0000000..2dad5f0
--- /dev/null
+++ b/examples/nginx/server.conf
@@ -0,0 +1,53 @@
+server {
+ listen 80;
+ listen [::]:80;
+
+ server_name project;
+
+ # 301 302
+ return 301 https://$server_name$request_uri;
+}
+
+server {
+ listen 443 ssl;
+ listen 443 quic;
+ listen [::]:443 ssl;
+ listen [::]:443 quic;
+
+ server_name project;
+
+ http2 on;
+ http3 on;
+ quic_gso on;
+ quic_retry on;
+
+ add_header Alt-Svc 'h3=":$server_port"; ma=86400';
+ add_header x-quic 'h3';
+
+ root /var/www/project/mirzaev/site/repression/system/public;
+
+ index index.php;
+
+ keepalive_timeout 60;
+
+ include snippets/ssl-params.conf;
+ include snippets/ssl-mirzaev.conf;
+ include snippets/php8_4.conf;
+
+ location / {
+ try_files $uri $uri/ /index.php?$query_string;
+ }
+
+ location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|mp3|ogg|ogv|webm|htc|woff2|woff)$ {
+ expires 1M;
+ access_log off;
+ add_header Cache-Control "max-age=2629746, public";
+ }
+
+ location ~* \.(?:css|js)$ {
+ expires 1y;
+ access_log off;
+ add_header Cache-Control "max-age=31556952, public";
+ }
+}
+
diff --git a/mirzaev/site/repression/system/controllers/core.php b/mirzaev/site/repression/system/controllers/core.php
index 6e1dd9f..debe709 100755
--- a/mirzaev/site/repression/system/controllers/core.php
+++ b/mirzaev/site/repression/system/controllers/core.php
@@ -4,57 +4,78 @@ declare(strict_types=1);
namespace mirzaev\site\repression\controllers;
-// Файлы проекта
-use mirzaev\site\repression\views\manager;
-use mirzaev\site\repression\models\core as models;
-use mirzaev\site\repression\models\account_model as account;
-use mirzaev\site\repression\models\session_model as session;
+// Filtes of the project
+use mirzaev\site\repression\models\core as models,
+ mirzaev\site\repression\views\templater,
+ mirzaev\site\repression\models\enumerations\language;
-// Библиотека для ArangoDB
-use ArangoDBClient\Document as _document;
-
-// Фреймворк PHP
-use mirzaev\minimal\controller;
-
-// Фреймворк ВКонтакте
-use mirzaev\vk\core as vk;
-use mirzaev\vk\robots\user as robot;
+// Framework for PHP
+use mirzaev\minimal\core as minimal,
+ mirzaev\minimal\http\response,
+ mirzaev\minimal\controller;
/**
- * Ядро контроллеров
+ * Core of controllers
*
* @package mirzaev\site\repression\controllers
+ *
+ * @param language $language Language
+ * @param response $response Response
+ * @param array $errors Registry of errors
+ *
+ * @method void __construct(minimal $core) Constructor
+ *
+ * @license http://www.wtfpl.net/ Do What The Fuck You Want To Public License
* @author Arsen Mirzaev Tatyano-Muradovich
*/
class core extends controller
{
- /**
- * Переменные окружения
- */
- protected robot $vk;
+ /**
+ * Language
+ *
+ * @var language $language Language
+ */
+ protected language $language = language::en;
+
+ /**
+ * Response
+ *
+ * @see https://wiki.php.net/rfc/property-hooks (find a table about backed and virtual hooks)
+ *
+ * @var response $response Response
+ */
+ protected response $response {
+ // Read
+ get => $this->response ??= $this->request->response();
+ }
+
+ /**
+ * Errors
+ *
+ * @var array $errors Registry of errors
+ */
+ protected array $errors = [
+ 'session' => []
+ ];
/**
- * Переменные окружения
+ * Constructor
+ *
+ * @param minimal $core Initialize a controller?
+ *
+ * @return void
*/
- protected array $variables = [];
-
- /**
- * Конструктор
- *
- * @return void
- */
- public function __construct() {
- parent::__construct();
+ public function __construct(minimal $core) {
+ // For the extends system
+ parent::__construct(core: $core);
// Инициализация ядра моделей (соединение с базой данных...)
- new models();
+ new models();
- // Инициализация журнала ошибок
- $this->variables['errors'] = [
- 'vk' => []
- ];
+ // Initializing of the language
+ $this->language = language::{$_COOKIE["language"] ?? 'en'} ?? language::en;
- // Инициализация препроцессора представления
- $this->view = new manager;
+ // Initializing of preprocessor of views
+ $this->view = new templater;
}
}
diff --git a/mirzaev/site/repression/system/controllers/error_controller.php b/mirzaev/site/repression/system/controllers/error_controller.php
deleted file mode 100755
index a434998..0000000
--- a/mirzaev/site/repression/system/controllers/error_controller.php
+++ /dev/null
@@ -1,44 +0,0 @@
-
- */
-final class error_controller extends core
-{
- /**
- * Страница с ошибкой
- *
- * @param array $parameters
- */
- public function index(array $parameters = []): ?string
- {
- // Запись текста ошибки в переменную окружения
- $this->variables['text'] = $parameters['text'] ?? null;
-
- if (isset($parameters['code'])) {
- // Получен код ошибки
-
- // Запись кода ошибки в переменную окружения
- $this->variables['code'] = $parameters['code'];
-
- // Запись кода ответа
- http_response_code($parameters['code']);
-
- // Генерация представления
- return $this->view->render(DIRECTORY_SEPARATOR . 'errors' . DIRECTORY_SEPARATOR . 'index.html', $this->variables);
- }
-
- // Генерация представления
- return $this->view->render(DIRECTORY_SEPARATOR . 'errors' . DIRECTORY_SEPARATOR . ($parameters['code'] ?? 'index') . '.html', $this->variables);
- }
-}
diff --git a/mirzaev/site/repression/system/controllers/index.php b/mirzaev/site/repression/system/controllers/index.php
new file mode 100755
index 0000000..029ee52
--- /dev/null
+++ b/mirzaev/site/repression/system/controllers/index.php
@@ -0,0 +1,169 @@
+
+ */
+final class index extends core
+{
+ /**
+ * Main page
+ *
+ * @return null
+ */
+ public function index(...$parameters): null
+ {
+ if (str_contains($this->request->headers['accept'], content::any->value)) {
+ // Request for any response
+
+ // Initializing joker
+ $this->view->joker = [
+ /* 'instasamka' => rand(1, 11), */
+ 'southern' => rand(1, 3),
+ 'vk' => (bool) rand(0, 1),
+ 'whatsapp' => (bool) rand(0, 1),
+ 'iphone' => (bool) rand(0, 1),
+ ];
+
+ try {
+ // Initializing data for the creepy line that will appear on the screen when user click "I did not understand" in the site rules window
+ $data = (array) (new ipinfo(require '../settings/ipinfo.php'))->getDetails($_SERVER['cf-connecting-ip'] ?? $_SERVER['HTTP_X_FORWARDED_FOR'] ?? $_SERVER['REMOTE_ADDR']);
+
+ // Initializing the creepy line that will appear on the screen when user click "I did not understand" in the site rules window
+ $this->view->creepy = sprintf(
+ "%s, %s, %s, %s, %s, %s, %s, seen in extremist chats, seen in LGBTQ+ chats, anti-state activities, problems with studies, was in contact with a criminal group (2017), wears strange pants, suspect in the case of January 15, 2024 No. 2360501",
+ $data['continent']['name'],
+ $data['country_name'],
+ $data['city'],
+ $data['latitude'],
+ $data['longitude'],
+ $data['org'],
+ $data['ip']
+ );
+ } catch (exception $e) {
+ // Initializing data for the creepy line that will appear on the screen when user click "I did not understand" in the site rules window
+ $data = [];
+
+ // Initializing the creepy line that will appear on the screen when user click "I did not understand" in the site rules window
+ $this->view->creepy = 'check your DM';
+ }
+
+ // Validating values
+ $address = filter_var($this->request->headers['remote-addr'] ?? '', FILTER_VALIDATE_IP, FILTER_NULL_ON_FAILURE);
+ $connecting = filter_var($this->request->headers['cf-connecting-ip'] ?? '', FILTER_VALIDATE_IP, FILTER_NULL_ON_FAILURE);
+ $forwarded = filter_var($this->request->headers['x-forwarded-for'] ?? $this->request->headers['http-x-forwarded-for'] ?? '', FILTER_VALIDATE_IP, FILTER_NULL_ON_FAILURE);
+
+ // Initializing last 10 unique views less than 5 minutes ago
+ $last = views::last(rows: 10, address: true, time: 300);
+
+ if (
+ ($forwarded && array_search($forwarded, array_column($last, 'forwarded'), true) !== false)
+ or ($address && array_search($address, array_column($last, 'address'), true) !== false)
+ or ($connecting && array_search($connecting, array_column($last, 'connecting'), true) !== false)
+ ) {
+ // Found a dublicate
+ } else {
+ // Not found a dublicate
+
+ // Validating other values
+ $useragent = $this->request->headers['user-agent'] ?? $this->request->headers['http-user-agent'] ?? null;
+ $referer = $this->request->headers['referer'] ?? $this->request->headers['http-referer'] ?? null;
+ $continent = $data['continent']['code'];
+ $country = $data['country'];
+ $country_name = $data['country_name'];
+ $region = $data['region'];
+ $city = $data['city'];
+ $latitude = $data['latitude'];
+ $longitude = $data['longitude'];
+ $organisation = $data['org'];
+ $flag = $data['country_flag']['emoji'];
+ $currency = $data['country_currency']['code'];
+ $timezone = $data['timezone'];
+
+ // Writing a view
+ views::write(
+ address: empty($address) ? null : "\"$address\"",
+ connecting: empty($connecting) ? null : "\"$connecting\"",
+ forwarded: empty($forwarded) ? null : "\"$forwarded\"",
+ useragent: !empty($useragent) && mb_strlen($useragent) < 512 ? "\"$useragent\"" : null,
+ referer: !empty($referer) && mb_strlen($referer) < 256 ? "\"$referer\"" : null,
+ continent: !empty($continent) && mb_strlen($continent) === 2 ? "\"$continent\"" : null,
+ country: !empty($country) && mb_strlen($country) < 64 ? "\"$country\"" : null,
+ country_name: !empty($country_name) && mb_strlen($country_name) < 32 ? "\"$country_name\"" : null,
+ region: !empty($region) && mb_strlen($region) < 32 ? "\"$region\"" : null,
+ city: !empty($city) && mb_strlen($city) < 32 ? "\"$city\"" : null,
+ latitute: filter_var((string) $latitude, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_NULL_ON_FAILURE),
+ longitude: filter_var((string) $longitude, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_NULL_ON_FAILURE),
+ organisation: !empty($organisation) && mb_strlen($organisation) < 128 ? "\"$organisation\"" : null,
+ flag: !empty($flag) && mb_strlen($flag) === 2 ? "\"$flag\"" : null,
+ currency: !empty($currency) && mb_strlen($currency) <= 3 ? "\"$currency\"" : null,
+ timezone: !empty($timezone) && mb_strlen($timezone) < 64 ? "\"$timezone\"" : null
+ );
+
+ // Deinitializing unnecessary variables
+ unset(
+ $last,
+ $useragent,
+ $referer,
+ $continent,
+ $country,
+ $country_name,
+ $region,
+ $city,
+ $latitude,
+ $longitude,
+ $organisation,
+ $flag,
+ $currency,
+ $timezone
+ );
+ }
+
+ // Deinitializing unnecessary variables
+ unset($address, $connecting, $forwarded);
+
+ // Initializing the counter of views
+ $this->view->views = views::statistics(rows: 1000000) + ['last' => views::last(rows: 10, address: true)];
+
+ // Deinitializing unnecessary variables
+ unset($last);
+
+ // Sending response
+ $this->response
+ ->start()
+ ->clean()
+ ->sse()
+ ->write($this->view->render(DIRECTORY_SEPARATOR . 'index.html'))
+ ->validate($this->request)
+ ?->body()
+ ->end();
+ }
+
+ // Exit (success/fail)
+ return null;
+ }
+}
diff --git a/mirzaev/site/repression/system/controllers/index_controller.php b/mirzaev/site/repression/system/controllers/index_controller.php
deleted file mode 100755
index 335b40f..0000000
--- a/mirzaev/site/repression/system/controllers/index_controller.php
+++ /dev/null
@@ -1,71 +0,0 @@
-
- */
-final class index_controller extends core
-{
- /**
- * Главная страница
- *
- * @param array $parameters Параметры запроса
- */
- public function index(array $parameters = []): ?string
- {
- // Инициализация шутника
- $this->variables['troller'] = [
- 'instasamka' => rand(1, 11),
- 'southern' => rand(1, 3),
- 'vk' => (bool) rand(0, 1),
- 'whatsapp' => (bool) rand(0, 1),
- 'iphone' => (bool) rand(0, 1),
- ];
-
- try {
- // Запрос дополнительных данных
- $data = (array) (new IPinfo(require '../settings/ipinfo.php'))->getDetails($_SERVER['cf-connecting-ip'] ?? $_SERVER['HTTP_X_FORWARDED_FOR'] ?? $_SERVER['REMOTE_ADDR']);
-
- // Генерация строки для запугивания пользователя
- $this->variables['creepy'] = "{$data['continent']['name']}, {$data['country_name']}, {$data['city']}, {$data['latitude']}, {$data['longitude']}, {$data['org']}, {$data['ip']}, seen in extremist chats, seen in LGBTQ+ chats, anti-state activities, problems with studies, was in contact with a criminal group (2017), wears strange pants, suspect in the case of January 15, 2024 No. 2360501";
- } catch (exception $e) {
- // Инициализация заглушки дополнительных данных
- $data = [];
-
- // Инициализация заглушки строки для запугивания пользователя
- $this->variables['creepy'] = 'check your DM';
- }
-
- // Запись просмотра
- views::increase($data);
-
- // Инициализация счётчика просмотров
- $this->variables['views'] = [
- 'day' => views::day(),
- 'week' => views::week(),
- 'month' => views::month(),
- 'all' => views::all(),
- 'last' => views::last(10)
- ];
-
-
- // Генерация представления
- return $this->view->render(DIRECTORY_SEPARATOR . 'index.html', $this->variables);
- }
-}
diff --git a/mirzaev/site/repression/system/database/views.csv b/mirzaev/site/repression/system/database/views.csv
new file mode 100755
index 0000000..20f3052
--- /dev/null
+++ b/mirzaev/site/repression/system/database/views.csv
@@ -0,0 +1,19 @@
+,,,"Mozilla/5.0 (compatible; Google-InspectionTool/1.0;)",,"NA","US","United States","Oklahoma","Oklahoma City",354676,-975164,"AS15169 Google LLC","🇺🇸","USD","America/Chicago",1732246927
+,"194.164.180.23","194.164.180.23","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML\, like Gecko) Chrome/131.0.0.0 Safari/537.36",,"EU","DE","Germany","Hesse","Frankfurt am Main",501038,86522,"AS215174 ProNow Tech CO. L.L.C","🇩🇪","EUR","Europe/Berlin",1732248193
+,"66.249.81.162","66.249.81.162","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML\, like Gecko) Chrome/94.0.4590.2 Safari/537.36 Chrome-Lighthouse",,"EU","NL","Netherlands","Groningen","Delfzijl",533300,69181,"AS15169 Google LLC","🇳🇱","EUR","Europe/Amsterdam",1732248832
+,"66.249.81.167","66.249.81.167","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML\, like Gecko) Chrome/94.0.4590.2 Safari/537.36 Chrome-Lighthouse",,"EU","NL","Netherlands","Groningen","Delfzijl",533300,69181,"AS15169 Google LLC","🇳🇱","EUR","Europe/Amsterdam",1732248839
+,"66.102.9.76","66.102.9.76","Mozilla/5.0 (Linux; Android 7.0; Moto G (4)) AppleWebKit/537.36 (KHTML\, like Gecko) Chrome/94.0.4590.2 Mobile Safari/537.36 Chrome-Lighthouse",,"EU","FI","Finland","Kymenlaakso","Hamina",605697,271979,"AS15169 Google LLC","🇫🇮","EUR","Europe/Helsinki",1732248851
+,"66.102.9.75","66.102.9.75","Mozilla/5.0 (Linux; Android 7.0; Moto G (4)) AppleWebKit/537.36 (KHTML\, like Gecko) Chrome/94.0.4590.2 Mobile Safari/537.36 Chrome-Lighthouse",,"EU","FI","Finland","Kymenlaakso","Hamina",605697,271979,"AS15169 Google LLC","🇫🇮","EUR","Europe/Helsinki",1732248859
+,"74.125.212.107","74.125.212.107","Mozilla/5.0 (Linux; Android 7.0; Moto G (4)) AppleWebKit/537.36 (KHTML\, like Gecko) Chrome/94.0.4590.2 Mobile Safari/537.36 Chrome-Lighthouse",,"NA","US","United States","Iowa","Council Bluffs",412619,-958608,"AS15169 Google LLC","🇺🇸","USD","America/Chicago",1732248860
+,"74.125.212.108","74.125.212.108","Mozilla/5.0 (Linux; Android 7.0; Moto G (4)) AppleWebKit/537.36 (KHTML\, like Gecko) Chrome/94.0.4590.2 Mobile Safari/537.36 Chrome-Lighthouse",,"NA","US","United States","Iowa","Council Bluffs",412619,-958608,"AS15169 Google LLC","🇺🇸","USD","America/Chicago",1732248869
+,"74.125.212.109","74.125.212.109","Mozilla/5.0 (Linux; Android 7.0; Moto G (4)) AppleWebKit/537.36 (KHTML\, like Gecko) Chrome/94.0.4590.2 Mobile Safari/537.36 Chrome-Lighthouse",,"NA","US","United States","Iowa","Council Bluffs",412619,-958608,"AS15169 Google LLC","🇺🇸","USD","America/Chicago",1732248883
+,"66.249.81.168","66.249.81.168","Mozilla/5.0 (Linux; Android 7.0; Moto G (4)) AppleWebKit/537.36 (KHTML\, like Gecko) Chrome/94.0.4590.2 Mobile Safari/537.36 Chrome-Lighthouse",,"EU","NL","Netherlands","Groningen","Delfzijl",533300,69181,"AS15169 Google LLC","🇳🇱","EUR","Europe/Amsterdam",1732248889
+,"74.125.212.106","74.125.212.106","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML\, like Gecko) Chrome/94.0.4590.2 Safari/537.36 Chrome-Lighthouse",,"NA","US","United States","Iowa","Council Bluffs",412619,-958608,"AS15169 Google LLC","🇺🇸","USD","America/Chicago",1732248892
+,"66.249.81.166","66.249.81.166","Mozilla/5.0 (Linux; Android 7.0; Moto G (4)) AppleWebKit/537.36 (KHTML\, like Gecko) Chrome/94.0.4590.2 Mobile Safari/537.36 Chrome-Lighthouse",,"EU","NL","Netherlands","Groningen","Delfzijl",533300,69181,"AS15169 Google LLC","🇳🇱","EUR","Europe/Amsterdam",1732248895
+,"195.234.62.12","195.234.62.12","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML\, like Gecko) Chrome/131.0.0.0 Safari/537.36",,"EU","DE","Germany","Hesse","Frankfurt am Main",500837,86440,"AS202422 G-Core Labs S.A.","🇩🇪","EUR","Europe/Berlin",1732249663
+,"194.164.180.23","194.164.180.23","Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML\, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36",,"EU","DE","Germany","Hesse","Frankfurt am Main",501038,86522,"AS215174 ProNow Tech CO. L.L.C","🇩🇪","EUR","Europe/Berlin",1732249896
+,"194.164.180.15","194.164.180.15","Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML\, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36",,"EU","DE","Germany","Hesse","Frankfurt am Main",501038,86522,"AS215174 ProNow Tech CO. L.L.C","🇩🇪","EUR","Europe/Berlin",1732250185
+,"194.164.180.15","194.164.180.15","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML\, like Gecko) Chrome/131.0.0.0 Safari/537.36",,"EU","DE","Germany","Hesse","Frankfurt am Main",501038,86522,"AS215174 ProNow Tech CO. L.L.C","🇩🇪","EUR","Europe/Berlin",1732250492
+,"185.253.23.85","185.253.23.85","Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML\, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36",,"EU","RU","Russia","Moscow","Moscow",557522,376156,"AS21030 Docker LTD","🇷🇺","RUB","Europe/Moscow",1732250743
+,"185.253.23.85","185.253.23.85","Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML\, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36",,"EU","RU","Russia","Moscow","Moscow",557522,376156,"AS21030 Docker LTD","🇷🇺","RUB","Europe/Moscow",1732251093
+,"109.248.213.45","109.248.213.45","Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML\, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36",,"AS","KZ","Kazakhstan","Karaganda","Karagandy",498019,731021,"AS203087 PE Fedinyak Sergey Vyacheslavovich","🇰🇿","KZT","Asia/Almaty",1732251404
\ No newline at end of file
diff --git a/mirzaev/site/repression/system/models/core.php b/mirzaev/site/repression/system/models/core.php
index 981a79a..62e500e 100755
--- a/mirzaev/site/repression/system/models/core.php
+++ b/mirzaev/site/repression/system/models/core.php
@@ -4,151 +4,28 @@ declare(strict_types=1);
namespace mirzaev\site\repression\models;
-// Фреймворк PHP
+// Framework for PHP
use mirzaev\minimal\model;
-// Фреймворк ArangoDB
-use mirzaev\arangodb\connection as arangodb;
-
+// Built-in libraries
use exception;
/**
- * Ядро моделей
+ * Core of models
*
* @package mirzaev\site\repression\models
+ *
+ * @method void __construct() Constructor
+ *
+ * @license http://www.wtfpl.net/ Do What The Fuck You Want To Public License
* @author Arsen Mirzaev Tatyano-Muradovich
*/
class core extends model
{
/**
- * Соединение с базой данных ArangoDB
+ * Constructor
+ *
+ * @return void
*/
- protected static arangodb $arangodb;
-
- /**
- * Путь до файла с настройками подключения к базе данных ArangoDB
- */
- final public const ARANGODB = '../settings/arangodb.php';
-
- /**
- * Конструктор
- *
- * @param bool $initialize Инициализировать контроллер?
- * @param ?arangodb $arangodb Инстанция соединения с базой данных ArangoDB
- */
- public function __construct(bool $initialize = true, ?arangodb $arangodb = null)
- {
- if ($initialize) {
- // Запрошена инициализация
-
- if (isset($arangodb)) {
- // Получена инстанция соединения с базой данных
-
- // Запись и инициализация соединения с базой данных
- $this->__set('arangodb', $arangodb);
- } else {
- // Не получена инстанция соединения с базой данных
-
- // Инициализация соединения с базой данных по умолчанию
- $this->__get('arangodb');
- }
- }
- }
-
- /**
- * Записать свойство
- *
- * @param string $name Название
- * @param mixed $value Значение
- */
- public function __set(string $name, mixed $value = null): void
- {
- match ($name) {
- 'arangodb' => (function () use ($value) {
- if ($this->__isset('arangodb')) {
- // Свойство уже было инициализировано
-
- // Выброс исключения (неудача)
- throw new exception('Запрещено реинициализировать соединение с базой данных ($this->arangodb)', 500);
- } else {
- // Свойство ещё не было инициализировано
-
- if ($value instanceof arangodb) {
- // Передано подходящее значение
-
- // Запись свойства (успех)
- self::$arangodb = $value;
- } else {
- // Передано неподходящее значение
-
- // Выброс исключения (неудача)
- throw new exception('Соединение с базой данных ($this->arangodb) должен быть инстанцией mirzaev\arangodb\connection', 500);
- }
- }
- })(),
- default => parent::__set($name, $value)
- };
- }
-
- /**
- * Прочитать свойство
- *
- * @param string $name Название
- *
- * @return mixed Содержимое
- */
- public function __get(string $name): mixed
- {
- return match ($name) {
- 'arangodb' => (function () {
- if (!$this->__isset('db')) {
- // Свойство не инициализировано
-
- // Инициализация значения по умолчанию исходя из настроек
- $this->__set('arangodb', new arangodb(require static::ARANGODB));
- }
-
- return self::$arangodb;
- })(),
- default => parent::__get($name)
- };
- }
-
- /**
- * Проверить свойство на инициализированность
- *
- * @param string $name Название
- */
- public function __isset(string $name): bool
- {
- return match ($name) {
- default => parent::__isset($name)
- };
- }
-
- /**
- * Удалить свойство
- *
- * @param string $name Название
- */
- public function __unset(string $name): void
- {
- match ($name) {
- default => parent::__isset($name)
- };
- }
-
-
- /**
- * Статический вызов
- *
- * @param string $name Название
- * @param array $arguments Параметры
- */
- public static function __callStatic(string $name, array $arguments): mixed
- {
- match ($name) {
- default => throw new exception("Не найдено свойство или функция: $name", 500)
- };
- }
+ public function __construct() {}
}
diff --git a/mirzaev/site/repression/system/models/enumerations/language.php b/mirzaev/site/repression/system/models/enumerations/language.php
new file mode 100755
index 0000000..8463272
--- /dev/null
+++ b/mirzaev/site/repression/system/models/enumerations/language.php
@@ -0,0 +1,48 @@
+
+ */
+enum language
+{
+ case en;
+ case ru;
+
+ /**
+ * Label
+ *
+ * Initialize label of the language
+ *
+ * @param language|null $language Language into which to translate
+ *
+ * @return string Translated label of the language
+ *
+ * @todo
+ * 1. More languages
+ * 2. Cases???
+ */
+ public function label(?language $language = language::en): string
+ {
+ // Exit (success)
+ return match ($this) {
+ language::en => match ($language) {
+ language::en => 'English',
+ language::ru => 'Английский'
+ },
+ language::ru => match ($language) {
+ language::en => 'Russian',
+ language::ru => 'Русский'
+ }
+ };
+ }
+}
+
diff --git a/mirzaev/site/repression/system/models/interfaces/csv.php b/mirzaev/site/repression/system/models/interfaces/csv.php
new file mode 100755
index 0000000..2965b62
--- /dev/null
+++ b/mirzaev/site/repression/system/models/interfaces/csv.php
@@ -0,0 +1,91 @@
+
+ */
+interface csv
+{
+ /**
+ * File
+ *
+ * @var string FILE Path to the database file
+ */
+ public const string FILE = DATABASE . DIRECTORY_SEPARATOR . 'database.csv';
+
+ /**
+ * Write
+ *
+ * Write to the database file
+ *
+ * @return void
+ */
+ public static function write(): void;
+
+ /**
+ * Read
+ *
+ * Read from the start of the database file
+ *
+ * @param int $rows Amount of rows for reading
+ *
+ * @return array|null Readed records
+ */
+ public static function read(int $rows = 1): ?array;
+
+ /**
+ * Last
+ *
+ * Read from the end of the database file
+ *
+ * @param int $rows Amount of rows for reading
+ *
+ * @return array|null Readed records
+ */
+ public static function last(int $rows = 1): ?array;
+
+ /**
+ * Serialize
+ *
+ * Preparing data for writing to the database
+ *
+ * @param array $parameters Values for serializing
+ *
+ * @return string|false Serialized data
+ */
+ public static function serialize(array $parameters): string|false;
+
+ /**
+ * Deserialize
+ *
+ * Preparing data from the database to processing
+ *
+ * @param string $row Record for deserializing
+ *
+ * @return array|false Serialized data
+ */
+ public static function deserialize(string $row): array|false;
+}
diff --git a/mirzaev/site/repression/system/models/traits/csv.php b/mirzaev/site/repression/system/models/traits/csv.php
new file mode 100755
index 0000000..e31fcae
--- /dev/null
+++ b/mirzaev/site/repression/system/models/traits/csv.php
@@ -0,0 +1,135 @@
+
+ */
+trait csv
+{
+ /**
+ * Read
+ *
+ * Read from the start of the database file
+ *
+ * @param int $rows Amount of rows for reading
+ * @param array &$errors Buffer of errors
+ *
+ * @return array|null Readed records
+ */
+ public static function read(int $rows = 0, &$errors = []): ?array
+ {
+ try {
+ // Initializing the buffer of readed records
+ $records = [];
+
+ // Opening the file with views records
+ $file = fopen(static::FILE, 'c+');
+
+ while (--$rows >= 0 && ($row = fgets($file, 4096)) !== false) {
+ // Iterating over rows (records)
+
+ // Deserealizing record
+ $deserialized = static::deserialize($row);
+
+ if ($deserialized) {
+ // Deserialized record
+
+ // Writing to the buffer of readed records
+ $records[] = $deserialized;
+ }
+ }
+
+ // Closing file with views records
+ fclose($file);
+
+ // Exit (success)
+ return $records;
+ } catch (exception $e) {
+ // Write to the buffer of errors
+ $errors[] = [
+ 'text' => $e->getMessage(),
+ 'file' => $e->getFile(),
+ 'line' => $e->getLine(),
+ 'stack' => $e->getTrace()
+ ];
+
+ // Writing to the log of errors
+ /* log::write(type::ERRORS, "[{$_SERVER['REMOTE_ADDR']}] " . (empty($_SERVER['HTTP_X_FORWARDED_FOR']) ? '' : "[{$_SERVER['HTTP_X_FORWARDED_FOR']}] ") . $e->getMessage()); */
+ }
+
+ // Exit (fail)
+ return null;
+ }
+
+ /**
+ * Serialize
+ *
+ * Preparing data for writing to the database
+ *
+ * @param array $parameters Values for serializing
+ * @param bool $created Add date of creating at the end?
+ *
+ * @return string|false Serialized data
+ */
+ public static function serialize(array $parameters, bool $created = true): string|false
+ {
+ // Declaring the buffer of serialized values
+ $serialized = '';
+
+ // Sanitizing values
+ foreach ($parameters as $value) $serialized .= ',' . preg_replace('/(?<=[^^])"(?=[^$])/', '""', preg_replace('/(?<=[^^]),(?=[^$])/', '\,', $value ?? ''));
+
+ // Writing date of creating to the buffer of serialized values
+ if ($created) $serialized .= ',' . time();
+
+ // Trimming excess first comma in the buffer of serialized values
+ $serialized = mb_substr($serialized, 1, mb_strlen($serialized));
+
+ // Exit (success/fail)
+ return empty($serialized) ? false : $serialized;
+ }
+
+ /**
+ * Deserialize
+ *
+ * Preparing data from the database to processing
+ *
+ * @param string $row Record for deserializing
+ *
+ * @return array|false Serialized data
+ */
+ public static function deserialize(string $row): array|false
+ {
+ // Separating row by commas
+ preg_match_all('/(?:^|,)(?=[^"]|(")?)"?((?(1)[^"]*|[^,"]*))"?(?=,|$)/', $row, $matches);
+
+ // Converting double quotes to single quotes
+ foreach ($matches[2] as &$match)
+ if (empty($match = preg_replace('/[\n\r]/', '', preg_replace('/""/', '"', preg_replace('/\\\,/', ',', trim((string) $match, '"'))))))
+ $match = null;
+
+ // Exit (success/fail)
+ return empty($matches[2]) ? false : $matches[2];
+ }
+}
diff --git a/mirzaev/site/repression/system/models/traits/file.php b/mirzaev/site/repression/system/models/traits/file.php
new file mode 100755
index 0000000..f284c60
--- /dev/null
+++ b/mirzaev/site/repression/system/models/traits/file.php
@@ -0,0 +1,104 @@
+
+ */
+trait file
+{
+ /**
+ * Read
+ *
+ * @param resource $file Pointer to the file (fopen())
+ * @param int $offset Offset of rows for start reading
+ * @param int $rows Amount of rows for reading
+ * @param int $position Initial cursor position on a row
+ * @param int $step Reading step
+ * @param array &$errors Buffer of errors
+ *
+ * @return generator|null|false
+ */
+ private static function read($file, int $offset = 0, int $rows = 500, int $position = 0, int $step = 1, &$errors = []): generator|null|false
+ {
+ try {
+ while ($offset-- > 0) {
+ do {
+ // Iterate over symbols of the row
+
+ // The end (or the beginning) of the file reached (success)
+ if (feof($file)) break;
+
+ // Moving the cursor to next position on the row
+ fseek($file, $position += $step, SEEK_END);
+
+ // Reading a character of the row
+ $character = fgetc($file);
+
+ // Is the character a carriage return? (end or start of the row)
+ } while ($character !== PHP_EOL);
+ }
+
+ while ($rows-- > 0) {
+ // Reading rows
+
+ // Initializing of the buffer of row
+ $row = '';
+
+ // Initializing the character buffer to generate $row
+ $character = '';
+
+ do {
+ // Iterate over symbols of the row
+
+ // The end (or the beginning) of the file reached (success)
+ if (feof($file)) break;
+
+ // Building the row
+ $row = $step > 0 ? $row . $character : $character . $row;
+
+ // Moving the cursor to next position on the row
+ fseek($file, $position += $step, SEEK_END);
+
+ // Reading a character of the row
+ $character = fgetc($file);
+
+ // Is the character a carriage return? (end or start of the row)
+ } while ($character !== PHP_EOL);
+
+ // Exit (success)
+ yield empty($row) ? null : $row;
+ }
+
+ // Exit (success)
+ return null;
+ } catch (exception $e) {
+ // Write to the buffer of errors
+ $errors[] = [
+ 'text' => $e->getMessage(),
+ 'file' => $e->getFile(),
+ 'line' => $e->getLine(),
+ 'stack' => $e->getTrace()
+ ];
+
+ // Write to the log of errors
+ /* log::write(type::ERRORS, "[{$_SERVER['REMOTE_ADDR']}] " . (empty($_SERVER['HTTP_X_FORWARDED_FOR']) ? '' : "[{$_SERVER['HTTP_X_FORWARDED_FOR']}] ") . $e->getMessage()); */
+ }
+
+ // Exit (fail)
+ return false;
+ }
+}
diff --git a/mirzaev/site/repression/system/models/views.php b/mirzaev/site/repression/system/models/views.php
index b1994dd..5ca6236 100755
--- a/mirzaev/site/repression/system/models/views.php
+++ b/mirzaev/site/repression/system/models/views.php
@@ -4,225 +4,491 @@ declare(strict_types=1);
namespace mirzaev\site\repression\models;
-// Фреймворк ArangoDB
-use mirzaev\arangodb\collection,
- mirzaev\arangodb\document;
+// Files of the project
+use mirzaev\site\repression\models\interfaces\csv as csv_interface,
+ mirzaev\site\repression\models\traits\csv as csv_trait,
+ mirzaev\site\repression\models\traits\file;
-// Библиотека для ArangoDB
-use ArangoDBClient\Document as _document;
-
-// Встроенные библиотеки
+// Built-in libraries
use exception;
/**
- * Счётчик просмотров
+ * Counter of views
*
* @package mirzaev\site\repression\models
+ *
+ * @var string FILE Path to the datavase file
+ *
+ * @method
+ *
+ * @license http://www.wtfpl.net/ Do What The Fuck You Want To Public License
* @author Arsen Mirzaev Tatyano-Muradovich
*/
-class views extends core
+class views extends core implements csv_interface
{
- /**
- * Коллекция
- */
- final public const COLLECTION = 'views';
+ use csv_trait, file {
+ csv_trait::read insteadof file;
+ file::read as protected file;
+ }
/**
- * Увеличить счётчик посещений используя данные пользователя из запроса
+ * File
*
- * @param ?array $data Дополнительные данные пользователя
- *
- * @return bool Записано в базу данных?
+ * @var string FILE Path to the database file
*/
- public static function increase(?array $data = null, array &$errors = []): bool
- {
+ final public const string FILE = DATABASE . DIRECTORY_SEPARATOR . 'views.csv';
+
+ /**
+ * Write
+ *
+ * Write request data to the views registry
+ *
+ * @param string|null $address
+ * @param string|null $connecting
+ * @param string|null $forwarded
+ * @param string|null $useragent
+ * @param string|null $referer
+ * @param string|null $continent
+ * @param string|null $country
+ * @param string|null $country_name
+ * @param string|null $region
+ * @param string|null $city
+ * @param string|float|null $latitute
+ * @param string|float|null $longitude
+ * @param string|null $organisation
+ * @param string|null $flag
+ * @param string|null $currency
+ * @param string|null $timezone
+ * @param array &$errors Buffer of errors
+ *
+ * @return void
+ */
+ public static function write(
+ ?string $address = null,
+ ?string $connecting = null,
+ ?string $forwarded = null,
+ ?string $useragent = null,
+ ?string $referer = null,
+ ?string $continent = null,
+ ?string $country = null,
+ ?string $country_name = null,
+ ?string $region = null,
+ ?string $city = null,
+ string|float|null $latitute = null,
+ string|float|null $longitude = null,
+ ?string $organisation = null,
+ ?string $flag = null,
+ ?string $currency = null,
+ ?string $timezone = null,
+ &$errors = []
+ ): void {
try {
- if (collection::init(static::$arangodb->session, self::COLLECTION))
- if ($_SERVER['HTTP_USER_AGENT'] === 'nginx-ssl early hints') return null;
- else if (document::write(static::$arangodb->session, self::COLLECTION, [
- 'ip' => $_SERVER['REMOTE_ADDR'] ?? null,
- 'cf-connecting-ip' => $_SERVER['cf-connecting-ip'] ?? null,
- 'x-forwarded-for' => $_SERVER['HTTP_X_FORWARDED_FOR'] ?? null,
- 'referer' => $_SERVER['HTTP_REFERER'] ?? null,
- 'useragent' => $_SERVER['HTTP_USER_AGENT'] ?? null
- ] + ($data ?? []))) return true;
- else throw new exception('Не удалось создать аккаунт');
- else throw new exception('Не удалось инициализировать коллекцию');
+ // Initializing registry of rows before
+ $before = [];
+
+ if (file_exists(static::FILE) && filesize(static::FILE) > 0) {
+ // File exists and not empty
+
+ // Opening the file with views records
+ $file = fopen(static::FILE, 'c+');
+
+ while (($row = fgets($file, 4096)) !== false) {
+ // Iterating over rows
+
+ // Writing the registry of rows before
+ $before[] = $row;
+ }
+
+ // Closing the file with views records
+ fclose($file);
+ }
+
+ // Deinitializing unnecessary variables
+ unset($row);
+
+ // Opening the file with views records
+ $file = fopen(static::FILE, 'c');
+
+ if (flock($file, LOCK_EX)) {
+ // The file was locked
+
+ // Clearing the file
+ ftruncate($file, 0);
+
+ // Serializing values
+ $serialized = static::serialize([
+ $address,
+ $connecting,
+ $forwarded,
+ $useragent,
+ $referer,
+ $continent,
+ $country,
+ $country_name,
+ $region,
+ $city,
+ $latitute,
+ $longitude,
+ $organisation,
+ $flag,
+ $currency,
+ $timezone
+ ]);
+
+ // Writing to the buffer for insertion to the views registry
+ if (count($before)) $serialized = trim(implode("", $before)) . "\n" . $serialized;
+
+ // Writing a new record to the views registry
+ fwrite($file, $serialized);
+
+ // Applying changes
+ fflush($file);
+
+ // Unlocking the file
+ flock($file, LOCK_UN);
+ }
+
+ // Deinitializing unnecessary variables
+ unset($serialized, $record, $before);
+
+ // Closing the file with views records
+ fclose($file);
+
+ // Writing to the log
+ /* log::write(type::FILE, "[CREATE] $domain $ip $port"); */
} catch (exception $e) {
- // Запись в реестр ошибок
+ // Write to the buffer of errors
$errors[] = [
'text' => $e->getMessage(),
'file' => $e->getFile(),
'line' => $e->getLine(),
'stack' => $e->getTrace()
];
+
+ // Write to the log of errors
+ /* log::write(type::ERRORS, "[{$_SERVER['REMOTE_ADDR']}] " . (empty($_SERVER['HTTP_X_FORWARDED_FOR']) ? '' : "[{$_SERVER['HTTP_X_FORWARDED_FOR']}] ") . $e->getMessage()); */
+ }
+ }
+
+ /**
+ * Search
+ *
+ * Search for a record by IP-address
+ *
+ * @param string|null $address IP-address
+ * @param int $rows Amount of rows for reading
+ * @param array &$errors Buffer of errors
+ *
+ * @return array|null Found view record
+ */
+ public static function search(?string $address, int $rows = 0, &$errors = []): ?array
+ {
+ try {
+ // Opening the file with views records
+ $file = fopen(static::FILE, 'c+');
+
+ while ($rows-- > 0 && ($row = fgets($file, 4096)) !== false) {
+ // Iterating over rows (records)
+
+ // Deserealizing record
+ $deserialized = static::deserialize($row);
+
+ if ($deserialized) {
+ // Deserialized record
+
+ // Initializing values of the view data
+ $record = array_combine([
+ 'address',
+ 'connecting',
+ 'forwarded',
+ 'useragent',
+ 'referer',
+ 'continent',
+ 'country',
+ 'country_name',
+ 'region',
+ 'city',
+ 'latitute',
+ 'longitude',
+ 'organisation',
+ 'flag',
+ 'currency',
+ 'timezone',
+ 'created',
+ ], $deserialized);
+
+ if (match ($address) {
+ $record['address'], $record['connecting'], $record['forwarded'] => true,
+ default => false
+ }) {
+ // View found by IP-address
+
+ // Closing the file with views records
+ fclose($file);
+
+ // Exit (success)
+ return $record;
+ }
+
+ // Deinitializing unnecessary variables
+ unset($row, $deserialized, $record);
+ }
+ }
+
+ // Closing file with views records
+ fclose($file);
+ } catch (exception $e) {
+ // Write to the buffer of errors
+ $errors[] = [
+ 'text' => $e->getMessage(),
+ 'file' => $e->getFile(),
+ 'line' => $e->getLine(),
+ 'stack' => $e->getTrace()
+ ];
+
+ // Writing to the log of errors
+ /* log::write(type::ERRORS, "[{$_SERVER['REMOTE_ADDR']}] " . (empty($_SERVER['HTTP_X_FORWARDED_FOR']) ? '' : "[{$_SERVER['HTTP_X_FORWARDED_FOR']}] ") . $e->getMessage()); */
}
+ // Exit (fail)
+ return null;
+ }
+
+ /**
+ * Statistics
+ *
+ * Generate statistics on views (day, week, month, total)
+ *
+ * @param bool $day Statistics on views per day
+ * @param bool $week Statistics on views per week
+ * @param bool $month Statistics on views per month
+ * @param bool $total Total statistics on views
+ * @param int $rows Amount of rows for reading
+ * @param array &$errors Buffer of errors
+ *
+ * @return array|false Counters of views (only those that were requested)
+ */
+ public static function statistics(
+ bool $day = true,
+ bool $week = true,
+ bool $month = true,
+ bool $total = true,
+ int $rows = 1,
+ &$errors = []
+ ): array|false {
+ try {
+ // Initializing counters
+ $counters = [];
+ switch (true) {
+ case $day:
+ $counters['day'] = 0;
+ $counters['week'] = 0;
+ $counters['month'] = 0;
+ $counters['total'] = 0;
+ }
+
+ // Opening the file with views records
+ $file = fopen(static::FILE, 'c+');
+
+ while ($rows-- > 0 && ($row = fgets($file, 4096)) !== false) {
+ // Iterating over rows (records)
+
+ // Deserealizing record
+ $deserialized = static::deserialize($row);
+
+ if ($deserialized) {
+ // Deserialized record
+
+ // Initializing value of the view data
+ $created = $deserialized[16];
+
+ // Increasing counters
+ switch (true) {
+ case $day && $created >= time() - 86400:
+ ++$counters['day'];
+ case $week && $created >= time() - 604800:
+ ++$counters['week'];
+ case $month && $created >= time() - 2592000:
+ ++$counters['month'];
+ case $total:
+ ++$counters['total'];
+ }
+ }
+ }
+
+ // Deinitializing unnecessary variables
+ unset($row, $deserialized, $created);
+
+ // Closing file with views records
+ fclose($file);
+
+ // Exit (success)
+ return $counters;
+ } catch (exception $e) {
+ // Write to the buffer of errors
+ $errors[] = [
+ 'text' => $e->getMessage(),
+ 'file' => $e->getFile(),
+ 'line' => $e->getLine(),
+ 'stack' => $e->getTrace()
+ ];
+
+ // Writing to the log of errors
+ /* log::write(type::ERRORS, "[{$_SERVER['REMOTE_ADDR']}] " . (empty($_SERVER['HTTP_X_FORWARDED_FOR']) ? '' : "[{$_SERVER['HTTP_X_FORWARDED_FOR']}] ") . $e->getMessage()); */
+ }
+
+ // Exit (fail)
return false;
}
- public static function day(array &$errors = []): ?int
+ /**
+ * Last
+ *
+ * Recursively reads unique records by IP-address
+ *
+ * @param int $rows Amount of rows for reading (pool)
+ * @param bool $address Filter by uniqueness by IP-address? (forwarded ?? address ?? connecting)
+ * @oaram int|false $time Filter by elapsed time
+ * @param array &$errors Buffer of errors
+ *
+ * @return array|null Readed records
+ */
+ public static function last(int $rows = 1, bool $address = false, int|false $time = false, &$errors = []): ?array
{
try {
- if (collection::init(static::$arangodb->session, self::COLLECTION))
- return collection::search(static::$arangodb->session, sprintf(
- <<= %d
- RETURN d['x-forwarded-for']
- )
- AQL,
- views::COLLECTION,
- time() - 86400
- ));
- else throw new exception('Не удалось инициализировать коллекцию');
+ // Initializing the buffer of readed records
+ $records = [];
+
+ // Initializing the file with views records
+ if (!file_exists(static::FILE)) touch(static::FILE);
+
+ // Opening the file with views records
+ $file = fopen(static::FILE, 'r');
+
+ // Initializing offset of rows for readint
+ $offset = 0;
+
+ // Continuing reading
+ offset:
+
+ foreach (static::file(file: $file, offset: $offset, rows: $rows, position: 0, step: -1) as $row) {
+ // Iterating over rows backwards (rows from the end)
+
+ if ($row === null) {
+ // The end of the file reached
+
+ // Deinitializing unnecessary variables
+ unset($row, $deserialized, $offset);
+
+ // Closing file with views records
+ fclose($file);
+
+ // Exit (success)
+ return $records;
+ }
+
+ // Deserealizing record
+ $deserialized = static::deserialize($row);
+
+ if ($deserialized) {
+ // Deserialized record
+
+ $record = array_combine([
+ 'address',
+ 'connecting',
+ 'forwarded',
+ 'useragent',
+ 'referer',
+ 'continent',
+ 'country',
+ 'country_name',
+ 'region',
+ 'city',
+ 'latitute',
+ 'longitude',
+ 'organisation',
+ 'flag',
+ 'currency',
+ 'timezone',
+ 'created',
+ ], $deserialized);
+
+ if ($time) {
+ // Requested filtering by elapsed time
+
+ if (time() - $record['created'] > $time) {
+ // Not enough time has passed yet
+
+ // Skipping iteration
+ continue;
+ }
+ }
+
+ if ($address) {
+ // Requested filtering by unique IP-address
+
+ // Declaring buffer of dublicate index
+ $dublicate = null;
+
+ if (
+ ($record['forwarded'] && ($dublicate = array_search($record['forwarded'], array_column($records, 'forwarded'), true)) !== false)
+ or ($record['address'] && ($dublicate = array_search($record['address'], array_column($records, 'address'), true)) !== false)
+ or ($record['connecting'] && ($dublicate = array_search($record['connecting'], array_column($records, 'connecting'), true)) !== false)
+ ) {
+ // Found a dublicate
+
+ if ($record['created'] > $records[$dublicate]['created']) {
+ // The record is newer than the dublicate (probably useless because the file is read from the end)
+
+ // Replacing the dublicate with the record
+ $records[$dublicate] = $record;
+ }
+
+ // Skipping iteration
+ continue;
+ }
+ }
+
+ // Writing to the buffer of readed records
+ $records[] = $record;
+ }
+ }
+
+ // Deinitializing unnecessary variables
+ unset($row, $deserialized);
+
+ if (count($records) < $rows) {
+ // Fewer unique rows were read than requested
+
+ // Writing offset for reading
+ $offset += $rows;
+
+ // Continuing reading (enter to the recursion)
+ goto offset;
+ }
+
+ // Deinitializing unnecessary variables
+ unset($offset);
+
+ // Closing file with views records
+ fclose($file);
+
+ // Exit (success)
+ return $records;
} catch (exception $e) {
- // Запись в реестр ошибок
- $errors[] = [
- 'text' => $e->getMessage(),
- 'file' => $e->getFile(),
- 'line' => $e->getLine(),
- 'stack' => $e->getTrace()
- ];
- }
-
- return null;
- }
-
- public static function week(array &$errors = []): ?int
- {
- try {
- if (collection::init(static::$arangodb->session, self::COLLECTION))
- return collection::search(static::$arangodb->session, sprintf(
- <<= %d
- RETURN d['x-forwarded-for']
- )
- AQL,
- views::COLLECTION,
- time() - 604800
- ));
- else throw new exception('Не удалось инициализировать коллекцию');
- } catch (exception $e) {
- // Запись в реестр ошибок
- $errors[] = [
- 'text' => $e->getMessage(),
- 'file' => $e->getFile(),
- 'line' => $e->getLine(),
- 'stack' => $e->getTrace()
- ];
- }
-
- return null;
- }
-
- public static function month(array &$errors = []): ?int
- {
- try {
- if (collection::init(static::$arangodb->session, self::COLLECTION))
- return collection::search(static::$arangodb->session, sprintf(
- <<= %d
- RETURN d['x-forwarded-for']
- )
- AQL,
- views::COLLECTION,
- time() - 2592000
- ));
- else throw new exception('Не удалось инициализировать коллекцию');
- } catch (exception $e) {
- // Запись в реестр ошибок
- $errors[] = [
- 'text' => $e->getMessage(),
- 'file' => $e->getFile(),
- 'line' => $e->getLine(),
- 'stack' => $e->getTrace()
- ];
- }
-
- return null;
- }
-
- public static function all(array &$errors = []): ?int
- {
- try {
- if (collection::init(static::$arangodb->session, self::COLLECTION))
- return collection::search(static::$arangodb->session, sprintf(
- << $e->getMessage(),
- 'file' => $e->getFile(),
- 'line' => $e->getLine(),
- 'stack' => $e->getTrace()
- ];
- }
-
- return null;
- }
-
- public static function last(int $amount = 10, array &$errors = []): ?array
- {
- try {
- if (collection::init(static::$arangodb->session, self::COLLECTION)) {
- // Инициализирована коллекция
-
- // Поиск последних просмотров
- $response = @collection::search(static::$arangodb->session, sprintf(
- <<getAll()[0];
-
- return $buffer;
- } else throw new exception('Не удалось инициализировать коллекцию');
- } catch (exception $e) {
- // Запись в реестр ошибок
+ // Write to the buffer of errors
$errors[] = [
'text' => $e->getMessage(),
'file' => $e->getFile(),
'line' => $e->getLine(),
'stack' => $e->getTrace()
];
+
+ // Writing to the log of errors
+ /* log::write(type::ERRORS, "[{$_SERVER['REMOTE_ADDR']}] " . (empty($_SERVER['HTTP_X_FORWARDED_FOR']) ? '' : "[{$_SERVER['HTTP_X_FORWARDED_FOR']}] ") . $e->getMessage()); */
}
+ // Exit (fail)
return null;
}
}
diff --git a/mirzaev/site/repression/system/public/index.php b/mirzaev/site/repression/system/public/index.php
index f051b8a..6ec98d7 100755
--- a/mirzaev/site/repression/system/public/index.php
+++ b/mirzaev/site/repression/system/public/index.php
@@ -4,28 +4,31 @@ declare(strict_types=1);
namespace mirzaev\site\repression;
-use mirzaev\minimal\core;
-use mirzaev\minimal\router;
+// Framework for PHP
+use mirzaev\minimal\core,
+ mirzaev\minimal\route;
+// Enabling debugging
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
+// Initializing system parameters of the project
+define('INDEX', __DIR__);
+define('ROOT', INDEX . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR);
define('VIEWS', realpath('..' . DIRECTORY_SEPARATOR . 'views'));
define('STORAGE', realpath('..' . DIRECTORY_SEPARATOR . 'storage'));
-define('INDEX', __DIR__);
+define('DATABASE', realpath('..' . DIRECTORY_SEPARATOR . 'database'));
-// Автозагрузка
-require __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
+// Initializing dependencies
+require ROOT . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
-// Инициализация маршрутизатора
-$router = new router;
+// Initializing core
+$core = new core(namespace: __NAMESPACE__);
-// Запись маршрутов
-$router->write('/', 'index', 'index');
+// Initializing routes
+$core->router
+ ->write('/', new route('index', 'index'), 'GET');
-// Инициализация ядра
-$core = new core(namespace: __NAMESPACE__, router: $router);
-
-// Обработка запроса
-echo $core->start();
+// Handling request
+$core->start();
diff --git a/mirzaev/site/repression/system/public/js/account.js b/mirzaev/site/repression/system/public/js/account.js
old mode 100644
new mode 100755
diff --git a/mirzaev/site/repression/system/public/js/bloodchaos.js b/mirzaev/site/repression/system/public/js/bloodchaos.js
old mode 100644
new mode 100755
diff --git a/mirzaev/site/repression/system/public/js/hollow.js b/mirzaev/site/repression/system/public/js/hollow.js
old mode 100644
new mode 100755
diff --git a/mirzaev/site/repression/system/public/js/perlin.js b/mirzaev/site/repression/system/public/js/perlin.js
old mode 100644
new mode 100755
diff --git a/mirzaev/site/repression/system/public/js/womb3-simplex.js b/mirzaev/site/repression/system/public/js/womb3-simplex.js
old mode 100644
new mode 100755
diff --git a/mirzaev/site/repression/system/public/robots.txt b/mirzaev/site/repression/system/public/robots.txt
old mode 100644
new mode 100755
diff --git a/mirzaev/site/repression/system/public/sitemap.xml b/mirzaev/site/repression/system/public/sitemap.xml
old mode 100644
new mode 100755
diff --git a/mirzaev/site/repression/system/public/css/account.css b/mirzaev/site/repression/system/public/themes/default/css/account.css
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/css/account.css
rename to mirzaev/site/repression/system/public/themes/default/css/account.css
diff --git a/mirzaev/site/repression/system/public/css/books.css b/mirzaev/site/repression/system/public/themes/default/css/books.css
similarity index 100%
rename from mirzaev/site/repression/system/public/css/books.css
rename to mirzaev/site/repression/system/public/themes/default/css/books.css
diff --git a/mirzaev/site/repression/system/public/css/hotline.css b/mirzaev/site/repression/system/public/themes/default/css/hotline.css
similarity index 100%
rename from mirzaev/site/repression/system/public/css/hotline.css
rename to mirzaev/site/repression/system/public/themes/default/css/hotline.css
diff --git a/mirzaev/site/repression/system/public/css/icon_authentication.css b/mirzaev/site/repression/system/public/themes/default/css/icon_authentication.css
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/css/icon_authentication.css
rename to mirzaev/site/repression/system/public/themes/default/css/icon_authentication.css
diff --git a/mirzaev/site/repression/system/public/css/icon_eye.css b/mirzaev/site/repression/system/public/themes/default/css/icon_eye.css
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/css/icon_eye.css
rename to mirzaev/site/repression/system/public/themes/default/css/icon_eye.css
diff --git a/mirzaev/site/repression/system/public/css/logo.css b/mirzaev/site/repression/system/public/themes/default/css/logo.css
similarity index 100%
rename from mirzaev/site/repression/system/public/css/logo.css
rename to mirzaev/site/repression/system/public/themes/default/css/logo.css
diff --git a/mirzaev/site/repression/system/public/css/main.css b/mirzaev/site/repression/system/public/themes/default/css/main.css
similarity index 77%
rename from mirzaev/site/repression/system/public/css/main.css
rename to mirzaev/site/repression/system/public/themes/default/css/main.css
index 2ac5021..1bf6088 100755
--- a/mirzaev/site/repression/system/public/css/main.css
+++ b/mirzaev/site/repression/system/public/themes/default/css/main.css
@@ -31,6 +31,7 @@
border: none;
color: var(--text);
font-family: commissioner, Roboto, sans-serif;
+ -webkit-tap-highlight-color: transparent;
transition: 0.1s ease-out;
}
@@ -87,46 +88,26 @@ body {
margin: 0;
position: relative;
width: 100vw;
- height: 100%;
+ /* height: 100%; */
padding-top: var(--padding-vertical);
padding-bottom: var(--padding-vertical);
- overflow-x: clip;
+ overflow-x: hidden;
background-color: black;
}
-body> :is(article, section)[data-layer] {
- position: fixed;
- width: 100%;
+.column {
display: flex;
flex-direction: column;
- transition: 0.2s ease-out;
-}
-
-body>article[data-layer] {
- position: absolute;
-}
-
-body>section[data-layer]>canvas.shell {
- position: fixed;
- width: 100%;
-}
-
-body>section[data-layer]>canvas.shell {
- box-shadow: -1px 1px 47px 20px rgba(0, 0, 0, 1);
- -webkit-box-shadow: -1px 1px 47px 20px rgba(0, 0, 0, 1);
- -moz-box-shadow: -1px 1px 47px 20px rgba(0, 0, 0, 1);
- /* outline: 10vw solid; */
- filter: url("#blob");
}
body>aside {
z-index: 500;
}
-body>article {
+body>main {
position: relative !important;
margin: 0 auto !important;
- width: 800px !important;
+ width: min(800px, 90vw);
border-radius: 10px;
background-color: var(--background-dark);
}
@@ -135,7 +116,7 @@ body> :last-child {
margin-bottom: 20vh !important;
}
-body>article>div#cover {
+body>main>div#cover {
z-index: 6000;
height: 300px;
display: flex;
@@ -143,17 +124,17 @@ body>article>div#cover {
border-radius: 10px 10px 0 0;
}
-body>article>div#cover>img {
+body>main>div#cover>img {
width: 100%;
/* object-fit: cover;
object-position: top; */
}
-body>article>header {
+body>main>header {
z-index: 5000;
top: 0;
position: sticky;
- height: 80px;
+ min-height: 80px;
overflow: hidden;
clip-path: border-box;
border-radius: 0px 0px 10px 10px;
@@ -161,31 +142,35 @@ body>article>header {
}
-body>article>header>section {
+body>main>header>section {
position: relative;
- height: 100%;
+ min-height: 80px;
display: flex;
+ justify-content: center;
+ align-items: center;
filter: blur(2.2px) contrast(30);
background: #750000;
}
-body>article>header>section>h1 {
- font-size: 2.5rem;
- margin: auto;
+body>main>header>section>h1 {
+ margin: 0.4rem 2rem;
+ font-size: min(2.5rem, 8vw);
text-align: center;
+ font-weight: normal;
color: red;
}
-body>article>header>section>canvas#title {
+body>main>header>section>canvas#title {
z-index: -5000;
position: absolute;
width: 100%;
height: 100%;
}
-body>article>main,
+body>main>article,
body>section.block {
z-index: 1000;
+ position: relative;
background-color: var(--background-light);
}
@@ -193,38 +178,38 @@ body>section.block {
box-sizing: border-box;
border-radius: 10px;
margin: 20px auto 0;
- width: 800px;
+ width: min(800px, 90vw);
padding: 30px 50px;
display: block;
}
-body>article>main {
+body>main>article {
padding-top: 10px;
border-radius: 0 0 10px 10px;
}
-body>article>main>section {
+body>main>article>section {
position: relative;
margin: 30px 50px;
}
-body>article>main>section>p.digression {
+body>main>article>section>p.digression {
margin-left: 30px;
color: var(--grey-dark);
}
-body>article>main>section>p.digression * {
+body>main>article>section>p.digression * {
color: var(--grey-dark);
}
-body>article>main>section#assault>img#wet_bebra {
+body>main>article>section#assault>img#wet_bebra {
width: 200px;
float: right;
shape-outside: polygon(68px 202px, 200px 197px, 158px 173px, 159px 50px, 192px 25px, 165px 0px, 56px 3px, 41px 27px, 56px 42px, 112px 47px, 103px 68px, 97px 116px, 58px 120px, 40px 169px, 6px 186px);
clip-path: polygon(208px 199px, 162px 170px, 162px 54px, 194px 21px, 155px -4px, 48px 7px, 54px 43px, 103px 51px, 91px 114px, 56px 116px, 45px 165px, -1px 186px, 51px 201px, 153px 202px);
}
-body>article>main>section#assault>img#scary {
+body>main>article>section#assault>img#scary {
margin-left: -20px;
padding-right: 10px;
width: 200px;
@@ -233,7 +218,7 @@ body>article>main>section#assault>img#scary {
clip-path: polygon(208px 91px, 181px 75px, 203px 22px, 140px 1px, 58px 1px, -8px 112px, 55px 173px, 70px 201px, 136px 201px, 139px 176px, 175px 152px);
}
-body>article>main>section#car>img#crying_bebra {
+body>main>article>section#car>img#crying_bebra {
margin-left: -20px;
width: 200px;
float: left;
@@ -241,7 +226,7 @@ body>article>main>section#car>img#crying_bebra {
clip-path: polygon(22px 169px, 44px 200px, 122px 207px, 165px 192px, 173px 151px, 187px 141px, 188px 108px, 169px 103px, 178px 52px, 150px 12px, 86px -7px, 41px 33px, 19px 67px);
}
-body>article>main>section#car>img#chill_bebra {
+body>main>article>section#car>img#chill_bebra {
margin-right: -20px;
width: 200px;
float: right;
@@ -249,7 +234,7 @@ body>article>main>section#car>img#chill_bebra {
clip-path: polygon(11px 126px, -6px 194px, 71px 199px, 179px 181px, 204px 90px, 175px 32px, 118px -5px, 60px 27px, 80px 102px, 52px 124px, 54px 60px, 16px 58px, -1px 83px);
}
-body>article>main>section#car>img#just {
+body>main>article>section#car>img#just {
margin-left: -20px;
padding-right: 10px;
width: 200px;
@@ -258,7 +243,7 @@ body>article>main>section#car>img#just {
clip-path: polygon(-6px 171px, 76px 170px, 106px 201px, 165px 198px, 193px 159px, 206px 81px, 180px 26px, 129px -5px, 63px 15px, 32px 51px, 29px 124px);
}
-body>article>main>section#car>img#evil_bebra {
+body>main>article>section#car>img#evil_bebra {
margin-top: 30px;
margin-right: -25px;
width: 200px;
@@ -267,7 +252,7 @@ body>article>main>section#car>img#evil_bebra {
clip-path: polygon(193px 197px, 161px 10px, 92px -8px, 19px 46px, 23px 138px, 7px 168px, 21px 196px);
}
-body>article>main>section#deal>img#marta_with_broken_heart {
+body>main>article>section#deal>img#marta_with_broken_heart {
margin-top: 30px;
margin-right: -15px;
width: 200px;
@@ -276,7 +261,7 @@ body>article>main>section#deal>img#marta_with_broken_heart {
clip-path: polygon(199px 146px, 204px 26px, 125px -1px, 65px -7px, -7px 96px, 19px 169px, 62px 195px, 150px 199px);
}
-body>article>main>section#deal>img#two_bebras {
+body>main>article>section#deal>img#two_bebras {
margin-top: 50px;
margin-right: -10px;
width: 200px;
@@ -285,7 +270,7 @@ body>article>main>section#deal>img#two_bebras {
clip-path: polygon(215px 104px, 132px -2px, 108px 22px, 33px 40px, 20px 114px, -6px 127px, 20px 201px, 177px 179px);
}
-body>article>main>section#deal>img#fuck {
+body>main>article>section#deal>img#fuck {
margin-left: -20px;
width: 200px;
float: left;
@@ -293,7 +278,7 @@ body>article>main>section#deal>img#fuck {
clip-path: polygon(25px 194px, 100px 207px, 180px 190px, 171px 142px, 188px 90px, 179px 46px, 152px 5px, 75px -7px, 6px 56px, 28px 144px);
}
-body>article>main>section#friendship>img#no_comments {
+body>main>article>section#friendship>img#no_comments {
margin-top: 50px;
margin-right: 0px;
width: 200px;
@@ -302,7 +287,7 @@ body>article>main>section#friendship>img#no_comments {
clip-path: polygon(208px 115px, 200px 41px, 145px -7px, 69px 13px, 46px 44px, -10px 58px, 39px 78px, 48px 141px, 46px 187px, 121px 201px, 192px 191px);
}
-body>article>main>section#friendship>img#nu_tipa {
+body>main>article>section#friendship>img#nu_tipa {
margin-top: 100px;
margin-right: 0px;
width: 200px;
@@ -311,22 +296,22 @@ body>article>main>section#friendship>img#nu_tipa {
clip-path: polygon(179px 142px, 176px 117px, 195px 100px, 163px 87px, 153px 26px, 91px -12px, 11px 39px, 1px 197px, 181px 203px, 172px 157px);
}
-body>article>main>section>img {
+body>main>article>section>img {
width: 100%;
height: 200px;
object-fit: cover;
border-radius: 3px;
}
-body>article>main>section#conclusion {
+body>main>article>section#conclusion {
margin-bottom: 50px;
}
-body>article>main>section#conclusion>h2 {
+body>main>article>section#conclusion>h2 {
margin-bottom: 20px;
}
-body>article>main>section#conclusion>a>img {
+body>main>article>section#conclusion>a>img {
margin-top: 30px;
margin-right: -4%;
height: 300px;
@@ -335,71 +320,87 @@ body>article>main>section#conclusion>a>img {
clip-path: polygon(136px 80px, 122px 10px, 92px 30px, 66px 36px, 36px 32px, 36px 91px, 55px 141px, 34px 145px, 32px 181px, 41px 189px, 81px 208px, 28px 264px, 47px 287px, 81px 295px, 155px 266px, 162px 232px, 180px 212px, 179px 180px, 196px 174px, 191px 152px, 146px 157px, 145px 135px, 161px 110px, 165px 92px);
}
-body>article>main>section>h2:before {
+body>article>section>h2:before {
margin-right: 10px;
}
-body>article>main>section#assault>h2:before {
+body>main>article>section#assault>h2:before {
content: '🤕';
}
-body>article>main>section#reasons>h2:before {
+body>main>article>section#reasons>h2:before {
content: '😼';
}
-body>article>main>section#car>h2:before {
+body>main>article>section#car>h2:before {
content: '😵';
}
-body>article>main>section#deal>h2:before {
+body>main>article>section#deal>h2:before {
content: '🤝';
}
-body>article>main>section#friendship>h2:before {
+body>main>article>section#friendship>h2:before {
content: '🥳';
}
-body>article>main>section#court>h2:before {
+body>main>article>section#court>h2:before {
content: '😥';
}
-body>article>main>section#return>h2:before {
+body>main>article>section#return>h2:before {
content: '🥱';
}
-body>article>main>section#conclusion>h2:before {
+body>main>article>section#conclusion>h2:before {
content: '🤟';
}
-body>article>main>section>p+p,
-body>article>main>section>p>small+small {
+body>main>article>section>p+p,
+body>main>article>section>p>small+small {
margin-top: 10px;
}
-body>article>main>section>h2 {
+body>main>article>section>h2 {
font-size: 1.8rem;
}
-body>article>main>section>h2+h3 {
+body>main>article>section>h2+h3 {
margin-top: 3px;
}
-body>article>main>section> :is(h2, h3) {
+body>main>article>section> :is(h2, h3) {
margin-bottom: 0px;
line-height: 35px;
}
-body>article>main>section> :is(h2, h3)+p {
+body>main>article>section> :is(h2, h3)+p {
margin-top: 15px;
}
-body>article>main>section>p:last-of-type {
+body>main>article>section>p:last-of-type {
margin-bottom: 20px;
}
-body>article>footer {
+body>canvas#background {
+ z-index: -1000;
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ pointer-events: none;
+ box-shadow: -1px 1px 47px 20px rgba(0, 0, 0, 1);
+ -webkit-box-shadow: -1px 1px 47px 20px rgba(0, 0, 0, 1);
+ -moz-box-shadow: -1px 1px 47px 20px rgba(0, 0, 0, 1);
+ /* outline: 10vw solid; */
+ filter: url("#blob");
+ transition: 0s;
+}
+
+body>main>footer {
z-index: 3000;
}
@@ -410,11 +411,12 @@ body>section#contacts>section {
body>section#contacts>section#author {
margin-top: 20px;
margin-bottom: 35px;
+ align-items: center;
+ gap: 2rem;
}
body>section#contacts>section#author>section#avatar {
margin-left: 10px;
- margin-right: 25px;
position: relative;
max-width: 100px;
max-height: 100px;
@@ -579,6 +581,7 @@ body>section#license>p>span:last-of-type {
}
body>section#license>img {
+ z-index: 1000;
position: absolute;
right: -65px;
bottom: -50px;
@@ -593,8 +596,10 @@ body>svg#navalny2 {
}
body>section#navalny {
- width: 800px;
- height: 190px;
+ --height: min(200px, 30vw);
+ z-index: 500;
+ width: min(800px, 90vw);
+ height: calc(var(--height));
padding: unset;
cursor: pointer;
-webkit-transform: translateZ(0);
@@ -610,6 +615,7 @@ body>section#navalny {
-webkit-backdrop-filter: saturate(100%) hue-rotate(230deg) blur(22px);
backdrop-filter: saturate(100%) hue-rotate(230deg) blur(22px);
background-color: rgba(0, 3, 210, 0.05);
+ clip-path: polygon(0px 0px, 0 var(--height), 100% var(--height), 100% 0px);
}
body>section#navalny:hover {
@@ -621,77 +627,42 @@ body>section#navalny:hover {
@media (max-width: 840px) {
body {
- padding-top: unset;
- padding-bottom: 20px;
+ padding-top: 5vw;
+ padding-bottom: 5vw;
}
- body>article>header {
+ body>main>header {
position: relative;
}
- body>article {
- width: 100% !important;
+ body>main>header>section>h1 {
+ padding: 0 15%;
+ }
+
+ body>main {
margin: unset;
- border-radius: unset;
}
- body>article>div#cover,
- body>article>main {
- border-radius: unset;
- }
-
- body>article>main {
+ body>main>article {
box-shadow: 1px 6px 11px 3px rgba(0, 0, 0, 0.6);
-webkit-box-shadow: 1px 6px 11px 3px rgba(0, 0, 0, 0.6);
-moz-box-shadow: 1px 6px 11px 3px rgba(0, 0, 0, 0.6);
}
- body>section.block {
+ body>main>section.block {
width: calc(100% - 40px) !important;
margin-left: 20px !important;
margin-right: 20px !important;
}
- mask#NAVALNY>text {
- font-size: calc(5rem - (5rem - 17vw)) !important;
- transform: translate(0, 120px) !important;
- }
-}
-
-@media (max-width: 710px) {
- body>article>header {
- height: calc(140px + (110px - 20vw));
- }
-
- body>article>header>section>h1 {
- padding: 0 10vw;
- }
-}
-
-@media (max-width: 690px) {
- body>section#contacts>section {
+ body>section#contacts>section#author {
flex-direction: column;
}
- body>section#contacts>section#author>section#avatar {
- margin-left: auto;
- margin-right: auto;
- margin-bottom: 25px;
- position: relative;
- max-width: 120px;
- max-height: 120px;
- width: 120px;
- height: 120px;
- flex-shrink: 0;
- clip-path: circle(60px);
- }
-
body>section#contacts>section#author>section#name {
text-align: center;
}
-}
-@media (max-width: 600px) {
body>section.block#views>h3 {
display: block;
text-align: center;
@@ -710,10 +681,9 @@ body>section#navalny:hover {
body>section.block#views>section:last-of-type {
width: 100%;
}
-}
-@media (max-width: 430px) {
- body>article>header>section>h1 {
- padding: 0 5vw;
+ mask#NAVALNY>text {
+ font-size: 18vw !important;
+ transform: translate(0, 60px) !important;
}
}
diff --git a/mirzaev/site/repression/system/public/css/popup.css b/mirzaev/site/repression/system/public/themes/default/css/popup.css
similarity index 92%
rename from mirzaev/site/repression/system/public/css/popup.css
rename to mirzaev/site/repression/system/public/themes/default/css/popup.css
index 1472960..fa769c8 100755
--- a/mirzaev/site/repression/system/public/css/popup.css
+++ b/mirzaev/site/repression/system/public/themes/default/css/popup.css
@@ -17,7 +17,7 @@ section.popup>div.wrap {
display: flex;
flex-direction: column;
gap: 20px;
- border-radius: 2px;
+ border-radius: 0.75rem;
background-color: var(--background-light);
}
diff --git a/mirzaev/site/repression/system/public/css/troller.css b/mirzaev/site/repression/system/public/themes/default/css/troller.css
similarity index 100%
rename from mirzaev/site/repression/system/public/css/troller.css
rename to mirzaev/site/repression/system/public/themes/default/css/troller.css
diff --git a/mirzaev/site/repression/system/public/css/upload.css b/mirzaev/site/repression/system/public/themes/default/css/upload.css
similarity index 100%
rename from mirzaev/site/repression/system/public/css/upload.css
rename to mirzaev/site/repression/system/public/themes/default/css/upload.css
diff --git a/mirzaev/site/repression/system/public/fonts/commissioner.ttf b/mirzaev/site/repression/system/public/themes/default/fonts/commissioner.ttf
similarity index 100%
rename from mirzaev/site/repression/system/public/fonts/commissioner.ttf
rename to mirzaev/site/repression/system/public/themes/default/fonts/commissioner.ttf
diff --git a/mirzaev/site/repression/system/public/images/NAVALNY.svg b/mirzaev/site/repression/system/public/themes/default/images/NAVALNY.svg
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/NAVALNY.svg
rename to mirzaev/site/repression/system/public/themes/default/images/NAVALNY.svg
diff --git a/mirzaev/site/repression/system/public/images/bebra.png b/mirzaev/site/repression/system/public/themes/default/images/bebra.png
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/bebra.png
rename to mirzaev/site/repression/system/public/themes/default/images/bebra.png
diff --git a/mirzaev/site/repression/system/public/images/botnet.svg b/mirzaev/site/repression/system/public/themes/default/images/botnet.svg
similarity index 100%
rename from mirzaev/site/repression/system/public/images/botnet.svg
rename to mirzaev/site/repression/system/public/themes/default/images/botnet.svg
diff --git a/mirzaev/site/repression/system/public/images/chill_bebra.png b/mirzaev/site/repression/system/public/themes/default/images/chill_bebra.png
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/chill_bebra.png
rename to mirzaev/site/repression/system/public/themes/default/images/chill_bebra.png
diff --git a/mirzaev/site/repression/system/public/images/crying_bebra.png b/mirzaev/site/repression/system/public/themes/default/images/crying_bebra.png
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/crying_bebra.png
rename to mirzaev/site/repression/system/public/themes/default/images/crying_bebra.png
diff --git a/mirzaev/site/repression/system/public/images/evil_bebra.png b/mirzaev/site/repression/system/public/themes/default/images/evil_bebra.png
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/evil_bebra.png
rename to mirzaev/site/repression/system/public/themes/default/images/evil_bebra.png
diff --git a/mirzaev/site/repression/system/public/images/favicon/0.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon/0.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon/0.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon/0.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon/1.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon/1.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon/1.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon/1.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon/10.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon/10.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon/10.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon/10.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon/11.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon/11.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon/11.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon/11.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon/12.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon/12.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon/12.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon/12.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon/13.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon/13.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon/13.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon/13.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon/14.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon/14.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon/14.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon/14.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon/15.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon/15.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon/15.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon/15.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon/16.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon/16.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon/16.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon/16.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon/17.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon/17.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon/17.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon/17.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon/18.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon/18.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon/18.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon/18.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon/19.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon/19.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon/19.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon/19.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon/2.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon/2.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon/2.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon/2.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon/20.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon/20.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon/20.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon/20.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon/21.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon/21.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon/21.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon/21.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon/22.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon/22.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon/22.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon/22.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon/23.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon/23.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon/23.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon/23.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon/24.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon/24.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon/24.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon/24.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon/25.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon/25.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon/25.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon/25.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon/26.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon/26.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon/26.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon/26.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon/3.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon/3.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon/3.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon/3.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon/4.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon/4.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon/4.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon/4.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon/5.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon/5.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon/5.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon/5.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon/6.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon/6.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon/6.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon/6.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon/7.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon/7.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon/7.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon/7.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon/8.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon/8.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon/8.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon/8.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon/9.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon/9.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon/9.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon/9.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon/favicon.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon/favicon.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon/favicon.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon/favicon.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon/favicon_alternative.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon/favicon_alternative.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon/favicon_alternative.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon/favicon_alternative.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/0.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/0.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/0.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/0.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/1.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/1.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/1.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/1.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/10.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/10.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/10.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/10.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/11.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/11.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/11.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/11.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/12.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/12.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/12.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/12.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/13.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/13.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/13.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/13.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/14.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/14.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/14.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/14.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/15.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/15.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/15.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/15.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/16.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/16.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/16.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/16.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/17.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/17.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/17.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/17.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/18.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/18.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/18.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/18.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/19.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/19.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/19.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/19.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/2.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/2.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/2.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/2.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/20.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/20.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/20.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/20.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/21.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/21.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/21.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/21.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/22.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/22.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/22.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/22.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/23.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/23.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/23.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/23.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/24.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/24.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/24.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/24.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/25.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/25.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/25.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/25.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/26.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/26.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/26.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/26.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/27.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/27.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/27.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/27.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/28.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/28.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/28.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/28.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/29.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/29.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/29.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/29.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/3.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/3.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/3.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/3.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/30.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/30.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/30.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/30.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/31.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/31.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/31.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/31.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/32.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/32.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/32.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/32.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/33.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/33.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/33.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/33.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/34.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/34.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/34.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/34.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/35.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/35.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/35.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/35.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/36.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/36.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/36.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/36.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/37.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/37.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/37.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/37.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/38.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/38.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/38.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/38.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/39.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/39.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/39.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/39.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/4.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/4.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/4.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/4.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/40.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/40.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/40.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/40.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/41.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/41.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/41.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/41.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/42.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/42.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/42.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/42.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/43.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/43.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/43.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/43.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/44.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/44.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/44.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/44.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/45.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/45.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/45.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/45.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/46.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/46.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/46.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/46.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/47.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/47.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/47.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/47.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/48.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/48.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/48.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/48.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/49.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/49.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/49.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/49.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/5.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/5.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/5.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/5.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/50.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/50.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/50.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/50.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/51.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/51.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/51.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/51.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/52.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/52.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/52.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/52.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/53.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/53.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/53.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/53.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/54.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/54.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/54.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/54.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/55.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/55.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/55.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/55.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/56.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/56.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/56.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/56.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/57.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/57.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/57.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/57.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/58.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/58.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/58.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/58.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/59.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/59.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/59.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/59.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/6.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/6.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/6.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/6.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/60.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/60.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/60.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/60.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/61.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/61.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/61.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/61.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/62.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/62.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/62.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/62.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/63.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/63.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/63.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/63.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/64.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/64.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/64.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/64.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/65.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/65.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/65.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/65.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/66.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/66.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/66.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/66.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/67.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/67.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/67.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/67.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/68.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/68.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/68.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/68.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/69.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/69.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/69.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/69.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/7.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/7.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/7.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/7.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/70.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/70.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/70.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/70.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/71.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/71.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/71.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/71.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/8.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/8.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/8.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/8.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/9.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/9.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/9.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/9.gif
diff --git a/mirzaev/site/repression/system/public/images/favicon_2/favicon.gif b/mirzaev/site/repression/system/public/themes/default/images/favicon_2/favicon.gif
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/favicon_2/favicon.gif
rename to mirzaev/site/repression/system/public/themes/default/images/favicon_2/favicon.gif
diff --git a/mirzaev/site/repression/system/public/images/fuck.png b/mirzaev/site/repression/system/public/themes/default/images/fuck.png
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/fuck.png
rename to mirzaev/site/repression/system/public/themes/default/images/fuck.png
diff --git a/mirzaev/site/repression/system/public/images/furgal.jpg b/mirzaev/site/repression/system/public/themes/default/images/furgal.jpg
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/furgal.jpg
rename to mirzaev/site/repression/system/public/themes/default/images/furgal.jpg
diff --git a/mirzaev/site/repression/system/public/images/just.png b/mirzaev/site/repression/system/public/themes/default/images/just.png
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/just.png
rename to mirzaev/site/repression/system/public/themes/default/images/just.png
diff --git a/mirzaev/site/repression/system/public/images/keylogger.svg b/mirzaev/site/repression/system/public/themes/default/images/keylogger.svg
similarity index 100%
rename from mirzaev/site/repression/system/public/images/keylogger.svg
rename to mirzaev/site/repression/system/public/themes/default/images/keylogger.svg
diff --git a/mirzaev/site/repression/system/public/images/logo.png b/mirzaev/site/repression/system/public/themes/default/images/logo.png
similarity index 100%
rename from mirzaev/site/repression/system/public/images/logo.png
rename to mirzaev/site/repression/system/public/themes/default/images/logo.png
diff --git a/mirzaev/site/repression/system/public/images/logo_compressed.png b/mirzaev/site/repression/system/public/themes/default/images/logo_compressed.png
similarity index 100%
rename from mirzaev/site/repression/system/public/images/logo_compressed.png
rename to mirzaev/site/repression/system/public/themes/default/images/logo_compressed.png
diff --git a/mirzaev/site/repression/system/public/images/logo_red.png b/mirzaev/site/repression/system/public/themes/default/images/logo_red.png
similarity index 100%
rename from mirzaev/site/repression/system/public/images/logo_red.png
rename to mirzaev/site/repression/system/public/themes/default/images/logo_red.png
diff --git a/mirzaev/site/repression/system/public/images/logo_red_compressed.png b/mirzaev/site/repression/system/public/themes/default/images/logo_red_compressed.png
similarity index 100%
rename from mirzaev/site/repression/system/public/images/logo_red_compressed.png
rename to mirzaev/site/repression/system/public/themes/default/images/logo_red_compressed.png
diff --git a/mirzaev/site/repression/system/public/images/logo_red_white.png b/mirzaev/site/repression/system/public/themes/default/images/logo_red_white.png
similarity index 100%
rename from mirzaev/site/repression/system/public/images/logo_red_white.png
rename to mirzaev/site/repression/system/public/themes/default/images/logo_red_white.png
diff --git a/mirzaev/site/repression/system/public/images/logo_red_white_compressed.png b/mirzaev/site/repression/system/public/themes/default/images/logo_red_white_compressed.png
similarity index 100%
rename from mirzaev/site/repression/system/public/images/logo_red_white_compressed.png
rename to mirzaev/site/repression/system/public/themes/default/images/logo_red_white_compressed.png
diff --git a/mirzaev/site/repression/system/public/images/marta_with_broken_heart.png b/mirzaev/site/repression/system/public/themes/default/images/marta_with_broken_heart.png
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/marta_with_broken_heart.png
rename to mirzaev/site/repression/system/public/themes/default/images/marta_with_broken_heart.png
diff --git a/mirzaev/site/repression/system/public/images/minecraft.svg b/mirzaev/site/repression/system/public/themes/default/images/minecraft.svg
similarity index 100%
rename from mirzaev/site/repression/system/public/images/minecraft.svg
rename to mirzaev/site/repression/system/public/themes/default/images/minecraft.svg
diff --git a/mirzaev/site/repression/system/public/images/miner.svg b/mirzaev/site/repression/system/public/themes/default/images/miner.svg
similarity index 100%
rename from mirzaev/site/repression/system/public/images/miner.svg
rename to mirzaev/site/repression/system/public/themes/default/images/miner.svg
diff --git a/mirzaev/site/repression/system/public/images/mirzaev.jpg b/mirzaev/site/repression/system/public/themes/default/images/mirzaev.jpg
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/mirzaev.jpg
rename to mirzaev/site/repression/system/public/themes/default/images/mirzaev.jpg
diff --git a/mirzaev/site/repression/system/public/images/mirzaev.png b/mirzaev/site/repression/system/public/themes/default/images/mirzaev.png
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/mirzaev.png
rename to mirzaev/site/repression/system/public/themes/default/images/mirzaev.png
diff --git a/mirzaev/site/repression/system/public/images/mirzaev2.png b/mirzaev/site/repression/system/public/themes/default/images/mirzaev2.png
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/mirzaev2.png
rename to mirzaev/site/repression/system/public/themes/default/images/mirzaev2.png
diff --git a/mirzaev/site/repression/system/public/images/mirzaev3.jpg b/mirzaev/site/repression/system/public/themes/default/images/mirzaev3.jpg
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/mirzaev3.jpg
rename to mirzaev/site/repression/system/public/themes/default/images/mirzaev3.jpg
diff --git a/mirzaev/site/repression/system/public/images/mirzaev_real.png b/mirzaev/site/repression/system/public/themes/default/images/mirzaev_real.png
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/mirzaev_real.png
rename to mirzaev/site/repression/system/public/themes/default/images/mirzaev_real.png
diff --git a/mirzaev/site/repression/system/public/images/misha.png b/mirzaev/site/repression/system/public/themes/default/images/misha.png
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/misha.png
rename to mirzaev/site/repression/system/public/themes/default/images/misha.png
diff --git a/mirzaev/site/repression/system/public/images/no_comments.png b/mirzaev/site/repression/system/public/themes/default/images/no_comments.png
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/no_comments.png
rename to mirzaev/site/repression/system/public/themes/default/images/no_comments.png
diff --git a/mirzaev/site/repression/system/public/images/nu_tipa.png b/mirzaev/site/repression/system/public/themes/default/images/nu_tipa.png
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/nu_tipa.png
rename to mirzaev/site/repression/system/public/themes/default/images/nu_tipa.png
diff --git a/mirzaev/site/repression/system/public/images/photo_with_hand.png b/mirzaev/site/repression/system/public/themes/default/images/photo_with_hand.png
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/photo_with_hand.png
rename to mirzaev/site/repression/system/public/themes/default/images/photo_with_hand.png
diff --git a/mirzaev/site/repression/system/public/images/photo_with_kitten.png b/mirzaev/site/repression/system/public/themes/default/images/photo_with_kitten.png
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/photo_with_kitten.png
rename to mirzaev/site/repression/system/public/themes/default/images/photo_with_kitten.png
diff --git a/mirzaev/site/repression/system/public/images/photo_with_knife.png b/mirzaev/site/repression/system/public/themes/default/images/photo_with_knife.png
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/photo_with_knife.png
rename to mirzaev/site/repression/system/public/themes/default/images/photo_with_knife.png
diff --git a/mirzaev/site/repression/system/public/images/pmc_boykisser.png b/mirzaev/site/repression/system/public/themes/default/images/pmc_boykisser.png
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/pmc_boykisser.png
rename to mirzaev/site/repression/system/public/themes/default/images/pmc_boykisser.png
diff --git a/mirzaev/site/repression/system/public/images/pooping.jpg b/mirzaev/site/repression/system/public/themes/default/images/pooping.jpg
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/pooping.jpg
rename to mirzaev/site/repression/system/public/themes/default/images/pooping.jpg
diff --git a/mirzaev/site/repression/system/public/images/reasons/0.png b/mirzaev/site/repression/system/public/themes/default/images/reasons/0.png
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/reasons/0.png
rename to mirzaev/site/repression/system/public/themes/default/images/reasons/0.png
diff --git a/mirzaev/site/repression/system/public/images/reasons/1.png b/mirzaev/site/repression/system/public/themes/default/images/reasons/1.png
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/reasons/1.png
rename to mirzaev/site/repression/system/public/themes/default/images/reasons/1.png
diff --git a/mirzaev/site/repression/system/public/images/reasons/2.png b/mirzaev/site/repression/system/public/themes/default/images/reasons/2.png
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/reasons/2.png
rename to mirzaev/site/repression/system/public/themes/default/images/reasons/2.png
diff --git a/mirzaev/site/repression/system/public/images/scary.png b/mirzaev/site/repression/system/public/themes/default/images/scary.png
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/scary.png
rename to mirzaev/site/repression/system/public/themes/default/images/scary.png
diff --git a/mirzaev/site/repression/system/public/images/squidchad.png b/mirzaev/site/repression/system/public/themes/default/images/squidchad.png
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/squidchad.png
rename to mirzaev/site/repression/system/public/themes/default/images/squidchad.png
diff --git a/mirzaev/site/repression/system/public/images/stealer.svg b/mirzaev/site/repression/system/public/themes/default/images/stealer.svg
similarity index 100%
rename from mirzaev/site/repression/system/public/images/stealer.svg
rename to mirzaev/site/repression/system/public/themes/default/images/stealer.svg
diff --git a/mirzaev/site/repression/system/public/images/suck.jpg b/mirzaev/site/repression/system/public/themes/default/images/suck.jpg
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/suck.jpg
rename to mirzaev/site/repression/system/public/themes/default/images/suck.jpg
diff --git a/mirzaev/site/repression/system/public/images/suck2.png b/mirzaev/site/repression/system/public/themes/default/images/suck2.png
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/suck2.png
rename to mirzaev/site/repression/system/public/themes/default/images/suck2.png
diff --git a/mirzaev/site/repression/system/public/images/suck3.jpg b/mirzaev/site/repression/system/public/themes/default/images/suck3.jpg
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/suck3.jpg
rename to mirzaev/site/repression/system/public/themes/default/images/suck3.jpg
diff --git a/mirzaev/site/repression/system/public/images/suck3.png b/mirzaev/site/repression/system/public/themes/default/images/suck3.png
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/suck3.png
rename to mirzaev/site/repression/system/public/themes/default/images/suck3.png
diff --git a/mirzaev/site/repression/system/public/images/truth.jpg b/mirzaev/site/repression/system/public/themes/default/images/truth.jpg
similarity index 100%
rename from mirzaev/site/repression/system/public/images/truth.jpg
rename to mirzaev/site/repression/system/public/themes/default/images/truth.jpg
diff --git a/mirzaev/site/repression/system/public/images/two_bebras.png b/mirzaev/site/repression/system/public/themes/default/images/two_bebras.png
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/two_bebras.png
rename to mirzaev/site/repression/system/public/themes/default/images/two_bebras.png
diff --git a/mirzaev/site/repression/system/public/images/wet_bebra.png b/mirzaev/site/repression/system/public/themes/default/images/wet_bebra.png
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/wet_bebra.png
rename to mirzaev/site/repression/system/public/themes/default/images/wet_bebra.png
diff --git a/mirzaev/site/repression/system/public/images/what.png b/mirzaev/site/repression/system/public/themes/default/images/what.png
similarity index 100%
rename from mirzaev/site/repression/system/public/images/what.png
rename to mirzaev/site/repression/system/public/themes/default/images/what.png
diff --git a/mirzaev/site/repression/system/public/images/what2.jpg b/mirzaev/site/repression/system/public/themes/default/images/what2.jpg
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/what2.jpg
rename to mirzaev/site/repression/system/public/themes/default/images/what2.jpg
diff --git a/mirzaev/site/repression/system/public/images/xiaomi.jpg b/mirzaev/site/repression/system/public/themes/default/images/xiaomi.jpg
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/images/xiaomi.jpg
rename to mirzaev/site/repression/system/public/themes/default/images/xiaomi.jpg
diff --git a/mirzaev/site/repression/system/public/sounds/beep.mp3 b/mirzaev/site/repression/system/public/themes/default/sounds/beep.mp3
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/sounds/beep.mp3
rename to mirzaev/site/repression/system/public/themes/default/sounds/beep.mp3
diff --git a/mirzaev/site/repression/system/public/sounds/beep.wav b/mirzaev/site/repression/system/public/themes/default/sounds/beep.wav
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/sounds/beep.wav
rename to mirzaev/site/repression/system/public/themes/default/sounds/beep.wav
diff --git a/mirzaev/site/repression/system/public/sounds/bonk.mp3 b/mirzaev/site/repression/system/public/themes/default/sounds/bonk.mp3
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/sounds/bonk.mp3
rename to mirzaev/site/repression/system/public/themes/default/sounds/bonk.mp3
diff --git a/mirzaev/site/repression/system/public/sounds/instasamka/1.mp3 b/mirzaev/site/repression/system/public/themes/default/sounds/instasamka/1.mp3
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/sounds/instasamka/1.mp3
rename to mirzaev/site/repression/system/public/themes/default/sounds/instasamka/1.mp3
diff --git a/mirzaev/site/repression/system/public/sounds/instasamka/10.mp3 b/mirzaev/site/repression/system/public/themes/default/sounds/instasamka/10.mp3
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/sounds/instasamka/10.mp3
rename to mirzaev/site/repression/system/public/themes/default/sounds/instasamka/10.mp3
diff --git a/mirzaev/site/repression/system/public/sounds/instasamka/11.mp3 b/mirzaev/site/repression/system/public/themes/default/sounds/instasamka/11.mp3
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/sounds/instasamka/11.mp3
rename to mirzaev/site/repression/system/public/themes/default/sounds/instasamka/11.mp3
diff --git a/mirzaev/site/repression/system/public/sounds/instasamka/2.mp3 b/mirzaev/site/repression/system/public/themes/default/sounds/instasamka/2.mp3
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/sounds/instasamka/2.mp3
rename to mirzaev/site/repression/system/public/themes/default/sounds/instasamka/2.mp3
diff --git a/mirzaev/site/repression/system/public/sounds/instasamka/3.mp3 b/mirzaev/site/repression/system/public/themes/default/sounds/instasamka/3.mp3
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/sounds/instasamka/3.mp3
rename to mirzaev/site/repression/system/public/themes/default/sounds/instasamka/3.mp3
diff --git a/mirzaev/site/repression/system/public/sounds/instasamka/4.mp3 b/mirzaev/site/repression/system/public/themes/default/sounds/instasamka/4.mp3
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/sounds/instasamka/4.mp3
rename to mirzaev/site/repression/system/public/themes/default/sounds/instasamka/4.mp3
diff --git a/mirzaev/site/repression/system/public/sounds/instasamka/5.mp3 b/mirzaev/site/repression/system/public/themes/default/sounds/instasamka/5.mp3
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/sounds/instasamka/5.mp3
rename to mirzaev/site/repression/system/public/themes/default/sounds/instasamka/5.mp3
diff --git a/mirzaev/site/repression/system/public/sounds/instasamka/6.mp3 b/mirzaev/site/repression/system/public/themes/default/sounds/instasamka/6.mp3
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/sounds/instasamka/6.mp3
rename to mirzaev/site/repression/system/public/themes/default/sounds/instasamka/6.mp3
diff --git a/mirzaev/site/repression/system/public/sounds/instasamka/7.mp3 b/mirzaev/site/repression/system/public/themes/default/sounds/instasamka/7.mp3
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/sounds/instasamka/7.mp3
rename to mirzaev/site/repression/system/public/themes/default/sounds/instasamka/7.mp3
diff --git a/mirzaev/site/repression/system/public/sounds/instasamka/8.mp3 b/mirzaev/site/repression/system/public/themes/default/sounds/instasamka/8.mp3
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/sounds/instasamka/8.mp3
rename to mirzaev/site/repression/system/public/themes/default/sounds/instasamka/8.mp3
diff --git a/mirzaev/site/repression/system/public/sounds/instasamka/9.mp3 b/mirzaev/site/repression/system/public/themes/default/sounds/instasamka/9.mp3
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/sounds/instasamka/9.mp3
rename to mirzaev/site/repression/system/public/themes/default/sounds/instasamka/9.mp3
diff --git a/mirzaev/site/repression/system/public/sounds/iphone.mp3 b/mirzaev/site/repression/system/public/themes/default/sounds/iphone.mp3
similarity index 100%
rename from mirzaev/site/repression/system/public/sounds/iphone.mp3
rename to mirzaev/site/repression/system/public/themes/default/sounds/iphone.mp3
diff --git a/mirzaev/site/repression/system/public/sounds/putin.mp3 b/mirzaev/site/repression/system/public/themes/default/sounds/putin.mp3
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/sounds/putin.mp3
rename to mirzaev/site/repression/system/public/themes/default/sounds/putin.mp3
diff --git a/mirzaev/site/repression/system/public/sounds/southern/1.mp3 b/mirzaev/site/repression/system/public/themes/default/sounds/southern/1.mp3
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/sounds/southern/1.mp3
rename to mirzaev/site/repression/system/public/themes/default/sounds/southern/1.mp3
diff --git a/mirzaev/site/repression/system/public/sounds/southern/2.mp3 b/mirzaev/site/repression/system/public/themes/default/sounds/southern/2.mp3
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/sounds/southern/2.mp3
rename to mirzaev/site/repression/system/public/themes/default/sounds/southern/2.mp3
diff --git a/mirzaev/site/repression/system/public/sounds/southern/3.mp3 b/mirzaev/site/repression/system/public/themes/default/sounds/southern/3.mp3
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/sounds/southern/3.mp3
rename to mirzaev/site/repression/system/public/themes/default/sounds/southern/3.mp3
diff --git a/mirzaev/site/repression/system/public/sounds/vk.mp3 b/mirzaev/site/repression/system/public/themes/default/sounds/vk.mp3
similarity index 100%
rename from mirzaev/site/repression/system/public/sounds/vk.mp3
rename to mirzaev/site/repression/system/public/themes/default/sounds/vk.mp3
diff --git a/mirzaev/site/repression/system/public/sounds/what.mp3 b/mirzaev/site/repression/system/public/themes/default/sounds/what.mp3
similarity index 100%
rename from mirzaev/site/repression/system/public/sounds/what.mp3
rename to mirzaev/site/repression/system/public/themes/default/sounds/what.mp3
diff --git a/mirzaev/site/repression/system/public/sounds/whatsup.mp3 b/mirzaev/site/repression/system/public/themes/default/sounds/whatsup.mp3
similarity index 100%
rename from mirzaev/site/repression/system/public/sounds/whatsup.mp3
rename to mirzaev/site/repression/system/public/themes/default/sounds/whatsup.mp3
diff --git a/mirzaev/site/repression/system/public/sounds/wow.mp3 b/mirzaev/site/repression/system/public/themes/default/sounds/wow.mp3
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/sounds/wow.mp3
rename to mirzaev/site/repression/system/public/themes/default/sounds/wow.mp3
diff --git a/mirzaev/site/repression/system/public/storage/214547089/avatar/200x200.jpg b/mirzaev/site/repression/system/public/themes/default/storage/214547089/avatar/200x200.jpg
similarity index 100%
rename from mirzaev/site/repression/system/public/storage/214547089/avatar/200x200.jpg
rename to mirzaev/site/repression/system/public/themes/default/storage/214547089/avatar/200x200.jpg
diff --git a/mirzaev/site/repression/system/public/videos/bahmut.mp4 b/mirzaev/site/repression/system/public/themes/default/videos/bahmut.mp4
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/videos/bahmut.mp4
rename to mirzaev/site/repression/system/public/themes/default/videos/bahmut.mp4
diff --git a/mirzaev/site/repression/system/public/videos/end.mp4 b/mirzaev/site/repression/system/public/themes/default/videos/end.mp4
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/videos/end.mp4
rename to mirzaev/site/repression/system/public/themes/default/videos/end.mp4
diff --git a/mirzaev/site/repression/system/public/videos/end_post.mp4 b/mirzaev/site/repression/system/public/themes/default/videos/end_post.mp4
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/videos/end_post.mp4
rename to mirzaev/site/repression/system/public/themes/default/videos/end_post.mp4
diff --git a/mirzaev/site/repression/system/public/videos/reasons/0.mp4 b/mirzaev/site/repression/system/public/themes/default/videos/reasons/0.mp4
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/videos/reasons/0.mp4
rename to mirzaev/site/repression/system/public/themes/default/videos/reasons/0.mp4
diff --git a/mirzaev/site/repression/system/public/videos/reasons/1.mp4 b/mirzaev/site/repression/system/public/themes/default/videos/reasons/1.mp4
old mode 100644
new mode 100755
similarity index 100%
rename from mirzaev/site/repression/system/public/videos/reasons/1.mp4
rename to mirzaev/site/repression/system/public/themes/default/videos/reasons/1.mp4
diff --git a/mirzaev/site/repression/system/settings/.gitignore b/mirzaev/site/repression/system/settings/.gitignore
old mode 100644
new mode 100755
diff --git a/mirzaev/site/repression/system/settings/arangodb.php.sample b/mirzaev/site/repression/system/settings/arangodb.php.sample
deleted file mode 100644
index dfc9047..0000000
--- a/mirzaev/site/repression/system/settings/arangodb.php.sample
+++ /dev/null
@@ -1,8 +0,0 @@
- 'unix:///var/run/arangodb3/arango.sock',
- 'database' => 'repression',
- 'name' => 'repression',
- 'password' => ''
-];
diff --git a/mirzaev/site/repression/system/settings/ipinfo.php.sample b/mirzaev/site/repression/system/settings/ipinfo.php.sample
old mode 100644
new mode 100755
diff --git a/mirzaev/site/repression/system/views/manager.php b/mirzaev/site/repression/system/views/manager.php
deleted file mode 100755
index 65b51b5..0000000
--- a/mirzaev/site/repression/system/views/manager.php
+++ /dev/null
@@ -1,25 +0,0 @@
-
- */
-final class manager extends controller
-{
- public function render(string $file, array $vars = []): ?string
- {
- // Генерация представления
- return (new view(new FilesystemLoader(VIEWS)))->render($file, $vars);
- }
-}
diff --git a/mirzaev/site/repression/system/views/templater.php b/mirzaev/site/repression/system/views/templater.php
new file mode 100755
index 0000000..f736166
--- /dev/null
+++ b/mirzaev/site/repression/system/views/templater.php
@@ -0,0 +1,201 @@
+
+ */
+final class templater extends controller implements array_access
+{
+ /**
+ * Registry of global variables of view
+ */
+ public array $variables = [];
+
+ /**
+ * Instance of twig templater
+ */
+ readonly public twig $twig;
+
+ /**
+ * Constructor of an instance
+ *
+ * @param session|null $session The object implementing a session instance from ArangoDB
+ * @param account|null $account The object implementing an account instance from ArangoDB
+ * @param settings|null $settings The object implementing a settings instance from ArangoDB
+ *
+ * @return void
+ */
+ public function __construct(
+ language $language = language::en
+ ) {
+ // Initializing an instance of twig
+ $this->twig = new twig(new FilesystemLoader(VIEWS));
+
+ // Initializing global variables
+ $this->twig->addGlobal('theme', 'default');
+ $this->twig->addGlobal('server', $_SERVER);
+ $this->twig->addGlobal('cookies', $_COOKIE);
+ $this->twig->addGlobal('language', $language);
+ }
+
+ /**
+ * Render a HTML-document
+ *
+ * @param string $file Related path to a HTML-document
+ * @param array $variables Registry of variables to push into registry of global variables
+ *
+ * @return ?string HTML-документ
+ */
+ public function render(string $file, array $variables = []): ?string
+ {
+ // Generation and exit (success)
+ return $this->twig->render('themes' . DIRECTORY_SEPARATOR . $this->twig->getGlobals()['theme'] . DIRECTORY_SEPARATOR . $file, $variables + $this->variables);
+ }
+
+ /**
+ * Write
+ *
+ * Write a variable into registry of global variables
+ *
+ * @param string $name Name of the variable
+ * @param mixed $value Value of the variable
+ *
+ * @return void
+ */
+ public function __set(string $name, mixed $value = null): void
+ {
+ // Write the variable and exit (success)
+ $this->variables[$name] = $value;
+ }
+
+ /**
+ * Read
+ *
+ * Read a variable from registry of global variables
+ *
+ * @param string $name Name of the variable
+ *
+ * @return mixed Content of the variable, if they are found
+ */
+ public function __get(string $name): mixed
+ {
+ // Read the variable and exit (success)
+ return $this->variables[$name];
+ }
+
+ /**
+ * Delete
+ *
+ * Delete a variable from the registry of global variables
+ *
+ * @param string $name Name of the variable
+ *
+ * @return void
+ */
+ public function __unset(string $name): void
+ {
+ // Delete the variable and exit (success)
+ unset($this->variables[$name]);
+ }
+
+ /**
+ * Check of initialization
+ *
+ * Check of initialization in registry of global variables
+ *
+ * @param string $name Name of the variable
+ *
+ * @return bool The variable is initialized?
+ */
+ public function __isset(string $name): bool
+ {
+ // Check of initialization of the variable and exit (success)
+ return isset($this->variables[$name]);
+ }
+
+ /**
+ * Write
+ *
+ * Write a variable into registry of global variables
+ *
+ * @param mixed $name Name of an offset of the variable
+ * @param mixed $value Value of the variable
+ *
+ * @return void
+ */
+ public function offsetSet(mixed $name, mixed $value): void
+ {
+ // Write the variable and exit (success)
+ $this->variables[$name] = $value;
+ }
+
+ /**
+ * Read
+ *
+ * Read a variable from registry of global variables
+ *
+ * @param mixed $name Name of the variable
+ *
+ * @return mixed Content of the variable, if they are found
+ */
+ public function offsetGet(mixed $name): mixed
+ {
+ // Read the variable and exit (success)
+ return $this->variables[$name];
+ }
+
+ /**
+ * Delete
+ *
+ * Delete a variable from the registry of global variables
+ *
+ * @param mixed $name Name of the variable
+ *
+ * @return void
+ */
+ public function offsetUnset(mixed $name): void
+ {
+ // Delete the variable and exit (success)
+ unset($this->variables[$name]);
+ }
+
+ /**
+ * Check of initialization
+ *
+ * Check of initialization in registry of global variables
+ *
+ * @param mixed $name Name of the variable
+ *
+ * @return bool The variable is initialized?
+ */
+ public function offsetExists(mixed $name): bool
+ {
+ // Check of initialization of the variable and exit (success)
+ return isset($this->variables[$name]);
+ }
+}
diff --git a/mirzaev/site/repression/system/views/account/element.html b/mirzaev/site/repression/system/views/themes/default/account/element.html
similarity index 63%
rename from mirzaev/site/repression/system/views/account/element.html
rename to mirzaev/site/repression/system/views/themes/default/account/element.html
index 2954c37..4b85adc 100755
--- a/mirzaev/site/repression/system/views/account/element.html
+++ b/mirzaev/site/repression/system/views/themes/default/account/element.html
@@ -1,6 +1,6 @@
{% block css %}
-
-
+
+
{% endblock %}
{% block body %}
diff --git a/mirzaev/site/repression/system/views/article.html b/mirzaev/site/repression/system/views/themes/default/article.html
old mode 100644
new mode 100755
similarity index 93%
rename from mirzaev/site/repression/system/views/article.html
rename to mirzaev/site/repression/system/views/themes/default/article.html
index 7d62da0..4109c5c
--- a/mirzaev/site/repression/system/views/article.html
+++ b/mirzaev/site/repression/system/views/themes/default/article.html
@@ -24,7 +24,7 @@
assault, according to the instructions. Nevertheless, the girl Nastya was in my house, she was lying on the bed,
they did not touch her, they did not even pay attention, as if she did not exist.
-
As soon as I lay down on the floor, they handcuffed me, it was a little painful. Since I was looking at the
@@ -57,7 +57,7 @@
unsuccessfully tried to put on pants and a shirt. When they laughed enough, they finally took off the
handcuffs and I was able to get dressed.
-
@@ -129,7 +129,7 @@
it turned out, all this time, like a moron, I pulled one operative of the PMC Wagner by the leg and really
annoyed him with this, because of which he snapped at me, it was awkward, ridiculous, scary and funny.
-
I was on the floor at the rear left seat, next to me was the largest operative. The second operative was driving,
@@ -153,7 +153,7 @@
of the passage of time. The operative in the front seat turned on the stun gun every few seconds (as it
turned out, they had only recently been given one, so they really wanted to play with them).
-
At first they simply told me that I was being taken to the department to be beaten (they called their
@@ -175,7 +175,7 @@
found a lot of things there: Zelensky's official channel, many pro-Ukrainian journalists and media, as well as
anarchist channels.
-
+
They read my VKontakte chats where I am an administrator, looked at people's profiles and laughed at
them. They laughed at the hairstyles, last names, appearance, sexual orientation of some of the members and asked if
@@ -227,7 +227,7 @@
out to be a normal guy After I offered them cooperation, their aggression completely disappeared
and they just went to a roadside coffee shop! It's funny, right?
-
I remind you that all this time I experienced incredible pain in my knees and did not feel my hands. I told
@@ -297,7 +297,7 @@
discuss. I can confidently say only one thing: they cooperate with him on a regular basis and, despite the big
age difference, communicate with each other as close friends, discussing various non-work related topics.
-
@@ -340,7 +340,7 @@
administrative (not criminal) statement. The issue with the area of residence was in order to choose the
district court of Khabarovsk.
-
After I answered his questions and he understood a little better what kind of person I am, he became more relaxed.
@@ -371,7 +371,7 @@
statement was absolutely fascist and anti-humanistic.
-
He said that I should be more careful. He said that I can discuss it with my friends, but in no case in
public. He praised me, saying that I was an educated and intelligent person, a programmer. He expressed regret
@@ -437,7 +437,7 @@
the stress of being kidnapped, I would be able to form a dialogue to my advantage and earn myself a better position.
All I had the strength to do was listen carefully to them and timidly try to ask questions.
-
They discussed me on the phone with their commander. I heard him ask them: Well, what's with this
@@ -482,7 +482,7 @@
about below.
-
They began to discuss among themselves their work without worrying that I could hear them. This could either mean
@@ -551,7 +551,7 @@
later
-
@@ -580,7 +580,7 @@
my life, of course, for the better.
-
+
The article is being written a few months after the incident, so many details were missed, and something may have
diff --git a/mirzaev/site/repression/system/views/aside.html b/mirzaev/site/repression/system/views/themes/default/aside.html
similarity index 64%
rename from mirzaev/site/repression/system/views/aside.html
rename to mirzaev/site/repression/system/views/themes/default/aside.html
index 7273107..f05a8ca 100755
--- a/mirzaev/site/repression/system/views/aside.html
+++ b/mirzaev/site/repression/system/views/themes/default/aside.html
@@ -1,4 +1,4 @@
-{% use 'hotline/index.html' with css as hotline_css, body as hotline_body, js as hotline_js, js_init as hotline_js_init %}
+{% use '/themes/default/hotline/index.html' with css as hotline_css, body as hotline_body, js as hotline_js, js_init as hotline_js_init %}
{% block css %}
{# {{ block('hotline_css') }} #}
diff --git a/mirzaev/site/repression/system/views/core.html b/mirzaev/site/repression/system/views/themes/default/core.html
similarity index 69%
rename from mirzaev/site/repression/system/views/core.html
rename to mirzaev/site/repression/system/views/themes/default/core.html
index 395d86c..0be03b5 100755
--- a/mirzaev/site/repression/system/views/core.html
+++ b/mirzaev/site/repression/system/views/themes/default/core.html
@@ -3,7 +3,7 @@
- {% use 'head.html' with title as head_title, meta as head_meta, css as head_css %}
+ {% use '/themes/default/head.html' with title as head_title, meta as head_meta, css as head_css %}
{% block title %}
{{ block('head_title') }}
@@ -23,7 +23,7 @@
{% endblock %}
{% block js %}
- {% include 'js.html' %}
+ {% include '/themes/default/js.html' %}
{% endblock %}
{% block js_init %}
diff --git a/mirzaev/site/repression/system/views/footer.html b/mirzaev/site/repression/system/views/themes/default/footer.html
similarity index 100%
rename from mirzaev/site/repression/system/views/footer.html
rename to mirzaev/site/repression/system/views/themes/default/footer.html
diff --git a/mirzaev/site/repression/system/views/head.html b/mirzaev/site/repression/system/views/themes/default/head.html
similarity index 61%
rename from mirzaev/site/repression/system/views/head.html
rename to mirzaev/site/repression/system/views/themes/default/head.html
index 750bb4d..80a95fb 100755
--- a/mirzaev/site/repression/system/views/head.html
+++ b/mirzaev/site/repression/system/views/themes/default/head.html
@@ -1,19 +1,20 @@
{% block title %}
-{% if head.title != empty %}{{head.title}}{% else %}PMC Wagner kidnapped me - MIRZAEV{% endif %}
+{% if head.title != empty %}{{head.title}}{% else %}PMC Wagner kidnapped me{% endif %}
{% endblock %}
{% block meta %}
+
-
+
-
+
@@ -21,23 +22,23 @@
-
-
+
+
-
+
-
+
-
-
-
+
+
+
-
{% for meta in head.metas %}
{% endfor %}
{% endblock %}
{% block css %}
-
-
+
+
{% endblock %}
diff --git a/mirzaev/site/repression/system/views/header.html b/mirzaev/site/repression/system/views/themes/default/header.html
similarity index 70%
rename from mirzaev/site/repression/system/views/header.html
rename to mirzaev/site/repression/system/views/themes/default/header.html
index 104650d..5fee5b3 100755
--- a/mirzaev/site/repression/system/views/header.html
+++ b/mirzaev/site/repression/system/views/themes/default/header.html
@@ -3,7 +3,7 @@
{% block body %}
-
diff --git a/mirzaev/site/repression/system/views/hotline/index.html b/mirzaev/site/repression/system/views/themes/default/hotline/index.html
similarity index 88%
rename from mirzaev/site/repression/system/views/hotline/index.html
rename to mirzaev/site/repression/system/views/themes/default/hotline/index.html
index 826d0df..ac7d70e 100755
--- a/mirzaev/site/repression/system/views/hotline/index.html
+++ b/mirzaev/site/repression/system/views/themes/default/hotline/index.html
@@ -1,5 +1,5 @@
{% block css %}
-
+
{% endblock %}
{% block body %}
diff --git a/mirzaev/site/repression/system/views/index.html b/mirzaev/site/repression/system/views/themes/default/index.html
similarity index 74%
rename from mirzaev/site/repression/system/views/index.html
rename to mirzaev/site/repression/system/views/themes/default/index.html
index bd67ac4..83b1144 100755
--- a/mirzaev/site/repression/system/views/index.html
+++ b/mirzaev/site/repression/system/views/themes/default/index.html
@@ -1,10 +1,12 @@
-{% extends "core.html" %}
+{% extends "/themes/default/core.html" %}
-{% use "core.html" with css as core_css, body as core_body, js as core_js, js_init as core_js_init %}
-{% use "troller.html" with css as troller_css, body as troller_body, js as troller_js, js_init as troller_js_init %}
-{% use "popups/welcome.html" with css as popup_welcome_css, body as popup_welcome_body %}
-{% use "header.html" with css as header_css, body as header_body, js as header_js, js_init as header_js_init %}
-{% use 'account/element.html' with css as account_css, body as account_body, js as account_js %}
+{% use "/themes/default/core.html" with css as core_css, body as core_body, js as core_js, js_init as core_js_init %}
+{% use "/themes/default/troller.html" with css as troller_css, body as troller_body, js as troller_js, js_init as
+troller_js_init %}
+{% use "/themes/default/popups/welcome.html" with css as popup_welcome_css, body as popup_welcome_body %}
+{% use "/themes/default/header.html" with css as header_css, body as header_body, js as header_js, js_init as
+header_js_init %}
+{% use '/themes/default/account/element.html' with css as account_css, body as account_body, js as account_js %}
{% block css %}
{{ block('core_css') }}
@@ -20,22 +22,23 @@
{{ block('troller_body') }}
+
{{ block('popup_welcome_body') }}
-
+
{{ block('header_body') }}
-
+
{% block main %}
- {% include 'article.html' %}
+ {% include '/themes/default/article.html' %}
{% endblock %}
-
- {% include 'footer.html' %}
-
+
+ {% include '/themes/default/footer.html' %}
+
-
-
@@ -63,7 +66,8 @@
Socials:Twitter(@mirzaev_sexy),
GitHub(mature-woman),
- Discord server ⚡ (RU+EN)
+ Discord server ⚡
+ (RU+EN)
@@ -75,11 +79,11 @@
{% for view in views.last %}
- {{ view.country_flag.emoji }}
- {{ view.region }}
+ {{ view.flag }}
+ {{ view.city }}
{% if view.referer is not null %}({{ view.referer
}}){% endif %}
- {{ view['x-forwarded-for'] ?? view.ip }}
+ {{ view.forwarded ?? view.address }}{{ view.created }}
@@ -109,14 +113,14 @@
0. You just DO WHAT THE FUCK YOU WANT TO.