diff --git a/.env b/.env index a59ee2e..9d51a78 100644 --- a/.env +++ b/.env @@ -48,7 +48,7 @@ MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=0 # YGGtracker # Application version, used for API and media cache -APP_VERSION=2.6.2 +APP_VERSION='2.4.0' # Application name APP_NAME=YGGtracker @@ -57,11 +57,7 @@ APP_NAME=YGGtracker APP_LOCALE=en # Supported locales for interface and content filters -APP_LOCALES=en|cs|nl|eo|fr|ja|ka|de|he|it|lv|pl|pt|ru|es|uk - -# Content categories, lowercase, enabled by default for new users -# src/Twig/AppExtension.php:transCategory -APP_CATEGORIES=movie|series|tv|animation|music|game|audiobook|podcast|book|archive|picture|software|other +APP_LOCALES=en|cs|nl|eo|fr|ka|de|he|it|lv|pl|pt|ru|es|uk # Items per page on pagination APP_PAGINATION=10 @@ -73,10 +69,10 @@ APP_THEME=default APP_THEMES=default # Default sensitive status for new users -APP_SENSITIVE=1 +APP_SENSITIVE=0 # Default approved status for new users -APP_APPROVED=1 +APP_APPROVED=0 # Default Yggdrasil filters status for new users APP_YGGDRASIL=1 @@ -88,12 +84,12 @@ APP_POSTERS=1 APP_TRACKERS=http://[201:23b4:991a:634d:8359:4521:5576:15b7]:2023/announce|http://[200:1e2f:e608:eb3a:2bf:1e62:87ba:e2f7]/announce|http://[316:c51a:62a3:8b9::5]/announce # List of crawlers where ignored in actions and activity features -APP_CRAWLERS=201:23b4:991a:634d:8359:4521:5576:15b7|30a:5fad::e|202:f2bc:f800:7cc4:c109:7857:5cae:6630|200:1554:e730:4030:605b:47be:6fb6:7b11 +APP_CRAWLERS=201:23b4:991a:634d:8359:4521:5576:15b7|30a:5fad::e -# Max torrent filesize for uploads (check upload_max_filesize in the php.ini) +# Max torrent filesize for uploads APP_TORRENT_FILE_SIZE_MAX=1024000 -# Max torrent poster filesize for uploads (check upload_max_filesize in the php.ini) +# Max torrent poster filesize for uploads APP_TORRENT_POSTER_FILE_SIZE_MAX=10240000 # Store wanted torrent files in /app/var/ftp by /app/crontab/torrent/scrape/{key} diff --git a/README.md b/README.md index 6ab362a..0d6d65e 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,22 @@ # YGGtracker -> [!NOTE] -> Take a look at [βtracker](https://github.com/yggverse/btracker) - the modern aggregation alternative written in Rust! +[](https://crowdin.com/project/yggtracker) -A social-oriented BitTorrent catalog for the [Yggdrasil](https://github.com/yggdrasil-network) network, written in the Symfony framework. +BitTorrent Network for Yggdrasil -YGGtracker is a manually operated catalog and social network that allows users to share their torrents in the local network. Engine uses IPv6 `0200::/7` addresses to identify users without registration. +YGGtracker is catalog, open tracker and social network with many features that allow to convert, filter and download any torrent in [Yggdrasil network](https://github.com/yggdrasil-network) by community. + +Engine uses IPv6 `0200::/7` addresses to identify users without registration. #### [Showcase](https://github.com/YGGverse/YGGtracker/wiki/Showcase)  +#### Instances + +* `http://[201:23b4:991a:634d:8359:4521:5576:15b7]/yggtracker/` + + `ftp://[201:23b4:991a:634d:8359:4521:5576:15b7]:21/yggtracker/` + #### Installation ``` @@ -64,7 +70,7 @@ Custom settings could be provided in the `/.env.local` file by overwriting defau #### Localization -[](https://crowdin.com/project/yggtracker) +Join community translations by [Crowdin](https://crowdin.com/project/yggtracker) #### API @@ -79,6 +85,15 @@ git checkout main git checkout -b my-pr-branch-name ``` +#### Donate to contributors + +* @d47081: + + +  + + [BTC](https://www.blockchain.com/explorer/addresses/btc/bc1qngdf2kwty6djjqpk0ynkpq9wmlrmtm7e0c534y) | [LTC](https://live.blockcypher.com/ltc/address/LUSiqzKsfB1vBLvpu515DZktG9ioKqLyj7) | [XMR](835gSR1Uvka19gnWPkU2pyRozZugRZSPHDuFL6YajaAqjEtMwSPr4jafM8idRuBWo7AWD3pwFQSYRMRW9XezqrK4BEXBgXE) | [ZEPH](ZEPHsADHXqnhfWhXrRcXnyBQMucE3NM7Ng5ZVB99XwA38PTnbjLKpCwcQVgoie8EJuWozKgBiTmDFW4iY7fNEgSEWyAy4dotqtX) + + Support our server by order [Linux VPS](https://www.yourserver.se/portal/aff.php?aff=610) + + Inspiration by [SomaFM Deep Space One](https://somafm.com/deepspaceone/) + #### License * Engine sources [MIT License](https://github.com/YGGverse/YGGtracker/blob/main/LICENSE) @@ -92,8 +107,8 @@ git checkout -b my-pr-branch-name * [Symfony Framework](https://symfony.com) * [SVG icons](https://icons.getbootstrap.com) * [Scrapper](https://github.com/medariox/scrapeer) / [Composer Edition](https://github.com/YGGverse/scrapeer) -* [Bencode](https://github.com/Rhilip/Bencode) -* [Transliteration](https://github.com/ashtokalo/php-translit) +* [Bencode Library](https://github.com/Rhilip/Bencode) +* [Transliteration Library](https://github.com/ashtokalo/php-translit) * [Identicons](https://github.com/dmester/jdenticon-php) #### Support diff --git a/composer.json b/composer.json index 0126d61..a91504c 100644 --- a/composer.json +++ b/composer.json @@ -15,7 +15,6 @@ "doctrine/doctrine-migrations-bundle": "^3.2", "doctrine/orm": "^2.16", "jdenticon/jdenticon": "^1.0", - "league/commonmark": "^2.4", "phpdocumentor/reflection-docblock": "^5.3", "phpstan/phpdoc-parser": "^1.24", "rhilip/bencode": "^2.3", @@ -46,9 +45,8 @@ "symfony/validator": "6.3.*", "symfony/web-link": "6.3.*", "symfony/yaml": "6.3.*", - "twig/extra-bundle": "^3.7", + "twig/extra-bundle": "^2.12|^3.0", "twig/intl-extra": "^3.7", - "twig/markdown-extra": "^3.7", "twig/string-extra": "^3.7", "twig/twig": "^2.12|^3.0", "yggverse/scrapeer": "^0.5.4" diff --git a/composer.lock b/composer.lock index efca9a6..babbb48 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "99ad25219a6bff24126d6f83ebd1756a", + "content-hash": "4d930a43cf9a80e1622029c4a4048a6b", "packages": [ { "name": "ashtokalo/php-translit", @@ -49,81 +49,6 @@ }, "time": "2022-09-26T09:05:24+00:00" }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.2", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "f41715465d65213d644d3141a6a93081be5d3549" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/f41715465d65213d644d3141a6a93081be5d3549", - "reference": "f41715465d65213d644d3141a6a93081be5d3549", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.42", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", - "scrutinizer/ocular": "1.6.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Dflydev\\DotAccessData\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Dragonfly Development Inc.", - "email": "info@dflydev.com", - "homepage": "http://dflydev.com" - }, - { - "name": "Beau Simensen", - "email": "beau@dflydev.com", - "homepage": "http://beausimensen.com" - }, - { - "name": "Carlos Frutos", - "email": "carlos@kiwing.it", - "homepage": "https://github.com/cfrutos" - }, - { - "name": "Colin O'Dell", - "email": "colinodell@gmail.com", - "homepage": "https://www.colinodell.com" - } - ], - "description": "Given a deep data structure, access data by dot notation.", - "homepage": "https://github.com/dflydev/dflydev-dot-access-data", - "keywords": [ - "access", - "data", - "dot", - "notation" - ], - "support": { - "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", - "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.2" - }, - "time": "2022-10-27T11:44:00+00:00" - }, { "name": "doctrine/annotations", "version": "2.0.1", @@ -472,16 +397,16 @@ }, { "name": "doctrine/dbal", - "version": "3.7.2", + "version": "3.7.0", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "0ac3c270590e54910715e9a1a044cc368df282b2" + "reference": "00d03067f07482f025d41ab55e4ba0db5eca2cdf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/0ac3c270590e54910715e9a1a044cc368df282b2", - "reference": "0ac3c270590e54910715e9a1a044cc368df282b2", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/00d03067f07482f025d41ab55e4ba0db5eca2cdf", + "reference": "00d03067f07482f025d41ab55e4ba0db5eca2cdf", "shasum": "" }, "require": { @@ -497,7 +422,7 @@ "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.10.42", + "phpstan/phpstan": "1.10.35", "phpstan/phpstan-strict-rules": "^1.5", "phpunit/phpunit": "9.6.13", "psalm/plugin-phpunit": "0.18.4", @@ -565,7 +490,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.7.2" + "source": "https://github.com/doctrine/dbal/tree/3.7.0" }, "funding": [ { @@ -581,7 +506,7 @@ "type": "tidelift" } ], - "time": "2023-11-19T08:06:58+00:00" + "time": "2023-09-26T20:56:55+00:00" }, { "name": "doctrine/deprecations", @@ -632,59 +557,56 @@ }, { "name": "doctrine/doctrine-bundle", - "version": "2.11.1", + "version": "2.10.2", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "4089f1424b724786c062aea50aae5f773449b94b" + "reference": "f28b1f78de3a2938ff05cfe751233097624cc756" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/4089f1424b724786c062aea50aae5f773449b94b", - "reference": "4089f1424b724786c062aea50aae5f773449b94b", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/f28b1f78de3a2938ff05cfe751233097624cc756", + "reference": "f28b1f78de3a2938ff05cfe751233097624cc756", "shasum": "" }, "require": { "doctrine/cache": "^1.11 || ^2.0", - "doctrine/dbal": "^3.7.0 || ^4.0", + "doctrine/dbal": "^3.6.0", "doctrine/persistence": "^2.2 || ^3", "doctrine/sql-formatter": "^1.0.1", "php": "^7.4 || ^8.0", - "symfony/cache": "^5.4 || ^6.0 || ^7.0", - "symfony/config": "^5.4 || ^6.0 || ^7.0", - "symfony/console": "^5.4 || ^6.0 || ^7.0", - "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", + "symfony/cache": "^5.4 || ^6.0", + "symfony/config": "^5.4 || ^6.0", + "symfony/console": "^5.4 || ^6.0", + "symfony/dependency-injection": "^5.4 || ^6.0", "symfony/deprecation-contracts": "^2.1 || ^3", - "symfony/doctrine-bridge": "^5.4.19 || ^6.0.7 || ^7.0", - "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0", - "symfony/polyfill-php80": "^1.15", + "symfony/doctrine-bridge": "^5.4.19 || ^6.0.7", + "symfony/framework-bundle": "^5.4 || ^6.0", "symfony/service-contracts": "^1.1.1 || ^2.0 || ^3" }, "conflict": { "doctrine/annotations": ">=3.0", - "doctrine/orm": "<2.14 || >=4.0", + "doctrine/orm": "<2.11 || >=3.0", "twig/twig": "<1.34 || >=2.0 <2.4" }, "require-dev": { "doctrine/annotations": "^1 || ^2", - "doctrine/coding-standard": "^12", + "doctrine/coding-standard": "^9.0", "doctrine/deprecations": "^1.0", - "doctrine/orm": "^2.14 || ^3.0", + "doctrine/orm": "^2.11 || ^3.0", "friendsofphp/proxy-manager-lts": "^1.0", "phpunit/phpunit": "^9.5.26 || ^10.0", "psalm/plugin-phpunit": "^0.18.4", "psalm/plugin-symfony": "^4", "psr/log": "^1.1.4 || ^2.0 || ^3.0", - "symfony/phpunit-bridge": "^6.1 || ^7.0", - "symfony/property-info": "^5.4 || ^6.0 || ^7.0", - "symfony/proxy-manager-bridge": "^5.4 || ^6.0 || ^7.0", - "symfony/security-bundle": "^5.4 || ^6.0 || ^7.0", - "symfony/string": "^5.4 || ^6.0 || ^7.0", - "symfony/twig-bridge": "^5.4 || ^6.0 || ^7.0", - "symfony/validator": "^5.4 || ^6.0 || ^7.0", - "symfony/var-exporter": "^5.4 || ^6.2 || ^7.0", - "symfony/web-profiler-bundle": "^5.4 || ^6.0 || ^7.0", - "symfony/yaml": "^5.4 || ^6.0 || ^7.0", + "symfony/phpunit-bridge": "^6.1", + "symfony/property-info": "^5.4 || ^6.0", + "symfony/proxy-manager-bridge": "^5.4 || ^6.0", + "symfony/security-bundle": "^5.4 || ^6.0", + "symfony/twig-bridge": "^5.4 || ^6.0", + "symfony/validator": "^5.4 || ^6.0", + "symfony/web-profiler-bundle": "^5.4 || ^6.0", + "symfony/yaml": "^5.4 || ^6.0", "twig/twig": "^1.34 || ^2.12 || ^3.0", "vimeo/psalm": "^4.30" }, @@ -731,7 +653,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.11.1" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.10.2" }, "funding": [ { @@ -747,44 +669,38 @@ "type": "tidelift" } ], - "time": "2023-11-15T20:01:50+00:00" + "time": "2023-08-06T09:31:40+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", - "version": "3.3.0", + "version": "3.2.4", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "1dd42906a5fb9c5960723e2ebb45c68006493835" + "reference": "94e6b0fe1a50901d52f59dbb9b4b0737718b2c1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/1dd42906a5fb9c5960723e2ebb45c68006493835", - "reference": "1dd42906a5fb9c5960723e2ebb45c68006493835", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/94e6b0fe1a50901d52f59dbb9b4b0737718b2c1e", + "reference": "94e6b0fe1a50901d52f59dbb9b4b0737718b2c1e", "shasum": "" }, "require": { - "doctrine/doctrine-bundle": "^2.4", + "doctrine/doctrine-bundle": "~1.0|~2.0", "doctrine/migrations": "^3.2", "php": "^7.2|^8.0", - "symfony/deprecation-contracts": "^2.1 || ^3", - "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0" + "symfony/framework-bundle": "~3.4|~4.0|~5.0|~6.0" }, "require-dev": { - "doctrine/coding-standard": "^12", - "doctrine/orm": "^2.6 || ^3", - "doctrine/persistence": "^2.0 || ^3 ", + "doctrine/coding-standard": "^9", + "doctrine/orm": "^2.6", + "doctrine/persistence": "^1.3||^2.0", "phpstan/phpstan": "^1.4", "phpstan/phpstan-deprecation-rules": "^1", "phpstan/phpstan-phpunit": "^1", "phpstan/phpstan-strict-rules": "^1.1", - "phpstan/phpstan-symfony": "^1.3", "phpunit/phpunit": "^8.5|^9.5", - "psalm/plugin-phpunit": "^0.18.4", - "psalm/plugin-symfony": "^3 || ^5", - "symfony/phpunit-bridge": "^6.3 || ^7", - "symfony/var-exporter": "^5.4 || ^6 || ^7", - "vimeo/psalm": "^4.30 || ^5.15" + "vimeo/psalm": "^4.22" }, "type": "symfony-bundle", "autoload": { @@ -822,7 +738,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", - "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.3.0" + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.2.4" }, "funding": [ { @@ -838,7 +754,7 @@ "type": "tidelift" } ], - "time": "2023-11-13T19:44:41+00:00" + "time": "2023-06-02T08:19:26+00:00" }, { "name": "doctrine/event-manager", @@ -1172,47 +1088,47 @@ }, { "name": "doctrine/migrations", - "version": "3.7.2", + "version": "3.6.0", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "47af29eef49f29ebee545947e8b2a4b3be318c8a" + "reference": "e542ad8bcd606d7a18d0875babb8a6d963c9c059" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/47af29eef49f29ebee545947e8b2a4b3be318c8a", - "reference": "47af29eef49f29ebee545947e8b2a4b3be318c8a", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/e542ad8bcd606d7a18d0875babb8a6d963c9c059", + "reference": "e542ad8bcd606d7a18d0875babb8a6d963c9c059", "shasum": "" }, "require": { "composer-runtime-api": "^2", - "doctrine/dbal": "^3.5.1 || ^4", + "doctrine/dbal": "^3.5.1", "doctrine/deprecations": "^0.5.3 || ^1", "doctrine/event-manager": "^1.2 || ^2.0", "php": "^8.1", "psr/log": "^1.1.3 || ^2 || ^3", - "symfony/console": "^5.4 || ^6.0 || ^7.0", - "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0", - "symfony/var-exporter": "^6.2 || ^7.0" + "symfony/console": "^4.4.16 || ^5.4 || ^6.0", + "symfony/stopwatch": "^4.4 || ^5.4 || ^6.0", + "symfony/var-exporter": "^6.2" }, "conflict": { - "doctrine/orm": "<2.12 || >=4" + "doctrine/orm": "<2.12" }, "require-dev": { - "doctrine/coding-standard": "^12", - "doctrine/orm": "^2.13 || ^3", + "doctrine/coding-standard": "^9", + "doctrine/orm": "^2.13", "doctrine/persistence": "^2 || ^3", "doctrine/sql-formatter": "^1.0", "ext-pdo_sqlite": "*", - "phpstan/phpstan": "^1.10", - "phpstan/phpstan-deprecation-rules": "^1.1", - "phpstan/phpstan-phpunit": "^1.3", - "phpstan/phpstan-strict-rules": "^1.4", - "phpstan/phpstan-symfony": "^1.3", - "phpunit/phpunit": "^10.3", - "symfony/cache": "^5.4 || ^6.0 || ^7.0", - "symfony/process": "^5.4 || ^6.0 || ^7.0", - "symfony/yaml": "^5.4 || ^6.0 || ^7.0" + "phpstan/phpstan": "^1.5", + "phpstan/phpstan-deprecation-rules": "^1", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.1", + "phpstan/phpstan-symfony": "^1.1", + "phpunit/phpunit": "^9.5.24", + "symfony/cache": "^4.4 || ^5.4 || ^6.0", + "symfony/process": "^4.4 || ^5.4 || ^6.0", + "symfony/yaml": "^4.4 || ^5.4 || ^6.0" }, "suggest": { "doctrine/sql-formatter": "Allows to generate formatted SQL with the diff command.", @@ -1254,7 +1170,7 @@ ], "support": { "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/3.7.2" + "source": "https://github.com/doctrine/migrations/tree/3.6.0" }, "funding": [ { @@ -1270,20 +1186,20 @@ "type": "tidelift" } ], - "time": "2023-12-05T11:35:05+00:00" + "time": "2023-02-15T18:49:46+00:00" }, { "name": "doctrine/orm", - "version": "2.17.1", + "version": "2.16.2", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "1a4fe6e0bb67762370937a7e6cee3da40a9122d1" + "reference": "17500f56eaa930f5cd14d765bc2cd851c7d37cc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/1a4fe6e0bb67762370937a7e6cee3da40a9122d1", - "reference": "1a4fe6e0bb67762370937a7e6cee3da40a9122d1", + "url": "https://api.github.com/repos/doctrine/orm/zipball/17500f56eaa930f5cd14d765bc2cd851c7d37cc0", + "reference": "17500f56eaa930f5cd14d765bc2cd851c7d37cc0", "shasum": "" }, "require": { @@ -1301,7 +1217,7 @@ "ext-ctype": "*", "php": "^7.1 || ^8.0", "psr/cache": "^1 || ^2 || ^3", - "symfony/console": "^4.2 || ^5.0 || ^6.0 || ^7.0", + "symfony/console": "^4.2 || ^5.0 || ^6.0", "symfony/polyfill-php72": "^1.23", "symfony/polyfill-php80": "^1.16" }, @@ -1312,14 +1228,14 @@ "doctrine/annotations": "^1.13 || ^2", "doctrine/coding-standard": "^9.0.2 || ^12.0", "phpbench/phpbench": "^0.16.10 || ^1.0", - "phpstan/phpstan": "~1.4.10 || 1.10.35", + "phpstan/phpstan": "~1.4.10 || 1.10.28", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", "psr/log": "^1 || ^2 || ^3", "squizlabs/php_codesniffer": "3.7.2", "symfony/cache": "^4.4 || ^5.4 || ^6.0", "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2", "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0", - "vimeo/psalm": "4.30.0 || 5.15.0" + "vimeo/psalm": "4.30.0 || 5.14.1" }, "suggest": { "ext-dom": "Provides support for XSD validation for XML mapping files", @@ -1369,9 +1285,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.17.1" + "source": "https://github.com/doctrine/orm/tree/2.16.2" }, - "time": "2023-11-17T06:25:40+00:00" + "time": "2023-08-27T18:21:56+00:00" }, { "name": "doctrine/persistence", @@ -1639,206 +1555,18 @@ }, "time": "2022-10-30T17:15:02+00:00" }, - { - "name": "league/commonmark", - "version": "2.4.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/3669d6d5f7a47a93c08ddff335e6d945481a1dd5", - "reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "league/config": "^1.1.1", - "php": "^7.4 || ^8.0", - "psr/event-dispatcher": "^1.0", - "symfony/deprecation-contracts": "^2.1 || ^3.0", - "symfony/polyfill-php80": "^1.16" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "embed/embed": "^4.4", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4 || ^2.0", - "nyholm/psr7": "^1.5", - "phpstan/phpstan": "^1.8.2", - "phpunit/phpunit": "^9.5.21", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3 | ^6.0", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1.1", - "vimeo/psalm": "^4.24.0 || ^5.0.0" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - } - }, - "autoload": { - "psr-4": { - "League\\CommonMark\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Colin O'Dell", - "email": "colinodell@gmail.com", - "homepage": "https://www.colinodell.com", - "role": "Lead Developer" - } - ], - "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", - "homepage": "https://commonmark.thephpleague.com", - "keywords": [ - "commonmark", - "flavored", - "gfm", - "github", - "github-flavored", - "markdown", - "md", - "parser" - ], - "support": { - "docs": "https://commonmark.thephpleague.com/", - "forum": "https://github.com/thephpleague/commonmark/discussions", - "issues": "https://github.com/thephpleague/commonmark/issues", - "rss": "https://github.com/thephpleague/commonmark/releases.atom", - "source": "https://github.com/thephpleague/commonmark" - }, - "funding": [ - { - "url": "https://www.colinodell.com/sponsor", - "type": "custom" - }, - { - "url": "https://www.paypal.me/colinpodell/10.00", - "type": "custom" - }, - { - "url": "https://github.com/colinodell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/commonmark", - "type": "tidelift" - } - ], - "time": "2023-08-30T16:55:00+00:00" - }, - { - "name": "league/config", - "version": "v1.2.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", - "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.8.2", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.2-dev" - } - }, - "autoload": { - "psr-4": { - "League\\Config\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Colin O'Dell", - "email": "colinodell@gmail.com", - "homepage": "https://www.colinodell.com", - "role": "Lead Developer" - } - ], - "description": "Define configuration arrays with strict schemas and access values with dot notation", - "homepage": "https://config.thephpleague.com", - "keywords": [ - "array", - "config", - "configuration", - "dot", - "dot-access", - "nested", - "schema" - ], - "support": { - "docs": "https://config.thephpleague.com/", - "issues": "https://github.com/thephpleague/config/issues", - "rss": "https://github.com/thephpleague/config/releases.atom", - "source": "https://github.com/thephpleague/config" - }, - "funding": [ - { - "url": "https://www.colinodell.com/sponsor", - "type": "custom" - }, - { - "url": "https://www.paypal.me/colinpodell/10.00", - "type": "custom" - }, - { - "url": "https://github.com/colinodell", - "type": "github" - } - ], - "time": "2022-12-11T20:36:23+00:00" - }, { "name": "monolog/monolog", - "version": "3.5.0", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448" + "reference": "e2392369686d420ca32df3803de28b5d6f76867d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c915e2634718dbc8a4a15c61b0e62e7a44e14448", - "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/e2392369686d420ca32df3803de28b5d6f76867d", + "reference": "e2392369686d420ca32df3803de28b5d6f76867d", "shasum": "" }, "require": { @@ -1914,7 +1642,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.5.0" + "source": "https://github.com/Seldaek/monolog/tree/3.4.0" }, "funding": [ { @@ -1926,155 +1654,7 @@ "type": "tidelift" } ], - "time": "2023-10-27T15:32:31+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.5", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "0462f0166e823aad657c9224d0f849ecac1ba10a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/0462f0166e823aad657c9224d0f849ecac1ba10a", - "reference": "0462f0166e823aad657c9224d0f849ecac1ba10a", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": "7.1 - 8.3" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^1.0", - "tracy/tracy": "^2.7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0-only", - "GPL-3.0-only" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "📐 Nette Schema: validating data structures against a given Schema.", - "homepage": "https://nette.org", - "keywords": [ - "config", - "nette" - ], - "support": { - "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.2.5" - }, - "time": "2023-10-05T20:37:59+00:00" - }, - { - "name": "nette/utils", - "version": "v4.0.3", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "a9d127dd6a203ce6d255b2e2db49759f7506e015" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/a9d127dd6a203ce6d255b2e2db49759f7506e015", - "reference": "a9d127dd6a203ce6d255b2e2db49759f7506e015", - "shasum": "" - }, - "require": { - "php": ">=8.0 <8.4" - }, - "conflict": { - "nette/finder": "<3", - "nette/schema": "<1.2.2" - }, - "require-dev": { - "jetbrains/phpstorm-attributes": "dev-master", - "nette/tester": "^2.5", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.9" - }, - "suggest": { - "ext-gd": "to use Image", - "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", - "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", - "ext-json": "to use Nette\\Utils\\Json", - "ext-mbstring": "to use Strings::lower() etc...", - "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0-only", - "GPL-3.0-only" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", - "homepage": "https://nette.org", - "keywords": [ - "array", - "core", - "datetime", - "images", - "json", - "nette", - "paginator", - "password", - "slugify", - "string", - "unicode", - "utf-8", - "utility", - "validation" - ], - "support": { - "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.3" - }, - "time": "2023-10-29T21:02:13+00:00" + "time": "2023-06-21T08:46:11+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -2246,16 +1826,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.24.4", + "version": "1.24.2", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496" + "reference": "bcad8d995980440892759db0c32acae7c8e79442" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/6bd0c26f3786cd9b7c359675cb789e35a8e07496", - "reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bcad8d995980440892759db0c32acae7c8e79442", + "reference": "bcad8d995980440892759db0c32acae7c8e79442", "shasum": "" }, "require": { @@ -2287,9 +1867,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.4" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.2" }, - "time": "2023-11-26T18:29:22+00:00" + "time": "2023-09-26T12:28:12+00:00" }, { "name": "psr/cache", @@ -2599,23 +2179,22 @@ }, { "name": "rhilip/bencode", - "version": "v2.4.2", + "version": "v2.3.3", "source": { "type": "git", "url": "https://github.com/Rhilip/Bencode.git", - "reference": "d5b51d02f73017834c53aa76aff2403fb753ac97" + "reference": "fd37d13bb745352d40879dbbfa6da85af91e49f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Rhilip/Bencode/zipball/d5b51d02f73017834c53aa76aff2403fb753ac97", - "reference": "d5b51d02f73017834c53aa76aff2403fb753ac97", + "url": "https://api.github.com/repos/Rhilip/Bencode/zipball/fd37d13bb745352d40879dbbfa6da85af91e49f1", + "reference": "fd37d13bb745352d40879dbbfa6da85af91e49f1", "shasum": "" }, "require": { "php": "^7.3|^8.0" }, "require-dev": { - "ext-json": "*", "phpunit/phpunit": "^9.0" }, "suggest": { @@ -2645,22 +2224,22 @@ ], "support": { "issues": "https://github.com/Rhilip/Bencode/issues", - "source": "https://github.com/Rhilip/Bencode/tree/v2.4.2" + "source": "https://github.com/Rhilip/Bencode/tree/v2.3.3" }, - "time": "2023-11-05T11:24:41+00:00" + "time": "2023-05-27T01:47:00+00:00" }, { "name": "symfony/asset", - "version": "v6.3.8", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/asset.git", - "reference": "b2382a403f2111836301623d89e9af3d84989525" + "reference": "b77a4cc8e266b7e0db688de740f9ee7253aa411c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/b2382a403f2111836301623d89e9af3d84989525", - "reference": "b2382a403f2111836301623d89e9af3d84989525", + "url": "https://api.github.com/repos/symfony/asset/zipball/b77a4cc8e266b7e0db688de740f9ee7253aa411c", + "reference": "b77a4cc8e266b7e0db688de740f9ee7253aa411c", "shasum": "" }, "require": { @@ -2700,7 +2279,7 @@ "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset/tree/v6.3.8" + "source": "https://github.com/symfony/asset/tree/v6.3.0" }, "funding": [ { @@ -2716,20 +2295,20 @@ "type": "tidelift" } ], - "time": "2023-10-31T08:07:48+00:00" + "time": "2023-04-21T14:41:17+00:00" }, { "name": "symfony/cache", - "version": "v6.3.9", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "8c6e84272e4febbb1fed3c5b9f3c722537c2bd55" + "reference": "6c1a3ea078c4d88ee892530945df63a87981b2da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/8c6e84272e4febbb1fed3c5b9f3c722537c2bd55", - "reference": "8c6e84272e4febbb1fed3c5b9f3c722537c2bd55", + "url": "https://api.github.com/repos/symfony/cache/zipball/6c1a3ea078c4d88ee892530945df63a87981b2da", + "reference": "6c1a3ea078c4d88ee892530945df63a87981b2da", "shasum": "" }, "require": { @@ -2738,7 +2317,7 @@ "psr/log": "^1.1|^2|^3", "symfony/cache-contracts": "^2.5|^3", "symfony/service-contracts": "^2.5|^3", - "symfony/var-exporter": "^6.3.6" + "symfony/var-exporter": "^6.2.10" }, "conflict": { "doctrine/dbal": "<2.13.1", @@ -2753,7 +2332,7 @@ }, "require-dev": { "cache/integration-tests": "dev-master", - "doctrine/dbal": "^2.13.1|^3|^4", + "doctrine/dbal": "^2.13.1|^3.0", "predis/predis": "^1.1|^2.0", "psr/simple-cache": "^1.0|^2.0|^3.0", "symfony/config": "^5.4|^6.0", @@ -2796,7 +2375,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.3.9" + "source": "https://github.com/symfony/cache/tree/v6.3.5" }, "funding": [ { @@ -2812,20 +2391,20 @@ "type": "tidelift" } ], - "time": "2023-11-24T13:24:35+00:00" + "time": "2023-09-26T15:48:55+00:00" }, { "name": "symfony/cache-contracts", - "version": "v3.4.0", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "1d74b127da04ffa87aa940abe15446fa89653778" + "reference": "ad945640ccc0ae6e208bcea7d7de4b39b569896b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/1d74b127da04ffa87aa940abe15446fa89653778", - "reference": "1d74b127da04ffa87aa940abe15446fa89653778", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/ad945640ccc0ae6e208bcea7d7de4b39b569896b", + "reference": "ad945640ccc0ae6e208bcea7d7de4b39b569896b", "shasum": "" }, "require": { @@ -2872,7 +2451,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/cache-contracts/tree/v3.3.0" }, "funding": [ { @@ -2888,7 +2467,7 @@ "type": "tidelift" } ], - "time": "2023-09-25T12:52:38+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/clock", @@ -2965,16 +2544,16 @@ }, { "name": "symfony/config", - "version": "v6.3.8", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "b7a63887960359e5b59b15826fa9f9be10acbe88" + "reference": "b47ca238b03e7b0d7880ffd1cf06e8d637ca1467" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/b7a63887960359e5b59b15826fa9f9be10acbe88", - "reference": "b7a63887960359e5b59b15826fa9f9be10acbe88", + "url": "https://api.github.com/repos/symfony/config/zipball/b47ca238b03e7b0d7880ffd1cf06e8d637ca1467", + "reference": "b47ca238b03e7b0d7880ffd1cf06e8d637ca1467", "shasum": "" }, "require": { @@ -3020,7 +2599,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v6.3.8" + "source": "https://github.com/symfony/config/tree/v6.3.2" }, "funding": [ { @@ -3036,20 +2615,20 @@ "type": "tidelift" } ], - "time": "2023-11-09T08:28:21+00:00" + "time": "2023-07-19T20:22:16+00:00" }, { "name": "symfony/console", - "version": "v6.3.9", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "0566dbd051f8648d980592c7849f5d90d2c7c60c" + "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/0566dbd051f8648d980592c7849f5d90d2c7c60c", - "reference": "0566dbd051f8648d980592c7849f5d90d2c7c60c", + "url": "https://api.github.com/repos/symfony/console/zipball/eca495f2ee845130855ddf1cf18460c38966c8b6", + "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6", "shasum": "" }, "require": { @@ -3110,7 +2689,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.3.9" + "source": "https://github.com/symfony/console/tree/v6.3.4" }, "funding": [ { @@ -3126,7 +2705,7 @@ "type": "tidelift" } ], - "time": "2023-11-20T16:36:29+00:00" + "time": "2023-08-16T10:10:12+00:00" }, { "name": "symfony/crowdin-translation-provider", @@ -3203,16 +2782,16 @@ }, { "name": "symfony/dependency-injection", - "version": "v6.3.10", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "51383a1d9d7e93d5c3c76ddc32672de1b3e82c77" + "reference": "2ed62b3bf98346e1f45529a7b6be2196739bb993" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/51383a1d9d7e93d5c3c76ddc32672de1b3e82c77", - "reference": "51383a1d9d7e93d5c3c76ddc32672de1b3e82c77", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/2ed62b3bf98346e1f45529a7b6be2196739bb993", + "reference": "2ed62b3bf98346e1f45529a7b6be2196739bb993", "shasum": "" }, "require": { @@ -3264,7 +2843,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v6.3.10" + "source": "https://github.com/symfony/dependency-injection/tree/v6.3.5" }, "funding": [ { @@ -3280,11 +2859,11 @@ "type": "tidelift" } ], - "time": "2023-12-01T14:25:58+00:00" + "time": "2023-09-25T16:46:40+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.4.0", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", @@ -3331,7 +2910,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" }, "funding": [ { @@ -3351,16 +2930,16 @@ }, { "name": "symfony/doctrine-bridge", - "version": "v6.3.8", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "8842d289d41320a0f725e996b4e58d84af398a9e" + "reference": "9977eb1adf999ceded213e88c1ac6dff7a1a0306" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/8842d289d41320a0f725e996b4e58d84af398a9e", - "reference": "8842d289d41320a0f725e996b4e58d84af398a9e", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/9977eb1adf999ceded213e88c1ac6dff7a1a0306", + "reference": "9977eb1adf999ceded213e88c1ac6dff7a1a0306", "shasum": "" }, "require": { @@ -3393,8 +2972,8 @@ "doctrine/annotations": "^1.13.1|^2", "doctrine/collections": "^1.0|^2.0", "doctrine/data-fixtures": "^1.1", - "doctrine/dbal": "^2.13.1|^3|^4", - "doctrine/orm": "^2.12|^3", + "doctrine/dbal": "^2.13.1|^3.0", + "doctrine/orm": "^2.12", "psr/log": "^1|^2|^3", "symfony/cache": "^5.4|^6.0", "symfony/config": "^5.4|^6.0", @@ -3441,7 +3020,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v6.3.8" + "source": "https://github.com/symfony/doctrine-bridge/tree/v6.3.5" }, "funding": [ { @@ -3457,24 +3036,24 @@ "type": "tidelift" } ], - "time": "2023-10-31T08:07:48+00:00" + "time": "2023-09-29T16:16:03+00:00" }, { "name": "symfony/doctrine-messenger", - "version": "v6.3.10", + "version": "v6.3.1", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-messenger.git", - "reference": "b225f860450a34291bc5983f87d57fb7b9ef18b8" + "reference": "f1c253e24ae6d2bc4939b1439e074e6d2e73ecdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/b225f860450a34291bc5983f87d57fb7b9ef18b8", - "reference": "b225f860450a34291bc5983f87d57fb7b9ef18b8", + "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/f1c253e24ae6d2bc4939b1439e074e6d2e73ecdb", + "reference": "f1c253e24ae6d2bc4939b1439e074e6d2e73ecdb", "shasum": "" }, "require": { - "doctrine/dbal": "^2.13|^3|^4", + "doctrine/dbal": "^2.13|^3.0", "php": ">=8.1", "symfony/messenger": "^5.4|^6.0", "symfony/service-contracts": "^2.5|^3" @@ -3513,7 +3092,7 @@ "description": "Symfony Doctrine Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-messenger/tree/v6.3.10" + "source": "https://github.com/symfony/doctrine-messenger/tree/v6.3.1" }, "funding": [ { @@ -3529,20 +3108,20 @@ "type": "tidelift" } ], - "time": "2023-12-01T09:24:52+00:00" + "time": "2023-06-24T11:51:27+00:00" }, { "name": "symfony/dotenv", - "version": "v6.3.7", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "7dfbe2976f3c1b7cfa8fac2212a050bfa9bd7d9e" + "reference": "ceadb434fe2a6763a03d2d110441745834f3dd1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/7dfbe2976f3c1b7cfa8fac2212a050bfa9bd7d9e", - "reference": "7dfbe2976f3c1b7cfa8fac2212a050bfa9bd7d9e", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/ceadb434fe2a6763a03d2d110441745834f3dd1e", + "reference": "ceadb434fe2a6763a03d2d110441745834f3dd1e", "shasum": "" }, "require": { @@ -3587,7 +3166,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v6.3.7" + "source": "https://github.com/symfony/dotenv/tree/v6.3.0" }, "funding": [ { @@ -3603,7 +3182,7 @@ "type": "tidelift" } ], - "time": "2023-10-26T18:15:14+00:00" + "time": "2023-04-21T14:41:17+00:00" }, { "name": "symfony/error-handler", @@ -3761,7 +3340,7 @@ }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.4.0", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", @@ -3817,7 +3396,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" }, "funding": [ { @@ -4028,16 +3607,16 @@ }, { "name": "symfony/flex", - "version": "v2.4.2", + "version": "v2.3.3", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "67ee785f1aedada76461de7a7ec10cd7f8ff8d36" + "reference": "9c402af768c6c9f8126a9ffa192ecf7c16581e35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/67ee785f1aedada76461de7a7ec10cd7f8ff8d36", - "reference": "67ee785f1aedada76461de7a7ec10cd7f8ff8d36", + "url": "https://api.github.com/repos/symfony/flex/zipball/9c402af768c6c9f8126a9ffa192ecf7c16581e35", + "reference": "9c402af768c6c9f8126a9ffa192ecf7c16581e35", "shasum": "" }, "require": { @@ -4073,7 +3652,7 @@ "description": "Composer plugin for Symfony", "support": { "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v2.4.2" + "source": "https://github.com/symfony/flex/tree/v2.3.3" }, "funding": [ { @@ -4089,20 +3668,20 @@ "type": "tidelift" } ], - "time": "2023-12-05T14:09:35+00:00" + "time": "2023-08-04T09:02:35+00:00" }, { "name": "symfony/form", - "version": "v6.3.10", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "5afc7334b9d60dd0799612faf3d103b25bc60ae4" + "reference": "0f9ad8600c1021983d096512066ee54332aa3139" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/5afc7334b9d60dd0799612faf3d103b25bc60ae4", - "reference": "5afc7334b9d60dd0799612faf3d103b25bc60ae4", + "url": "https://api.github.com/repos/symfony/form/zipball/0f9ad8600c1021983d096512066ee54332aa3139", + "reference": "0f9ad8600c1021983d096512066ee54332aa3139", "shasum": "" }, "require": { @@ -4170,7 +3749,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v6.3.10" + "source": "https://github.com/symfony/form/tree/v6.3.5" }, "funding": [ { @@ -4186,20 +3765,20 @@ "type": "tidelift" } ], - "time": "2023-11-30T11:08:22+00:00" + "time": "2023-09-10T17:47:23+00:00" }, { "name": "symfony/framework-bundle", - "version": "v6.3.9", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "f83d20092e98c3ae8b5874b8f0787546c5c61cda" + "reference": "567cafcfc08e3076b47290a7558b0ca17a98b0ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/f83d20092e98c3ae8b5874b8f0787546c5c61cda", - "reference": "f83d20092e98c3ae8b5874b8f0787546c5c61cda", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/567cafcfc08e3076b47290a7558b0ca17a98b0ce", + "reference": "567cafcfc08e3076b47290a7558b0ca17a98b0ce", "shasum": "" }, "require": { @@ -4314,7 +3893,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v6.3.9" + "source": "https://github.com/symfony/framework-bundle/tree/v6.3.5" }, "funding": [ { @@ -4330,20 +3909,20 @@ "type": "tidelift" } ], - "time": "2023-11-24T10:25:33+00:00" + "time": "2023-09-29T10:45:15+00:00" }, { "name": "symfony/http-client", - "version": "v6.3.8", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "0314e2d49939a9831929d6fc81c01c6df137fd0a" + "reference": "213e564da4cbf61acc9728d97e666bcdb868c10d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/0314e2d49939a9831929d6fc81c01c6df137fd0a", - "reference": "0314e2d49939a9831929d6fc81c01c6df137fd0a", + "url": "https://api.github.com/repos/symfony/http-client/zipball/213e564da4cbf61acc9728d97e666bcdb868c10d", + "reference": "213e564da4cbf61acc9728d97e666bcdb868c10d", "shasum": "" }, "require": { @@ -4406,7 +3985,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v6.3.8" + "source": "https://github.com/symfony/http-client/tree/v6.3.5" }, "funding": [ { @@ -4422,20 +4001,20 @@ "type": "tidelift" } ], - "time": "2023-11-06T18:31:59+00:00" + "time": "2023-09-29T15:57:12+00:00" }, { "name": "symfony/http-client-contracts", - "version": "v3.4.0", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "1ee70e699b41909c209a0c930f11034b93578654" + "reference": "3b66325d0176b4ec826bffab57c9037d759c31fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/1ee70e699b41909c209a0c930f11034b93578654", - "reference": "1ee70e699b41909c209a0c930f11034b93578654", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/3b66325d0176b4ec826bffab57c9037d759c31fb", + "reference": "3b66325d0176b4ec826bffab57c9037d759c31fb", "shasum": "" }, "require": { @@ -4484,7 +4063,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/http-client-contracts/tree/v3.3.0" }, "funding": [ { @@ -4500,20 +4079,20 @@ "type": "tidelift" } ], - "time": "2023-07-30T20:28:31+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.3.9", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "49a04fd3a21edc9ce503ab78e9f342805fefe780" + "reference": "b50f5e281d722cb0f4c296f908bacc3e2b721957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/49a04fd3a21edc9ce503ab78e9f342805fefe780", - "reference": "49a04fd3a21edc9ce503ab78e9f342805fefe780", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b50f5e281d722cb0f4c296f908bacc3e2b721957", + "reference": "b50f5e281d722cb0f4c296f908bacc3e2b721957", "shasum": "" }, "require": { @@ -4523,12 +4102,12 @@ "symfony/polyfill-php83": "^1.27" }, "conflict": { - "symfony/cache": "<6.3" + "symfony/cache": "<6.2" }, "require-dev": { - "doctrine/dbal": "^2.13.1|^3|^4", + "doctrine/dbal": "^2.13.1|^3.0", "predis/predis": "^1.1|^2.0", - "symfony/cache": "^6.3", + "symfony/cache": "^5.4|^6.0", "symfony/dependency-injection": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", @@ -4561,7 +4140,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.3.9" + "source": "https://github.com/symfony/http-foundation/tree/v6.3.5" }, "funding": [ { @@ -4577,20 +4156,20 @@ "type": "tidelift" } ], - "time": "2023-11-20T16:36:29+00:00" + "time": "2023-09-04T21:33:54+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.3.10", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "8d8e7aa60593fd0a2e3c1cea08cc687314841b61" + "reference": "9f991a964368bee8d883e8d57ced4fe9fff04dfc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/8d8e7aa60593fd0a2e3c1cea08cc687314841b61", - "reference": "8d8e7aa60593fd0a2e3c1cea08cc687314841b61", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9f991a964368bee8d883e8d57ced4fe9fff04dfc", + "reference": "9f991a964368bee8d883e8d57ced4fe9fff04dfc", "shasum": "" }, "require": { @@ -4674,7 +4253,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.3.10" + "source": "https://github.com/symfony/http-kernel/tree/v6.3.5" }, "funding": [ { @@ -4690,20 +4269,20 @@ "type": "tidelift" } ], - "time": "2023-12-01T16:57:27+00:00" + "time": "2023-09-30T06:37:04+00:00" }, { "name": "symfony/intl", - "version": "v6.3.7", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "4cc98c05f2c55150a6aa5b3e20667f7a6d06cca9" + "reference": "1f8cb145c869ed089a8531c51a6a4b31ed0b3c69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/4cc98c05f2c55150a6aa5b3e20667f7a6d06cca9", - "reference": "4cc98c05f2c55150a6aa5b3e20667f7a6d06cca9", + "url": "https://api.github.com/repos/symfony/intl/zipball/1f8cb145c869ed089a8531c51a6a4b31ed0b3c69", + "reference": "1f8cb145c869ed089a8531c51a6a4b31ed0b3c69", "shasum": "" }, "require": { @@ -4756,7 +4335,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v6.3.7" + "source": "https://github.com/symfony/intl/tree/v6.3.2" }, "funding": [ { @@ -4772,7 +4351,7 @@ "type": "tidelift" } ], - "time": "2023-10-28T23:11:45+00:00" + "time": "2023-07-20T07:43:09+00:00" }, { "name": "symfony/mailer", @@ -4856,23 +4435,22 @@ }, { "name": "symfony/messenger", - "version": "v6.3.9", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/messenger.git", - "reference": "096b151f955d5ac56cc61a3ca0e16b38ff093805" + "reference": "fb29632c2abdc52f4f10f9402f8f93ebb8938234" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/messenger/zipball/096b151f955d5ac56cc61a3ca0e16b38ff093805", - "reference": "096b151f955d5ac56cc61a3ca0e16b38ff093805", + "url": "https://api.github.com/repos/symfony/messenger/zipball/fb29632c2abdc52f4f10f9402f8f93ebb8938234", + "reference": "fb29632c2abdc52f4f10f9402f8f93ebb8938234", "shasum": "" }, "require": { "php": ">=8.1", "psr/log": "^1|^2|^3", - "symfony/clock": "^6.3", - "symfony/deprecation-contracts": "^2.5|^3" + "symfony/clock": "^6.3" }, "conflict": { "symfony/console": "<6.3", @@ -4886,6 +4464,7 @@ "psr/cache": "^1.0|^2.0|^3.0", "symfony/console": "^6.3", "symfony/dependency-injection": "^5.4|^6.0", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/event-dispatcher": "^5.4|^6.0", "symfony/http-kernel": "^5.4|^6.0", "symfony/process": "^5.4|^6.0", @@ -4923,7 +4502,7 @@ "description": "Helps applications send and receive messages to/from other applications or via message queues", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/messenger/tree/v6.3.9" + "source": "https://github.com/symfony/messenger/tree/v6.3.5" }, "funding": [ { @@ -4939,7 +4518,7 @@ "type": "tidelift" } ], - "time": "2023-11-22T19:13:10+00:00" + "time": "2023-09-29T16:11:24+00:00" }, { "name": "symfony/mime", @@ -5027,16 +4606,16 @@ }, { "name": "symfony/monolog-bridge", - "version": "v6.3.8", + "version": "v6.3.1", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "2bbfc8bd9d6f966b69eda20c66762580a0410c78" + "reference": "04b04b8e465e0fa84940e5609b6796a8b4e51bf1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/2bbfc8bd9d6f966b69eda20c66762580a0410c78", - "reference": "2bbfc8bd9d6f966b69eda20c66762580a0410c78", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/04b04b8e465e0fa84940e5609b6796a8b4e51bf1", + "reference": "04b04b8e465e0fa84940e5609b6796a8b4e51bf1", "shasum": "" }, "require": { @@ -5085,7 +4664,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v6.3.8" + "source": "https://github.com/symfony/monolog-bridge/tree/v6.3.1" }, "funding": [ { @@ -5101,34 +4680,34 @@ "type": "tidelift" } ], - "time": "2023-10-31T08:07:48+00:00" + "time": "2023-06-08T11:13:32+00:00" }, { "name": "symfony/monolog-bundle", - "version": "v3.10.0", + "version": "v3.8.0", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bundle.git", - "reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181" + "reference": "a41bbcdc1105603b6d73a7d9a43a3788f8e0fb7d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181", - "reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/a41bbcdc1105603b6d73a7d9a43a3788f8e0fb7d", + "reference": "a41bbcdc1105603b6d73a7d9a43a3788f8e0fb7d", "shasum": "" }, "require": { - "monolog/monolog": "^1.25.1 || ^2.0 || ^3.0", - "php": ">=7.2.5", - "symfony/config": "^5.4 || ^6.0 || ^7.0", - "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", - "symfony/http-kernel": "^5.4 || ^6.0 || ^7.0", - "symfony/monolog-bridge": "^5.4 || ^6.0 || ^7.0" + "monolog/monolog": "^1.22 || ^2.0 || ^3.0", + "php": ">=7.1.3", + "symfony/config": "~4.4 || ^5.0 || ^6.0", + "symfony/dependency-injection": "^4.4 || ^5.0 || ^6.0", + "symfony/http-kernel": "~4.4 || ^5.0 || ^6.0", + "symfony/monolog-bridge": "~4.4 || ^5.0 || ^6.0" }, "require-dev": { - "symfony/console": "^5.4 || ^6.0 || ^7.0", - "symfony/phpunit-bridge": "^6.3 || ^7.0", - "symfony/yaml": "^5.4 || ^6.0 || ^7.0" + "symfony/console": "~4.4 || ^5.0 || ^6.0", + "symfony/phpunit-bridge": "^5.2 || ^6.0", + "symfony/yaml": "~4.4 || ^5.0 || ^6.0" }, "type": "symfony-bundle", "extra": { @@ -5166,7 +4745,7 @@ ], "support": { "issues": "https://github.com/symfony/monolog-bundle/issues", - "source": "https://github.com/symfony/monolog-bundle/tree/v3.10.0" + "source": "https://github.com/symfony/monolog-bundle/tree/v3.8.0" }, "funding": [ { @@ -5182,20 +4761,20 @@ "type": "tidelift" } ], - "time": "2023-11-06T17:08:13+00:00" + "time": "2022-05-10T14:24:36+00:00" }, { "name": "symfony/notifier", - "version": "v6.3.6", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/notifier.git", - "reference": "2e39d4a9a96e25d127ffe30171127f6ef73934df" + "reference": "a30aee1bf767835d7948138c1629e310cee26a8b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/notifier/zipball/2e39d4a9a96e25d127ffe30171127f6ef73934df", - "reference": "2e39d4a9a96e25d127ffe30171127f6ef73934df", + "url": "https://api.github.com/repos/symfony/notifier/zipball/a30aee1bf767835d7948138c1629e310cee26a8b", + "reference": "a30aee1bf767835d7948138c1629e310cee26a8b", "shasum": "" }, "require": { @@ -5244,7 +4823,7 @@ "notifier" ], "support": { - "source": "https://github.com/symfony/notifier/tree/v6.3.6" + "source": "https://github.com/symfony/notifier/tree/v6.3.0" }, "funding": [ { @@ -5260,7 +4839,7 @@ "type": "tidelift" } ], - "time": "2023-10-07T07:32:05+00:00" + "time": "2023-05-12T10:17:15+00:00" }, { "name": "symfony/options-resolver", @@ -5331,16 +4910,16 @@ }, { "name": "symfony/password-hasher", - "version": "v6.3.8", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/password-hasher.git", - "reference": "82161c4bebf77900372083ec6e484b5f055b0cba" + "reference": "278d3a49715073879f75e372ad80b8cfeca949d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/password-hasher/zipball/82161c4bebf77900372083ec6e484b5f055b0cba", - "reference": "82161c4bebf77900372083ec6e484b5f055b0cba", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/278d3a49715073879f75e372ad80b8cfeca949d3", + "reference": "278d3a49715073879f75e372ad80b8cfeca949d3", "shasum": "" }, "require": { @@ -5383,7 +4962,7 @@ "password" ], "support": { - "source": "https://github.com/symfony/password-hasher/tree/v6.3.8" + "source": "https://github.com/symfony/password-hasher/tree/v6.3.5" }, "funding": [ { @@ -5399,7 +4978,7 @@ "type": "tidelift" } ], - "time": "2023-11-06T10:58:05+00:00" + "time": "2023-09-25T17:05:16+00:00" }, { "name": "symfony/polyfill-intl-grapheme", @@ -6043,16 +5622,16 @@ }, { "name": "symfony/property-info", - "version": "v6.3.9", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "664ae7ad443d7cc591ff3e15496b954e4cefe729" + "reference": "7f3a03716112269741fe2a809f8f791a371d1fcd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/664ae7ad443d7cc591ff3e15496b954e4cefe729", - "reference": "664ae7ad443d7cc591ff3e15496b954e4cefe729", + "url": "https://api.github.com/repos/symfony/property-info/zipball/7f3a03716112269741fe2a809f8f791a371d1fcd", + "reference": "7f3a03716112269741fe2a809f8f791a371d1fcd", "shasum": "" }, "require": { @@ -6106,7 +5685,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v6.3.9" + "source": "https://github.com/symfony/property-info/tree/v6.3.0" }, "funding": [ { @@ -6122,20 +5701,20 @@ "type": "tidelift" } ], - "time": "2023-11-24T11:57:32+00:00" + "time": "2023-05-19T08:06:44+00:00" }, { "name": "symfony/routing", - "version": "v6.3.10", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "cb7404232d49dd11cc971b832fcbd49e7c22b049" + "reference": "82616e59acd3e3d9c916bba798326cb7796d7d31" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/cb7404232d49dd11cc971b832fcbd49e7c22b049", - "reference": "cb7404232d49dd11cc971b832fcbd49e7c22b049", + "url": "https://api.github.com/repos/symfony/routing/zipball/82616e59acd3e3d9c916bba798326cb7796d7d31", + "reference": "82616e59acd3e3d9c916bba798326cb7796d7d31", "shasum": "" }, "require": { @@ -6189,7 +5768,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.3.10" + "source": "https://github.com/symfony/routing/tree/v6.3.5" }, "funding": [ { @@ -6205,7 +5784,7 @@ "type": "tidelift" } ], - "time": "2023-12-01T14:25:58+00:00" + "time": "2023-09-20T16:05:51+00:00" }, { "name": "symfony/runtime", @@ -6288,16 +5867,16 @@ }, { "name": "symfony/security-bundle", - "version": "v6.3.8", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "57889ebb1ac3403d550c787c4fde127261abacb6" + "reference": "2df460eacceb11b9287cfafddda4d27023dd9001" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/57889ebb1ac3403d550c787c4fde127261abacb6", - "reference": "57889ebb1ac3403d550c787c4fde127261abacb6", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/2df460eacceb11b9287cfafddda4d27023dd9001", + "reference": "2df460eacceb11b9287cfafddda4d27023dd9001", "shasum": "" }, "require": { @@ -6314,8 +5893,7 @@ "symfony/password-hasher": "^5.4|^6.0", "symfony/security-core": "^6.2", "symfony/security-csrf": "^5.4|^6.0", - "symfony/security-http": "^6.3.6", - "symfony/service-contracts": "^2.5|^3" + "symfony/security-http": "^6.3.4" }, "conflict": { "symfony/browser-kit": "<5.4", @@ -6379,7 +5957,7 @@ "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-bundle/tree/v6.3.8" + "source": "https://github.com/symfony/security-bundle/tree/v6.3.5" }, "funding": [ { @@ -6395,20 +5973,20 @@ "type": "tidelift" } ], - "time": "2023-11-09T09:33:10+00:00" + "time": "2023-09-25T17:05:55+00:00" }, { "name": "symfony/security-core", - "version": "v6.3.7", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "7ceb30fed93f5ea40ccde3173d1f7712527c0d62" + "reference": "ec8f24dc1195f46483510892271d01a5202bba70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/7ceb30fed93f5ea40ccde3173d1f7712527c0d62", - "reference": "7ceb30fed93f5ea40ccde3173d1f7712527c0d62", + "url": "https://api.github.com/repos/symfony/security-core/zipball/ec8f24dc1195f46483510892271d01a5202bba70", + "reference": "ec8f24dc1195f46483510892271d01a5202bba70", "shasum": "" }, "require": { @@ -6464,7 +6042,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v6.3.7" + "source": "https://github.com/symfony/security-core/tree/v6.3.5" }, "funding": [ { @@ -6480,7 +6058,7 @@ "type": "tidelift" } ], - "time": "2023-10-28T23:11:45+00:00" + "time": "2023-09-10T17:47:23+00:00" }, { "name": "symfony/security-csrf", @@ -6552,16 +6130,16 @@ }, { "name": "symfony/security-http", - "version": "v6.3.8", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "19f7b5f5d20879a976d6d376e359bc975dfc6002" + "reference": "47058ea557a4c64ba86e9249651222842bd52e2a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/19f7b5f5d20879a976d6d376e359bc975dfc6002", - "reference": "19f7b5f5d20879a976d6d376e359bc975dfc6002", + "url": "https://api.github.com/repos/symfony/security-http/zipball/47058ea557a4c64ba86e9249651222842bd52e2a", + "reference": "47058ea557a4c64ba86e9249651222842bd52e2a", "shasum": "" }, "require": { @@ -6571,8 +6149,7 @@ "symfony/http-kernel": "^6.3", "symfony/polyfill-mbstring": "~1.0", "symfony/property-access": "^5.4|^6.0", - "symfony/security-core": "^6.3", - "symfony/service-contracts": "^2.5|^3" + "symfony/security-core": "^6.3" }, "conflict": { "symfony/clock": "<6.3", @@ -6620,7 +6197,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v6.3.8" + "source": "https://github.com/symfony/security-http/tree/v6.3.5" }, "funding": [ { @@ -6636,20 +6213,20 @@ "type": "tidelift" } ], - "time": "2023-11-09T21:20:12+00:00" + "time": "2023-08-30T06:30:46+00:00" }, { "name": "symfony/serializer", - "version": "v6.3.10", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "6eee0fd95f5caa1e77cab29552620ebf8e5b1a5f" + "reference": "855fc058c8bdbb69f53834f2fdb3876c9bc0ab7c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/6eee0fd95f5caa1e77cab29552620ebf8e5b1a5f", - "reference": "6eee0fd95f5caa1e77cab29552620ebf8e5b1a5f", + "url": "https://api.github.com/repos/symfony/serializer/zipball/855fc058c8bdbb69f53834f2fdb3876c9bc0ab7c", + "reference": "855fc058c8bdbb69f53834f2fdb3876c9bc0ab7c", "shasum": "" }, "require": { @@ -6714,7 +6291,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v6.3.10" + "source": "https://github.com/symfony/serializer/tree/v6.3.5" }, "funding": [ { @@ -6730,20 +6307,20 @@ "type": "tidelift" } ], - "time": "2023-12-01T14:25:58+00:00" + "time": "2023-09-29T16:18:53+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.4.0", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838" + "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/b3313c2dbffaf71c8de2934e2ea56ed2291a3838", - "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", + "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", "shasum": "" }, "require": { @@ -6796,7 +6373,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.3.0" }, "funding": [ { @@ -6812,7 +6389,7 @@ "type": "tidelift" } ], - "time": "2023-07-30T20:28:31+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/stopwatch", @@ -6878,16 +6455,16 @@ }, { "name": "symfony/string", - "version": "v6.3.9", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "56427887aeaf540e9bbd121ad6c43f14ad3ce136" + "reference": "13d76d0fb049051ed12a04bef4f9de8715bea339" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/56427887aeaf540e9bbd121ad6c43f14ad3ce136", - "reference": "56427887aeaf540e9bbd121ad6c43f14ad3ce136", + "url": "https://api.github.com/repos/symfony/string/zipball/13d76d0fb049051ed12a04bef4f9de8715bea339", + "reference": "13d76d0fb049051ed12a04bef4f9de8715bea339", "shasum": "" }, "require": { @@ -6944,7 +6521,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.3.9" + "source": "https://github.com/symfony/string/tree/v6.3.5" }, "funding": [ { @@ -6960,20 +6537,20 @@ "type": "tidelift" } ], - "time": "2023-11-28T20:40:29+00:00" + "time": "2023-09-18T10:38:32+00:00" }, { "name": "symfony/translation", - "version": "v6.3.7", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "30212e7c87dcb79c83f6362b00bde0e0b1213499" + "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/30212e7c87dcb79c83f6362b00bde0e0b1213499", - "reference": "30212e7c87dcb79c83f6362b00bde0e0b1213499", + "url": "https://api.github.com/repos/symfony/translation/zipball/3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd", + "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd", "shasum": "" }, "require": { @@ -7039,7 +6616,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.3.7" + "source": "https://github.com/symfony/translation/tree/v6.3.3" }, "funding": [ { @@ -7055,20 +6632,20 @@ "type": "tidelift" } ], - "time": "2023-10-28T23:11:45+00:00" + "time": "2023-07-31T07:08:24+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.4.0", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "dee0c6e5b4c07ce851b462530088e64b255ac9c5" + "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/dee0c6e5b4c07ce851b462530088e64b255ac9c5", - "reference": "dee0c6e5b4c07ce851b462530088e64b255ac9c5", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/02c24deb352fb0d79db5486c0c79905a85e37e86", + "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86", "shasum": "" }, "require": { @@ -7117,7 +6694,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.3.0" }, "funding": [ { @@ -7133,20 +6710,20 @@ "type": "tidelift" } ], - "time": "2023-07-25T15:08:44+00:00" + "time": "2023-05-30T17:17:10+00:00" }, { "name": "symfony/twig-bridge", - "version": "v6.3.8", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "c51407623959a626784ff302419026f56dc4e1ba" + "reference": "18f2cbe1d46ad43c4d3bd45e5e6279172068e064" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/c51407623959a626784ff302419026f56dc4e1ba", - "reference": "c51407623959a626784ff302419026f56dc4e1ba", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/18f2cbe1d46ad43c4d3bd45e5e6279172068e064", + "reference": "18f2cbe1d46ad43c4d3bd45e5e6279172068e064", "shasum": "" }, "require": { @@ -7225,7 +6802,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v6.3.8" + "source": "https://github.com/symfony/twig-bridge/tree/v6.3.5" }, "funding": [ { @@ -7241,20 +6818,20 @@ "type": "tidelift" } ], - "time": "2023-11-09T21:20:12+00:00" + "time": "2023-09-12T06:57:20+00:00" }, { "name": "symfony/twig-bundle", - "version": "v6.3.8", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "82429320fe931dd50825ec08140c54b3a315bf79" + "reference": "d0cd4d1675c0582d27c2e8bb0dc27c0303d8e3ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/82429320fe931dd50825ec08140c54b3a315bf79", - "reference": "82429320fe931dd50825ec08140c54b3a315bf79", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/d0cd4d1675c0582d27c2e8bb0dc27c0303d8e3ea", + "reference": "d0cd4d1675c0582d27c2e8bb0dc27c0303d8e3ea", "shasum": "" }, "require": { @@ -7310,7 +6887,7 @@ "description": "Provides a tight integration of Twig into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bundle/tree/v6.3.8" + "source": "https://github.com/symfony/twig-bundle/tree/v6.3.0" }, "funding": [ { @@ -7326,20 +6903,20 @@ "type": "tidelift" } ], - "time": "2023-10-31T08:07:48+00:00" + "time": "2023-05-06T09:53:41+00:00" }, { "name": "symfony/validator", - "version": "v6.3.9", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "c118889931856af47b0732b609f3ac2ddccd1da6" + "reference": "48e815ba3b5eb72e632588dbf7ea2dc4e608ee47" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/c118889931856af47b0732b609f3ac2ddccd1da6", - "reference": "c118889931856af47b0732b609f3ac2ddccd1da6", + "url": "https://api.github.com/repos/symfony/validator/zipball/48e815ba3b5eb72e632588dbf7ea2dc4e608ee47", + "reference": "48e815ba3b5eb72e632588dbf7ea2dc4e608ee47", "shasum": "" }, "require": { @@ -7406,7 +6983,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.3.9" + "source": "https://github.com/symfony/validator/tree/v6.3.5" }, "funding": [ { @@ -7422,20 +6999,20 @@ "type": "tidelift" } ], - "time": "2023-11-29T07:44:47+00:00" + "time": "2023-09-29T07:41:15+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.3.8", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "81acabba9046550e89634876ca64bfcd3c06aa0a" + "reference": "3d9999376be5fea8de47752837a3e1d1c5f69ef5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/81acabba9046550e89634876ca64bfcd3c06aa0a", - "reference": "81acabba9046550e89634876ca64bfcd3c06aa0a", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/3d9999376be5fea8de47752837a3e1d1c5f69ef5", + "reference": "3d9999376be5fea8de47752837a3e1d1c5f69ef5", "shasum": "" }, "require": { @@ -7490,7 +7067,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.3.8" + "source": "https://github.com/symfony/var-dumper/tree/v6.3.5" }, "funding": [ { @@ -7506,20 +7083,20 @@ "type": "tidelift" } ], - "time": "2023-11-08T10:42:36+00:00" + "time": "2023-09-12T10:11:35+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.3.10", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "7bfcf232a9c7e4acad00e96774e340eb86d10bf0" + "reference": "df1f8aac5751871b83d30bf3e2c355770f8f0691" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/7bfcf232a9c7e4acad00e96774e340eb86d10bf0", - "reference": "7bfcf232a9c7e4acad00e96774e340eb86d10bf0", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/df1f8aac5751871b83d30bf3e2c355770f8f0691", + "reference": "df1f8aac5751871b83d30bf3e2c355770f8f0691", "shasum": "" }, "require": { @@ -7564,7 +7141,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.3.10" + "source": "https://github.com/symfony/var-exporter/tree/v6.3.4" }, "funding": [ { @@ -7580,7 +7157,7 @@ "type": "tidelift" } ], - "time": "2023-11-29T16:00:50+00:00" + "time": "2023-08-16T18:14:47+00:00" }, { "name": "symfony/web-link", @@ -7667,16 +7244,16 @@ }, { "name": "symfony/yaml", - "version": "v6.3.8", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "3493af8a8dad7fa91c77fa473ba23ecd95334a92" + "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/3493af8a8dad7fa91c77fa473ba23ecd95334a92", - "reference": "3493af8a8dad7fa91c77fa473ba23ecd95334a92", + "url": "https://api.github.com/repos/symfony/yaml/zipball/e23292e8c07c85b971b44c1c4b87af52133e2add", + "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add", "shasum": "" }, "require": { @@ -7719,7 +7296,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.3.8" + "source": "https://github.com/symfony/yaml/tree/v6.3.3" }, "funding": [ { @@ -7735,31 +7312,31 @@ "type": "tidelift" } ], - "time": "2023-11-06T10:58:05+00:00" + "time": "2023-07-31T07:08:24+00:00" }, { "name": "twig/extra-bundle", - "version": "v3.8.0", + "version": "v3.7.1", "source": { "type": "git", "url": "https://github.com/twigphp/twig-extra-bundle.git", - "reference": "32807183753de0388c8e59f7ac2d13bb47311140" + "reference": "f10baafe6eb0ecd615d52d5cbfb713a39f68e8f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/32807183753de0388c8e59f7ac2d13bb47311140", - "reference": "32807183753de0388c8e59f7ac2d13bb47311140", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/f10baafe6eb0ecd615d52d5cbfb713a39f68e8f3", + "reference": "f10baafe6eb0ecd615d52d5cbfb713a39f68e8f3", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/framework-bundle": "^5.4|^6.0|^7.0", - "symfony/twig-bundle": "^5.4|^6.0|^7.0", - "twig/twig": "^3.0" + "symfony/framework-bundle": "^5.4|^6.0", + "symfony/twig-bundle": "^5.4|^6.0", + "twig/twig": "^2.7|^3.0" }, "require-dev": { "league/commonmark": "^1.0|^2.0", - "symfony/phpunit-bridge": "^6.4|^7.0", + "symfony/phpunit-bridge": "^5.4|^6.3", "twig/cache-extra": "^3.0", "twig/cssinliner-extra": "^2.12|^3.0", "twig/html-extra": "^2.12|^3.0", @@ -7797,7 +7374,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.8.0" + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.7.1" }, "funding": [ { @@ -7809,29 +7386,29 @@ "type": "tidelift" } ], - "time": "2023-11-21T14:02:01+00:00" + "time": "2023-07-29T15:34:56+00:00" }, { "name": "twig/intl-extra", - "version": "v3.8.0", + "version": "v3.7.1", "source": { "type": "git", "url": "https://github.com/twigphp/intl-extra.git", - "reference": "7b3db67c700735f473a265a97e1adaeba3e6ca0c" + "reference": "4f4fe572f635534649cc069e1dafe4a8ad63774d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/7b3db67c700735f473a265a97e1adaeba3e6ca0c", - "reference": "7b3db67c700735f473a265a97e1adaeba3e6ca0c", + "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/4f4fe572f635534649cc069e1dafe4a8ad63774d", + "reference": "4f4fe572f635534649cc069e1dafe4a8ad63774d", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/intl": "^5.4|^6.0|^7.0", - "twig/twig": "^3.0" + "php": ">=7.1.3", + "symfony/intl": "^5.4|^6.0", + "twig/twig": "^2.7|^3.0" }, "require-dev": { - "symfony/phpunit-bridge": "^6.4|^7.0" + "symfony/phpunit-bridge": "^5.4|^6.3" }, "type": "library", "autoload": { @@ -7861,7 +7438,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/intl-extra/tree/v3.8.0" + "source": "https://github.com/twigphp/intl-extra/tree/v3.7.1" }, "funding": [ { @@ -7873,98 +7450,30 @@ "type": "tidelift" } ], - "time": "2023-11-21T17:27:48+00:00" - }, - { - "name": "twig/markdown-extra", - "version": "v3.8.0", - "source": { - "type": "git", - "url": "https://github.com/twigphp/markdown-extra.git", - "reference": "b6e4954ab60030233df5d293886b5404558daac8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/twigphp/markdown-extra/zipball/b6e4954ab60030233df5d293886b5404558daac8", - "reference": "b6e4954ab60030233df5d293886b5404558daac8", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "twig/twig": "^3.0" - }, - "require-dev": { - "erusev/parsedown": "^1.7", - "league/commonmark": "^1.0|^2.0", - "league/html-to-markdown": "^4.8|^5.0", - "michelf/php-markdown": "^1.8|^2.0", - "symfony/phpunit-bridge": "^6.4|^7.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Twig\\Extra\\Markdown\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - } - ], - "description": "A Twig extension for Markdown", - "homepage": "https://twig.symfony.com", - "keywords": [ - "html", - "markdown", - "twig" - ], - "support": { - "source": "https://github.com/twigphp/markdown-extra/tree/v3.8.0" - }, - "funding": [ - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/twig/twig", - "type": "tidelift" - } - ], - "time": "2023-11-21T14:02:01+00:00" + "time": "2023-07-29T15:34:56+00:00" }, { "name": "twig/string-extra", - "version": "v3.8.0", + "version": "v3.7.1", "source": { "type": "git", "url": "https://github.com/twigphp/string-extra.git", - "reference": "b0c9037d96baff79abe368dc092a59b726517548" + "reference": "7230d630a25e91cd91a2bd8e2f0e872962507eab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/string-extra/zipball/b0c9037d96baff79abe368dc092a59b726517548", - "reference": "b0c9037d96baff79abe368dc092a59b726517548", + "url": "https://api.github.com/repos/twigphp/string-extra/zipball/7230d630a25e91cd91a2bd8e2f0e872962507eab", + "reference": "7230d630a25e91cd91a2bd8e2f0e872962507eab", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/string": "^5.4|^6.0|^7.0", + "symfony/string": "^5.4|^6.0", "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^3.0" + "twig/twig": "^2.7|^3.0" }, "require-dev": { - "symfony/phpunit-bridge": "^6.4|^7.0" + "symfony/phpunit-bridge": "^5.4|^6.3" }, "type": "library", "autoload": { @@ -7996,7 +7505,7 @@ "unicode" ], "support": { - "source": "https://github.com/twigphp/string-extra/tree/v3.8.0" + "source": "https://github.com/twigphp/string-extra/tree/v3.7.1" }, "funding": [ { @@ -8008,31 +7517,30 @@ "type": "tidelift" } ], - "time": "2023-11-21T14:02:01+00:00" + "time": "2023-07-29T15:34:56+00:00" }, { "name": "twig/twig", - "version": "v3.8.0", + "version": "v3.7.1", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d" + "reference": "a0ce373a0ca3bf6c64b9e3e2124aca502ba39554" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/9d15f0ac07f44dc4217883ec6ae02fd555c6f71d", - "reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/a0ce373a0ca3bf6c64b9e3e2124aca502ba39554", + "reference": "a0ce373a0ca3bf6c64b9e3e2124aca502ba39554", "shasum": "" }, "require": { "php": ">=7.2.5", "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-mbstring": "^1.3", - "symfony/polyfill-php80": "^1.22" + "symfony/polyfill-mbstring": "^1.3" }, "require-dev": { "psr/container": "^1.0|^2.0", - "symfony/phpunit-bridge": "^5.4.9|^6.3|^7.0" + "symfony/phpunit-bridge": "^5.4.9|^6.3" }, "type": "library", "autoload": { @@ -8068,7 +7576,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.8.0" + "source": "https://github.com/twigphp/Twig/tree/v3.7.1" }, "funding": [ { @@ -8080,7 +7588,7 @@ "type": "tidelift" } ], - "time": "2023-11-21T18:54:41+00:00" + "time": "2023-08-28T11:09:02+00:00" }, { "name": "webmozart/assert", @@ -8797,16 +8305,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.15", + "version": "9.6.13", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1" + "reference": "f3d767f7f9e191eab4189abe41ab37797e30b1be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/05017b80304e0eb3f31d90194a563fd53a6021f1", - "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f3d767f7f9e191eab4189abe41ab37797e30b1be", + "reference": "f3d767f7f9e191eab4189abe41ab37797e30b1be", "shasum": "" }, "require": { @@ -8880,7 +8388,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.15" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.13" }, "funding": [ { @@ -8896,7 +8404,7 @@ "type": "tidelift" } ], - "time": "2023-12-01T16:55:19+00:00" + "time": "2023-09-19T05:39:22+00:00" }, { "name": "sebastian/cli-parser", @@ -9864,16 +9372,16 @@ }, { "name": "symfony/browser-kit", - "version": "v6.3.8", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "e270297dbee59168274c2b535ab1bccd593e6ffe" + "reference": "ca4a988488f61ac18f8f845445eabdd36f89aa8d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/e270297dbee59168274c2b535ab1bccd593e6ffe", - "reference": "e270297dbee59168274c2b535ab1bccd593e6ffe", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/ca4a988488f61ac18f8f845445eabdd36f89aa8d", + "reference": "ca4a988488f61ac18f8f845445eabdd36f89aa8d", "shasum": "" }, "require": { @@ -9912,7 +9420,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v6.3.8" + "source": "https://github.com/symfony/browser-kit/tree/v6.3.2" }, "funding": [ { @@ -9928,7 +9436,7 @@ "type": "tidelift" } ], - "time": "2023-10-31T08:07:48+00:00" + "time": "2023-07-06T06:56:43+00:00" }, { "name": "symfony/css-selector", @@ -10071,16 +9579,16 @@ }, { "name": "symfony/dom-crawler", - "version": "v6.3.9", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "b7065c123ae977a008568a3d016a17a110df7a8e" + "reference": "3fdd2a3d5fdc363b2e8dbf817f9726a4d013cbd1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/b7065c123ae977a008568a3d016a17a110df7a8e", - "reference": "b7065c123ae977a008568a3d016a17a110df7a8e", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/3fdd2a3d5fdc363b2e8dbf817f9726a4d013cbd1", + "reference": "3fdd2a3d5fdc363b2e8dbf817f9726a4d013cbd1", "shasum": "" }, "require": { @@ -10118,7 +9626,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v6.3.9" + "source": "https://github.com/symfony/dom-crawler/tree/v6.3.4" }, "funding": [ { @@ -10134,20 +9642,20 @@ "type": "tidelift" } ], - "time": "2023-11-20T16:36:29+00:00" + "time": "2023-08-01T07:43:40+00:00" }, { "name": "symfony/maker-bundle", - "version": "v1.52.0", + "version": "v1.51.1", "source": { "type": "git", "url": "https://github.com/symfony/maker-bundle.git", - "reference": "112f9466c94a46ca33dc441eee59a12cd1790757" + "reference": "0890fd3cf1e2a5221f9b3c6ee1769c537aef683d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/112f9466c94a46ca33dc441eee59a12cd1790757", - "reference": "112f9466c94a46ca33dc441eee59a12cd1790757", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/0890fd3cf1e2a5221f9b3c6ee1769c537aef683d", + "reference": "0890fd3cf1e2a5221f9b3c6ee1769c537aef683d", "shasum": "" }, "require": { @@ -10210,7 +9718,7 @@ ], "support": { "issues": "https://github.com/symfony/maker-bundle/issues", - "source": "https://github.com/symfony/maker-bundle/tree/v1.52.0" + "source": "https://github.com/symfony/maker-bundle/tree/v1.51.1" }, "funding": [ { @@ -10226,20 +9734,20 @@ "type": "tidelift" } ], - "time": "2023-10-31T18:23:49+00:00" + "time": "2023-09-18T18:17:31+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v6.4.1", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "cca5373a41d45edbeaf38b7b67f376da2205ff95" + "reference": "e020e1efbd1b42cb670fcd7d19a25abbddba035d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/cca5373a41d45edbeaf38b7b67f376da2205ff95", - "reference": "cca5373a41d45edbeaf38b7b67f376da2205ff95", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/e020e1efbd1b42cb670fcd7d19a25abbddba035d", + "reference": "e020e1efbd1b42cb670fcd7d19a25abbddba035d", "shasum": "" }, "require": { @@ -10250,7 +9758,7 @@ }, "require-dev": { "symfony/deprecation-contracts": "^2.5|^3.0", - "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^5.4|^6.0", "symfony/polyfill-php81": "^1.27" }, "bin": [ @@ -10291,7 +9799,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.1" + "source": "https://github.com/symfony/phpunit-bridge/tree/v6.3.2" }, "funding": [ { @@ -10307,26 +9815,26 @@ "type": "tidelift" } ], - "time": "2023-12-01T09:25:07+00:00" + "time": "2023-07-12T16:00:22+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v6.3.8", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "4167c20cbdbb1152007fa731718c8c0362f28617" + "reference": "6101b5ab7857c373d237e121f9060c68b32e1373" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/4167c20cbdbb1152007fa731718c8c0362f28617", - "reference": "4167c20cbdbb1152007fa731718c8c0362f28617", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/6101b5ab7857c373d237e121f9060c68b32e1373", + "reference": "6101b5ab7857c373d237e121f9060c68b32e1373", "shasum": "" }, "require": { "php": ">=8.1", "symfony/config": "^5.4|^6.0", - "symfony/framework-bundle": "^5.4|^6.0,<6.4", + "symfony/framework-bundle": "^5.4|^6.0", "symfony/http-kernel": "^6.3", "symfony/routing": "^5.4|^6.0", "symfony/twig-bundle": "^5.4|^6.0", @@ -10372,7 +9880,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.3.8" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.3.2" }, "funding": [ { @@ -10388,20 +9896,20 @@ "type": "tidelift" } ], - "time": "2023-10-31T14:41:59+00:00" + "time": "2023-07-19T20:17:28+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.2", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96" + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96", - "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", "shasum": "" }, "require": { @@ -10430,7 +9938,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.2" + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" }, "funding": [ { @@ -10438,7 +9946,7 @@ "type": "github" } ], - "time": "2023-11-20T00:12:19+00:00" + "time": "2021-07-28T10:34:58+00:00" } ], "aliases": [], diff --git a/config/packages/translation.yaml b/config/packages/translation.yaml index 210ba05..525e63b 100644 --- a/config/packages/translation.yaml +++ b/config/packages/translation.yaml @@ -8,7 +8,7 @@ framework: crowdin: dsn: '%env(CROWDIN_DSN)%' domains: ['messages'] - locales: ['en','cs','nl','eo','fr', 'ja', 'ka','de','he','it','lv','pl','pt','ru','es','uk'] + locales: ['en','cs','nl','eo','fr','ka','de','he','it','lv','pl','pt','ru','es','uk'] # loco: # dsn: '%env(LOCO_DSN)%' # lokalise: diff --git a/config/services.yaml b/config/services.yaml index b515a42..110b2a6 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -11,7 +11,6 @@ parameters: app.trackers: '%env(APP_TRACKERS)%' app.crawlers: '%env(APP_CRAWLERS)%' app.locales: '%env(APP_LOCALES)%' - app.categories: '%env(APP_CATEGORIES)%' app.themes: '%env(APP_THEMES)%' app.locale: '%env(APP_LOCALE)%' app.theme: '%env(APP_THEME)%' diff --git a/migrations/Version20231103235504.php b/migrations/Version20231103235504.php deleted file mode 100644 index 1ec3213..0000000 --- a/migrations/Version20231103235504.php +++ /dev/null @@ -1,37 +0,0 @@ -addSql('CREATE TABLE torrent_categories (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, torrent_id INTEGER NOT NULL, user_id INTEGER NOT NULL, added INTEGER NOT NULL, value CLOB NOT NULL --(DC2Type:simple_array) - , approved BOOLEAN NOT NULL)'); - $this->addSql('ALTER TABLE user ADD COLUMN categories CLOB DEFAULT "other"'); - $this->addSql('ALTER TABLE torrent ADD COLUMN categories CLOB DEFAULT "other"'); - $this->addSql('UPDATE user SET categories = "movie,series,tv,animation,music,game,audiobook,podcast,book,archive,picture,software,other"'); - } - - public function down(Schema $schema): void - { - // this down() migration is auto-generated, please modify it to your needs - $this->addSql('DROP TABLE torrent_categories'); - $this->addSql('ALTER TABLE user DROP COLUMN categories'); - $this->addSql('ALTER TABLE torrent DROP COLUMN categories'); - } -} diff --git a/src/Controller/ActivityController.php b/src/Controller/ActivityController.php index c8bb152..5bdec65 100644 --- a/src/Controller/ActivityController.php +++ b/src/Controller/ActivityController.php @@ -1116,219 +1116,6 @@ class ActivityController extends AbstractController break; - /// Torrent Categories - case $activity::EVENT_TORRENT_CATEGORIES_ADD: - - // Init torrent - if (!$torrent = $torrentService->getTorrent($activity->getTorrentId())) - { - throw $this->createNotFoundException(); - } - - return $this->render( - 'default/activity/event/torrent/categories/add' . $extension, - [ - 'id' => $activity->getId(), - 'added' => $activity->getAdded(), - 'user' => - [ - 'id' => $activity->getUserId(), - 'identicon' => $userService->identicon( - $userService->getUser( - $activity->getUserId() - )->getAddress() - ) - ], - 'torrent' => - [ - 'id' => $torrent->getId(), - 'sensitive' => $torrent->isSensitive(), - 'approved' => $torrent->isApproved(), - 'status' => $torrent->isStatus(), - 'name' => $torrentService->readTorrentFileByTorrentId( - $torrent->getId() - )->getName(), - 'categories' => [ - 'id' => $activity->getData()['torrentCategoriesId'], - 'exist' => $torrentService->getTorrentCategories( - $activity->getData()['torrentCategoriesId'] // could be deleted by moderator, remove links - ) - ] - ], - 'session' => - [ - 'user' => - [ - 'id' => $user->getId(), - 'sensitive' => $user->isSensitive(), - 'moderator' => $user->isModerator(), - 'owner' => $user->getId() === $torrent->getUserId(), - ] - ] - ] - ); - - break; - - case $activity::EVENT_TORRENT_CATEGORIES_DELETE: - - // Init torrent - if (!$torrent = $torrentService->getTorrent($activity->getTorrentId())) - { - throw $this->createNotFoundException(); - } - - return $this->render( - 'default/activity/event/torrent/categories/delete' . $extension, - [ - 'id' => $activity->getId(), - 'added' => $activity->getAdded(), - 'user' => - [ - 'id' => $activity->getUserId(), - 'identicon' => $userService->identicon( - $userService->getUser( - $activity->getUserId() - )->getAddress() - ) - ], - 'torrent' => - [ - 'id' => $torrent->getId(), - 'sensitive' => $torrent->isSensitive(), - 'approved' => $torrent->isApproved(), - 'status' => $torrent->isStatus(), - 'name' => $torrentService->readTorrentFileByTorrentId( - $torrent->getId() - )->getName(), - 'categories' => [ - 'id' => $activity->getData()['torrentCategoriesId'], - 'exist' => $torrentService->getTorrentCategories( - $activity->getData()['torrentCategoriesId'] // could be deleted by moderator, remove links - ) - ] - ], - 'session' => - [ - 'user' => - [ - 'id' => $user->getId(), - 'sensitive' => $user->isSensitive(), - 'moderator' => $user->isModerator(), - 'owner' => $user->getId() === $torrent->getUserId(), - ] - ] - ] - ); - - break; - - case $activity::EVENT_TORRENT_CATEGORIES_APPROVE_ADD: - - // Init torrent - if (!$torrent = $torrentService->getTorrent($activity->getTorrentId())) - { - throw $this->createNotFoundException(); - } - - return $this->render( - 'default/activity/event/torrent/categories/approve/add' . $extension, - [ - 'id' => $activity->getId(), - 'added' => $activity->getAdded(), - 'user' => - [ - 'id' => $activity->getUserId(), - 'identicon' => $userService->identicon( - $userService->getUser( - $activity->getUserId() - )->getAddress() - ) - ], - 'torrent' => - [ - 'id' => $torrent->getId(), - 'sensitive' => $torrent->isSensitive(), - 'approved' => $torrent->isApproved(), - 'status' => $torrent->isStatus(), - 'name' => $torrentService->readTorrentFileByTorrentId( - $torrent->getId() - )->getName(), - 'categories' => [ - 'id' => $activity->getData()['torrentCategoriesId'], - 'exist' => $torrentService->getTorrentCategories( - $activity->getData()['torrentCategoriesId'] // could be deleted by moderator, remove links - ) - ] - ], - 'session' => - [ - 'user' => - [ - 'id' => $user->getId(), - 'sensitive' => $user->isSensitive(), - 'moderator' => $user->isModerator(), - 'owner' => $user->getId() === $torrent->getUserId(), - ] - ] - ] - ); - - break; - - case $activity::EVENT_TORRENT_CATEGORIES_APPROVE_DELETE: - - // Init torrent - if (!$torrent = $torrentService->getTorrent($activity->getTorrentId())) - { - throw $this->createNotFoundException(); - } - - return $this->render( - 'default/activity/event/torrent/categories/approve/delete' . $extension, - [ - 'id' => $activity->getId(), - 'added' => $activity->getAdded(), - 'user' => - [ - 'id' => $activity->getUserId(), - 'identicon' => $userService->identicon( - $userService->getUser( - $activity->getUserId() - )->getAddress() - ) - ], - 'torrent' => - [ - 'id' => $torrent->getId(), - 'sensitive' => $torrent->isSensitive(), - 'approved' => $torrent->isApproved(), - 'status' => $torrent->isStatus(), - 'name' => $torrentService->readTorrentFileByTorrentId( - $torrent->getId() - )->getName(), - 'categories' => [ - 'id' => $activity->getData()['torrentCategoriesId'], - 'exist' => $torrentService->getTorrentCategories( - $activity->getData()['torrentCategoriesId'] // could be deleted by moderator, remove links - ) - ] - ], - 'session' => - [ - 'user' => - [ - 'id' => $user->getId(), - 'sensitive' => $user->isSensitive(), - 'moderator' => $user->isModerator(), - 'owner' => $user->getId() === $torrent->getUserId(), - ] - ] - ] - ); - - break; - /// Torrent Sensitive case $activity::EVENT_TORRENT_SENSITIVE_ADD: diff --git a/src/Controller/SearchController.php b/src/Controller/SearchController.php index 8cb63bc..e515162 100644 --- a/src/Controller/SearchController.php +++ b/src/Controller/SearchController.php @@ -9,156 +9,20 @@ use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Request; use App\Service\UserService; -use App\Service\TorrentService; use App\Service\ActivityService; class SearchController extends AbstractController { public function module( - Request $request, - UserService $userService, - TorrentService $torrentService, - ActivityService $activityService + ?string $query, + ?string $type ): Response { - // Defaults - $locales = []; - $categories = []; - $sensitive = []; - - // Request - $query = $request->get('query') ? urldecode($request->get('query')) : ''; - $filter = $request->get('filter') ? true : false; - - // Extended search - if ($filter) - { - // Init user - $user = $this->initUser( - $request, - $userService, - $activityService - ); - - // Keywords - $keywords = explode(' ', $query); - - // Locales - foreach (explode('|', $this->getParameter('app.locales')) as $locale) - { - - if ($request->get('locales')) - { - $checked = in_array($locale, (array) $request->get('locales')); - } - - else - { - $checked = in_array($locale, $user->getLocales()); - } - - $locales[] = - [ - 'value' => $locale, - 'checked' => $checked, - 'total' => $torrentService->findTorrentsTotal( - 0, - $keywords, - [$locale], - $request->get('categories') ? $request->get('categories') : $user->getCategories(), - $request->get('sensitive') ? null : false, - !$user->isModerator() ? true : null, - !$user->isModerator() ? true : null, - ) - ]; - } - - // Categories - foreach (explode('|', $this->getParameter('app.categories')) as $category) - { - if ($request->get('categories')) - { - $checked = in_array($category, (array) $request->get('categories')); - } - - else - { - $checked = in_array($category, $user->getCategories()); - } - - $categories[] = - [ - 'value' => $category, - 'checked' => $checked, - 'total' => $torrentService->findTorrentsTotal( - 0, - $keywords, - $request->get('locales') ? $request->get('locales') : $user->getLocales(), - [$category], - $request->get('sensitive') ? null : false, - !$user->isModerator() ? true : null, - !$user->isModerator() ? true : null, - ) - ]; - } - - // Sensitive - $sensitive = - [ - 'checked' => $request->get('sensitive'), - 'total' => $torrentService->findTorrentsTotal( - 0, - $keywords, - $request->get('locales') ? $request->get('locales') : $user->getLocales(), - $request->get('categories') ? $request->get('categories') : $user->getCategories(), - true, - !$user->isModerator() ? true : null, - !$user->isModerator() ? true : null, - ) - ]; - } - return $this->render( 'default/search/module.html.twig', [ - 'query' => $query, - 'filter' => $filter, - 'sensitive' => $sensitive, - 'locales' => $locales, - 'categories' => $categories, + 'query' => $query ? urldecode($query) : '', ] ); } - - private function initUser( - Request $request, - UserService $userService, - ActivityService $activityService - ): ?\App\Entity\User - { - // Init user - if (!$user = $userService->findUserByAddress($request->getClientIp())) - { - $user = $userService->addUser( - $request->getClientIp(), - time(), - $this->getParameter('app.locale'), - explode('|', $this->getParameter('app.locales')), - $activityService->getEventCodes(), - $this->getParameter('app.theme'), - $this->getParameter('app.sensitive'), - $this->getParameter('app.yggdrasil'), - $this->getParameter('app.posters'), - $this->getParameter('app.approved') - ); - - // Add user join event - $activityService->addEventUserAdd( - $user->getId(), - time() - ); - } - - return $user; - } } \ No newline at end of file diff --git a/src/Controller/TorrentController.php b/src/Controller/TorrentController.php index 38205db..7511ff8 100644 --- a/src/Controller/TorrentController.php +++ b/src/Controller/TorrentController.php @@ -57,13 +57,10 @@ class TorrentController extends AbstractController } // Sensitive filter - // @TODO add blur effect or sensitive notice instead of 404 on direct request #37 - /* - if (!$user->isModerator() && $user->isSensitive() && $torrent->isSensitive()) + if (!$user->isModerator() && $user->isSensitive()) { throw $this->createNotFoundException(); } - */ // Access filter if (!$user->isModerator() && $user->getId() != $torrent->getUserId() && @@ -153,13 +150,12 @@ class TorrentController extends AbstractController 'peers' => (int) $torrent->getPeers(), 'leechers' => (int) $torrent->getLeechers(), ], - 'keywords' => $torrent->getKeywords(), - 'locales' => $torrent->getLocales(), - 'categories' => $torrent->getCategories(), - 'sensitive' => $torrent->isSensitive(), - 'approved' => $torrent->isApproved(), - 'status' => $torrent->isStatus(), - 'download' => + 'keywords' => $torrent->getKeywords(), + 'locales' => $torrent->getLocales(), + 'sensitive' => $torrent->isSensitive(), + 'approved' => $torrent->isApproved(), + 'status' => $torrent->isStatus(), + 'download' => [ 'file' => [ @@ -207,9 +203,7 @@ class TorrentController extends AbstractController 'private' => $file->isPrivate(), 'source' => $file->getSource(), 'comment' => $file->getComment(), - 'tree' => $file->getFileTree( - \Rhilip\Bencode\TorrentFile::FILETREE_SORT_NATURAL // #34 @TODO cyrillic - ), + 'tree' => $file->getFileTree(), //'trackers' => $file->getAnnounceList(), 'hash' => [ @@ -265,22 +259,20 @@ class TorrentController extends AbstractController // Get total torrents $total = $torrentService->findTorrentsTotal( - $request->get('filter') ? 0 : $user->getId(), + $user->getId(), $query, - $request->get('filter') ? (array) $request->get('locales') : $user->getLocales(), - $request->get('filter') ? (array) $request->get('categories') : $user->getCategories(), - $request->get('filter') ? ($request->get('sensitive') ? null : false) : ($user->isSensitive() ? false : null), + $user->getLocales(), + !$user->isModerator() && $user->isSensitive() ? false : null, !$user->isModerator() ? true : null, !$user->isModerator() ? true : null, ); $torrents = []; foreach ($torrentService->findTorrents( - $request->get('filter') ? 0 : $user->getId(), + $user->getId(), $query, - $request->get('filter') ? (array) $request->get('locales') : $user->getLocales(), - $request->get('filter') ? (array) $request->get('categories') : $user->getCategories(), - $request->get('filter') ? ($request->get('sensitive') ? null : false) : ($user->isSensitive() ? false : null), + $user->getLocales(), + !$user->isModerator() && $user->isSensitive() ? false : null, !$user->isModerator() ? true : null, !$user->isModerator() ? true : null, $this->getParameter('app.pagination'), @@ -456,8 +448,7 @@ class TorrentController extends AbstractController $user->getId(), [], $user->getLocales(), - $user->getCategories(), - $user->isSensitive() ? false : null, + !$user->isModerator() && $user->isSensitive() ? false : null, !$user->isModerator() ? true : null, !$user->isModerator() ? true : null, ); @@ -468,8 +459,7 @@ class TorrentController extends AbstractController $user->getId(), [], $user->getLocales(), - $user->getCategories(), - $user->isSensitive() ? false : null, + !$user->isModerator() && $user->isSensitive() ? false : null, !$user->isModerator() ? true : null, !$user->isModerator() ? true : null, $this->getParameter('app.pagination'), @@ -632,11 +622,10 @@ class TorrentController extends AbstractController // Get total torrents $total = $torrentService->findTorrentsTotal( - $request->get('filter') ? 0 : $user->getId(), + $user->getId(), $query, - $request->get('filter') ? (array) $request->get('locales') : $user->getLocales(), - $request->get('filter') ? (array) $request->get('categories') : $user->getCategories(), - $request->get('filter') ? ($request->get('sensitive') ? null : false) : ($user->isSensitive() ? false : null), + $user->getLocales(), + !$user->isModerator() && $user->isSensitive() ? false : null, !$user->isModerator() ? true : null, !$user->isModerator() ? true : null, ); @@ -644,11 +633,10 @@ class TorrentController extends AbstractController // Create torrents list $torrents = []; foreach ($torrentService->findTorrents( - $request->get('filter') ? 0 : $user->getId(), + $user->getId(), $query, - $request->get('filter') ? (array) $request->get('locales') : $user->getLocales(), - $request->get('filter') ? (array) $request->get('categories') : $user->getCategories(), - $request->get('filter') ? ($request->get('sensitive') ? null : false) : ($user->isSensitive() ? false : null), + $user->getLocales(), + !$user->isModerator() && $user->isSensitive() ? false : null, !$user->isModerator() ? true : null, !$user->isModerator() ? true : null, $this->getParameter('app.pagination'), @@ -712,69 +700,23 @@ class TorrentController extends AbstractController ); // Init request - $query = $request->get('query') ? - explode(' ', urldecode($request->get('query'))) : []; + $query = $request->get('query') ? explode(' ', urldecode($request->get('query'))) : []; + $page = $request->get('page') ? (int) $request->get('page') : 1; - $page = $request->get('page') ? - (int) $request->get('page') : 1; + $locales = $request->get('locales') ? explode('|', $request->get('locales')) : explode('|', $this->getParameter('app.locales')); + $sensitive = $request->get('sensitive') ? (bool) $request->get('sensitive') : null; - $filter = $request->get('filter') ? - true : false; - - if ($request->get('locales')) - { - $locales = explode('|', $request->get('locales')); - } - - else - { - $locales = $user->getLocales(); - } - - if ($request->get('categories')) - { - $categories = explode('|', $request->get('categories')); - } - - else - { - $categories = $user->getCategories(); - } - - switch ($request->get('sensitive')) - { - case 'true': - $sensitive = true; - break; - case 'false': - $sensitive = false; - break; - default: - $sensitive = $user->isSensitive() ? false : null; - } - - switch ($request->get('yggdrasil')) - { - case 'true': - $yggdrasil = true; - break; - case 'false': - $yggdrasil = false; - break; - default: - $yggdrasil = $user->isYggdrasil(); - } + $yggdrasil = $request->get('yggdrasil') ? (bool) $request->get('yggdrasil') : false; // Init trackers $trackers = explode('|', $this->getParameter('app.trackers')); // Get total torrents $total = $torrentService->findTorrentsTotal( - $filter ? 0 : $user->getId(), + $user->getId(), $query, $locales, - $categories, - $sensitive, + !$user->isModerator() ? $sensitive : null, !$user->isModerator() ? true : null, !$user->isModerator() ? true : null, ); @@ -782,11 +724,10 @@ class TorrentController extends AbstractController // Create torrents list $torrents = []; foreach ($torrentService->findTorrents( - $filter ? 0 : $user->getId(), + $user->getId(), $query, $locales, - $categories, - $sensitive, + !$user->isModerator() ? $sensitive : null, !$user->isModerator() ? true : null, !$user->isModerator() ? true : null, $this->getParameter('app.pagination'), @@ -802,15 +743,28 @@ class TorrentController extends AbstractController // Apply yggdrasil filters $file = $this->filterYggdrasil($file, $yggdrasil); + // Generate url + $url = []; + foreach ($locales as $locale) + { + $url[$locale] = $this->generateUrl( + 'torrent_info', + [ + '_locale' => $locale, + 'torrentId' => $torrent->getId(), + ], + false + ); + } + $torrents[] = [ 'torrent' => [ - 'id' => $torrent->getId(), - 'added' => $torrent->getAdded(), - 'locales' => $torrent->getLocales(), - 'categories' => $torrent->getCategories(), - 'sensitive' => $torrent->isSensitive(), + 'id' => $torrent->getId(), + 'added' => $torrent->getAdded(), + 'locales' => $torrent->getLocales(), + 'sensitive' => $torrent->isSensitive(), 'file' => [ 'name' => $file->getName(), @@ -832,7 +786,7 @@ class TorrentController extends AbstractController ], false ), - //'urn' => $file->getMagnetLink() + 'urn' => $file->getMagnetLink() ], 'scrape' => [ @@ -840,18 +794,23 @@ class TorrentController extends AbstractController 'peers' => (int) $torrent->getPeers(), 'leechers' => (int) $torrent->getLeechers(), ], - 'url' => $this->generateUrl( - 'torrent_info', - [ - '_locale' => $user->getLocale(), - 'torrentId' => $torrent->getId(), - ], - false - ) + 'url' => $url ], ]; } + $url = []; + foreach ($locales as $locale) + { + $url[$locale] = $this->generateUrl( + 'torrent_recent', + [ + '_locale' => $locale + ], + false + ); + } + return $this->json( [ 'version' => time(), @@ -859,13 +818,7 @@ class TorrentController extends AbstractController [ 'name' => $this->getParameter('app.name'), 'version' => $this->getParameter('app.version'), - 'url' => $this->generateUrl( - 'torrent_recent', - [ - '_locale' => $user->getLocale() - ], - false - ) + 'url' => $url ], 'torrents' => $torrents ] @@ -920,14 +873,6 @@ class TorrentController extends AbstractController 'value' => $request->get('locales') ? $request->get('locales') : [$request->get('_locale')], ] ], - 'categories' => - [ - 'error' => [], - 'attribute' => - [ - 'value' => $request->get('categories') ? $request->get('categories') : [], - ] - ], 'torrent' => [ 'error' => [], @@ -964,25 +909,6 @@ class TorrentController extends AbstractController $form['locales']['error'][] = $translator->trans('At least one locale required'); } - /// Categories - $categories = []; - if ($request->get('categories')) - { - foreach ((array) $request->get('categories') as $locale) - { - if (in_array($locale, explode('|', $this->getParameter('app.categories')))) - { - $categories[] = $locale; - } - } - } - - //// At least one valid locale required - if (!$categories) - { - $form['categories']['error'][] = $translator->trans('At least one category required'); - } - /// Torrent if ($file = $request->files->get('torrent')) { @@ -1011,7 +937,7 @@ class TorrentController extends AbstractController } // Request is valid - if (empty($form['torrent']['error']) && empty($form['locales']['error']) && empty($form['categories']['error'])) + if (empty($form['torrent']['error']) && empty($form['locales']['error'])) { // Save data $torrent = $torrentService->add( @@ -1030,7 +956,6 @@ class TorrentController extends AbstractController $user->getId(), time(), (array) $locales, - (array) $categories, (bool) $request->get('sensitive'), $user->isApproved(), $user->isStatus() @@ -1058,9 +983,8 @@ class TorrentController extends AbstractController return $this->render( 'default/torrent/submit.html.twig', [ - 'locales' => explode('|', $this->getParameter('app.locales')), - 'categories' => explode('|', $this->getParameter('app.categories')), - 'form' => $form, + 'locales' => explode('|', $this->getParameter('app.locales')), + 'form' => $form, ] ); } @@ -1580,363 +1504,6 @@ class TorrentController extends AbstractController ); } - // Torrent categories - #[Route( - '/{_locale}/torrent/{torrentId}/edit/categories/{torrentCategoriesId}', - name: 'torrent_categories_edit', - requirements: - [ - '_locale' => '%app.locales%', - 'torrentId' => '\d+', - 'torrentCategoriesId' => '\d+', - ], - defaults: - [ - 'torrentCategoriesId' => null, - ], - methods: - [ - 'GET', - 'POST' - ] - )] - public function editCategories( - Request $request, - TranslatorInterface $translator, - UserService $userService, - TorrentService $torrentService, - ActivityService $activityService - ): Response - { - // Init user - $user = $this->initUser( - $request, - $userService, - $activityService - ); - - if (!$user->isStatus()) - { - // @TODO - throw new \Exception( - $translator->trans('Access denied') - ); - } - - // Init torrent - if (!$torrent = $torrentService->getTorrent($request->get('torrentId'))) - { - throw $this->createNotFoundException(); - } - - // Init torrent categories - $torrentCategoriesCurrent = [ - 'userId' => null, - 'value' => [] - ]; - - // Get from edition version requested - if ($request->get('torrentCategoriesId')) - { - if ($torrentCategories = $torrentService->getTorrentCategories($request->get('torrentCategoriesId'))) - { - $torrentCategoriesCurrent['userId'] = $torrentCategories->getUserId(); - - foreach ($torrentCategories->getValue() as $value) - { - $torrentCategoriesCurrent['value'][] = $value; - } - } - - else - { - throw $this->createNotFoundException(); - } - } - - // Otherwise, get latest available - else - { - if ($torrentCategories = $torrentService->findLastTorrentCategoriesByTorrentId($torrent->getId())) - { - $torrentCategoriesCurrent['userId'] = $torrentCategories->getUserId(); - - foreach ($torrentCategories->getValue() as $value) - { - $torrentCategoriesCurrent['value'][] = $value; - } - - // Update active categories - $request->attributes->set('torrentCategoriesId', $torrentCategories->getId()); - } - } - - // Init edition history - $editions = []; - foreach ($torrentService->findTorrentCategoriesByTorrentId($torrent->getId()) as $torrentCategoriesEdition) - { - $editions[] = - [ - 'id' => $torrentCategoriesEdition->getId(), - 'added' => $torrentCategoriesEdition->getAdded(), - 'approved' => $torrentCategoriesEdition->isApproved(), - 'active' => $torrentCategoriesEdition->getId() == $request->get('torrentCategoriesId'), - 'user' => - [ - 'id' => $torrentCategoriesEdition->getUserId(), - 'identicon' => $userService->identicon( - $userService->getUser( - $torrentCategoriesEdition->getUserId() - )->getAddress() - ), - ] - ]; - } - - // Init form - $form = - [ - 'categories' => - [ - 'error' => [], - 'attribute' => - [ - 'value' => $request->get('categories') ? $request->get('categories') : $torrentCategoriesCurrent['value'], - ] - ] - ]; - - // Process request - if ($request->isMethod('post')) - { - /// Categories - $categories = []; - if ($request->get('categories')) - { - foreach ((array) $request->get('categories') as $category) - { - if (in_array($category, explode('|', $this->getParameter('app.categories')))) - { - $categories[] = $category; - } - } - } - - //// At least one valid category required - if (!$categories) - { - $form['categories']['error'][] = $translator->trans('At least one category required'); - } - - // Request is valid - if (empty($form['categories']['error'])) - { - // Save data - $torrentCategories = $torrentService->addTorrentCategories( - $torrent->getId(), - $user->getId(), - time(), - $categories, - $user->isApproved() - ); - - // Register activity event - $activityService->addEventTorrentCategoriesAdd( - $user->getId(), - $torrent->getId(), - time(), - $torrentCategories->getId() - ); - - // Redirect to info page - return $this->redirectToRoute( - 'torrent_info', - [ - '_locale' => $request->get('_locale'), - 'torrentId' => $torrent->getId() - ] - ); - } - } - - // Render form template - return $this->render( - 'default/torrent/edit/categories.html.twig', - [ - 'torrentId' => $torrent->getId(), - 'categories' => explode('|', $this->getParameter('app.categories')), - 'editions' => $editions, - 'form' => $form, - 'session' => - [ - 'moderator' => $user->isModerator(), - 'owner' => $torrentCategoriesCurrent['userId'] === $user->getId(), - ] - ] - ); - } - - #[Route( - '/{_locale}/torrent/{torrentId}/approve/categories/{torrentCategoriesId}', - name: 'torrent_categories_approve', - requirements: - [ - '_locale' => '%app.locales%', - 'torrentId' => '\d+', - 'torrentCategoriesId' => '\d+', - ], - methods: - [ - 'GET' - ] - )] - public function approveCategories( - Request $request, - TranslatorInterface $translator, - UserService $userService, - TorrentService $torrentService, - ActivityService $activityService - ): Response - { - // Init user - $user = $this->initUser( - $request, - $userService, - $activityService - ); - - // Init torrent - if (!$torrent = $torrentService->getTorrent($request->get('torrentId'))) - { - throw $this->createNotFoundException(); - } - - // Init torrent categories - if (!$torrentCategories = $torrentService->getTorrentCategories($request->get('torrentCategoriesId'))) - { - throw $this->createNotFoundException(); - } - - // Check permissions - if (!$user->isModerator()) - { - // @TODO - throw new \Exception( - $translator->trans('Access denied') - ); - } - - // Register activity event - if (!$torrentCategories->isApproved()) - { - $activityService->addEventTorrentCategoriesApproveAdd( - $user->getId(), - $torrent->getId(), - time(), - $torrentCategories->getId() - ); - } - - else - { - $activityService->addEventTorrentCategoriesApproveDelete( - $user->getId(), - $torrent->getId(), - time(), - $torrentCategories->getId() - ); - } - - // Update approved - $torrentService->toggleTorrentCategoriesApproved( - $torrentCategories->getId() - ); - - // Redirect back to form - return $this->redirectToRoute( - 'torrent_categories_edit', - [ - '_locale' => $request->get('_locale'), - 'torrentId' => $torrent->getId(), - 'torrentCategoriesId' => $torrentCategories->getId(), - ] - ); - } - - #[Route( - '/{_locale}/torrent/{torrentId}/delete/categories/{torrentCategoriesId}', - name: 'torrent_categories_delete', - requirements: - [ - '_locale' => '%app.locales%', - 'torrentId' => '\d+', - 'torrentCategoriesId' => '\d+', - ], - methods: - [ - 'GET' - ] - )] - public function deleteCategories( - Request $request, - TranslatorInterface $translator, - UserService $userService, - TorrentService $torrentService, - ActivityService $activityService - ): Response - { - // Init user - $user = $this->initUser( - $request, - $userService, - $activityService - ); - - // Init torrent - if (!$torrent = $torrentService->getTorrent($request->get('torrentId'))) - { - throw $this->createNotFoundException(); - } - - // Init torrent categories - if (!$torrentCategories = $torrentService->getTorrentCategories($request->get('torrentCategoriesId'))) - { - throw $this->createNotFoundException(); - } - - // Check permissions - if (!($user->isModerator() || $user->getId() === $torrentCategories->getUserId())) - { - // @TODO - throw new \Exception( - $translator->trans('Access denied') - ); - } - - // Add activity event - $activityService->addEventTorrentCategoriesDelete( - $user->getId(), - $torrent->getId(), - time(), - $torrentCategories->getId() - ); - - // Update approved - $torrentService->deleteTorrentCategories( - $torrentCategories->getId() - ); - - // Redirect back to form - return $this->redirectToRoute( - 'torrent_categories_edit', - [ - '_locale' => $request->get('_locale'), - 'torrentId' => $torrent->getId(), - 'torrentCategoriesId' => $torrentCategories->getId(), - ] - ); - } - // Torrent sensitive #[Route( '/{_locale}/torrent/{torrentId}/edit/sensitive/{torrentSensitiveId}', @@ -2849,10 +2416,14 @@ class TorrentController extends AbstractController $response->headers->set( 'Content-Disposition', sprintf( - 'attachment; filename="%s [%s#%s].torrent";', - $file->getName(), - $this->getParameter('app.name'), - $torrent->getId() + 'attachment; filename="%s#%s.%s.torrent";', + mb_strtolower( + $this->getParameter('app.name') + ), + $torrent->getId(), + mb_strtolower( + $file->getName() + ) ) ); @@ -2967,9 +2538,11 @@ class TorrentController extends AbstractController $response->headers->set( 'Content-Disposition', sprintf( - 'attachment; filename="%s [wanted#%s].torrent";', - $file->getName(), - $torrent->getId() + 'attachment; filename="wanted#%s.%s.torrent";', + $torrent->getId(), + mb_strtolower( + $file->getName() + ) ) ); @@ -3211,9 +2784,10 @@ class TorrentController extends AbstractController $torrentService->copyToFtpStorage( $torrent->getId(), sprintf( - '%s/torrents/wanted/all/wanted#%s.torrent', + '%s/torrents/wanted/all/wanted#%s.%s.torrent', $this->getParameter('app.torrent.wanted.ftp.folder'), - $torrent->getId() + $torrent->getId(), + $file->getName() ) ); @@ -3223,9 +2797,10 @@ class TorrentController extends AbstractController $torrentService->copyToFtpStorage( $torrent->getId(), sprintf( - '%s/torrents/wanted/sensitive/yes/wanted#%s.torrent', + '%s/torrents/wanted/sensitive/yes/wanted#%s.%s.torrent', $this->getParameter('app.torrent.wanted.ftp.folder'), - $torrent->getId() + $torrent->getId(), + $file->getName() ) ); } @@ -3235,9 +2810,10 @@ class TorrentController extends AbstractController $torrentService->copyToFtpStorage( $torrent->getId(), sprintf( - '%s/torrents/wanted/sensitive/no/wanted#%s.torrent', + '%s/torrents/wanted/sensitive/no/wanted#%s.%s.torrent', $this->getParameter('app.torrent.wanted.ftp.folder'), - $torrent->getId() + $torrent->getId(), + $file->getName() ) ); } @@ -3248,10 +2824,11 @@ class TorrentController extends AbstractController $torrentService->copyToFtpStorage( $torrent->getId(), sprintf( - '%s/torrents/wanted/locale/%s/wanted#%s.torrent', + '%s/torrents/wanted/locale/%s/wanted#%s.%s.torrent', $this->getParameter('app.torrent.wanted.ftp.folder'), $locale, - $torrent->getId() + $torrent->getId(), + $file->getName() ) ); } @@ -3264,26 +2841,29 @@ class TorrentController extends AbstractController /// All $torrentService->removeFromFtpStorage( sprintf( - '%s/torrents/wanted/all/wanted#%s.torrent', + '%s/torrents/wanted/all/wanted#%s.%s.torrent', $this->getParameter('app.torrent.wanted.ftp.folder'), - $torrent->getId() + $torrent->getId(), + $file->getName() ) ); /// Sensitive $torrentService->removeFromFtpStorage( sprintf( - '%s/torrents/wanted/sensitive/yes/wanted#%s.torrent', + '%s/torrents/wanted/sensitive/yes/wanted#%s.%s.torrent', $this->getParameter('app.torrent.wanted.ftp.folder'), - $torrent->getId() + $torrent->getId(), + $file->getName() ) ); $torrentService->removeFromFtpStorage( sprintf( - '%s/torrents/wanted/sensitive/no/wanted#%s.torrent', + '%s/torrents/wanted/sensitive/no/wanted#%s.%s.torrent', $this->getParameter('app.torrent.wanted.ftp.folder'), - $torrent->getId() + $torrent->getId(), + $file->getName() ) ); @@ -3292,10 +2872,11 @@ class TorrentController extends AbstractController { $torrentService->removeFromFtpStorage( sprintf( - '%s/torrents/wanted/locale/%s/wanted#%s.torrent', + '%s/torrents/wanted/locale/%s/wanted#%s.%s.torrent', $this->getParameter('app.torrent.wanted.ftp.folder'), $locale, - $torrent->getId() + $torrent->getId(), + $file->getName() ) ); } @@ -3359,15 +2940,14 @@ class TorrentController extends AbstractController 'locale' => $locale, 'locales' => $locales, 'torrents' => $torrentService->findTorrents( - 0, // no user session init, pass 0 - [], // without keywords filter - $locales, // all system locales - $categories, // all system locales - null, // all sensitive levels - true, // approved only - true, // enabled only - 1000, // @TODO limit - 0 // offset + 0, // no user session init, pass 0 + [], // without keywords filter + $locales, // all system locales + null, // all sensitive levels + true, // approved only + true, // enabled only + 1000, // @TODO limit + 0 // offset ) ], $response diff --git a/src/Controller/UserController.php b/src/Controller/UserController.php index 538af56..d6dea1f 100644 --- a/src/Controller/UserController.php +++ b/src/Controller/UserController.php @@ -85,23 +85,6 @@ class UserController extends AbstractController ); } - // Update categories - if ($request->get('categories')) - { - $categories = []; - foreach ((array) $request->get('categories') as $category) - { - if (in_array($category, explode('|', $this->getParameter('app.categories')))) - { - $categories[] = $category; - } - } - - $user->setCategories( - $categories - ); - } - // Update theme if (in_array($request->get('theme'), explode('|', $this->getParameter('app.themes')))) { @@ -156,21 +139,19 @@ class UserController extends AbstractController 'default/user/settings.html.twig', [ 'user' => [ - 'id' => $user->getId(), - 'sensitive' => $user->isSensitive(), - 'yggdrasil' => $user->isYggdrasil(), - 'posters' => $user->isPosters(), - 'locale' => $user->getLocale(), - 'locales' => $user->getLocales(), - 'categories' => $user->getCategories(), - 'events' => $user->getEvents(), - 'theme' => $user->getTheme(), - 'added' => $user->getAdded() + 'id' => $user->getId(), + 'sensitive' => $user->isSensitive(), + 'yggdrasil' => $user->isYggdrasil(), + 'posters' => $user->isPosters(), + 'locale' => $user->getLocale(), + 'locales' => $user->getLocales(), + 'events' => $user->getEvents(), + 'theme' => $user->getTheme(), + 'added' => $user->getAdded() ], - 'locales' => explode('|', $this->getParameter('app.locales')), - 'categories' => explode('|', $this->getParameter('app.categories')), - 'themes' => explode('|', $this->getParameter('app.themes')), - 'events' => $activityService->getEventsTree() + 'locales' => explode('|', $this->getParameter('app.locales')), + 'themes' => explode('|', $this->getParameter('app.themes')), + 'events' => $activityService->getEventsTree() ] ); } @@ -236,21 +217,19 @@ class UserController extends AbstractController 'moderator' => $user->isModerator() ], 'user' => [ - 'id' => $userTarget->getId(), - 'address' => $userTarget->getAddress(), - 'moderator' => $userTarget->isModerator(), - 'approved' => $userTarget->isApproved(), - 'status' => $userTarget->isStatus(), - 'posters' => $userTarget->isPosters(), - 'sensitive' => $userTarget->isSensitive(), - 'yggdrasil' => $userTarget->isYggdrasil(), - 'locale' => $userTarget->getLocale(), - 'locales' => $userTarget->getLocales(), - 'categories' => $user->getCategories(), - 'events' => $userTarget->getEvents(), - 'theme' => $userTarget->getTheme(), - 'added' => $userTarget->getAdded(), - 'identicon' => $userService->identicon( + 'id' => $userTarget->getId(), + 'address' => $userTarget->getAddress(), + 'moderator' => $userTarget->isModerator(), + 'approved' => $userTarget->isApproved(), + 'status' => $userTarget->isStatus(), + 'sensitive' => $userTarget->isSensitive(), + 'yggdrasil' => $userTarget->isYggdrasil(), + 'locale' => $userTarget->getLocale(), + 'locales' => $userTarget->getLocales(), + 'events' => $userTarget->getEvents(), + 'theme' => $userTarget->getTheme(), + 'added' => $userTarget->getAdded(), + 'identicon' => $userService->identicon( $userTarget->getAddress(), 48 ), @@ -318,12 +297,6 @@ class UserController extends AbstractController ); } - // Block crawler requests - if (in_array($request->getClientIp(), explode('|', $this->getParameter('app.crawlers')))) - { - throw $this->createNotFoundException(); - } - // Init target user if (!$userTarget = $userService->getUser($request->get('userId'))) { @@ -571,11 +544,6 @@ class UserController extends AbstractController true ); - $torrentService->setTorrentCategoriesApprovedByUserId( - $userTarget->getId(), - true - ); - $torrentService->setTorrentSensitivesApprovedByUserId( $userTarget->getId(), true diff --git a/src/Entity/Activity.php b/src/Entity/Activity.php index 1be1097..1102a03 100644 --- a/src/Entity/Activity.php +++ b/src/Entity/Activity.php @@ -20,57 +20,52 @@ class Activity // Event codes /// User - public const EVENT_USER_ADD = 1000; + public const EVENT_USER_ADD = 1000; - public const EVENT_USER_APPROVE_ADD = 1200; - public const EVENT_USER_APPROVE_DELETE = 1201; + public const EVENT_USER_APPROVE_ADD = 1200; + public const EVENT_USER_APPROVE_DELETE = 1201; - public const EVENT_USER_MODERATOR_ADD = 1300; - public const EVENT_USER_MODERATOR_DELETE = 1301; + public const EVENT_USER_MODERATOR_ADD = 1300; + public const EVENT_USER_MODERATOR_DELETE = 1301; - public const EVENT_USER_STATUS_ADD = 1400; - public const EVENT_USER_STATUS_DELETE = 1401; + public const EVENT_USER_STATUS_ADD = 1400; + public const EVENT_USER_STATUS_DELETE = 1401; - public const EVENT_USER_STAR_ADD = 1500; - public const EVENT_USER_STAR_DELETE = 1501; + public const EVENT_USER_STAR_ADD = 1500; + public const EVENT_USER_STAR_DELETE = 1501; /// Torrent - public const EVENT_TORRENT_ADD = 2000; + public const EVENT_TORRENT_ADD = 2000; - public const EVENT_TORRENT_APPROVE_ADD = 1100; - public const EVENT_TORRENT_APPROVE_DELETE = 1101; + public const EVENT_TORRENT_APPROVE_ADD = 1100; + public const EVENT_TORRENT_APPROVE_DELETE = 1101; - public const EVENT_TORRENT_LOCALES_ADD = 2200; - public const EVENT_TORRENT_LOCALES_DELETE = 2201; - public const EVENT_TORRENT_LOCALES_APPROVE_ADD = 2210; - public const EVENT_TORRENT_LOCALES_APPROVE_DELETE = 2211; + public const EVENT_TORRENT_LOCALES_ADD = 2200; + public const EVENT_TORRENT_LOCALES_DELETE = 2201; + public const EVENT_TORRENT_LOCALES_APPROVE_ADD = 2210; + public const EVENT_TORRENT_LOCALES_APPROVE_DELETE = 2211; - public const EVENT_TORRENT_SENSITIVE_ADD = 2300; - public const EVENT_TORRENT_SENSITIVE_DELETE = 2301; - public const EVENT_TORRENT_SENSITIVE_APPROVE_ADD = 2310; - public const EVENT_TORRENT_SENSITIVE_APPROVE_DELETE = 2311; + public const EVENT_TORRENT_SENSITIVE_ADD = 2300; + public const EVENT_TORRENT_SENSITIVE_DELETE = 2301; + public const EVENT_TORRENT_SENSITIVE_APPROVE_ADD = 2310; + public const EVENT_TORRENT_SENSITIVE_APPROVE_DELETE = 2311; - public const EVENT_TORRENT_STAR_ADD = 2400; - public const EVENT_TORRENT_STAR_DELETE = 2401; + public const EVENT_TORRENT_STAR_ADD = 2400; + public const EVENT_TORRENT_STAR_DELETE = 2401; - public const EVENT_TORRENT_DOWNLOAD_FILE_ADD = 2500; + public const EVENT_TORRENT_DOWNLOAD_FILE_ADD = 2500; - public const EVENT_TORRENT_DOWNLOAD_MAGNET_ADD = 2600; + public const EVENT_TORRENT_DOWNLOAD_MAGNET_ADD = 2600; - public const EVENT_TORRENT_WANTED_ADD = 2700; + public const EVENT_TORRENT_WANTED_ADD = 2700; - public const EVENT_TORRENT_STATUS_ADD = 1800; - public const EVENT_TORRENT_STATUS_DELETE = 1801; + public const EVENT_TORRENT_STATUS_ADD = 1800; + public const EVENT_TORRENT_STATUS_DELETE = 1801; - public const EVENT_TORRENT_POSTER_ADD = 2800; - public const EVENT_TORRENT_POSTER_DELETE = 2801; - public const EVENT_TORRENT_POSTER_APPROVE_ADD = 2810; - public const EVENT_TORRENT_POSTER_APPROVE_DELETE = 2811; - - public const EVENT_TORRENT_CATEGORIES_ADD = 2900; - public const EVENT_TORRENT_CATEGORIES_DELETE = 2901; - public const EVENT_TORRENT_CATEGORIES_APPROVE_ADD = 2910; - public const EVENT_TORRENT_CATEGORIES_APPROVE_DELETE = 2911; + public const EVENT_TORRENT_POSTER_ADD = 2800; + public const EVENT_TORRENT_POSTER_DELETE = 2801; + public const EVENT_TORRENT_POSTER_APPROVE_ADD = 2810; + public const EVENT_TORRENT_POSTER_APPROVE_DELETE = 2811; // ... diff --git a/src/Entity/Torrent.php b/src/Entity/Torrent.php index 515a62e..e29c448 100644 --- a/src/Entity/Torrent.php +++ b/src/Entity/Torrent.php @@ -54,9 +54,6 @@ class Torrent #[ORM\Column(nullable: true)] private ?int $torrentPosterId = null; - #[ORM\Column(type: Types::SIMPLE_ARRAY)] - private ?array $categories = null; - public function getId(): ?int { return $this->id; @@ -224,16 +221,4 @@ class Torrent return $this; } - - public function getCategories(): ?array - { - return $this->categories; - } - - public function setCategories(?array $categories): static - { - $this->categories = $categories; - - return $this; - } } diff --git a/src/Entity/TorrentCategories.php b/src/Entity/TorrentCategories.php deleted file mode 100644 index 9d73809..0000000 --- a/src/Entity/TorrentCategories.php +++ /dev/null @@ -1,103 +0,0 @@ -id; - } - - public function setId(string $id): static - { - $this->id = $id; - - return $this; - } - - public function getTorrentId(): ?int - { - return $this->torrentId; - } - - public function setTorrentId(int $torrentId): static - { - $this->torrentId = $torrentId; - - return $this; - } - - public function getUserId(): ?int - { - return $this->userId; - } - - public function setUserId(int $userId): static - { - $this->userId = $userId; - - return $this; - } - - public function getAdded(): ?int - { - return $this->added; - } - - public function setAdded(int $added): static - { - $this->added = $added; - - return $this; - } - - public function getValue(): array - { - return $this->value; - } - - public function setValue(array $value): static - { - $this->value = $value; - - return $this; - } - - public function isApproved(): ?bool - { - return $this->approved; - } - - public function setApproved(bool $approved): static - { - $this->approved = $approved; - - return $this; - } -} diff --git a/src/Entity/User.php b/src/Entity/User.php index 330a97a..9f346a7 100644 --- a/src/Entity/User.php +++ b/src/Entity/User.php @@ -50,9 +50,6 @@ class User #[ORM\Column] private ?bool $posters = null; - #[ORM\Column(type: Types::SIMPLE_ARRAY)] - private ?array $categories = null; - public function getId(): ?int { return $this->id; @@ -208,16 +205,4 @@ class User return $this; } - - public function getCategories(): ?array - { - return $this->categories; - } - - public function setCategories(?array $categories): static - { - $this->categories = $categories; - - return $this; - } } diff --git a/src/Repository/TorrentCategoriesRepository.php b/src/Repository/TorrentCategoriesRepository.php deleted file mode 100644 index 030f69c..0000000 --- a/src/Repository/TorrentCategoriesRepository.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * @method TorrentCategories|null find($id, $lockMode = null, $lockVersion = null) - * @method TorrentCategories|null findOneBy(array $criteria, array $orderBy = null) - * @method TorrentCategories[] findAll() - * @method TorrentCategories[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) - */ -class TorrentCategoriesRepository extends ServiceEntityRepository -{ - public function __construct(ManagerRegistry $registry) - { - parent::__construct($registry, TorrentCategories::class); - } -} diff --git a/src/Repository/TorrentRepository.php b/src/Repository/TorrentRepository.php index 536a72f..1ccd425 100644 --- a/src/Repository/TorrentRepository.php +++ b/src/Repository/TorrentRepository.php @@ -24,8 +24,7 @@ class TorrentRepository extends ServiceEntityRepository public function findTorrentsTotal( int $userId, array $keywords, - ?array $locales, - ?array $categories, + array $locales, ?bool $sensitive = null, ?bool $approved = null, ?bool $status = null, @@ -37,7 +36,6 @@ class TorrentRepository extends ServiceEntityRepository $userId, $keywords, $locales, - $categories, $sensitive, $approved, $status, @@ -49,8 +47,7 @@ class TorrentRepository extends ServiceEntityRepository public function findTorrents( int $userId, array $keywords, - ?array $locales, - ?array $categories, + array $locales, ?bool $sensitive = null, ?bool $approved = null, ?bool $status = null, @@ -62,7 +59,6 @@ class TorrentRepository extends ServiceEntityRepository $userId, $keywords, $locales, - $categories, $sensitive, $approved, $status, @@ -74,18 +70,17 @@ class TorrentRepository extends ServiceEntityRepository } private function getTorrentsQueryByFilter( - int $userId, - ?array $keywords, - ?array $locales, - ?array $categories, - ?bool $sensitive = null, - ?bool $approved = null, - ?bool $status = null + int $userId, + array $keywords, + array $locales, + ?bool $sensitive = null, + ?bool $approved = null, + ?bool $status = null ): \Doctrine\ORM\QueryBuilder { $query = $this->createQueryBuilder('t'); - if (is_array($keywords)) + if ($keywords) { foreach ($keywords as $i => $keyword) { @@ -110,7 +105,7 @@ class TorrentRepository extends ServiceEntityRepository } } - if (is_array($locales)) + if ($locales) { $orLocales = $query->expr()->orX(); @@ -126,22 +121,6 @@ class TorrentRepository extends ServiceEntityRepository $query->andWhere($orLocales); } - if (is_array($categories)) - { - $orCategories = $query->expr()->orX(); - - foreach ($categories as $i => $category) - { - $orCategories->add("t.categories LIKE :category{$i}"); - $orCategories->add("t.userId = :userId"); - - $query->setParameter(":category{$i}", "%{$category}%"); - $query->setParameter('userId', $userId); - } - - $query->andWhere($orCategories); - } - if (is_bool($sensitive)) { $orSensitive = $query->expr()->orX(); diff --git a/src/Service/ActivityService.php b/src/Service/ActivityService.php index dd785d1..75b37e8 100644 --- a/src/Service/ActivityService.php +++ b/src/Service/ActivityService.php @@ -51,11 +51,6 @@ class ActivityService Activity::EVENT_TORRENT_LOCALES_APPROVE_ADD, Activity::EVENT_TORRENT_LOCALES_APPROVE_DELETE, - Activity::EVENT_TORRENT_CATEGORIES_ADD, - Activity::EVENT_TORRENT_CATEGORIES_DELETE, - Activity::EVENT_TORRENT_CATEGORIES_APPROVE_ADD, - Activity::EVENT_TORRENT_CATEGORIES_APPROVE_DELETE, - Activity::EVENT_TORRENT_SENSITIVE_ADD, Activity::EVENT_TORRENT_SENSITIVE_DELETE, Activity::EVENT_TORRENT_SENSITIVE_APPROVE_ADD, @@ -282,55 +277,6 @@ class ActivityService break; - /// Torrent categories - case Activity::EVENT_TORRENT_CATEGORIES_ADD: - - $events - [ - $this->translatorInterface->trans('Torrent categories') - ] - [ - $this->translatorInterface->trans('Added') - ] = $code; - - break; - - case Activity::EVENT_TORRENT_CATEGORIES_DELETE: - - $events - [ - $this->translatorInterface->trans('Torrent categories') - ] - [ - $this->translatorInterface->trans('Deleted') - ] = $code; - - break; - - case Activity::EVENT_TORRENT_CATEGORIES_APPROVE_ADD: - - $events - [ - $this->translatorInterface->trans('Torrent categories') - ] - [ - $this->translatorInterface->trans('Approved') - ] = $code; - - break; - - case Activity::EVENT_TORRENT_CATEGORIES_APPROVE_DELETE: - - $events - [ - $this->translatorInterface->trans('Torrent categories') - ] - [ - $this->translatorInterface->trans('Disapproved') - ] = $code; - - break; - /// Torrent sensitive case Activity::EVENT_TORRENT_SENSITIVE_ADD: @@ -1357,155 +1303,6 @@ class ActivityService return $activity; } - /// Torrent categories - public function addEventTorrentCategoriesAdd( - int $userId, - int $torrentId, - int $added, - int $torrentCategoriesId, - ): ?Activity - { - $activity = new Activity(); - - $activity->setEvent( - Activity::EVENT_TORRENT_CATEGORIES_ADD - ); - - $activity->setUserId( - $userId - ); - - $activity->setTorrentId( - $torrentId - ); - - $activity->setAdded( - $added - ); - - $activity->setData( - [ - 'torrentCategoriesId' => $torrentCategoriesId - ] - ); - - $this->entityManagerInterface->persist($activity); - $this->entityManagerInterface->flush(); - - return $activity; - } - - public function addEventTorrentCategoriesDelete( - int $userId, - int $torrentId, - int $added, - int $torrentCategoriesId, - ): ?Activity - { - $activity = new Activity(); - - $activity->setEvent( - Activity::EVENT_TORRENT_CATEGORIES_DELETE - ); - - $activity->setUserId( - $userId - ); - - $activity->setTorrentId( - $torrentId - ); - - $activity->setAdded( - $added - ); - - $activity->setData( - [ - 'torrentCategoriesId' => $torrentCategoriesId - ] - ); - - $this->entityManagerInterface->persist($activity); - $this->entityManagerInterface->flush(); - - return $activity; - } - - public function addEventTorrentCategoriesApproveAdd( - int $userId, - int $torrentId, - int $added, - int $torrentCategoriesId, - ): ?Activity - { - $activity = new Activity(); - - $activity->setEvent( - Activity::EVENT_TORRENT_CATEGORIES_APPROVE_ADD - ); - - $activity->setUserId( - $userId - ); - - $activity->setTorrentId( - $torrentId - ); - - $activity->setAdded( - $added - ); - - $activity->setData( - [ - 'torrentCategoriesId' => $torrentCategoriesId - ] - ); - - $this->entityManagerInterface->persist($activity); - $this->entityManagerInterface->flush(); - - return $activity; - } - - public function addEventTorrentCategoriesApproveDelete( - int $userId, - int $torrentId, - int $added, - int $torrentCategoriesId, - ): ?Activity - { - $activity = new Activity(); - - $activity->setEvent( - Activity::EVENT_TORRENT_CATEGORIES_APPROVE_DELETE - ); - - $activity->setUserId( - $userId - ); - - $activity->setTorrentId( - $torrentId - ); - - $activity->setAdded( - $added - ); - - $activity->setData( - [ - 'torrentCategoriesId' => $torrentCategoriesId - ] - ); - - $this->entityManagerInterface->persist($activity); - $this->entityManagerInterface->flush(); - - return $activity; - } - /// Torrent sensitive public function addEventTorrentSensitiveAdd( int $userId, diff --git a/src/Service/TorrentService.php b/src/Service/TorrentService.php index c0c3d52..0a5b3bf 100644 --- a/src/Service/TorrentService.php +++ b/src/Service/TorrentService.php @@ -4,7 +4,6 @@ namespace App\Service; use App\Entity\Torrent; use App\Entity\TorrentLocales; -use App\Entity\TorrentCategories; use App\Entity\TorrentSensitive; use App\Entity\TorrentPoster; use App\Entity\TorrentStar; @@ -13,7 +12,6 @@ use App\Entity\TorrentDownloadMagnet; use App\Repository\TorrentRepository; use App\Repository\TorrentLocalesRepository; -use App\Repository\TorrentCategoriesRepository; use App\Repository\TorrentSensitiveRepository; use App\Repository\TorrentPosterRepository; use App\Repository\TorrentStarRepository; @@ -323,11 +321,6 @@ class TorrentService { $contributors = []; - foreach ($this->findTorrentCategoriesByTorrentId($torrent->getId()) as $torrentCategory) - { - $contributors[] = $torrentCategory->getUserId(); - } - foreach ($this->findTorrentLocalesByTorrentId($torrent->getId()) as $torrentLocale) { $contributors[] = $torrentLocale->getUserId(); @@ -338,11 +331,6 @@ class TorrentService $contributors[] = $torrentSensitive->getUserId(); } - foreach ($this->findTorrentPosterByTorrentId($torrent->getId()) as $torrentPoster) - { - $contributors[] = $torrentPoster->getUserId(); - } - $contributors[] = $torrent->getUserId(); return array_unique($contributors); @@ -393,7 +381,6 @@ class TorrentService int $userId, int $added, array $locales, - array $categories, bool $sensitive, bool $approved, bool $status @@ -416,7 +403,6 @@ class TorrentService $wordLengthMax ), $locales, - $categories, $sensitive, $approved, $status @@ -438,14 +424,6 @@ class TorrentService $approved ); - $this->addTorrentCategories( - $torrent->getId(), - $userId, - $added, - $categories, - $approved - ); - $this->addTorrentSensitive( $torrent->getId(), $userId, @@ -471,7 +449,6 @@ class TorrentService string $md5file, array $keywords, array $locales, - array $categories, bool $sensitive, bool $approved, bool $status @@ -484,7 +461,6 @@ class TorrentService $torrent->setMd5File($md5file); $torrent->setKeywords($keywords); $torrent->setLocales($locales); - $torrent->setCategories($categories); $torrent->setSensitive($sensitive); $torrent->setApproved($approved); $torrent->setStatus($status); @@ -558,8 +534,7 @@ class TorrentService public function findTorrents( int $userId, array $keywords, - ?array $locales, - ?array $categories, + array $locales, ?bool $sensitive, ?bool $approved, ?bool $status, @@ -573,7 +548,6 @@ class TorrentService $userId, $keywords, $locales, - $categories, $sensitive, $approved, $status, @@ -585,8 +559,7 @@ class TorrentService public function findTorrentsTotal( int $userId, array $keywords, - ?array $locales, - ?array $categories, + array $locales, ?bool $sensitive, ?bool $approved, ?bool $status @@ -598,7 +571,6 @@ class TorrentService $userId, $keywords, $locales, - $categories, $sensitive, $approved, $status @@ -670,32 +642,6 @@ class TorrentService } } - public function updateTorrentCategories( - int $torrentId - ): void - { - if ($torrent = $this->getTorrent($torrentId)) - { - if ($torrentCategories = $this->entityManagerInterface - ->getRepository(TorrentCategories::class) - ->findOneBy( - [ - 'torrentId' => $torrentId, - 'approved' => true, - ], - [ - 'id' => 'DESC' - ] - )) - { - $torrent->setCategories($torrentCategories->getValue()); - - $this->entityManagerInterface->persist($torrent); - $this->entityManagerInterface->flush(); - } - } - } - public function updateTorrentScraped( int $torrentId, int $time @@ -940,133 +886,6 @@ class TorrentService } } - // Torrent category - public function getTorrentCategories( - int $torrentCategoryId - ): ?TorrentCategories - { - return $this->entityManagerInterface - ->getRepository(TorrentCategories::class) - ->find($torrentCategoryId); - } - - public function findLastTorrentCategoriesByTorrentId( - int $torrentId - ): ?TorrentCategories - { - return $this->entityManagerInterface - ->getRepository(TorrentCategories::class) - ->findOneBy( - [ - 'torrentId' => $torrentId - ], - [ - 'id' => 'DESC' - ] - ); - } - - public function findTorrentCategoriesByTorrentId(int $torrentId): array - { - return $this->entityManagerInterface - ->getRepository(TorrentCategories::class) - ->findBy( - [ - 'torrentId' => $torrentId, - ], - [ - 'id' => 'DESC' - ] - ); - } - - public function toggleTorrentCategoriesApproved( - int $torrentCategoriesId - ): ?TorrentCategories - { - $torrentCategories = $this->getTorrentCategories($torrentCategoriesId); - - $torrentCategories->setApproved( - !$torrentCategories->isApproved() // toggle current value - ); - - $this->entityManagerInterface->persist($torrentCategories); - $this->entityManagerInterface->flush(); - - $this->updateTorrentCategories( - $torrentCategories->getTorrentId() - ); - - return $torrentCategories; - } - - public function deleteTorrentCategories( - int $torrentCategoriesId - ): ?TorrentCategories - { - $torrentCategories = $this->getTorrentCategories($torrentCategoriesId); - - $this->entityManagerInterface->remove($torrentCategories); - $this->entityManagerInterface->flush(); - - $this->updateTorrentCategories( - $torrentCategories->getTorrentId() - ); - - return $torrentCategories; - } - - public function addTorrentCategories( - int $torrentId, - int $userId, - int $added, - array $value, - bool $approved - ): ?TorrentCategories - { - $torrentCategories = new TorrentCategories(); - - $torrentCategories->setTorrentId($torrentId); - $torrentCategories->setUserId($userId); - $torrentCategories->setAdded($added); - $torrentCategories->setValue($value); - $torrentCategories->setApproved($approved); - - $this->entityManagerInterface->persist($torrentCategories); - $this->entityManagerInterface->flush(); - - $this->updateTorrentCategories( - $torrentId - ); - - return $torrentCategories; - } - - public function setTorrentCategoriesApprovedByUserId( - int $userId, - bool $value - ): void - { - foreach ($this->entityManagerInterface - ->getRepository(TorrentCategories::class) - ->findBy( - [ - 'userId' => $userId - ]) as $torrentCategories) - { - $torrentCategories->setApproved( - $value - ); - - $this->entityManagerInterface->persist($torrentCategories); - $this->entityManagerInterface->flush(); - - $this->updateTorrentCategories( - $torrentCategories->getTorrentId(), - ); - } - } - // Torrent sensitive public function getTorrentSensitive( int $torrentSensitiveId diff --git a/src/Twig/AppExtension.php b/src/Twig/AppExtension.php index 440ca6c..6cf5813 100644 --- a/src/Twig/AppExtension.php +++ b/src/Twig/AppExtension.php @@ -39,27 +39,13 @@ class AppExtension extends AbstractExtension 'formatAgo' ] ), - new TwigFilter( - 'url_to_markdown', - [ - $this, - 'urlToMarkdown' - ] - ), - new TwigFilter( - 'trans_category', - [ - $this, - 'transCategory' - ] - ), ]; } public function formatBytes( int $bytes, int $precision = 2 - ): string + ) : string { $size = [ $this->translator->trans('B'), @@ -80,7 +66,7 @@ class AppExtension extends AbstractExtension public function formatAgo( int $time, - ): string + ) : string { $diff = time() - $time; @@ -149,40 +135,6 @@ class AppExtension extends AbstractExtension } } - public function urlToMarkdown( - string $text - ): string - { - return preg_replace( - '~(https?://(?:www\.)?[^\(\s\)]+)~i', - '[$1]($1)', - $text - ); - } - - public function transCategory( - string $name - ): string - { - switch ($name) - { - case 'movie': return $this->translator->trans('movie'); - case 'series': return $this->translator->trans('series'); - case 'tv': return $this->translator->trans('tv'); - case 'animation': return $this->translator->trans('animation'); - case 'music': return $this->translator->trans('music'); - case 'game': return $this->translator->trans('game'); - case 'audiobook': return $this->translator->trans('audiobook'); - case 'podcast': return $this->translator->trans('podcast'); - case 'book': return $this->translator->trans('book'); - case 'archive': return $this->translator->trans('archive'); - case 'picture': return $this->translator->trans('picture'); - case 'software': return $this->translator->trans('software'); - case 'other': return $this->translator->trans('other'); - default: return $name; - } - } - private function plural(int $number, array $texts) { $cases = [2, 0, 1, 1, 1, 2]; diff --git a/templates/default/activity/event/torrent/categories/add.html.twig b/templates/default/activity/event/torrent/categories/add.html.twig deleted file mode 100644 index 1d081c7..0000000 --- a/templates/default/activity/event/torrent/categories/add.html.twig +++ /dev/null @@ -1,39 +0,0 @@ -