From 1310e2bc4cdf991dfbad66e6422394c1d873a3d2 Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 15 Feb 2024 16:47:40 +0100 Subject: [PATCH] comments entity, dto, factory --- composer.lock | 952 +++++++++++------------ config/packages/api_platform.yaml | 4 +- migrations/Version20240214151436.php | 51 -- migrations/Version20240215093709.php | 45 ++ src/ApiResource/CommentApi.php | 65 ++ src/ApiResource/ContactApi.php | 5 + src/ApiResource/PartnerApi.php | 1 - src/ApiResource/PostingApi.php | 28 +- src/ApiResource/UserApi.php | 9 +- src/DataFixtures/AppFixtures.php | 28 +- src/Entity/Comment.php | 95 +++ src/Entity/Contact.php | 2 +- src/Entity/Posting.php | 36 + src/Entity/User.php | 34 + src/Factory/CommentFactory.php | 71 ++ src/Factory/ContactFactory.php | 4 +- src/Factory/PartnerFactory.php | 1 + src/Factory/PostingFactory.php | 3 + src/Mapper/CommentApiToEntityMapper.php | 58 ++ src/Mapper/CommentEntityToApiMapper.php | 55 ++ src/Mapper/ContactEntityToApiMapper.php | 8 + src/Mapper/PostingApiToEntityMapper.php | 2 + src/Mapper/PostingEntityToApiMapper.php | 23 +- src/Mapper/UserEntityToApiMapper.php | 5 +- src/Repository/CommentRepository.php | 48 ++ src/Serializer/MediaObjectNormalizer.php | 66 -- 26 files changed, 1054 insertions(+), 645 deletions(-) delete mode 100644 migrations/Version20240214151436.php create mode 100644 migrations/Version20240215093709.php create mode 100644 src/ApiResource/CommentApi.php create mode 100644 src/Entity/Comment.php create mode 100644 src/Factory/CommentFactory.php create mode 100644 src/Mapper/CommentApiToEntityMapper.php create mode 100644 src/Mapper/CommentEntityToApiMapper.php create mode 100644 src/Repository/CommentRepository.php delete mode 100644 src/Serializer/MediaObjectNormalizer.php diff --git a/composer.lock b/composer.lock index 2b2d46b..9b12efe 100644 --- a/composer.lock +++ b/composer.lock @@ -8,16 +8,16 @@ "packages": [ { "name": "api-platform/core", - "version": "v3.2.11", + "version": "v3.2.13", "source": { "type": "git", "url": "https://github.com/api-platform/core.git", - "reference": "227c85871b00613f427ea985b54f4af24ce56a29" + "reference": "3b42bafcccd2b530ca7bb920c7a3b9dc249d76ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/core/zipball/227c85871b00613f427ea985b54f4af24ce56a29", - "reference": "227c85871b00613f427ea985b54f4af24ce56a29", + "url": "https://api.github.com/repos/api-platform/core/zipball/3b42bafcccd2b530ca7bb920c7a3b9dc249d76ec", + "reference": "3b42bafcccd2b530ca7bb920c7a3b9dc249d76ec", "shasum": "" }, "require": { @@ -54,6 +54,7 @@ "doctrine/dbal": "^3.4.0", "doctrine/doctrine-bundle": "^1.12 || ^2.0", "doctrine/mongodb-odm": "^2.2", + "doctrine/mongodb-odm-bundle": "^4.0 || ^5.0", "doctrine/orm": "^2.14", "elasticsearch/elasticsearch": "^7.11 || ^8.4", "friends-of-behat/mink-browserkit-driver": "^1.3.1", @@ -167,9 +168,9 @@ ], "support": { "issues": "https://github.com/api-platform/core/issues", - "source": "https://github.com/api-platform/core/tree/v3.2.11" + "source": "https://github.com/api-platform/core/tree/v3.2.13" }, - "time": "2024-01-12T13:17:28+00:00" + "time": "2024-02-01T14:41:52+00:00" }, { "name": "doctrine/cache", @@ -443,16 +444,16 @@ }, { "name": "doctrine/dbal", - "version": "3.7.2", + "version": "3.8.2", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "0ac3c270590e54910715e9a1a044cc368df282b2" + "reference": "a19a1d05ca211f41089dffcc387733a6875196cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/0ac3c270590e54910715e9a1a044cc368df282b2", - "reference": "0ac3c270590e54910715e9a1a044cc368df282b2", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/a19a1d05ca211f41089dffcc387733a6875196cb", + "reference": "a19a1d05ca211f41089dffcc387733a6875196cb", "shasum": "" }, "require": { @@ -468,14 +469,14 @@ "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.10.42", + "phpstan/phpstan": "1.10.57", "phpstan/phpstan-strict-rules": "^1.5", - "phpunit/phpunit": "9.6.13", + "phpunit/phpunit": "9.6.16", "psalm/plugin-phpunit": "0.18.4", "slevomat/coding-standard": "8.13.1", - "squizlabs/php_codesniffer": "3.7.2", - "symfony/cache": "^5.4|^6.0", - "symfony/console": "^4.4|^5.4|^6.0", + "squizlabs/php_codesniffer": "3.8.1", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/console": "^4.4|^5.4|^6.0|^7.0", "vimeo/psalm": "4.30.0" }, "suggest": { @@ -536,7 +537,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.8.2" }, "funding": [ { @@ -552,20 +553,20 @@ "type": "tidelift" } ], - "time": "2023-11-19T08:06:58+00:00" + "time": "2024-02-12T18:36:36+00:00" }, { "name": "doctrine/deprecations", - "version": "1.1.2", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931" + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931", - "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", "shasum": "" }, "require": { @@ -597,22 +598,22 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.2" + "source": "https://github.com/doctrine/deprecations/tree/1.1.3" }, - "time": "2023-09-27T20:04:15+00:00" + "time": "2024-01-30T19:34:25+00:00" }, { "name": "doctrine/doctrine-bundle", - "version": "2.11.1", + "version": "2.11.3", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "4089f1424b724786c062aea50aae5f773449b94b" + "reference": "492725310ae9a1b5b20d6ae09fb5ae6404616e68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/4089f1424b724786c062aea50aae5f773449b94b", - "reference": "4089f1424b724786c062aea50aae5f773449b94b", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/492725310ae9a1b5b20d6ae09fb5ae6404616e68", + "reference": "492725310ae9a1b5b20d6ae09fb5ae6404616e68", "shasum": "" }, "require": { @@ -633,18 +634,18 @@ }, "conflict": { "doctrine/annotations": ">=3.0", - "doctrine/orm": "<2.14 || >=4.0", + "doctrine/orm": "<2.17 || >=4.0", "twig/twig": "<1.34 || >=2.0 <2.4" }, "require-dev": { "doctrine/annotations": "^1 || ^2", "doctrine/coding-standard": "^12", "doctrine/deprecations": "^1.0", - "doctrine/orm": "^2.14 || ^3.0", + "doctrine/orm": "^2.17 || ^3.0", "friendsofphp/proxy-manager-lts": "^1.0", - "phpunit/phpunit": "^9.5.26 || ^10.0", + "phpunit/phpunit": "^9.5.26", "psalm/plugin-phpunit": "^0.18.4", - "psalm/plugin-symfony": "^4", + "psalm/plugin-symfony": "^5", "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", @@ -657,7 +658,7 @@ "symfony/web-profiler-bundle": "^5.4 || ^6.0 || ^7.0", "symfony/yaml": "^5.4 || ^6.0 || ^7.0", "twig/twig": "^1.34 || ^2.12 || ^3.0", - "vimeo/psalm": "^4.30" + "vimeo/psalm": "^5.15" }, "suggest": { "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", @@ -702,7 +703,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.11.3" }, "funding": [ { @@ -718,7 +719,7 @@ "type": "tidelift" } ], - "time": "2023-11-15T20:01:50+00:00" + "time": "2024-02-10T20:56:20+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", @@ -1065,28 +1066,27 @@ }, { "name": "doctrine/lexer", - "version": "2.1.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124" + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", - "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", "shasum": "" }, "require": { - "doctrine/deprecations": "^1.0", - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^9 || ^10", - "phpstan/phpstan": "^1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5", "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^4.11 || ^5.0" + "vimeo/psalm": "^5.21" }, "type": "library", "autoload": { @@ -1123,7 +1123,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/2.1.0" + "source": "https://github.com/doctrine/lexer/tree/3.0.1" }, "funding": [ { @@ -1139,7 +1139,7 @@ "type": "tidelift" } ], - "time": "2022-12-14T08:49:07+00:00" + "time": "2024-02-05T11:56:58+00:00" }, { "name": "doctrine/migrations", @@ -1245,16 +1245,16 @@ }, { "name": "doctrine/orm", - "version": "2.17.3", + "version": "2.18.0", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "398ab0547aaf90bdb352b560a94c24f44ff00670" + "reference": "f2176a9ce56cafdfd1624d54bfdb076819083d5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/398ab0547aaf90bdb352b560a94c24f44ff00670", - "reference": "398ab0547aaf90bdb352b560a94c24f44ff00670", + "url": "https://api.github.com/repos/doctrine/orm/zipball/f2176a9ce56cafdfd1624d54bfdb076819083d5b", + "reference": "f2176a9ce56cafdfd1624d54bfdb076819083d5b", "shasum": "" }, "require": { @@ -1267,7 +1267,7 @@ "doctrine/event-manager": "^1.2 || ^2", "doctrine/inflector": "^1.4 || ^2.0", "doctrine/instantiator": "^1.3 || ^2", - "doctrine/lexer": "^2", + "doctrine/lexer": "^2 || ^3", "doctrine/persistence": "^2.4 || ^3", "ext-ctype": "*", "php": "^7.1 || ^8.0", @@ -1303,7 +1303,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\ORM\\": "lib/Doctrine/ORM" + "Doctrine\\ORM\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1340,9 +1340,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.17.3" + "source": "https://github.com/doctrine/orm/tree/2.18.0" }, - "time": "2024-01-16T21:32:04+00:00" + "time": "2024-01-31T15:53:12+00:00" }, { "name": "doctrine/persistence", @@ -2634,16 +2634,16 @@ }, { "name": "symfony/asset", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/asset.git", - "reference": "82cd3961bc7fc1b3c3f85e8f2b9a287a1dfd6f2f" + "reference": "3ae493792fc17cc31b84e231f30f2d154575f171" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/82cd3961bc7fc1b3c3f85e8f2b9a287a1dfd6f2f", - "reference": "82cd3961bc7fc1b3c3f85e8f2b9a287a1dfd6f2f", + "url": "https://api.github.com/repos/symfony/asset/zipball/3ae493792fc17cc31b84e231f30f2d154575f171", + "reference": "3ae493792fc17cc31b84e231f30f2d154575f171", "shasum": "" }, "require": { @@ -2683,7 +2683,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/v7.0.0" + "source": "https://github.com/symfony/asset/tree/v7.0.3" }, "funding": [ { @@ -2699,20 +2699,20 @@ "type": "tidelift" } ], - "time": "2023-10-31T17:59:56+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/cache", - "version": "v7.0.2", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "378e30a864c868d635353f103a5a5e7569f029ec" + "reference": "2207eceb2433d74df81232d97439bf508cb9e050" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/378e30a864c868d635353f103a5a5e7569f029ec", - "reference": "378e30a864c868d635353f103a5a5e7569f029ec", + "url": "https://api.github.com/repos/symfony/cache/zipball/2207eceb2433d74df81232d97439bf508cb9e050", + "reference": "2207eceb2433d74df81232d97439bf508cb9e050", "shasum": "" }, "require": { @@ -2779,7 +2779,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v7.0.2" + "source": "https://github.com/symfony/cache/tree/v7.0.3" }, "funding": [ { @@ -2795,7 +2795,7 @@ "type": "tidelift" } ], - "time": "2023-12-29T15:37:40+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/cache-contracts", @@ -2875,16 +2875,16 @@ }, { "name": "symfony/clock", - "version": "v7.0.2", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/clock.git", - "reference": "67c5ae749ebabe7d8c84c3cab2544331eee7d2cf" + "reference": "1c680e565dc0044d8ed3baeb57835fcacd9c6aed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/clock/zipball/67c5ae749ebabe7d8c84c3cab2544331eee7d2cf", - "reference": "67c5ae749ebabe7d8c84c3cab2544331eee7d2cf", + "url": "https://api.github.com/repos/symfony/clock/zipball/1c680e565dc0044d8ed3baeb57835fcacd9c6aed", + "reference": "1c680e565dc0044d8ed3baeb57835fcacd9c6aed", "shasum": "" }, "require": { @@ -2929,7 +2929,7 @@ "time" ], "support": { - "source": "https://github.com/symfony/clock/tree/v7.0.2" + "source": "https://github.com/symfony/clock/tree/v7.0.3" }, "funding": [ { @@ -2945,20 +2945,20 @@ "type": "tidelift" } ], - "time": "2023-12-27T08:42:13+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/config", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "8789646600f4e7e451dde9e1dc81cfa429f3857a" + "reference": "86a5027869ca3d6bdecae6d5d6c2f77c8f2c1d16" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/8789646600f4e7e451dde9e1dc81cfa429f3857a", - "reference": "8789646600f4e7e451dde9e1dc81cfa429f3857a", + "url": "https://api.github.com/repos/symfony/config/zipball/86a5027869ca3d6bdecae6d5d6c2f77c8f2c1d16", + "reference": "86a5027869ca3d6bdecae6d5d6c2f77c8f2c1d16", "shasum": "" }, "require": { @@ -3004,7 +3004,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/v7.0.0" + "source": "https://github.com/symfony/config/tree/v7.0.3" }, "funding": [ { @@ -3020,20 +3020,20 @@ "type": "tidelift" } ], - "time": "2023-11-09T08:30:23+00:00" + "time": "2024-01-30T08:34:29+00:00" }, { "name": "symfony/console", - "version": "v7.0.2", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "f8587c4cdc5acad67af71c37db34ef03af91e59c" + "reference": "c5010d50f1ee4b25cfa0201d9915cf1b14071456" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/f8587c4cdc5acad67af71c37db34ef03af91e59c", - "reference": "f8587c4cdc5acad67af71c37db34ef03af91e59c", + "url": "https://api.github.com/repos/symfony/console/zipball/c5010d50f1ee4b25cfa0201d9915cf1b14071456", + "reference": "c5010d50f1ee4b25cfa0201d9915cf1b14071456", "shasum": "" }, "require": { @@ -3097,7 +3097,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.0.2" + "source": "https://github.com/symfony/console/tree/v7.0.3" }, "funding": [ { @@ -3113,20 +3113,20 @@ "type": "tidelift" } ], - "time": "2023-12-10T16:54:46+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/dependency-injection", - "version": "v7.0.2", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "bd25ef7c937b9da12510bdc4f1c66728f19620e3" + "reference": "e915c6684b8e3ae90a4441f6823ebbb40edf0b92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/bd25ef7c937b9da12510bdc4f1c66728f19620e3", - "reference": "bd25ef7c937b9da12510bdc4f1c66728f19620e3", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/e915c6684b8e3ae90a4441f6823ebbb40edf0b92", + "reference": "e915c6684b8e3ae90a4441f6823ebbb40edf0b92", "shasum": "" }, "require": { @@ -3177,7 +3177,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/v7.0.2" + "source": "https://github.com/symfony/dependency-injection/tree/v7.0.3" }, "funding": [ { @@ -3193,7 +3193,7 @@ "type": "tidelift" } ], - "time": "2023-12-28T19:18:20+00:00" + "time": "2024-01-30T08:34:29+00:00" }, { "name": "symfony/deprecation-contracts", @@ -3264,16 +3264,16 @@ }, { "name": "symfony/doctrine-bridge", - "version": "v7.0.2", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "9c0ce8ff41c25fbee07cd3235e9d6f0d6505b8b3" + "reference": "fbea8d2b5f5c6cf0a2aab882571a047ee9238cb4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/9c0ce8ff41c25fbee07cd3235e9d6f0d6505b8b3", - "reference": "9c0ce8ff41c25fbee07cd3235e9d6f0d6505b8b3", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/fbea8d2b5f5c6cf0a2aab882571a047ee9238cb4", + "reference": "fbea8d2b5f5c6cf0a2aab882571a047ee9238cb4", "shasum": "" }, "require": { @@ -3350,7 +3350,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v7.0.2" + "source": "https://github.com/symfony/doctrine-bridge/tree/v7.0.3" }, "funding": [ { @@ -3366,20 +3366,20 @@ "type": "tidelift" } ], - "time": "2023-12-27T08:42:13+00:00" + "time": "2024-01-30T13:55:15+00:00" }, { "name": "symfony/doctrine-messenger", - "version": "v7.0.2", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-messenger.git", - "reference": "edd6c474878bc6a6ee3b79c3210771357f6afad3" + "reference": "2e31535147212328570717d091e082326963d40e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/edd6c474878bc6a6ee3b79c3210771357f6afad3", - "reference": "edd6c474878bc6a6ee3b79c3210771357f6afad3", + "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/2e31535147212328570717d091e082326963d40e", + "reference": "2e31535147212328570717d091e082326963d40e", "shasum": "" }, "require": { @@ -3422,7 +3422,7 @@ "description": "Symfony Doctrine Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-messenger/tree/v7.0.2" + "source": "https://github.com/symfony/doctrine-messenger/tree/v7.0.3" }, "funding": [ { @@ -3438,20 +3438,20 @@ "type": "tidelift" } ], - "time": "2023-12-27T08:42:13+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/dotenv", - "version": "v7.0.2", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "1e3e123fd1887fb2097ad38205a9a866a52d4dcc" + "reference": "4c69bf8ff41bd959050033eccb28ebe4b5c9b012" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/1e3e123fd1887fb2097ad38205a9a866a52d4dcc", - "reference": "1e3e123fd1887fb2097ad38205a9a866a52d4dcc", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/4c69bf8ff41bd959050033eccb28ebe4b5c9b012", + "reference": "4c69bf8ff41bd959050033eccb28ebe4b5c9b012", "shasum": "" }, "require": { @@ -3496,7 +3496,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v7.0.2" + "source": "https://github.com/symfony/dotenv/tree/v7.0.3" }, "funding": [ { @@ -3512,20 +3512,20 @@ "type": "tidelift" } ], - "time": "2023-12-28T19:18:20+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/error-handler", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "80b1258be1b84c12a345d0ec3881bbf2e5270cc2" + "reference": "9441608b79577176b6d8e44012cc3d20b4b45242" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/80b1258be1b84c12a345d0ec3881bbf2e5270cc2", - "reference": "80b1258be1b84c12a345d0ec3881bbf2e5270cc2", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/9441608b79577176b6d8e44012cc3d20b4b45242", + "reference": "9441608b79577176b6d8e44012cc3d20b4b45242", "shasum": "" }, "require": { @@ -3571,7 +3571,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.0.0" + "source": "https://github.com/symfony/error-handler/tree/v7.0.3" }, "funding": [ { @@ -3587,20 +3587,20 @@ "type": "tidelift" } ], - "time": "2023-10-20T16:35:23+00:00" + "time": "2024-01-29T15:41:16+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.0.2", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "098b62ae81fdd6cbf941f355059f617db28f4f9a" + "reference": "834c28d533dd0636f910909d01b9ff45cc094b5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/098b62ae81fdd6cbf941f355059f617db28f4f9a", - "reference": "098b62ae81fdd6cbf941f355059f617db28f4f9a", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/834c28d533dd0636f910909d01b9ff45cc094b5e", + "reference": "834c28d533dd0636f910909d01b9ff45cc094b5e", "shasum": "" }, "require": { @@ -3651,7 +3651,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.0.2" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.0.3" }, "funding": [ { @@ -3667,7 +3667,7 @@ "type": "tidelift" } ], - "time": "2023-12-27T22:24:19+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -3747,16 +3747,16 @@ }, { "name": "symfony/expression-language", - "version": "v7.0.2", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "d88bfcc37230f6ead9c6f713dc977daf26ddffce" + "reference": "0877c599cb260c9614f9229c0a2090d6919fd621" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/d88bfcc37230f6ead9c6f713dc977daf26ddffce", - "reference": "d88bfcc37230f6ead9c6f713dc977daf26ddffce", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/0877c599cb260c9614f9229c0a2090d6919fd621", + "reference": "0877c599cb260c9614f9229c0a2090d6919fd621", "shasum": "" }, "require": { @@ -3790,7 +3790,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v7.0.2" + "source": "https://github.com/symfony/expression-language/tree/v7.0.3" }, "funding": [ { @@ -3806,20 +3806,20 @@ "type": "tidelift" } ], - "time": "2023-12-10T16:54:46+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/filesystem", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "7da8ea2362a283771478c5f7729cfcb43a76b8b7" + "reference": "2890e3a825bc0c0558526c04499c13f83e1b6b12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/7da8ea2362a283771478c5f7729cfcb43a76b8b7", - "reference": "7da8ea2362a283771478c5f7729cfcb43a76b8b7", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/2890e3a825bc0c0558526c04499c13f83e1b6b12", + "reference": "2890e3a825bc0c0558526c04499c13f83e1b6b12", "shasum": "" }, "require": { @@ -3853,7 +3853,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.0.0" + "source": "https://github.com/symfony/filesystem/tree/v7.0.3" }, "funding": [ { @@ -3869,7 +3869,7 @@ "type": "tidelift" } ], - "time": "2023-07-27T06:33:22+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/finder", @@ -3937,16 +3937,16 @@ }, { "name": "symfony/flex", - "version": "v2.4.3", + "version": "v2.4.4", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "6b44ac75c7f07f48159ec36c2d21ef8cf48a21b1" + "reference": "bec213c39511eda66663baa2ee7440c65f89c695" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/6b44ac75c7f07f48159ec36c2d21ef8cf48a21b1", - "reference": "6b44ac75c7f07f48159ec36c2d21ef8cf48a21b1", + "url": "https://api.github.com/repos/symfony/flex/zipball/bec213c39511eda66663baa2ee7440c65f89c695", + "reference": "bec213c39511eda66663baa2ee7440c65f89c695", "shasum": "" }, "require": { @@ -3982,7 +3982,7 @@ "description": "Composer plugin for Symfony", "support": { "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v2.4.3" + "source": "https://github.com/symfony/flex/tree/v2.4.4" }, "funding": [ { @@ -3998,20 +3998,20 @@ "type": "tidelift" } ], - "time": "2024-01-02T11:08:32+00:00" + "time": "2024-02-05T18:04:53+00:00" }, { "name": "symfony/form", - "version": "v7.0.1", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "c5d23da3425eadf23c3335a0ed6f2ef3a135e8c9" + "reference": "76bfa17bf31d86bb00938725f276a84e697491b9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/c5d23da3425eadf23c3335a0ed6f2ef3a135e8c9", - "reference": "c5d23da3425eadf23c3335a0ed6f2ef3a135e8c9", + "url": "https://api.github.com/repos/symfony/form/zipball/76bfa17bf31d86bb00938725f276a84e697491b9", + "reference": "76bfa17bf31d86bb00938725f276a84e697491b9", "shasum": "" }, "require": { @@ -4031,7 +4031,7 @@ "symfony/error-handler": "<6.4", "symfony/framework-bundle": "<6.4", "symfony/http-kernel": "<6.4", - "symfony/translation": "<6.4", + "symfony/translation": "<6.4.3|>=7.0,<7.0.3", "symfony/translation-contracts": "<2.5", "symfony/twig-bridge": "<6.4" }, @@ -4047,7 +4047,7 @@ "symfony/intl": "^6.4|^7.0", "symfony/security-core": "^6.4|^7.0", "symfony/security-csrf": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", + "symfony/translation": "^6.4.3|^7.0.3", "symfony/uid": "^6.4|^7.0", "symfony/validator": "^6.4|^7.0", "symfony/var-dumper": "^6.4|^7.0" @@ -4078,7 +4078,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v7.0.1" + "source": "https://github.com/symfony/form/tree/v7.0.3" }, "funding": [ { @@ -4094,20 +4094,20 @@ "type": "tidelift" } ], - "time": "2023-11-30T11:38:21+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/framework-bundle", - "version": "v7.0.2", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "c647b0162e2190cbcd4a21174482af645e11367c" + "reference": "3584457e3dbea9d6d43726e52c18672489669ff5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/c647b0162e2190cbcd4a21174482af645e11367c", - "reference": "c647b0162e2190cbcd4a21174482af645e11367c", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/3584457e3dbea9d6d43726e52c18672489669ff5", + "reference": "3584457e3dbea9d6d43726e52c18672489669ff5", "shasum": "" }, "require": { @@ -4145,7 +4145,7 @@ "symfony/mime": "<6.4", "symfony/property-access": "<6.4", "symfony/property-info": "<6.4", - "symfony/scheduler": "<6.4", + "symfony/scheduler": "<6.4.3|>=7.0.0,<7.0.3", "symfony/security-core": "<6.4", "symfony/security-csrf": "<6.4", "symfony/serializer": "<6.4", @@ -4183,7 +4183,7 @@ "symfony/process": "^6.4|^7.0", "symfony/property-info": "^6.4|^7.0", "symfony/rate-limiter": "^6.4|^7.0", - "symfony/scheduler": "^6.4|^7.0", + "symfony/scheduler": "^6.4.3|^7.0.3", "symfony/security-bundle": "^6.4|^7.0", "symfony/semaphore": "^6.4|^7.0", "symfony/serializer": "^6.4|^7.0", @@ -4224,7 +4224,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/v7.0.2" + "source": "https://github.com/symfony/framework-bundle/tree/v7.0.3" }, "funding": [ { @@ -4240,20 +4240,20 @@ "type": "tidelift" } ], - "time": "2023-12-29T15:37:40+00:00" + "time": "2024-01-29T15:41:16+00:00" }, { "name": "symfony/http-client", - "version": "v7.0.2", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "db714986d3b84330bb6196fdb201c9f79b3a8853" + "reference": "3d2605c07cd14aec294f72f5bf8147702f7a5ada" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/db714986d3b84330bb6196fdb201c9f79b3a8853", - "reference": "db714986d3b84330bb6196fdb201c9f79b3a8853", + "url": "https://api.github.com/repos/symfony/http-client/zipball/3d2605c07cd14aec294f72f5bf8147702f7a5ada", + "reference": "3d2605c07cd14aec294f72f5bf8147702f7a5ada", "shasum": "" }, "require": { @@ -4316,7 +4316,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v7.0.2" + "source": "https://github.com/symfony/http-client/tree/v7.0.3" }, "funding": [ { @@ -4332,7 +4332,7 @@ "type": "tidelift" } ], - "time": "2023-12-02T12:51:19+00:00" + "time": "2024-01-29T15:41:16+00:00" }, { "name": "symfony/http-client-contracts", @@ -4414,16 +4414,16 @@ }, { "name": "symfony/http-foundation", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "47d72323200934694def5d57083899d774a2b110" + "reference": "f24e2568376e98978022fd09ce45e2dd049e67c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/47d72323200934694def5d57083899d774a2b110", - "reference": "47d72323200934694def5d57083899d774a2b110", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f24e2568376e98978022fd09ce45e2dd049e67c8", + "reference": "f24e2568376e98978022fd09ce45e2dd049e67c8", "shasum": "" }, "require": { @@ -4471,7 +4471,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.0.0" + "source": "https://github.com/symfony/http-foundation/tree/v7.0.3" }, "funding": [ { @@ -4487,20 +4487,20 @@ "type": "tidelift" } ], - "time": "2023-11-07T15:10:37+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.0.2", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "237d3008bc3f5db3e066e348dc0a6435d70a52bb" + "reference": "6352029d6667e8ac5b54aae95afe10b2706b31ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/237d3008bc3f5db3e066e348dc0a6435d70a52bb", - "reference": "237d3008bc3f5db3e066e348dc0a6435d70a52bb", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/6352029d6667e8ac5b54aae95afe10b2706b31ac", + "reference": "6352029d6667e8ac5b54aae95afe10b2706b31ac", "shasum": "" }, "require": { @@ -4583,7 +4583,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/v7.0.2" + "source": "https://github.com/symfony/http-kernel/tree/v7.0.3" }, "funding": [ { @@ -4599,20 +4599,20 @@ "type": "tidelift" } ], - "time": "2023-12-30T15:41:17+00:00" + "time": "2024-01-31T07:32:56+00:00" }, { "name": "symfony/intl", - "version": "v7.0.2", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "5fbee19d24354bbd77b300971eb38469ddbfd7fc" + "reference": "295995df4acf6790a35b9ce6ec32b313efb11ff8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/5fbee19d24354bbd77b300971eb38469ddbfd7fc", - "reference": "5fbee19d24354bbd77b300971eb38469ddbfd7fc", + "url": "https://api.github.com/repos/symfony/intl/zipball/295995df4acf6790a35b9ce6ec32b313efb11ff8", + "reference": "295995df4acf6790a35b9ce6ec32b313efb11ff8", "shasum": "" }, "require": { @@ -4665,7 +4665,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v7.0.2" + "source": "https://github.com/symfony/intl/tree/v7.0.3" }, "funding": [ { @@ -4681,20 +4681,20 @@ "type": "tidelift" } ], - "time": "2023-12-27T08:42:13+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/mailer", - "version": "v7.0.2", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "c51c8f411062ef8fec837c76b0dad15dd5a6ab16" + "reference": "2f71c0f6d62d28784783fdc5477e19dd57065d78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/c51c8f411062ef8fec837c76b0dad15dd5a6ab16", - "reference": "c51c8f411062ef8fec837c76b0dad15dd5a6ab16", + "url": "https://api.github.com/repos/symfony/mailer/zipball/2f71c0f6d62d28784783fdc5477e19dd57065d78", + "reference": "2f71c0f6d62d28784783fdc5477e19dd57065d78", "shasum": "" }, "require": { @@ -4745,7 +4745,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.0.2" + "source": "https://github.com/symfony/mailer/tree/v7.0.3" }, "funding": [ { @@ -4761,20 +4761,20 @@ "type": "tidelift" } ], - "time": "2023-12-19T11:23:03+00:00" + "time": "2024-01-29T15:41:16+00:00" }, { "name": "symfony/messenger", - "version": "v7.0.1", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/messenger.git", - "reference": "457bcafd7a08e0b3ddb87b65ce83e9200a5b8b6b" + "reference": "6271373f5dd4cc1750eccb73839d20797bd66072" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/messenger/zipball/457bcafd7a08e0b3ddb87b65ce83e9200a5b8b6b", - "reference": "457bcafd7a08e0b3ddb87b65ce83e9200a5b8b6b", + "url": "https://api.github.com/repos/symfony/messenger/zipball/6271373f5dd4cc1750eccb73839d20797bd66072", + "reference": "6271373f5dd4cc1750eccb73839d20797bd66072", "shasum": "" }, "require": { @@ -4831,7 +4831,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/v7.0.1" + "source": "https://github.com/symfony/messenger/tree/v7.0.3" }, "funding": [ { @@ -4847,20 +4847,20 @@ "type": "tidelift" } ], - "time": "2023-11-30T11:04:23+00:00" + "time": "2024-01-30T13:55:15+00:00" }, { "name": "symfony/mime", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "0a2fff95c1a10df97f571d67e76c7ae0f0d4f535" + "reference": "c1ffe24ba6fdc3e3f0f3fcb93519103b326a3716" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/0a2fff95c1a10df97f571d67e76c7ae0f0d4f535", - "reference": "0a2fff95c1a10df97f571d67e76c7ae0f0d4f535", + "url": "https://api.github.com/repos/symfony/mime/zipball/c1ffe24ba6fdc3e3f0f3fcb93519103b326a3716", + "reference": "c1ffe24ba6fdc3e3f0f3fcb93519103b326a3716", "shasum": "" }, "require": { @@ -4914,7 +4914,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.0.0" + "source": "https://github.com/symfony/mime/tree/v7.0.3" }, "funding": [ { @@ -4930,20 +4930,20 @@ "type": "tidelift" } ], - "time": "2023-10-19T14:20:43+00:00" + "time": "2024-01-30T08:34:29+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "4ee9e0b3a4736d5598888444e2f1cd3bf206067c" + "reference": "5d4f188e60d1e38a1d9d4bb6fbbbc13111dff2b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/4ee9e0b3a4736d5598888444e2f1cd3bf206067c", - "reference": "4ee9e0b3a4736d5598888444e2f1cd3bf206067c", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/5d4f188e60d1e38a1d9d4bb6fbbbc13111dff2b1", + "reference": "5d4f188e60d1e38a1d9d4bb6fbbbc13111dff2b1", "shasum": "" }, "require": { @@ -4992,7 +4992,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v7.0.0" + "source": "https://github.com/symfony/monolog-bridge/tree/v7.0.3" }, "funding": [ { @@ -5008,7 +5008,7 @@ "type": "tidelift" } ], - "time": "2023-11-21T15:09:11+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/monolog-bundle", @@ -5093,16 +5093,16 @@ }, { "name": "symfony/notifier", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/notifier.git", - "reference": "d947cbe5dd4582d510ad3c4ce8e7abd5be950643" + "reference": "515326dab227ecd3198b04df50edf949f7767a9a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/notifier/zipball/d947cbe5dd4582d510ad3c4ce8e7abd5be950643", - "reference": "d947cbe5dd4582d510ad3c4ce8e7abd5be950643", + "url": "https://api.github.com/repos/symfony/notifier/zipball/515326dab227ecd3198b04df50edf949f7767a9a", + "reference": "515326dab227ecd3198b04df50edf949f7767a9a", "shasum": "" }, "require": { @@ -5151,7 +5151,7 @@ "notifier" ], "support": { - "source": "https://github.com/symfony/notifier/tree/v7.0.0" + "source": "https://github.com/symfony/notifier/tree/v7.0.3" }, "funding": [ { @@ -5167,7 +5167,7 @@ "type": "tidelift" } ], - "time": "2023-10-13T10:16:17+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/options-resolver", @@ -5238,16 +5238,16 @@ }, { "name": "symfony/password-hasher", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/password-hasher.git", - "reference": "d2da68c2f7a240bd6edf7e96fdc7aca5e7beea66" + "reference": "c2447171293bd73dabeae293c8d9d824b444babf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/password-hasher/zipball/d2da68c2f7a240bd6edf7e96fdc7aca5e7beea66", - "reference": "d2da68c2f7a240bd6edf7e96fdc7aca5e7beea66", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/c2447171293bd73dabeae293c8d9d824b444babf", + "reference": "c2447171293bd73dabeae293c8d9d824b444babf", "shasum": "" }, "require": { @@ -5290,7 +5290,7 @@ "password" ], "support": { - "source": "https://github.com/symfony/password-hasher/tree/v7.0.0" + "source": "https://github.com/symfony/password-hasher/tree/v7.0.3" }, "funding": [ { @@ -5306,20 +5306,20 @@ "type": "tidelift" } ], - "time": "2023-11-07T10:26:03+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "875e90aeea2777b6f135677f618529449334a612" + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", - "reference": "875e90aeea2777b6f135677f618529449334a612", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f", + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f", "shasum": "" }, "require": { @@ -5330,9 +5330,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5371,7 +5368,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0" }, "funding": [ { @@ -5387,20 +5384,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-icu", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "e46b4da57951a16053cd751f63f4a24292788157" + "reference": "07094a28851a49107f3ab4f9120ca2975a64b6e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/e46b4da57951a16053cd751f63f4a24292788157", - "reference": "e46b4da57951a16053cd751f63f4a24292788157", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/07094a28851a49107f3ab4f9120ca2975a64b6e1", + "reference": "07094a28851a49107f3ab4f9120ca2975a64b6e1", "shasum": "" }, "require": { @@ -5411,9 +5408,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5458,7 +5452,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.29.0" }, "funding": [ { @@ -5474,20 +5468,20 @@ "type": "tidelift" } ], - "time": "2023-03-21T17:27:24+00:00" + "time": "2024-01-29T20:12:16+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "ecaafce9f77234a6a449d29e49267ba10499116d" + "reference": "a287ed7475f85bf6f61890146edbc932c0fff919" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d", - "reference": "ecaafce9f77234a6a449d29e49267ba10499116d", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a287ed7475f85bf6f61890146edbc932c0fff919", + "reference": "a287ed7475f85bf6f61890146edbc932c0fff919", "shasum": "" }, "require": { @@ -5500,9 +5494,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5545,7 +5536,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.29.0" }, "funding": [ { @@ -5561,20 +5552,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:30:37+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d", + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d", "shasum": "" }, "require": { @@ -5585,9 +5576,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5629,7 +5617,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0" }, "funding": [ { @@ -5645,20 +5633,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "42292d99c55abe617799667f454222c54c60e229" + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", - "reference": "42292d99c55abe617799667f454222c54c60e229", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", "shasum": "" }, "require": { @@ -5672,9 +5660,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5712,7 +5697,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" }, "funding": [ { @@ -5728,7 +5713,7 @@ "type": "tidelift" } ], - "time": "2023-07-28T09:04:16+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php56", @@ -5800,16 +5785,16 @@ }, { "name": "symfony/polyfill-php83", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11" + "reference": "86fcae159633351e5fd145d1c47de6c528f8caff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", - "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/86fcae159633351e5fd145d1c47de6c528f8caff", + "reference": "86fcae159633351e5fd145d1c47de6c528f8caff", "shasum": "" }, "require": { @@ -5818,9 +5803,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5860,7 +5842,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.29.0" }, "funding": [ { @@ -5876,20 +5858,20 @@ "type": "tidelift" } ], - "time": "2023-08-16T06:22:46+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/process", - "version": "v7.0.2", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "acd3eb5cb02382c1cb0287ba29b2908cc6ffa83a" + "reference": "937a195147e0c27b2759ade834169ed006d0bc74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/acd3eb5cb02382c1cb0287ba29b2908cc6ffa83a", - "reference": "acd3eb5cb02382c1cb0287ba29b2908cc6ffa83a", + "url": "https://api.github.com/repos/symfony/process/zipball/937a195147e0c27b2759ade834169ed006d0bc74", + "reference": "937a195147e0c27b2759ade834169ed006d0bc74", "shasum": "" }, "require": { @@ -5921,7 +5903,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.0.2" + "source": "https://github.com/symfony/process/tree/v7.0.3" }, "funding": [ { @@ -5937,20 +5919,20 @@ "type": "tidelift" } ], - "time": "2023-12-24T09:15:37+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/property-access", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "740e8cb8c54a4f16c82179e8558c29d9fc49901d" + "reference": "5c7814d1a84bc11254c5bc761d9878b04e708dec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/740e8cb8c54a4f16c82179e8558c29d9fc49901d", - "reference": "740e8cb8c54a4f16c82179e8558c29d9fc49901d", + "url": "https://api.github.com/repos/symfony/property-access/zipball/5c7814d1a84bc11254c5bc761d9878b04e708dec", + "reference": "5c7814d1a84bc11254c5bc761d9878b04e708dec", "shasum": "" }, "require": { @@ -5997,7 +5979,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v7.0.0" + "source": "https://github.com/symfony/property-access/tree/v7.0.3" }, "funding": [ { @@ -6013,20 +5995,20 @@ "type": "tidelift" } ], - "time": "2023-09-27T14:05:33+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/property-info", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "ce627df05f5629ce4feec536ee827ad0a12689b6" + "reference": "e160f92ea827243abf2dbf36b8460b1377194406" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/ce627df05f5629ce4feec536ee827ad0a12689b6", - "reference": "ce627df05f5629ce4feec536ee827ad0a12689b6", + "url": "https://api.github.com/repos/symfony/property-info/zipball/e160f92ea827243abf2dbf36b8460b1377194406", + "reference": "e160f92ea827243abf2dbf36b8460b1377194406", "shasum": "" }, "require": { @@ -6080,7 +6062,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v7.0.0" + "source": "https://github.com/symfony/property-info/tree/v7.0.3" }, "funding": [ { @@ -6096,20 +6078,20 @@ "type": "tidelift" } ], - "time": "2023-11-25T08:38:27+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/routing", - "version": "v7.0.2", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "78866be67255f42716271e33d1d8b64eb6e47bd9" + "reference": "858b26756ffc35a11238b269b484ee3a393a74d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/78866be67255f42716271e33d1d8b64eb6e47bd9", - "reference": "78866be67255f42716271e33d1d8b64eb6e47bd9", + "url": "https://api.github.com/repos/symfony/routing/zipball/858b26756ffc35a11238b269b484ee3a393a74d3", + "reference": "858b26756ffc35a11238b269b484ee3a393a74d3", "shasum": "" }, "require": { @@ -6161,7 +6143,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.0.2" + "source": "https://github.com/symfony/routing/tree/v7.0.3" }, "funding": [ { @@ -6177,20 +6159,20 @@ "type": "tidelift" } ], - "time": "2023-12-29T15:37:40+00:00" + "time": "2024-01-30T13:55:15+00:00" }, { "name": "symfony/runtime", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/runtime.git", - "reference": "65a4e69b1cdcee4f4f7a619a41d4b7ec79e85406" + "reference": "ef2c2fd4b40fb8cd22221154399ad8888e81cdb5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/runtime/zipball/65a4e69b1cdcee4f4f7a619a41d4b7ec79e85406", - "reference": "65a4e69b1cdcee4f4f7a619a41d4b7ec79e85406", + "url": "https://api.github.com/repos/symfony/runtime/zipball/ef2c2fd4b40fb8cd22221154399ad8888e81cdb5", + "reference": "ef2c2fd4b40fb8cd22221154399ad8888e81cdb5", "shasum": "" }, "require": { @@ -6240,7 +6222,7 @@ "runtime" ], "support": { - "source": "https://github.com/symfony/runtime/tree/v7.0.0" + "source": "https://github.com/symfony/runtime/tree/v7.0.3" }, "funding": [ { @@ -6256,20 +6238,20 @@ "type": "tidelift" } ], - "time": "2023-10-20T16:35:23+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/security-bundle", - "version": "v7.0.2", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "5c781fc5cc853286613d7fec1ecbe00cfbec967e" + "reference": "84984586e74a3c194c17d6b33ccca682ead23e05" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/5c781fc5cc853286613d7fec1ecbe00cfbec967e", - "reference": "5c781fc5cc853286613d7fec1ecbe00cfbec967e", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/84984586e74a3c194c17d6b33ccca682ead23e05", + "reference": "84984586e74a3c194c17d6b33ccca682ead23e05", "shasum": "" }, "require": { @@ -6351,7 +6333,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/v7.0.2" + "source": "https://github.com/symfony/security-bundle/tree/v7.0.3" }, "funding": [ { @@ -6367,20 +6349,20 @@ "type": "tidelift" } ], - "time": "2023-12-24T09:15:37+00:00" + "time": "2024-01-29T15:41:16+00:00" }, { "name": "symfony/security-core", - "version": "v7.0.1", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "2ba040de8e6d93e07edc7307dc75b42e06137405" + "reference": "72b9d961a5dcd21e6bc29b99df51a9000a15dde0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/2ba040de8e6d93e07edc7307dc75b42e06137405", - "reference": "2ba040de8e6d93e07edc7307dc75b42e06137405", + "url": "https://api.github.com/repos/symfony/security-core/zipball/72b9d961a5dcd21e6bc29b99df51a9000a15dde0", + "reference": "72b9d961a5dcd21e6bc29b99df51a9000a15dde0", "shasum": "" }, "require": { @@ -6393,6 +6375,7 @@ "symfony/event-dispatcher": "<6.4", "symfony/http-foundation": "<6.4", "symfony/ldap": "<6.4", + "symfony/translation": "<6.4.3|>=7.0,<7.0.3", "symfony/validator": "<6.4" }, "require-dev": { @@ -6405,7 +6388,7 @@ "symfony/http-foundation": "^6.4|^7.0", "symfony/ldap": "^6.4|^7.0", "symfony/string": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", + "symfony/translation": "^6.4.3|^7.0.3", "symfony/validator": "^6.4|^7.0" }, "type": "library", @@ -6434,7 +6417,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v7.0.1" + "source": "https://github.com/symfony/security-core/tree/v7.0.3" }, "funding": [ { @@ -6450,20 +6433,20 @@ "type": "tidelift" } ], - "time": "2023-11-30T11:04:23+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/security-csrf", - "version": "v7.0.1", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", - "reference": "e261f2cc8d170ec2f310d037893b213850867b6b" + "reference": "f0f724e599f069b768e335e4bdf795726c7dfe8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/e261f2cc8d170ec2f310d037893b213850867b6b", - "reference": "e261f2cc8d170ec2f310d037893b213850867b6b", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/f0f724e599f069b768e335e4bdf795726c7dfe8e", + "reference": "f0f724e599f069b768e335e4bdf795726c7dfe8e", "shasum": "" }, "require": { @@ -6502,7 +6485,7 @@ "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v7.0.1" + "source": "https://github.com/symfony/security-csrf/tree/v7.0.3" }, "funding": [ { @@ -6518,20 +6501,20 @@ "type": "tidelift" } ], - "time": "2023-11-30T11:04:23+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/security-http", - "version": "v7.0.1", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "acc9931d75cd16de08b1663223cb8ab36f61cc0c" + "reference": "d974526dc43525a17bd588e45f86f382edd57331" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/acc9931d75cd16de08b1663223cb8ab36f61cc0c", - "reference": "acc9931d75cd16de08b1663223cb8ab36f61cc0c", + "url": "https://api.github.com/repos/symfony/security-http/zipball/d974526dc43525a17bd588e45f86f382edd57331", + "reference": "d974526dc43525a17bd588e45f86f382edd57331", "shasum": "" }, "require": { @@ -6589,7 +6572,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v7.0.1" + "source": "https://github.com/symfony/security-http/tree/v7.0.3" }, "funding": [ { @@ -6605,20 +6588,20 @@ "type": "tidelift" } ], - "time": "2023-11-30T11:04:23+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/serializer", - "version": "v7.0.2", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "dd7d7612f9ae288889caba4bdff79424ce4ffdf0" + "reference": "6e83031c481e50b6f28e72531660341f1f120e6f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/dd7d7612f9ae288889caba4bdff79424ce4ffdf0", - "reference": "dd7d7612f9ae288889caba4bdff79424ce4ffdf0", + "url": "https://api.github.com/repos/symfony/serializer/zipball/6e83031c481e50b6f28e72531660341f1f120e6f", + "reference": "6e83031c481e50b6f28e72531660341f1f120e6f", "shasum": "" }, "require": { @@ -6684,7 +6667,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/v7.0.2" + "source": "https://github.com/symfony/serializer/tree/v7.0.3" }, "funding": [ { @@ -6700,7 +6683,7 @@ "type": "tidelift" } ], - "time": "2023-12-29T15:37:40+00:00" + "time": "2024-01-30T08:34:29+00:00" }, { "name": "symfony/service-contracts", @@ -6786,16 +6769,16 @@ }, { "name": "symfony/stopwatch", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "7bbfa3dd564a0ce12eb4acaaa46823c740f9cb7a" + "reference": "983900d6fddf2b0cbaacacbbad07610854bd8112" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/7bbfa3dd564a0ce12eb4acaaa46823c740f9cb7a", - "reference": "7bbfa3dd564a0ce12eb4acaaa46823c740f9cb7a", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/983900d6fddf2b0cbaacacbbad07610854bd8112", + "reference": "983900d6fddf2b0cbaacacbbad07610854bd8112", "shasum": "" }, "require": { @@ -6828,7 +6811,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v7.0.0" + "source": "https://github.com/symfony/stopwatch/tree/v7.0.3" }, "funding": [ { @@ -6844,20 +6827,20 @@ "type": "tidelift" } ], - "time": "2023-07-05T13:06:06+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/string", - "version": "v7.0.2", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "cc78f14f91f5e53b42044d0620961c48028ff9f5" + "reference": "524aac4a280b90a4420d8d6a040718d0586505ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/cc78f14f91f5e53b42044d0620961c48028ff9f5", - "reference": "cc78f14f91f5e53b42044d0620961c48028ff9f5", + "url": "https://api.github.com/repos/symfony/string/zipball/524aac4a280b90a4420d8d6a040718d0586505ac", + "reference": "524aac4a280b90a4420d8d6a040718d0586505ac", "shasum": "" }, "require": { @@ -6914,7 +6897,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.0.2" + "source": "https://github.com/symfony/string/tree/v7.0.3" }, "funding": [ { @@ -6930,20 +6913,20 @@ "type": "tidelift" } ], - "time": "2023-12-10T16:54:46+00:00" + "time": "2024-01-29T15:41:16+00:00" }, { "name": "symfony/translation", - "version": "v7.0.2", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "a7566ad85f4328c4a8cdaf441fcfab18ece995e1" + "reference": "7285f25c7dcc74d9ec1232473114274604e50f00" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/a7566ad85f4328c4a8cdaf441fcfab18ece995e1", - "reference": "a7566ad85f4328c4a8cdaf441fcfab18ece995e1", + "url": "https://api.github.com/repos/symfony/translation/zipball/7285f25c7dcc74d9ec1232473114274604e50f00", + "reference": "7285f25c7dcc74d9ec1232473114274604e50f00", "shasum": "" }, "require": { @@ -6965,7 +6948,7 @@ "symfony/translation-implementation": "2.3|3.0" }, "require-dev": { - "nikic/php-parser": "^4.13", + "nikic/php-parser": "^4.18|^5.0", "psr/log": "^1|^2|^3", "symfony/config": "^6.4|^7.0", "symfony/console": "^6.4|^7.0", @@ -7008,7 +6991,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.0.2" + "source": "https://github.com/symfony/translation/tree/v7.0.3" }, "funding": [ { @@ -7024,7 +7007,7 @@ "type": "tidelift" } ], - "time": "2023-12-19T11:23:03+00:00" + "time": "2024-01-29T15:41:16+00:00" }, { "name": "symfony/translation-contracts", @@ -7106,16 +7089,16 @@ }, { "name": "symfony/twig-bridge", - "version": "v7.0.2", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "d6236c6e75ee70317a27f0fd4c3f9bb956f22366" + "reference": "414ff6930889262a11ec67f351e9810dd8565b0d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/d6236c6e75ee70317a27f0fd4c3f9bb956f22366", - "reference": "d6236c6e75ee70317a27f0fd4c3f9bb956f22366", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/414ff6930889262a11ec67f351e9810dd8565b0d", + "reference": "414ff6930889262a11ec67f351e9810dd8565b0d", "shasum": "" }, "require": { @@ -7158,7 +7141,7 @@ "symfony/security-core": "^6.4|^7.0", "symfony/security-csrf": "^6.4|^7.0", "symfony/security-http": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0", + "symfony/serializer": "^6.4.3|^7.0.3", "symfony/stopwatch": "^6.4|^7.0", "symfony/translation": "^6.4|^7.0", "symfony/web-link": "^6.4|^7.0", @@ -7194,7 +7177,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v7.0.2" + "source": "https://github.com/symfony/twig-bridge/tree/v7.0.3" }, "funding": [ { @@ -7210,20 +7193,20 @@ "type": "tidelift" } ], - "time": "2023-12-15T12:36:57+00:00" + "time": "2024-01-30T08:34:29+00:00" }, { "name": "symfony/twig-bundle", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "42c4a60f1b83894cd85a6b00533f8216c413ac11" + "reference": "6fbf0cc2b0d0208be4881ff6069665687396b323" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/42c4a60f1b83894cd85a6b00533f8216c413ac11", - "reference": "42c4a60f1b83894cd85a6b00533f8216c413ac11", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/6fbf0cc2b0d0208be4881ff6069665687396b323", + "reference": "6fbf0cc2b0d0208be4881ff6069665687396b323", "shasum": "" }, "require": { @@ -7278,7 +7261,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/v7.0.0" + "source": "https://github.com/symfony/twig-bundle/tree/v7.0.3" }, "funding": [ { @@ -7294,20 +7277,20 @@ "type": "tidelift" } ], - "time": "2023-11-26T15:16:53+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/validator", - "version": "v7.0.2", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "24911cba25f0ef2a8e23327c100664502e1b95cb" + "reference": "03b0c75d7d3df1ef9a0fd9fb8db1e86f83ffa2bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/24911cba25f0ef2a8e23327c100664502e1b95cb", - "reference": "24911cba25f0ef2a8e23327c100664502e1b95cb", + "url": "https://api.github.com/repos/symfony/validator/zipball/03b0c75d7d3df1ef9a0fd9fb8db1e86f83ffa2bb", + "reference": "03b0c75d7d3df1ef9a0fd9fb8db1e86f83ffa2bb", "shasum": "" }, "require": { @@ -7325,7 +7308,7 @@ "symfony/http-kernel": "<6.4", "symfony/intl": "<6.4", "symfony/property-info": "<6.4", - "symfony/translation": "<6.4", + "symfony/translation": "<6.4.3|>=7.0,<7.0.3", "symfony/yaml": "<6.4" }, "require-dev": { @@ -7343,7 +7326,7 @@ "symfony/mime": "^6.4|^7.0", "symfony/property-access": "^6.4|^7.0", "symfony/property-info": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", + "symfony/translation": "^6.4.3|^7.0.3", "symfony/yaml": "^6.4|^7.0" }, "type": "library", @@ -7372,7 +7355,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v7.0.2" + "source": "https://github.com/symfony/validator/tree/v7.0.3" }, "funding": [ { @@ -7388,20 +7371,20 @@ "type": "tidelift" } ], - "time": "2023-12-30T09:57:06+00:00" + "time": "2024-01-29T15:41:16+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.0.2", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "5f6f1a527002068f6d40fda068399220eabebf71" + "reference": "a7a061abbf6fe3d4a79032cbc5149a4d65a10234" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/5f6f1a527002068f6d40fda068399220eabebf71", - "reference": "5f6f1a527002068f6d40fda068399220eabebf71", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/a7a061abbf6fe3d4a79032cbc5149a4d65a10234", + "reference": "a7a061abbf6fe3d4a79032cbc5149a4d65a10234", "shasum": "" }, "require": { @@ -7455,7 +7438,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.0.2" + "source": "https://github.com/symfony/var-dumper/tree/v7.0.3" }, "funding": [ { @@ -7471,20 +7454,20 @@ "type": "tidelift" } ], - "time": "2023-12-28T19:18:20+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/var-exporter", - "version": "v7.0.2", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "345c62fefe92243c3a06fc0cc65f2ec1a47e0764" + "reference": "1fb79308cb5fc2b44bff6e8af10a5af6812e05b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/345c62fefe92243c3a06fc0cc65f2ec1a47e0764", - "reference": "345c62fefe92243c3a06fc0cc65f2ec1a47e0764", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/1fb79308cb5fc2b44bff6e8af10a5af6812e05b8", + "reference": "1fb79308cb5fc2b44bff6e8af10a5af6812e05b8", "shasum": "" }, "require": { @@ -7529,7 +7512,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.0.2" + "source": "https://github.com/symfony/var-exporter/tree/v7.0.3" }, "funding": [ { @@ -7545,20 +7528,20 @@ "type": "tidelift" } ], - "time": "2023-12-27T08:42:13+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/web-link", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/web-link.git", - "reference": "378bcc80b48c51e32bf121bee684183ff879a62f" + "reference": "855a347feb2ecfc1d1a379c739aff956d4cbec00" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-link/zipball/378bcc80b48c51e32bf121bee684183ff879a62f", - "reference": "378bcc80b48c51e32bf121bee684183ff879a62f", + "url": "https://api.github.com/repos/symfony/web-link/zipball/855a347feb2ecfc1d1a379c739aff956d4cbec00", + "reference": "855a347feb2ecfc1d1a379c739aff956d4cbec00", "shasum": "" }, "require": { @@ -7612,7 +7595,7 @@ "push" ], "support": { - "source": "https://github.com/symfony/web-link/tree/v7.0.0" + "source": "https://github.com/symfony/web-link/tree/v7.0.3" }, "funding": [ { @@ -7628,20 +7611,20 @@ "type": "tidelift" } ], - "time": "2023-07-25T09:50:29+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/yaml", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "0055b230c408428b9b5cde7c55659555be5c0278" + "reference": "2d4fca631c00700597e9442a0b2451ce234513d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/0055b230c408428b9b5cde7c55659555be5c0278", - "reference": "0055b230c408428b9b5cde7c55659555be5c0278", + "url": "https://api.github.com/repos/symfony/yaml/zipball/2d4fca631c00700597e9442a0b2451ce234513d3", + "reference": "2d4fca631c00700597e9442a0b2451ce234513d3", "shasum": "" }, "require": { @@ -7683,7 +7666,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.0.0" + "source": "https://github.com/symfony/yaml/tree/v7.0.3" }, "funding": [ { @@ -7699,7 +7682,7 @@ "type": "tidelift" } ], - "time": "2023-11-07T10:26:03+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfonycasts/micro-mapper", @@ -7898,16 +7881,16 @@ }, { "name": "vich/uploader-bundle", - "version": "2.3.0", + "version": "2.3.1", "source": { "type": "git", "url": "https://github.com/dustin10/VichUploaderBundle.git", - "reference": "0d748cfe676bcf894b3f324f69797c9b9d124aa5" + "reference": "f21f620502fdee511b090e3bbbc4c724ecb4f977" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dustin10/VichUploaderBundle/zipball/0d748cfe676bcf894b3f324f69797c9b9d124aa5", - "reference": "0d748cfe676bcf894b3f324f69797c9b9d124aa5", + "url": "https://api.github.com/repos/dustin10/VichUploaderBundle/zipball/f21f620502fdee511b090e3bbbc4c724ecb4f977", + "reference": "f21f620502fdee511b090e3bbbc4c724ecb4f977", "shasum": "" }, "require": { @@ -7936,12 +7919,12 @@ "doctrine/orm": "^2.13", "ext-sqlite3": "*", "knplabs/knp-gaufrette-bundle": "dev-master", - "league/flysystem-bundle": "^2.3", - "league/flysystem-memory": "^2.0", - "matthiasnoback/symfony-dependency-injection-test": "^4.3", + "league/flysystem-bundle": "^2.4 || ^3.0", + "league/flysystem-memory": "^2.0 || ^3.0", + "matthiasnoback/symfony-dependency-injection-test": "^5.1", "mikey179/vfsstream": "^1.6.11", "phpunit/phpunit": "^9.6", - "symfony/asset": "^5.4 || ^6.0", + "symfony/asset": "^5.4 || ^6.0 || ^7.0", "symfony/browser-kit": "^5.4 || ^6.0 || ^7.0", "symfony/css-selector": "^5.4 || ^6.0 || ^7.0", "symfony/doctrine-bridge": "^5.4 || ^6.0 || ^7.0", @@ -8001,9 +7984,9 @@ ], "support": { "issues": "https://github.com/dustin10/VichUploaderBundle/issues", - "source": "https://github.com/dustin10/VichUploaderBundle/tree/2.3.0" + "source": "https://github.com/dustin10/VichUploaderBundle/tree/2.3.1" }, - "time": "2023-12-18T07:49:22+00:00" + "time": "2024-02-12T08:29:16+00:00" }, { "name": "webmozart/assert", @@ -8615,25 +8598,27 @@ }, { "name": "nikic/php-parser", - "version": "v4.18.0", + "version": "v5.0.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999" + "reference": "4a21235f7e56e713259a6f76bf4b5ea08502b9dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999", - "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4a21235f7e56e713259a6f76bf4b5ea08502b9dc", + "reference": "4a21235f7e56e713259a6f76bf4b5ea08502b9dc", "shasum": "" }, "require": { + "ext-ctype": "*", + "ext-json": "*", "ext-tokenizer": "*", - "php": ">=7.0" + "php": ">=7.4" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "bin": [ "bin/php-parse" @@ -8641,7 +8626,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.9-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -8665,9 +8650,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.18.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.0" }, - "time": "2023-12-10T21:03:43+00:00" + "time": "2024-01-07T17:17:35+00:00" }, { "name": "phar-io/manifest", @@ -9101,16 +9086,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.15", + "version": "9.6.16", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1" + "reference": "3767b2c56ce02d01e3491046f33466a1ae60a37f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/05017b80304e0eb3f31d90194a563fd53a6021f1", - "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3767b2c56ce02d01e3491046f33466a1ae60a37f", + "reference": "3767b2c56ce02d01e3491046f33466a1ae60a37f", "shasum": "" }, "require": { @@ -9184,7 +9169,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.16" }, "funding": [ { @@ -9200,7 +9185,7 @@ "type": "tidelift" } ], - "time": "2023-12-01T16:55:19+00:00" + "time": "2024-01-19T07:03:14+00:00" }, { "name": "sebastian/cli-parser", @@ -10168,16 +10153,16 @@ }, { "name": "symfony/browser-kit", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "c53a6e9bcb4528be535d458450b07aa81620459e" + "reference": "725d5b15681685ac17b20b575254c75639722488" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/c53a6e9bcb4528be535d458450b07aa81620459e", - "reference": "c53a6e9bcb4528be535d458450b07aa81620459e", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/725d5b15681685ac17b20b575254c75639722488", + "reference": "725d5b15681685ac17b20b575254c75639722488", "shasum": "" }, "require": { @@ -10216,7 +10201,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/v7.0.0" + "source": "https://github.com/symfony/browser-kit/tree/v7.0.3" }, "funding": [ { @@ -10232,20 +10217,20 @@ "type": "tidelift" } ], - "time": "2023-10-31T17:37:24+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/css-selector", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "bb51d46e53ef8d50d523f0c5faedba056a27943e" + "reference": "ec60a4edf94e63b0556b6a0888548bb400a3a3be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/bb51d46e53ef8d50d523f0c5faedba056a27943e", - "reference": "bb51d46e53ef8d50d523f0c5faedba056a27943e", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/ec60a4edf94e63b0556b6a0888548bb400a3a3be", + "reference": "ec60a4edf94e63b0556b6a0888548bb400a3a3be", "shasum": "" }, "require": { @@ -10281,7 +10266,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v7.0.0" + "source": "https://github.com/symfony/css-selector/tree/v7.0.3" }, "funding": [ { @@ -10297,20 +10282,20 @@ "type": "tidelift" } ], - "time": "2023-10-31T17:59:56+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/debug-bundle", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/debug-bundle.git", - "reference": "7e540aebec5b7848bbdfaa1a045ed130e1791156" + "reference": "b0db5c443883ce5c10c2265c77feb9833c3d9d6d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/7e540aebec5b7848bbdfaa1a045ed130e1791156", - "reference": "7e540aebec5b7848bbdfaa1a045ed130e1791156", + "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/b0db5c443883ce5c10c2265c77feb9833c3d9d6d", + "reference": "b0db5c443883ce5c10c2265c77feb9833c3d9d6d", "shasum": "" }, "require": { @@ -10355,7 +10340,7 @@ "description": "Provides a tight integration of the Symfony VarDumper component and the ServerLogCommand from MonologBridge into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug-bundle/tree/v7.0.0" + "source": "https://github.com/symfony/debug-bundle/tree/v7.0.3" }, "funding": [ { @@ -10371,20 +10356,20 @@ "type": "tidelift" } ], - "time": "2023-11-07T10:26:03+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/dom-crawler", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "d13205f444a535f4a6e52186aedbc99664f66a86" + "reference": "3330a8f836e7631412c5e07f69b88480d27a20a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/d13205f444a535f4a6e52186aedbc99664f66a86", - "reference": "d13205f444a535f4a6e52186aedbc99664f66a86", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/3330a8f836e7631412c5e07f69b88480d27a20a2", + "reference": "3330a8f836e7631412c5e07f69b88480d27a20a2", "shasum": "" }, "require": { @@ -10422,7 +10407,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v7.0.0" + "source": "https://github.com/symfony/dom-crawler/tree/v7.0.3" }, "funding": [ { @@ -10438,49 +10423,49 @@ "type": "tidelift" } ], - "time": "2023-11-20T16:43:42+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/maker-bundle", - "version": "v1.52.0", + "version": "v1.54.0", "source": { "type": "git", "url": "https://github.com/symfony/maker-bundle.git", - "reference": "112f9466c94a46ca33dc441eee59a12cd1790757" + "reference": "a8523cf35d777bf2d8cf5703fa73f378fdc27125" }, "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/a8523cf35d777bf2d8cf5703fa73f378fdc27125", + "reference": "a8523cf35d777bf2d8cf5703fa73f378fdc27125", "shasum": "" }, "require": { "doctrine/inflector": "^2.0", - "nikic/php-parser": "^4.11", + "nikic/php-parser": "^4.18|^5.0", "php": ">=8.1", - "symfony/config": "^6.3|^7.0", - "symfony/console": "^6.3|^7.0", - "symfony/dependency-injection": "^6.3|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", "symfony/deprecation-contracts": "^2.2|^3", - "symfony/filesystem": "^6.3|^7.0", - "symfony/finder": "^6.3|^7.0", - "symfony/framework-bundle": "^6.3|^7.0", - "symfony/http-kernel": "^6.3|^7.0", - "symfony/process": "^6.3|^7.0" + "symfony/filesystem": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", + "symfony/framework-bundle": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0" }, "conflict": { - "doctrine/doctrine-bundle": "<2.4", - "doctrine/orm": "<2.10" + "doctrine/doctrine-bundle": "<2.10", + "doctrine/orm": "<2.15" }, "require-dev": { "composer/semver": "^3.0", "doctrine/doctrine-bundle": "^2.5.0", - "doctrine/orm": "^2.10.0", - "symfony/http-client": "^6.3|^7.0", - "symfony/phpunit-bridge": "^6.3|^7.0", - "symfony/security-core": "^6.3|^7.0", - "symfony/yaml": "^6.3|^7.0", - "twig/twig": "^2.0|^3.0" + "doctrine/orm": "^2.15|^3", + "symfony/http-client": "^6.4|^7.0", + "symfony/phpunit-bridge": "^6.4.1|^7.0", + "symfony/security-core": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0", + "twig/twig": "^3.0|^4.x-dev" }, "type": "symfony-bundle", "extra": { @@ -10514,7 +10499,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.54.0" }, "funding": [ { @@ -10530,20 +10515,20 @@ "type": "tidelift" } ], - "time": "2023-10-31T18:23:49+00:00" + "time": "2024-02-06T21:23:55+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v7.0.2", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "92df075808c9437beca9540e25ae0c40eea1c061" + "reference": "0a2eeb0d9e68bf01660e3e903f8113508bb46132" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/92df075808c9437beca9540e25ae0c40eea1c061", - "reference": "92df075808c9437beca9540e25ae0c40eea1c061", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/0a2eeb0d9e68bf01660e3e903f8113508bb46132", + "reference": "0a2eeb0d9e68bf01660e3e903f8113508bb46132", "shasum": "" }, "require": { @@ -10595,7 +10580,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v7.0.2" + "source": "https://github.com/symfony/phpunit-bridge/tree/v7.0.3" }, "funding": [ { @@ -10611,20 +10596,20 @@ "type": "tidelift" } ], - "time": "2023-12-19T11:23:03+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v7.0.2", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "b3746379ad31d02a578aff360caacf521e753b85" + "reference": "320dbcaa6e3a72797a614216703df8b187f19265" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/b3746379ad31d02a578aff360caacf521e753b85", - "reference": "b3746379ad31d02a578aff360caacf521e753b85", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/320dbcaa6e3a72797a614216703df8b187f19265", + "reference": "320dbcaa6e3a72797a614216703df8b187f19265", "shasum": "" }, "require": { @@ -10676,7 +10661,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.0.2" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.0.3" }, "funding": [ { @@ -10692,7 +10677,7 @@ "type": "tidelift" } ], - "time": "2023-12-27T08:42:13+00:00" + "time": "2024-01-29T15:41:16+00:00" }, { "name": "theseer/tokenizer", @@ -10805,16 +10790,16 @@ }, { "name": "zenstruck/browser", - "version": "v1.7.0", + "version": "v1.8.0", "source": { "type": "git", "url": "https://github.com/zenstruck/browser.git", - "reference": "cf514edcf66cd889baeb29870c29a0494d32aff4" + "reference": "2c504ce46f76abf6e8725218c0eab519f60b62a6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zenstruck/browser/zipball/cf514edcf66cd889baeb29870c29a0494d32aff4", - "reference": "cf514edcf66cd889baeb29870c29a0494d32aff4", + "url": "https://api.github.com/repos/zenstruck/browser/zipball/2c504ce46f76abf6e8725218c0eab519f60b62a6", + "reference": "2c504ce46f76abf6e8725218c0eab519f60b62a6", "shasum": "" }, "require": { @@ -10862,12 +10847,13 @@ "description": "A fluent interface for your Symfony functional tests.", "homepage": "https://github.com/zenstruck/browser", "keywords": [ + "dev", "symfony", "test" ], "support": { "issues": "https://github.com/zenstruck/browser/issues", - "source": "https://github.com/zenstruck/browser/tree/v1.7.0" + "source": "https://github.com/zenstruck/browser/tree/v1.8.0" }, "funding": [ { @@ -10875,7 +10861,7 @@ "type": "github" } ], - "time": "2023-12-14T21:04:01+00:00" + "time": "2024-02-07T17:32:28+00:00" }, { "name": "zenstruck/callback", diff --git a/config/packages/api_platform.yaml b/config/packages/api_platform.yaml index 50c6498..eead5b7 100644 --- a/config/packages/api_platform.yaml +++ b/config/packages/api_platform.yaml @@ -30,4 +30,6 @@ api_platform: api_keys: JWT: name: Authorization - type: header \ No newline at end of file + type: header + swagger_ui_extra_configuration: + persistAuthorization: true \ No newline at end of file diff --git a/migrations/Version20240214151436.php b/migrations/Version20240214151436.php deleted file mode 100644 index 50207c5..0000000 --- a/migrations/Version20240214151436.php +++ /dev/null @@ -1,51 +0,0 @@ -addSql('CREATE TABLE contact (id INT AUTO_INCREMENT NOT NULL, partner_id INT NOT NULL, image_id INT DEFAULT NULL, first_name VARCHAR(255) NOT NULL, last_name VARCHAR(255) NOT NULL, birthday DATE DEFAULT NULL, position VARCHAR(255) DEFAULT NULL, phone VARCHAR(255) DEFAULT NULL, email VARCHAR(255) DEFAULT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', INDEX IDX_4C62E6389393F8FE (partner_id), INDEX IDX_4C62E6383DA5256D (image_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); - $this->addSql('CREATE TABLE media_object (id INT AUTO_INCREMENT NOT NULL, file_path VARCHAR(255) DEFAULT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); - $this->addSql('CREATE TABLE partner (id INT AUTO_INCREMENT NOT NULL, logo_id INT DEFAULT NULL, name VARCHAR(255) NOT NULL, type VARCHAR(255) NOT NULL, street VARCHAR(255) DEFAULT NULL, street_no VARCHAR(255) DEFAULT NULL, zip VARCHAR(255) DEFAULT NULL, city VARCHAR(255) DEFAULT NULL, country VARCHAR(255) DEFAULT NULL, website VARCHAR(255) DEFAULT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', INDEX IDX_312B3E16F98F144A (logo_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); - $this->addSql('CREATE TABLE posting (id INT AUTO_INCREMENT NOT NULL, owner_id INT NOT NULL, partner_id INT NOT NULL, contact_id INT DEFAULT NULL, headline VARCHAR(255) DEFAULT NULL, message LONGTEXT NOT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', INDEX IDX_BD275D737E3C61F9 (owner_id), INDEX IDX_BD275D739393F8FE (partner_id), INDEX IDX_BD275D73E7A1254A (contact_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); - $this->addSql('CREATE TABLE `user` (id INT AUTO_INCREMENT NOT NULL, email VARCHAR(180) NOT NULL, first_name VARCHAR(255) NOT NULL, last_name VARCHAR(255) NOT NULL, roles JSON NOT NULL COMMENT \'(DC2Type:json)\', password VARCHAR(255) NOT NULL, active TINYINT(1) NOT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', UNIQUE INDEX UNIQ_8D93D649E7927C74 (email), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); - $this->addSql('ALTER TABLE contact ADD CONSTRAINT FK_4C62E6389393F8FE FOREIGN KEY (partner_id) REFERENCES partner (id)'); - $this->addSql('ALTER TABLE contact ADD CONSTRAINT FK_4C62E6383DA5256D FOREIGN KEY (image_id) REFERENCES media_object (id)'); - $this->addSql('ALTER TABLE partner ADD CONSTRAINT FK_312B3E16F98F144A FOREIGN KEY (logo_id) REFERENCES media_object (id)'); - $this->addSql('ALTER TABLE posting ADD CONSTRAINT FK_BD275D737E3C61F9 FOREIGN KEY (owner_id) REFERENCES `user` (id)'); - $this->addSql('ALTER TABLE posting ADD CONSTRAINT FK_BD275D739393F8FE FOREIGN KEY (partner_id) REFERENCES partner (id)'); - $this->addSql('ALTER TABLE posting ADD CONSTRAINT FK_BD275D73E7A1254A FOREIGN KEY (contact_id) REFERENCES contact (id)'); - } - - public function down(Schema $schema): void - { - // this down() migration is auto-generated, please modify it to your needs - $this->addSql('ALTER TABLE contact DROP FOREIGN KEY FK_4C62E6389393F8FE'); - $this->addSql('ALTER TABLE contact DROP FOREIGN KEY FK_4C62E6383DA5256D'); - $this->addSql('ALTER TABLE partner DROP FOREIGN KEY FK_312B3E16F98F144A'); - $this->addSql('ALTER TABLE posting DROP FOREIGN KEY FK_BD275D737E3C61F9'); - $this->addSql('ALTER TABLE posting DROP FOREIGN KEY FK_BD275D739393F8FE'); - $this->addSql('ALTER TABLE posting DROP FOREIGN KEY FK_BD275D73E7A1254A'); - $this->addSql('DROP TABLE contact'); - $this->addSql('DROP TABLE media_object'); - $this->addSql('DROP TABLE partner'); - $this->addSql('DROP TABLE posting'); - $this->addSql('DROP TABLE `user`'); - } -} diff --git a/migrations/Version20240215093709.php b/migrations/Version20240215093709.php new file mode 100644 index 0000000..839dca0 --- /dev/null +++ b/migrations/Version20240215093709.php @@ -0,0 +1,45 @@ +addSql('CREATE TABLE comment (id INT AUTO_INCREMENT NOT NULL, owner_id INT NOT NULL, posting_id INT NOT NULL, message LONGTEXT NOT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', INDEX IDX_9474526C7E3C61F9 (owner_id), INDEX IDX_9474526C9AE985F6 (posting_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE posting (id INT AUTO_INCREMENT NOT NULL, owner_id INT NOT NULL, partner_id INT NOT NULL, contact_id INT DEFAULT NULL, headline VARCHAR(255) NOT NULL, message LONGTEXT NOT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', INDEX IDX_BD275D737E3C61F9 (owner_id), INDEX IDX_BD275D739393F8FE (partner_id), INDEX IDX_BD275D73E7A1254A (contact_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE `user` (id INT AUTO_INCREMENT NOT NULL, email VARCHAR(180) NOT NULL, first_name VARCHAR(255) NOT NULL, last_name VARCHAR(255) NOT NULL, roles JSON NOT NULL COMMENT \'(DC2Type:json)\', password VARCHAR(255) NOT NULL, active TINYINT(1) NOT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', UNIQUE INDEX UNIQ_8D93D649E7927C74 (email), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('ALTER TABLE comment ADD CONSTRAINT FK_9474526C7E3C61F9 FOREIGN KEY (owner_id) REFERENCES `user` (id)'); + $this->addSql('ALTER TABLE comment ADD CONSTRAINT FK_9474526C9AE985F6 FOREIGN KEY (posting_id) REFERENCES posting (id)'); + $this->addSql('ALTER TABLE posting ADD CONSTRAINT FK_BD275D737E3C61F9 FOREIGN KEY (owner_id) REFERENCES `user` (id)'); + $this->addSql('ALTER TABLE posting ADD CONSTRAINT FK_BD275D739393F8FE FOREIGN KEY (partner_id) REFERENCES partner (id)'); + $this->addSql('ALTER TABLE posting ADD CONSTRAINT FK_BD275D73E7A1254A FOREIGN KEY (contact_id) REFERENCES contact (id)'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('ALTER TABLE comment DROP FOREIGN KEY FK_9474526C7E3C61F9'); + $this->addSql('ALTER TABLE comment DROP FOREIGN KEY FK_9474526C9AE985F6'); + $this->addSql('ALTER TABLE posting DROP FOREIGN KEY FK_BD275D737E3C61F9'); + $this->addSql('ALTER TABLE posting DROP FOREIGN KEY FK_BD275D739393F8FE'); + $this->addSql('ALTER TABLE posting DROP FOREIGN KEY FK_BD275D73E7A1254A'); + $this->addSql('DROP TABLE comment'); + $this->addSql('DROP TABLE posting'); + $this->addSql('DROP TABLE `user`'); + } +} diff --git a/src/ApiResource/CommentApi.php b/src/ApiResource/CommentApi.php new file mode 100644 index 0000000..bea4fed --- /dev/null +++ b/src/ApiResource/CommentApi.php @@ -0,0 +1,65 @@ + + * @date 12.12.23 + */ + + +namespace App\ApiResource; + +use ApiPlatform\Doctrine\Orm\Filter\SearchFilter; +use ApiPlatform\Doctrine\Orm\State\Options; +use ApiPlatform\Metadata\ApiFilter; +use ApiPlatform\Metadata\ApiProperty; +use ApiPlatform\Metadata\ApiResource; +use App\Entity\Comment; +use App\State\EntityClassDtoStateProcessor; +use App\State\EntityToDtoStateProvider; +use ApiPlatform\Metadata\Delete; +use ApiPlatform\Metadata\Get; +use ApiPlatform\Metadata\GetCollection; +use ApiPlatform\Metadata\Patch; +use ApiPlatform\Metadata\Post; +use App\Validator\IsValidOwner; +use Symfony\Component\Validator\Constraints\NotBlank; + +#[ApiResource( + shortName: 'Comment', + operations: [ + new Get( + security: 'is_granted("ROLE_USER")' + ), + new GetCollection(), + new Post( + security: 'is_granted("ROLE_USER")', + ), + new Patch( + security: 'is_granted("EDIT", object)', + ), + new Delete( + security: 'is_granted("ROLE_ADMIN")', + ) + ], + security: 'is_granted("ROLE_USER")', + provider: EntityToDtoStateProvider::class, + processor: EntityClassDtoStateProcessor::class, + stateOptions: new Options(entityClass: Comment::class), +)] +#[ApiFilter(SearchFilter::class, properties: ['partner' => 'exact', 'contact' => 'exact'])] +class CommentApi +{ + #[ApiProperty(readable: false, writable: false, identifier: true)] + public ?int $id = null; + + #[NotBlank] + public ?string $message = null; + + #[IsValidOwner] + public ?UserApi $owner = null; + + public ?PostingApi $posting = null; + + #[ApiProperty(writable: false)] + public ?\DateTimeImmutable $createdAt = null; + +} \ No newline at end of file diff --git a/src/ApiResource/ContactApi.php b/src/ApiResource/ContactApi.php index 9388192..6ba0973 100644 --- a/src/ApiResource/ContactApi.php +++ b/src/ApiResource/ContactApi.php @@ -73,5 +73,10 @@ class ContactApi public ?string $email = null; + /** + * @var array + */ + public array $postings = []; + public ?\DateTimeImmutable $createdAt = null; } \ No newline at end of file diff --git a/src/ApiResource/PartnerApi.php b/src/ApiResource/PartnerApi.php index 20f2b80..f1fa9c0 100644 --- a/src/ApiResource/PartnerApi.php +++ b/src/ApiResource/PartnerApi.php @@ -44,7 +44,6 @@ use Symfony\Component\Validator\Constraints\NotBlank; ) ], order: ['name' => 'ASC'], - paginationItemsPerPage: 10, security: 'is_granted("ROLE_USER")', provider: EntityToDtoStateProvider::class, processor: EntityClassDtoStateProcessor::class, diff --git a/src/ApiResource/PostingApi.php b/src/ApiResource/PostingApi.php index 12c80b2..0dd3265 100644 --- a/src/ApiResource/PostingApi.php +++ b/src/ApiResource/PostingApi.php @@ -21,15 +21,18 @@ use ApiPlatform\Metadata\GetCollection; use ApiPlatform\Metadata\Patch; use ApiPlatform\Metadata\Post; use App\Validator\IsValidOwner; +use Symfony\Component\PropertyInfo\Type; use Symfony\Component\Validator\Constraints\NotBlank; #[ApiResource( shortName: 'Post', operations: [ new Get( - security: 'is_granted("ROLE_USER")' + security: 'is_granted("ROLE_USER")', + ), + new GetCollection( + security: 'is_granted("ROLE_USER")', ), - new GetCollection(), new Post( security: 'is_granted("ROLE_USER")', ), @@ -40,11 +43,10 @@ use Symfony\Component\Validator\Constraints\NotBlank; security: 'is_granted("ROLE_ADMIN")', ) ], - paginationItemsPerPage: 10, security: 'is_granted("ROLE_USER")', provider: EntityToDtoStateProvider::class, processor: EntityClassDtoStateProcessor::class, - stateOptions: new Options(entityClass: Posting::class), + stateOptions: new Options(entityClass: Posting::class) )] #[ApiFilter(SearchFilter::class, properties: ['partner' => 'exact', 'contact' => 'exact'])] class PostingApi @@ -68,6 +70,24 @@ class PostingApi public ?ContactApi $contact = null; + /** + * @var array + */ + #[ApiProperty( + readableLink: true, + writableLink: true, + fetchEager: true, + builtinTypes: [ + new Type( + 'object', + collection: true, + collectionKeyType: [new Type('int')], + collectionValueType: new Type('object', class: CommentApi::class) + ) + ] + )] + public array $comments = []; + #[ApiProperty(writable: false)] public ?\DateTimeImmutable $createdAt = null; diff --git a/src/ApiResource/UserApi.php b/src/ApiResource/UserApi.php index 1170cac..d3656b6 100644 --- a/src/ApiResource/UserApi.php +++ b/src/ApiResource/UserApi.php @@ -36,7 +36,6 @@ use Symfony\Component\Validator\Constraints as Assert; security: 'is_granted("ROLE_USER")' ), ], - paginationItemsPerPage: 10, security: 'is_granted("ROLE_USER")', provider: EntityToDtoStateProvider::class, processor: EntityClassDtoStateProcessor::class, @@ -72,11 +71,11 @@ class UserApi #[ApiProperty(security: 'object === null or is_granted("EDIT", object)')] public bool $active; - #[ApiProperty(writable: false)] - public ?\DateTimeImmutable $createdAt = null; - /** * @var array */ public array $postings = []; -} \ No newline at end of file + + #[ApiProperty(writable: false)] + public ?\DateTimeImmutable $createdAt = null; +} diff --git a/src/DataFixtures/AppFixtures.php b/src/DataFixtures/AppFixtures.php index 503f0ff..035b4f1 100644 --- a/src/DataFixtures/AppFixtures.php +++ b/src/DataFixtures/AppFixtures.php @@ -2,6 +2,7 @@ namespace App\DataFixtures; +use App\Factory\CommentFactory; use App\Factory\ContactFactory; use App\Factory\MediaObjectLogoFactory; use App\Factory\MediaObjectProfileFactory; @@ -54,30 +55,11 @@ class AppFixtures extends Fixture $adminF->setRoles(['ROLE_ADMIN']); UserFactory::createMany(10); - MediaObjectLogoFactory::createMany(50); - PartnerFactory::createMany(100, function() { - return [ - 'logo' => MediaObjectLogoFactory::random() - ]; - }); - + PartnerFactory::createMany(100); MediaObjectProfileFactory::createMany(50); - ContactFactory::createMany(200, function() { - return [ - 'partner' => PartnerFactory::random(), - 'image' => MediaObjectProfileFactory::random() - ]; - }); - - PostingFactory::createMany(200, function() { - $randomBoolean = (bool)random_int(0, 1); - return [ - 'owner' => UserFactory::random(), - 'partner' => PartnerFactory::random(), - 'contact' => $randomBoolean ? ContactFactory::random() : null - ]; - }); - + ContactFactory::createMany(200); + PostingFactory::createMany(200); + CommentFactory::createMany(300); } } diff --git a/src/Entity/Comment.php b/src/Entity/Comment.php new file mode 100644 index 0000000..dbb8c32 --- /dev/null +++ b/src/Entity/Comment.php @@ -0,0 +1,95 @@ +createdAt = new \DateTimeImmutable(); + } + + public function getId(): ?int + { + return $this->id; + } + + public function setId(int $id): static + { + $this->id = $id; + + return $this; + } + + public function getMessage(): ?string + { + return $this->message; + } + + public function setMessage(string $message): static + { + $this->message = $message; + + return $this; + } + + public function getOwner(): ?User + { + return $this->owner; + } + + public function setOwner(?User $owner): static + { + $this->owner = $owner; + + return $this; + } + + public function getPosting(): ?Posting + { + return $this->posting; + } + + public function setPosting(?Posting $posting): static + { + $this->posting = $posting; + + return $this; + } + + public function getCreatedAt(): ?\DateTimeImmutable + { + return $this->createdAt; + } + + public function setCreatedAt(\DateTimeImmutable $createdAt): static + { + $this->createdAt = $createdAt; + + return $this; + } +} diff --git a/src/Entity/Contact.php b/src/Entity/Contact.php index 162fddc..030f4d8 100644 --- a/src/Entity/Contact.php +++ b/src/Entity/Contact.php @@ -45,7 +45,7 @@ class Contact #[ORM\Column] private ?\DateTimeImmutable $createdAt = null; - #[ORM\OneToMany(mappedBy: 'contact', targetEntity: Posting::class)] + #[ORM\OneToMany(mappedBy: 'contact', targetEntity: Posting::class, orphanRemoval: true)] private Collection $postings; public function __construct() diff --git a/src/Entity/Posting.php b/src/Entity/Posting.php index 394a520..7f8420e 100644 --- a/src/Entity/Posting.php +++ b/src/Entity/Posting.php @@ -3,6 +3,8 @@ namespace App\Entity; use App\Repository\PostingRepository; +use Doctrine\Common\Collections\ArrayCollection; +use Doctrine\Common\Collections\Collection; use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; @@ -34,9 +36,13 @@ class Posting #[ORM\Column] private ?\DateTimeImmutable $createdAt = null; + #[ORM\OneToMany(mappedBy: 'posting', targetEntity: Comment::class, orphanRemoval: true)] + private Collection $comments; + public function __construct() { $this->createdAt = new \DateTimeImmutable(); + $this->comments = new ArrayCollection(); } public function getId(): ?int @@ -108,4 +114,34 @@ class Posting return $this; } + + /** + * @return Collection + */ + public function getComments(): Collection + { + return $this->comments; + } + + public function addComment(Comment $comment): static + { + if (!$this->comments->contains($comment)) { + $this->comments->add($comment); + $comment->setPosting($this); + } + + return $this; + } + + public function removeComment(Comment $comment): static + { + if ($this->comments->removeElement($comment)) { + // set the owning side to null (unless already changed) + if ($comment->getPosting() === $this) { + $comment->setPosting(null); + } + } + + return $this; + } } diff --git a/src/Entity/User.php b/src/Entity/User.php index 35c4540..d2539e0 100644 --- a/src/Entity/User.php +++ b/src/Entity/User.php @@ -45,12 +45,16 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface #[ORM\OneToMany(mappedBy: 'owner', targetEntity: Posting::class, orphanRemoval: true)] private Collection $postings; + #[ORM\OneToMany(mappedBy: 'owner', targetEntity: Comment::class, orphanRemoval: true)] + private Collection $comments; + public function __construct() { $this->createdAt = new \DateTimeImmutable(); $this->postings = new ArrayCollection(); $this->active = true; + $this->comments = new ArrayCollection(); } public function getId(): ?int @@ -198,4 +202,34 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface return $this; } + + /** + * @return Collection + */ + public function getComments(): Collection + { + return $this->comments; + } + + public function addComment(Comment $comment): static + { + if (!$this->comments->contains($comment)) { + $this->comments->add($comment); + $comment->setOwner($this); + } + + return $this; + } + + public function removeComment(Comment $comment): static + { + if ($this->comments->removeElement($comment)) { + // set the owning side to null (unless already changed) + if ($comment->getOwner() === $this) { + $comment->setOwner(null); + } + } + + return $this; + } } diff --git a/src/Factory/CommentFactory.php b/src/Factory/CommentFactory.php new file mode 100644 index 0000000..979db0a --- /dev/null +++ b/src/Factory/CommentFactory.php @@ -0,0 +1,71 @@ + + * + * @method Comment|Proxy create(array|callable $attributes = []) + * @method static Comment|Proxy createOne(array $attributes = []) + * @method static Comment|Proxy find(object|array|mixed $criteria) + * @method static Comment|Proxy findOrCreate(array $attributes) + * @method static Comment|Proxy first(string $sortedField = 'id') + * @method static Comment|Proxy last(string $sortedField = 'id') + * @method static Comment|Proxy random(array $attributes = []) + * @method static Comment|Proxy randomOrCreate(array $attributes = []) + * @method static CommentRepository|RepositoryProxy repository() + * @method static Comment[]|Proxy[] all() + * @method static Comment[]|Proxy[] createMany(int $number, array|callable $attributes = []) + * @method static Comment[]|Proxy[] createSequence(iterable|callable $sequence) + * @method static Comment[]|Proxy[] findBy(array $attributes) + * @method static Comment[]|Proxy[] randomRange(int $min, int $max, array $attributes = []) + * @method static Comment[]|Proxy[] randomSet(int $number, array $attributes = []) + */ +final class CommentFactory extends ModelFactory +{ + /** + * @see https://symfony.com/bundles/ZenstruckFoundryBundle/current/index.html#factories-as-services + * + * @todo inject services if required + */ + public function __construct() + { + parent::__construct(); + } + + /** + * @see https://symfony.com/bundles/ZenstruckFoundryBundle/current/index.html#model-factories + * + * @todo add your default values here + */ + protected function getDefaults(): array + { + return [ + 'createdAt' => \DateTimeImmutable::createFromMutable(self::faker()->dateTime()), + 'message' => self::faker()->text(), + 'owner' => UserFactory::random(), + 'posting' => PostingFactory::random(), + ]; + } + + /** + * @see https://symfony.com/bundles/ZenstruckFoundryBundle/current/index.html#initialization + */ + protected function initialize(): self + { + return $this + // ->afterInstantiate(function(Comment $comment): void {}) + ; + } + + protected static function getClass(): string + { + return Comment::class; + } +} diff --git a/src/Factory/ContactFactory.php b/src/Factory/ContactFactory.php index 61795bc..66f531f 100644 --- a/src/Factory/ContactFactory.php +++ b/src/Factory/ContactFactory.php @@ -53,7 +53,9 @@ final class ContactFactory extends ModelFactory 'birthday' => \DateTime::createFromFormat('Y-m-d', self::faker()->date()), 'position' => self::faker()->randomElement(FakeValues::POSITIONS), 'phone' => self::faker()->phoneNumber(), - 'email' => self::faker()->email() + 'email' => self::faker()->email(), + 'partner' => PartnerFactory::random(), + 'image' => MediaObjectProfileFactory::random() ]; } diff --git a/src/Factory/PartnerFactory.php b/src/Factory/PartnerFactory.php index 62b594c..0460ff1 100644 --- a/src/Factory/PartnerFactory.php +++ b/src/Factory/PartnerFactory.php @@ -57,6 +57,7 @@ final class PartnerFactory extends ModelFactory 'zip' => self::faker()->numberBetween(1000,10000), 'city' => self::faker()->randomElement(FakeValues::CITIES), 'country' => self::faker()->randomElement(FakeValues::COUNTRIES), + 'logo' => MediaObjectLogoFactory::random(), 'website' => 'https://spawntree.de/', ]; } diff --git a/src/Factory/PostingFactory.php b/src/Factory/PostingFactory.php index e10b2eb..ad09452 100644 --- a/src/Factory/PostingFactory.php +++ b/src/Factory/PostingFactory.php @@ -50,6 +50,9 @@ final class PostingFactory extends ModelFactory return [ 'headline' => self::faker()->words(random_int(1, 5), true), 'message' => $randomBoolean ? self::faker()->sentence() : self::faker()->sentences(random_int(1, 3), true), + 'owner' => UserFactory::random(), + 'partner' => PartnerFactory::random(), + 'contact' => $randomBoolean ? ContactFactory::random() : null, ]; } diff --git a/src/Mapper/CommentApiToEntityMapper.php b/src/Mapper/CommentApiToEntityMapper.php new file mode 100644 index 0000000..719614b --- /dev/null +++ b/src/Mapper/CommentApiToEntityMapper.php @@ -0,0 +1,58 @@ +id ? $this->repository->find($dto->id) : new Comment(); + if (!$entity) { + throw new \Exception('Comment not found'); + } + + return $entity; + } + + public function populate(object $from, object $to, array $context): object + { + $dto = $from; + assert($dto instanceof CommentApi); + $entity = $to; + assert($entity instanceof Comment); + + if ($dto->owner) { + $entity->setOwner($this->microMapper->map($dto->owner, User::class, [ + MicroMapperInterface::MAX_DEPTH => 1, + ])); + } else { + $entity->setOwner($this->security->getUser()); + } + $entity->setPosting($dto->posting); + $entity->setMessage($dto->message); + + return $entity; + } +} diff --git a/src/Mapper/CommentEntityToApiMapper.php b/src/Mapper/CommentEntityToApiMapper.php new file mode 100644 index 0000000..7e34279 --- /dev/null +++ b/src/Mapper/CommentEntityToApiMapper.php @@ -0,0 +1,55 @@ +id = $entity->getId(); + + return $dto; + } + + public function populate(object $from, object $to, array $context): object + { + $entity = $from; + $dto = $to; + assert($entity instanceof Comment); + assert($dto instanceof CommentApi); + + $dto->message = $entity->getMessage(); + $dto->owner = $this->microMapper->map($entity->getOwner(), UserApi::class, [ + MicroMapperInterface::MAX_DEPTH => 0, + ]); + + $dto->posting = $this->microMapper->map($entity->getPosting(), PostingApi::class, [ + MicroMapperInterface::MAX_DEPTH => 0, + ]); + + $dto->createdAt = $entity->getCreatedAt(); + + return $dto; + } +} diff --git a/src/Mapper/ContactEntityToApiMapper.php b/src/Mapper/ContactEntityToApiMapper.php index 02bf6d9..151dd3d 100644 --- a/src/Mapper/ContactEntityToApiMapper.php +++ b/src/Mapper/ContactEntityToApiMapper.php @@ -4,8 +4,10 @@ namespace App\Mapper; use App\ApiResource\ContactApi; use App\ApiResource\PartnerApi; +use App\ApiResource\PostingApi; use App\Entity\Contact; use App\Entity\Partner; +use App\Entity\Posting; use Symfonycasts\MicroMapper\AsMapper; use Symfonycasts\MicroMapper\MapperInterface; use Symfonycasts\MicroMapper\MicroMapperInterface; @@ -54,6 +56,12 @@ class ContactEntityToApiMapper implements MapperInterface $dto->email = $entity->getEmail(); $dto->createdAt = $entity->getCreatedAt(); + $dto->postings = array_map(function(Posting $posting) { + return $this->microMapper->map($posting, PostingApi::class, [ + MicroMapperInterface::MAX_DEPTH => 0, + ]); + }, $entity->getPostings()->getValues()); + return $dto; } } diff --git a/src/Mapper/PostingApiToEntityMapper.php b/src/Mapper/PostingApiToEntityMapper.php index e3df541..52cc395 100644 --- a/src/Mapper/PostingApiToEntityMapper.php +++ b/src/Mapper/PostingApiToEntityMapper.php @@ -54,6 +54,8 @@ class PostingApiToEntityMapper implements MapperInterface $entity->setOwner($this->security->getUser()); } + $entity->setPartner($dto->partner); + $entity->setContact($dto->contact); $entity->setMessage($dto->message); return $entity; diff --git a/src/Mapper/PostingEntityToApiMapper.php b/src/Mapper/PostingEntityToApiMapper.php index 6b6f402..b67fbb4 100644 --- a/src/Mapper/PostingEntityToApiMapper.php +++ b/src/Mapper/PostingEntityToApiMapper.php @@ -2,12 +2,13 @@ namespace App\Mapper; +use App\ApiResource\CommentApi; use App\ApiResource\ContactApi; use App\ApiResource\PartnerApi; use App\ApiResource\UserApi; use App\ApiResource\PostingApi; +use App\Entity\Comment; use App\Entity\Posting; -use Symfony\Bundle\SecurityBundle\Security; use Symfonycasts\MicroMapper\AsMapper; use Symfonycasts\MicroMapper\MapperInterface; use Symfonycasts\MicroMapper\MicroMapperInterface; @@ -17,7 +18,6 @@ class PostingEntityToApiMapper implements MapperInterface { public function __construct( private MicroMapperInterface $microMapper, - private Security $security, ) { } @@ -43,18 +43,27 @@ class PostingEntityToApiMapper implements MapperInterface $dto->headline = $entity->getHeadline(); $dto->message = $entity->getMessage(); $dto->owner = $this->microMapper->map($entity->getOwner(), UserApi::class, [ - MicroMapperInterface::MAX_DEPTH => 0, + MicroMapperInterface::MAX_DEPTH => 1, ]); $dto->ownerName = $entity->getOwner()?->getFirstName()." ".$entity->getOwner()?->getLastName(); $dto->partner = $this->microMapper->map($entity->getPartner(), PartnerApi::class, [ - MicroMapperInterface::MAX_DEPTH => 0, + MicroMapperInterface::MAX_DEPTH => 1, ]); - $dto->contact = $this->microMapper->map($entity->getContact(), ContactApi::class, [ - MicroMapperInterface::MAX_DEPTH => 0, - ]); + $dto->contact = null; + if ($entity->getContact() !== null) { + $dto->contact = $this->microMapper->map($entity->getContact(), ContactApi::class, [ + MicroMapperInterface::MAX_DEPTH => 1, + ]); + } + $dto->comments = array_map(function(Comment $comment) { + return $this->microMapper->map($comment, CommentApi::class, [ + MicroMapperInterface::MAX_DEPTH => 1, + ]); + }, $entity->getComments()->getValues()); +//dd($dto); $dto->createdAt = $entity->getCreatedAt(); return $dto; diff --git a/src/Mapper/UserEntityToApiMapper.php b/src/Mapper/UserEntityToApiMapper.php index d82515b..4b893a1 100644 --- a/src/Mapper/UserEntityToApiMapper.php +++ b/src/Mapper/UserEntityToApiMapper.php @@ -40,8 +40,9 @@ class UserEntityToApiMapper implements MapperInterface $dto->email = $entity->getEmail(); $dto->firstName = $entity->getFirstName(); $dto->lastName = $entity->getLastName(); - $dto->postings = array_map(function(Posting $userPost) { - return $this->microMapper->map($userPost, PostingApi::class, [ + + $dto->postings = array_map(function(Posting $posting) { + return $this->microMapper->map($posting, PostingApi::class, [ MicroMapperInterface::MAX_DEPTH => 0, ]); }, $entity->getPostings()->getValues()); diff --git a/src/Repository/CommentRepository.php b/src/Repository/CommentRepository.php new file mode 100644 index 0000000..328f473 --- /dev/null +++ b/src/Repository/CommentRepository.php @@ -0,0 +1,48 @@ + + * + * @method Comment|null find($id, $lockMode = null, $lockVersion = null) + * @method Comment|null findOneBy(array $criteria, array $orderBy = null) + * @method Comment[] findAll() + * @method Comment[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) + */ +class CommentRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, Comment::class); + } + +// /** +// * @return Comment[] Returns an array of Comment objects +// */ +// public function findByExampleField($value): array +// { +// return $this->createQueryBuilder('c') +// ->andWhere('c.exampleField = :val') +// ->setParameter('val', $value) +// ->orderBy('c.id', 'ASC') +// ->setMaxResults(10) +// ->getQuery() +// ->getResult() +// ; +// } + +// public function findOneBySomeField($value): ?Comment +// { +// return $this->createQueryBuilder('c') +// ->andWhere('c.exampleField = :val') +// ->setParameter('val', $value) +// ->getQuery() +// ->getOneOrNullResult() +// ; +// } +} diff --git a/src/Serializer/MediaObjectNormalizer.php b/src/Serializer/MediaObjectNormalizer.php deleted file mode 100644 index 612401a..0000000 --- a/src/Serializer/MediaObjectNormalizer.php +++ /dev/null @@ -1,66 +0,0 @@ - - * @date 25.01.24 - */ - - -namespace App\Serializer; - - -use App\Entity\MediaObject; -use Symfony\Component\DependencyInjection\Attribute\AsDecorator; -use Symfony\Component\Serializer\Normalizer\NormalizerInterface; -use Symfony\Component\Serializer\SerializerAwareInterface; -use Symfony\Component\Serializer\SerializerInterface; -use Vich\UploaderBundle\Storage\StorageInterface; - -#[AsDecorator('api_platform.jsonld.normalizer.item')] -final class MediaObjectNormalizer implements NormalizerInterface, SerializerAwareInterface -{ - private const ALREADY_CALLED = 'MEDIA_OBJECT_NORMALIZER_ALREADY_CALLED'; - - public function __construct( - private StorageInterface $storage, - private NormalizerInterface $normalizer - ) - { - } - - public function normalize($object, ?string $format = null, array $context = []): array|string|int|float|bool|\ArrayObject|null - { - $context[self::ALREADY_CALLED] = true; - - if ($object instanceof MediaObject) { - // Nur für MediaObject die URI generieren - $object->contentUrl = $this->storage->resolveUri($object, 'file'); - } - - return $this->normalizer->normalize($object, $format, $context); - } - - public function supportsNormalization($data, ?string $format = null, array $context = []): bool - { - if (isset($context[self::ALREADY_CALLED])) { - return false; - } - - return $this->normalizer->supportsNormalization($data, $format, $context); - } - - public function setSerializer(SerializerInterface $serializer): void - { - if ($this->normalizer instanceof SerializerAwareInterface) { - $this->normalizer->setSerializer($serializer); - } - } - - public function getSupportedTypes(?string $format): array - { - if (method_exists($this->normalizer, 'getSupportedTypes')) { - return $this->normalizer->getSupportedTypes($format); - } - - return 'jsonld' === $format ? ['*' => true] : []; - } -} \ No newline at end of file