diff --git a/composer.lock b/composer.lock index 0632f03dd6..700d08fa63 100644 --- a/composer.lock +++ b/composer.lock @@ -182,16 +182,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.226.0", + "version": "3.228.5", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "d76d4fe0fa603ddc3f5c54d9664438dc1a808859" + "reference": "8b6e626e02c42310c3ce8615acc7b2c992e48c97" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/d76d4fe0fa603ddc3f5c54d9664438dc1a808859", - "reference": "d76d4fe0fa603ddc3f5c54d9664438dc1a808859", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/8b6e626e02c42310c3ce8615acc7b2c992e48c97", + "reference": "8b6e626e02c42310c3ce8615acc7b2c992e48c97", "shasum": "" }, "require": { @@ -199,9 +199,9 @@ "ext-json": "*", "ext-pcre": "*", "ext-simplexml": "*", - "guzzlehttp/guzzle": "^5.3.3 || ^6.2.1 || ^7.0", + "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5", "guzzlehttp/promises": "^1.4.0", - "guzzlehttp/psr7": "^1.7.0 || ^2.1.1", + "guzzlehttp/psr7": "^1.8.5 || ^2.3", "mtdowling/jmespath.php": "^2.6", "php": ">=5.5" }, @@ -267,9 +267,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.226.0" + "source": "https://github.com/aws/aws-sdk-php/tree/3.228.5" }, - "time": "2022-06-16T18:14:10+00:00" + "time": "2022-06-28T18:13:37+00:00" }, { "name": "beberlei/assert", @@ -959,30 +959,34 @@ }, { "name": "doctrine/annotations", - "version": "1.13.2", + "version": "1.14.2", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "5b668aef16090008790395c02c893b1ba13f7e08" + "reference": "ad785217c1e9555a7d6c6c8c9f406395a5e2882b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/5b668aef16090008790395c02c893b1ba13f7e08", - "reference": "5b668aef16090008790395c02c893b1ba13f7e08", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/ad785217c1e9555a7d6c6c8c9f406395a5e2882b", + "reference": "ad785217c1e9555a7d6c6c8c9f406395a5e2882b", "shasum": "" }, "require": { - "doctrine/lexer": "1.*", + "doctrine/lexer": "^1 || ^2", "ext-tokenizer": "*", "php": "^7.1 || ^8.0", "psr/cache": "^1 || ^2 || ^3" }, "require-dev": { "doctrine/cache": "^1.11 || ^2.0", - "doctrine/coding-standard": "^6.0 || ^8.1", - "phpstan/phpstan": "^0.12.20", - "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5", - "symfony/cache": "^4.4 || ^5.2" + "doctrine/coding-standard": "^9 || ^10", + "phpstan/phpstan": "~1.4.10 || ^1.8.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "symfony/cache": "^4.4 || ^5.4 || ^6", + "vimeo/psalm": "^4.10" + }, + "suggest": { + "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" }, "type": "library", "autoload": { @@ -1025,9 +1029,9 @@ ], "support": { "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.13.2" + "source": "https://github.com/doctrine/annotations/tree/1.14.2" }, - "time": "2021-08-05T19:00:23+00:00" + "time": "2022-12-15T06:48:22+00:00" }, { "name": "doctrine/cache", @@ -1124,31 +1128,34 @@ }, { "name": "doctrine/collections", - "version": "1.6.8", + "version": "2.1.2", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "1958a744696c6bb3bb0d28db2611dc11610e78af" + "reference": "db8cda536a034337f7dd63febecc713d4957f9ee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/1958a744696c6bb3bb0d28db2611dc11610e78af", - "reference": "1958a744696c6bb3bb0d28db2611dc11610e78af", + "url": "https://api.github.com/repos/doctrine/collections/zipball/db8cda536a034337f7dd63febecc713d4957f9ee", + "reference": "db8cda536a034337f7dd63febecc713d4957f9ee", "shasum": "" }, "require": { - "php": "^7.1.3 || ^8.0" + "doctrine/deprecations": "^1", + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "^0.12", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.1.5", - "vimeo/psalm": "^4.2.1" + "doctrine/coding-standard": "^10.0", + "ext-json": "*", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^4.22" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections" + "Doctrine\\Common\\Collections\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1187,22 +1194,36 @@ ], "support": { "issues": "https://github.com/doctrine/collections/issues", - "source": "https://github.com/doctrine/collections/tree/1.6.8" + "source": "https://github.com/doctrine/collections/tree/2.1.2" }, - "time": "2021-08-10T18:51:53+00:00" + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcollections", + "type": "tidelift" + } + ], + "time": "2022-12-27T23:41:38+00:00" }, { "name": "doctrine/common", - "version": "3.3.0", + "version": "3.4.3", "source": { "type": "git", "url": "https://github.com/doctrine/common.git", - "reference": "c824e95d4c83b7102d8bc60595445a6f7d540f96" + "reference": "8b5e5650391f851ed58910b3e3d48a71062eeced" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/c824e95d4c83b7102d8bc60595445a6f7d540f96", - "reference": "c824e95d4c83b7102d8bc60595445a6f7d540f96", + "url": "https://api.github.com/repos/doctrine/common/zipball/8b5e5650391f851ed58910b3e3d48a71062eeced", + "reference": "8b5e5650391f851ed58910b3e3d48a71062eeced", "shasum": "" }, "require": { @@ -1210,18 +1231,19 @@ "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9.0", + "doctrine/coding-standard": "^9.0 || ^10.0", + "doctrine/collections": "^1", "phpstan/phpstan": "^1.4.1", "phpstan/phpstan-phpunit": "^1", "phpunit/phpunit": "^7.5.20 || ^8.5 || ^9.0", "squizlabs/php_codesniffer": "^3.0", - "symfony/phpunit-bridge": "^4.0.5", + "symfony/phpunit-bridge": "^6.1", "vimeo/psalm": "^4.4" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" + "Doctrine\\Common\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1263,7 +1285,7 @@ ], "support": { "issues": "https://github.com/doctrine/common/issues", - "source": "https://github.com/doctrine/common/tree/3.3.0" + "source": "https://github.com/doctrine/common/tree/3.4.3" }, "funding": [ { @@ -1279,7 +1301,7 @@ "type": "tidelift" } ], - "time": "2022-02-05T18:28:51+00:00" + "time": "2022-10-09T11:47:59+00:00" }, { "name": "doctrine/data-fixtures", @@ -1365,38 +1387,38 @@ }, { "name": "doctrine/dbal", - "version": "3.3.7", + "version": "3.5.3", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "9f79d4650430b582f4598fe0954ef4d52fbc0a8a" + "reference": "88fa7e5189fd5ec6682477044264dc0ed4e3aa1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/9f79d4650430b582f4598fe0954ef4d52fbc0a8a", - "reference": "9f79d4650430b582f4598fe0954ef4d52fbc0a8a", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/88fa7e5189fd5ec6682477044264dc0ed4e3aa1e", + "reference": "88fa7e5189fd5ec6682477044264dc0ed4e3aa1e", "shasum": "" }, "require": { "composer-runtime-api": "^2", "doctrine/cache": "^1.11|^2.0", "doctrine/deprecations": "^0.5.3|^1", - "doctrine/event-manager": "^1.0", - "php": "^7.3 || ^8.0", + "doctrine/event-manager": "^1|^2", + "php": "^7.4 || ^8.0", "psr/cache": "^1|^2|^3", "psr/log": "^1|^2|^3" }, "require-dev": { - "doctrine/coding-standard": "9.0.0", - "jetbrains/phpstorm-stubs": "2022.1", - "phpstan/phpstan": "1.7.13", - "phpstan/phpstan-strict-rules": "^1.2", - "phpunit/phpunit": "9.5.20", - "psalm/plugin-phpunit": "0.16.1", - "squizlabs/php_codesniffer": "3.7.0", - "symfony/cache": "^5.2|^6.0", - "symfony/console": "^2.7|^3.0|^4.0|^5.0|^6.0", - "vimeo/psalm": "4.23.0" + "doctrine/coding-standard": "11.0.0", + "jetbrains/phpstorm-stubs": "2022.3", + "phpstan/phpstan": "1.9.4", + "phpstan/phpstan-strict-rules": "^1.4", + "phpunit/phpunit": "9.5.27", + "psalm/plugin-phpunit": "0.18.4", + "squizlabs/php_codesniffer": "3.7.1", + "symfony/cache": "^5.4|^6.0", + "symfony/console": "^4.4|^5.4|^6.0", + "vimeo/psalm": "4.30.0" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -1456,7 +1478,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.3.7" + "source": "https://github.com/doctrine/dbal/tree/3.5.3" }, "funding": [ { @@ -1472,7 +1494,7 @@ "type": "tidelift" } ], - "time": "2022-06-13T21:43:03+00:00" + "time": "2023-01-12T10:21:44+00:00" }, { "name": "doctrine/deprecations", @@ -1801,37 +1823,35 @@ }, { "name": "doctrine/event-manager", - "version": "1.1.1", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/event-manager.git", - "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f" + "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/41370af6a30faa9dc0368c4a6814d596e81aba7f", - "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/95aa4cb529f1e96576f3fda9f5705ada4056a520", + "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520", "shasum": "" }, "require": { + "doctrine/deprecations": "^0.5.3 || ^1", "php": "^7.1 || ^8.0" }, "conflict": { - "doctrine/common": "<2.9@dev" + "doctrine/common": "<2.9" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpunit/phpunit": "^7.0" + "doctrine/coding-standard": "^9 || ^10", + "phpstan/phpstan": "~1.4.10 || ^1.8.8", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.24" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" + "Doctrine\\Common\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1875,7 +1895,7 @@ ], "support": { "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/1.1.x" + "source": "https://github.com/doctrine/event-manager/tree/1.2.0" }, "funding": [ { @@ -1891,32 +1911,32 @@ "type": "tidelift" } ], - "time": "2020-05-29T18:28:51+00:00" + "time": "2022-10-12T20:51:15+00:00" }, { "name": "doctrine/inflector", - "version": "2.0.4", + "version": "2.0.6", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" + "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/d9d313a36c872fd6ee06d9a6cbcf713eaa40f024", + "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" + "doctrine/coding-standard": "^10", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^8.5 || ^9.5", + "vimeo/psalm": "^4.25" }, "type": "library", "autoload": { @@ -1966,7 +1986,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.4" + "source": "https://github.com/doctrine/inflector/tree/2.0.6" }, "funding": [ { @@ -1982,34 +2002,34 @@ "type": "tidelift" } ], - "time": "2021-10-22T20:16:43+00:00" + "time": "2022-10-20T09:10:12+00:00" }, { "name": "doctrine/instantiator", - "version": "1.4.1", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b", + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9", + "doctrine/coding-standard": "^9 || ^11", "ext-pdo": "*", "ext-phar": "*", "phpbench/phpbench": "^0.16 || ^1", "phpstan/phpstan": "^1.4", "phpstan/phpstan-phpunit": "^1", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.22" + "vimeo/psalm": "^4.30 || ^5.4" }, "type": "library", "autoload": { @@ -2036,7 +2056,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.1" + "source": "https://github.com/doctrine/instantiator/tree/1.5.0" }, "funding": [ { @@ -2052,7 +2072,7 @@ "type": "tidelift" } ], - "time": "2022-03-03T08:28:38+00:00" + "time": "2022-12-30T00:15:36+00:00" }, { "name": "doctrine/lexer", @@ -2241,53 +2261,55 @@ }, { "name": "doctrine/orm", - "version": "2.12.3", + "version": "2.14.1", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "c05e1709e9ffb9abe8d37260a78975cc816ee385" + "reference": "de7eee5ed7b1b35c99b118f26f210a8281e6db8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/c05e1709e9ffb9abe8d37260a78975cc816ee385", - "reference": "c05e1709e9ffb9abe8d37260a78975cc816ee385", + "url": "https://api.github.com/repos/doctrine/orm/zipball/de7eee5ed7b1b35c99b118f26f210a8281e6db8e", + "reference": "de7eee5ed7b1b35c99b118f26f210a8281e6db8e", "shasum": "" }, "require": { "composer-runtime-api": "^2", "doctrine/cache": "^1.12.1 || ^2.1.1", - "doctrine/collections": "^1.5", + "doctrine/collections": "^1.5 || ^2.0", "doctrine/common": "^3.0.3", "doctrine/dbal": "^2.13.1 || ^3.2", "doctrine/deprecations": "^0.5.3 || ^1", - "doctrine/event-manager": "^1.1", + "doctrine/event-manager": "^1.2 || ^2", "doctrine/inflector": "^1.4 || ^2.0", "doctrine/instantiator": "^1.3", - "doctrine/lexer": "^1.2.3", + "doctrine/lexer": "^1.2.3 || ^2", "doctrine/persistence": "^2.4 || ^3", "ext-ctype": "*", "php": "^7.1 || ^8.0", "psr/cache": "^1 || ^2 || ^3", - "symfony/console": "^3.0 || ^4.0 || ^5.0 || ^6.0", + "symfony/console": "^4.2 || ^5.0 || ^6.0", "symfony/polyfill-php72": "^1.23", "symfony/polyfill-php80": "^1.16" }, "conflict": { - "doctrine/annotations": "<1.13 || >= 2.0" + "doctrine/annotations": "<1.13 || >= 3.0" }, "require-dev": { - "doctrine/annotations": "^1.13", - "doctrine/coding-standard": "^9.0", + "doctrine/annotations": "^1.13 || ^2", + "doctrine/coding-standard": "^9.0.2 || ^11.0", "phpbench/phpbench": "^0.16.10 || ^1.0", - "phpstan/phpstan": "~1.4.10 || 1.7.13", + "phpstan/phpstan": "~1.4.10 || 1.9.8", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", "psr/log": "^1 || ^2 || ^3", - "squizlabs/php_codesniffer": "3.7.0", + "squizlabs/php_codesniffer": "3.7.1", "symfony/cache": "^4.4 || ^5.4 || ^6.0", + "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2", "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0", - "vimeo/psalm": "4.23.0" + "vimeo/psalm": "4.30.0 || 5.4.0" }, "suggest": { + "ext-dom": "Provides support for XSD validation for XML mapping files", "symfony/cache": "Provides cache support for Setup Tool with doctrine/cache 2.0", "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" }, @@ -2334,45 +2356,42 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.12.3" + "source": "https://github.com/doctrine/orm/tree/2.14.1" }, - "time": "2022-06-16T13:42:23+00:00" + "time": "2023-01-16T18:36:59+00:00" }, { "name": "doctrine/persistence", - "version": "3.0.2", + "version": "3.1.2", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "25ec98a8cbd1f850e60fdb62c0ef77c162da8704" + "reference": "b44d128311af55275dbed6a4558ca59a2b9f9387" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/25ec98a8cbd1f850e60fdb62c0ef77c162da8704", - "reference": "25ec98a8cbd1f850e60fdb62c0ef77c162da8704", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/b44d128311af55275dbed6a4558ca59a2b9f9387", + "reference": "b44d128311af55275dbed6a4558ca59a2b9f9387", "shasum": "" }, "require": { - "doctrine/collections": "^1.0", - "doctrine/event-manager": "^1.0", + "doctrine/event-manager": "^1 || ^2", "php": "^7.2 || ^8.0", "psr/cache": "^1.0 || ^2.0 || ^3.0" }, "conflict": { - "doctrine/annotations": "<1.7 || >=2.0", "doctrine/common": "<2.10" }, "require-dev": { "composer/package-versions-deprecated": "^1.11", - "doctrine/annotations": "^1.7", - "doctrine/coding-standard": "^9.0", + "doctrine/coding-standard": "^11", "doctrine/common": "^3.0", - "phpstan/phpstan": "1.5.0", + "phpstan/phpstan": "1.9.4", "phpstan/phpstan-phpunit": "^1", "phpstan/phpstan-strict-rules": "^1.1", "phpunit/phpunit": "^8.5 || ^9.5", "symfony/cache": "^4.4 || ^5.4 || ^6.0", - "vimeo/psalm": "4.22.0" + "vimeo/psalm": "4.30.0 || 5.3.0" }, "type": "library", "autoload": { @@ -2421,7 +2440,7 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/3.0.2" + "source": "https://github.com/doctrine/persistence/tree/3.1.2" }, "funding": [ { @@ -2437,20 +2456,20 @@ "type": "tidelift" } ], - "time": "2022-05-06T06:10:05+00:00" + "time": "2022-12-19T13:58:18+00:00" }, { "name": "doctrine/sql-formatter", - "version": "1.1.2", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/doctrine/sql-formatter.git", - "reference": "20c39c2de286a9d3262cc8ed282a4ae60e265894" + "reference": "25a06c7bf4c6b8218f47928654252863ffc890a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/20c39c2de286a9d3262cc8ed282a4ae60e265894", - "reference": "20c39c2de286a9d3262cc8ed282a4ae60e265894", + "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/25a06c7bf4c6b8218f47928654252863ffc890a5", + "reference": "25a06c7bf4c6b8218f47928654252863ffc890a5", "shasum": "" }, "require": { @@ -2476,7 +2495,7 @@ { "name": "Jeremy Dorn", "email": "jeremy@jeremydorn.com", - "homepage": "http://jeremydorn.com/" + "homepage": "https://jeremydorn.com/" } ], "description": "a PHP SQL highlighting library", @@ -2487,22 +2506,22 @@ ], "support": { "issues": "https://github.com/doctrine/sql-formatter/issues", - "source": "https://github.com/doctrine/sql-formatter/tree/1.1.2" + "source": "https://github.com/doctrine/sql-formatter/tree/1.1.3" }, - "time": "2021-11-05T11:11:14+00:00" + "time": "2022-05-23T21:33:49+00:00" }, { "name": "egulias/email-validator", - "version": "3.2", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "a5ed8d58ed0c340a7c2109f587951b1c84cf6286" + "reference": "f88dcf4b14af14a98ad96b14b2b317969eab6715" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/a5ed8d58ed0c340a7c2109f587951b1c84cf6286", - "reference": "a5ed8d58ed0c340a7c2109f587951b1c84cf6286", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/f88dcf4b14af14a98ad96b14b2b317969eab6715", + "reference": "f88dcf4b14af14a98ad96b14b2b317969eab6715", "shasum": "" }, "require": { @@ -2549,7 +2568,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/3.2" + "source": "https://github.com/egulias/EmailValidator/tree/3.2.1" }, "funding": [ { @@ -2557,7 +2576,7 @@ "type": "github" } ], - "time": "2022-05-28T22:19:18+00:00" + "time": "2022-06-18T20:57:19+00:00" }, { "name": "elasticsearch/elasticsearch", @@ -2628,16 +2647,16 @@ }, { "name": "eluceo/ical", - "version": "2.6.0", + "version": "2.7.0", "source": { "type": "git", "url": "https://github.com/markuspoerschke/iCal.git", - "reference": "fac5e76090a0de4e198f07847f1882e311642a83" + "reference": "a10295c70529f5da4304bef145efdc7ad3be46cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/markuspoerschke/iCal/zipball/fac5e76090a0de4e198f07847f1882e311642a83", - "reference": "fac5e76090a0de4e198f07847f1882e311642a83", + "url": "https://api.github.com/repos/markuspoerschke/iCal/zipball/a10295c70529f5da4304bef145efdc7ad3be46cf", + "reference": "a10295c70529f5da4304bef145efdc7ad3be46cf", "shasum": "" }, "require": { @@ -2688,7 +2707,7 @@ "issues": "https://github.com/markuspoerschke/iCal/issues", "source": "https://github.com/markuspoerschke/iCal" }, - "time": "2022-06-17T11:40:04+00:00" + "time": "2022-06-21T14:23:15+00:00" }, { "name": "exercise/htmlpurifier-bundle", @@ -4050,16 +4069,16 @@ }, { "name": "league/flysystem", - "version": "3.0.21", + "version": "3.0.23", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "8f1fcf9d2304ff77a006aa36dd2cb5f236999b12" + "reference": "5b461a96d01144744077343908a2c196682c71e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/8f1fcf9d2304ff77a006aa36dd2cb5f236999b12", - "reference": "8f1fcf9d2304ff77a006aa36dd2cb5f236999b12", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/5b461a96d01144744077343908a2c196682c71e6", + "reference": "5b461a96d01144744077343908a2c196682c71e6", "shasum": "" }, "require": { @@ -4120,7 +4139,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.0.21" + "source": "https://github.com/thephpleague/flysystem/tree/3.0.23" }, "funding": [ { @@ -4136,20 +4155,20 @@ "type": "tidelift" } ], - "time": "2022-06-12T17:54:28+00:00" + "time": "2022-06-29T08:19:13+00:00" }, { "name": "league/flysystem-aws-s3-v3", - "version": "3.0.21", + "version": "3.0.22", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git", - "reference": "f4ee238279f1eb39a32539a18ef845db7251fd05" + "reference": "e5fc508faf83df2fbd2a215d2b4bea9584906221" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/f4ee238279f1eb39a32539a18ef845db7251fd05", - "reference": "f4ee238279f1eb39a32539a18ef845db7251fd05", + "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/e5fc508faf83df2fbd2a215d2b4bea9584906221", + "reference": "e5fc508faf83df2fbd2a215d2b4bea9584906221", "shasum": "" }, "require": { @@ -4190,9 +4209,9 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem-aws-s3-v3/issues", - "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.0.21" + "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.0.22" }, - "time": "2022-06-12T17:34:31+00:00" + "time": "2022-06-29T07:09:46+00:00" }, { "name": "league/mime-type-detection", @@ -6230,16 +6249,16 @@ }, { "name": "sentry/sentry", - "version": "3.6.0", + "version": "3.6.1", "source": { "type": "git", "url": "https://github.com/getsentry/sentry-php.git", - "reference": "6d1a6ee29c558be373bfe08d454a3c116c02dd0d" + "reference": "5b8f2934b0b20bb01da11c76985ceb5bd6c6af91" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/6d1a6ee29c558be373bfe08d454a3c116c02dd0d", - "reference": "6d1a6ee29c558be373bfe08d454a3c116c02dd0d", + "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/5b8f2934b0b20bb01da11c76985ceb5bd6c6af91", + "reference": "5b8f2934b0b20bb01da11c76985ceb5bd6c6af91", "shasum": "" }, "require": { @@ -6319,7 +6338,7 @@ ], "support": { "issues": "https://github.com/getsentry/sentry-php/issues", - "source": "https://github.com/getsentry/sentry-php/tree/3.6.0" + "source": "https://github.com/getsentry/sentry-php/tree/3.6.1" }, "funding": [ { @@ -6331,7 +6350,7 @@ "type": "custom" } ], - "time": "2022-06-09T20:33:39+00:00" + "time": "2022-06-27T07:58:00+00:00" }, { "name": "sentry/sentry-symfony", @@ -6735,16 +6754,16 @@ }, { "name": "symfony/cache", - "version": "v6.0.9", + "version": "v6.0.10", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "6cc467d38eca15ab0efb4d927b00b6f9e9bd8c73" + "reference": "73c782b399c58d80504704bbaeb9990b7f9aa6f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/6cc467d38eca15ab0efb4d927b00b6f9e9bd8c73", - "reference": "6cc467d38eca15ab0efb4d927b00b6f9e9bd8c73", + "url": "https://api.github.com/repos/symfony/cache/zipball/73c782b399c58d80504704bbaeb9990b7f9aa6f6", + "reference": "73c782b399c58d80504704bbaeb9990b7f9aa6f6", "shasum": "" }, "require": { @@ -6808,7 +6827,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.0.9" + "source": "https://github.com/symfony/cache/tree/v6.0.10" }, "funding": [ { @@ -6824,20 +6843,20 @@ "type": "tidelift" } ], - "time": "2022-05-21T13:33:31+00:00" + "time": "2022-06-19T12:07:20+00:00" }, { "name": "symfony/cache-contracts", - "version": "v3.1.0", + "version": "v3.2.0", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "2eab7fa459af6d75c6463e63e633b667a9b761d3" + "reference": "e8d1a5fc43534063204b74c080ebe36307d12271" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/2eab7fa459af6d75c6463e63e633b667a9b761d3", - "reference": "2eab7fa459af6d75c6463e63e633b667a9b761d3", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/e8d1a5fc43534063204b74c080ebe36307d12271", + "reference": "e8d1a5fc43534063204b74c080ebe36307d12271", "shasum": "" }, "require": { @@ -6850,7 +6869,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.1-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -6887,7 +6906,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v3.1.0" + "source": "https://github.com/symfony/cache-contracts/tree/v3.2.0" }, "funding": [ { @@ -6903,7 +6922,7 @@ "type": "tidelift" } ], - "time": "2022-02-25T11:15:52+00:00" + "time": "2022-11-25T10:21:52+00:00" }, { "name": "symfony/config", @@ -6985,16 +7004,16 @@ }, { "name": "symfony/console", - "version": "v6.1.1", + "version": "v6.2.3", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "6187424023fbffcd757789aeb517c9161b1eabee" + "reference": "0f579613e771dba2dbb8211c382342a641f5da06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/6187424023fbffcd757789aeb517c9161b1eabee", - "reference": "6187424023fbffcd757789aeb517c9161b1eabee", + "url": "https://api.github.com/repos/symfony/console/zipball/0f579613e771dba2dbb8211c382342a641f5da06", + "reference": "0f579613e771dba2dbb8211c382342a641f5da06", "shasum": "" }, "require": { @@ -7061,7 +7080,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.1.1" + "source": "https://github.com/symfony/console/tree/v6.2.3" }, "funding": [ { @@ -7077,20 +7096,20 @@ "type": "tidelift" } ], - "time": "2022-06-08T14:02:09+00:00" + "time": "2022-12-28T14:26:22+00:00" }, { "name": "symfony/dependency-injection", - "version": "v6.0.9", + "version": "v6.0.10", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "eb0945f285285861a6a6b95b8e7f5881680c0d75" + "reference": "533a7ead2f1d15e9abfe4709ebdda4f7cab2a431" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/eb0945f285285861a6a6b95b8e7f5881680c0d75", - "reference": "eb0945f285285861a6a6b95b8e7f5881680c0d75", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/533a7ead2f1d15e9abfe4709ebdda4f7cab2a431", + "reference": "533a7ead2f1d15e9abfe4709ebdda4f7cab2a431", "shasum": "" }, "require": { @@ -7149,7 +7168,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v6.0.9" + "source": "https://github.com/symfony/dependency-injection/tree/v6.0.10" }, "funding": [ { @@ -7165,20 +7184,20 @@ "type": "tidelift" } ], - "time": "2022-05-27T06:40:13+00:00" + "time": "2022-06-26T13:01:22+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.1.0", + "version": "v3.2.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918" + "reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918", - "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/1ee04c65529dea5d8744774d474e7cbd2f1206d3", + "reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3", "shasum": "" }, "require": { @@ -7187,7 +7206,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.1-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -7216,7 +7235,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.1.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.0" }, "funding": [ { @@ -7232,20 +7251,20 @@ "type": "tidelift" } ], - "time": "2022-02-25T11:15:52+00:00" + "time": "2022-11-25T10:21:52+00:00" }, { "name": "symfony/doctrine-bridge", - "version": "v6.0.9", + "version": "v6.0.10", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "34599e7deb63ec68ad72e206c2401a5448249783" + "reference": "d61613cc116822d1f194993baecb025ba58251e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/34599e7deb63ec68ad72e206c2401a5448249783", - "reference": "34599e7deb63ec68ad72e206c2401a5448249783", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/d61613cc116822d1f194993baecb025ba58251e7", + "reference": "d61613cc116822d1f194993baecb025ba58251e7", "shasum": "" }, "require": { @@ -7331,7 +7350,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v6.0.9" + "source": "https://github.com/symfony/doctrine-bridge/tree/v6.0.10" }, "funding": [ { @@ -7347,7 +7366,7 @@ "type": "tidelift" } ], - "time": "2022-05-27T06:30:15+00:00" + "time": "2022-06-21T07:16:22+00:00" }, { "name": "symfony/doctrine-messenger", @@ -7647,16 +7666,16 @@ }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.1.0", + "version": "v3.2.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "02ff5eea2f453731cfbc6bc215e456b781480448" + "reference": "0782b0b52a737a05b4383d0df35a474303cabdae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/02ff5eea2f453731cfbc6bc215e456b781480448", - "reference": "02ff5eea2f453731cfbc6bc215e456b781480448", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0782b0b52a737a05b4383d0df35a474303cabdae", + "reference": "0782b0b52a737a05b4383d0df35a474303cabdae", "shasum": "" }, "require": { @@ -7669,7 +7688,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.1-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -7706,7 +7725,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.1.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.0" }, "funding": [ { @@ -7722,20 +7741,20 @@ "type": "tidelift" } ], - "time": "2022-02-25T11:15:52+00:00" + "time": "2022-11-25T10:21:52+00:00" }, { "name": "symfony/expression-language", - "version": "v6.0.8", + "version": "v6.0.10", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "7affe5d5e579cd89c664b364f74ce2d01d57cf29" + "reference": "add878003a70a37a7e87ac04f16383e7eef55d9a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/7affe5d5e579cd89c664b364f74ce2d01d57cf29", - "reference": "7affe5d5e579cd89c664b364f74ce2d01d57cf29", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/add878003a70a37a7e87ac04f16383e7eef55d9a", + "reference": "add878003a70a37a7e87ac04f16383e7eef55d9a", "shasum": "" }, "require": { @@ -7769,7 +7788,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v6.0.8" + "source": "https://github.com/symfony/expression-language/tree/v6.0.10" }, "funding": [ { @@ -7785,20 +7804,20 @@ "type": "tidelift" } ], - "time": "2022-04-12T16:11:42+00:00" + "time": "2022-06-19T12:07:20+00:00" }, { "name": "symfony/filesystem", - "version": "v6.1.0", + "version": "v6.1.4", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "3132d2f43ca799c2aa099f9738d98228c56baa5d" + "reference": "3f39c04d2630c34019907b02f85672dac99f8659" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/3132d2f43ca799c2aa099f9738d98228c56baa5d", - "reference": "3132d2f43ca799c2aa099f9738d98228c56baa5d", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/3f39c04d2630c34019907b02f85672dac99f8659", + "reference": "3f39c04d2630c34019907b02f85672dac99f8659", "shasum": "" }, "require": { @@ -7832,7 +7851,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.1.0" + "source": "https://github.com/symfony/filesystem/tree/v6.1.4" }, "funding": [ { @@ -7848,20 +7867,20 @@ "type": "tidelift" } ], - "time": "2022-05-21T13:34:40+00:00" + "time": "2022-08-02T16:17:38+00:00" }, { "name": "symfony/finder", - "version": "v6.1.0", + "version": "v6.1.3", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "45b8beb69d6eb3b05a65689ebfd4222326773f8f" + "reference": "39696bff2c2970b3779a5cac7bf9f0b88fc2b709" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/45b8beb69d6eb3b05a65689ebfd4222326773f8f", - "reference": "45b8beb69d6eb3b05a65689ebfd4222326773f8f", + "url": "https://api.github.com/repos/symfony/finder/zipball/39696bff2c2970b3779a5cac7bf9f0b88fc2b709", + "reference": "39696bff2c2970b3779a5cac7bf9f0b88fc2b709", "shasum": "" }, "require": { @@ -7896,7 +7915,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.1.0" + "source": "https://github.com/symfony/finder/tree/v6.1.3" }, "funding": [ { @@ -7912,7 +7931,7 @@ "type": "tidelift" } ], - "time": "2022-04-15T08:08:08+00:00" + "time": "2022-07-29T07:42:06+00:00" }, { "name": "symfony/flex", @@ -7981,16 +8000,16 @@ }, { "name": "symfony/framework-bundle", - "version": "v6.0.9", + "version": "v6.0.10", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "9fac94a31bcf79f9aa0e25074392c165844d66d5" + "reference": "1a42efe7a1821497b26facd591efb4fedcf734e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/9fac94a31bcf79f9aa0e25074392c165844d66d5", - "reference": "9fac94a31bcf79f9aa0e25074392c165844d66d5", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/1a42efe7a1821497b26facd591efb4fedcf734e2", + "reference": "1a42efe7a1821497b26facd591efb4fedcf734e2", "shasum": "" }, "require": { @@ -8109,7 +8128,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v6.0.9" + "source": "https://github.com/symfony/framework-bundle/tree/v6.0.10" }, "funding": [ { @@ -8125,7 +8144,7 @@ "type": "tidelift" } ], - "time": "2022-05-27T06:30:15+00:00" + "time": "2022-06-19T13:16:44+00:00" }, { "name": "symfony/http-client", @@ -8213,16 +8232,16 @@ }, { "name": "symfony/http-client-contracts", - "version": "v3.1.0", + "version": "v3.2.0", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "fd038f08c623ab5d22b26e9ba35afe8c79071800" + "reference": "c5f587eb445224ddfeb05b5ee703476742d730bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/fd038f08c623ab5d22b26e9ba35afe8c79071800", - "reference": "fd038f08c623ab5d22b26e9ba35afe8c79071800", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/c5f587eb445224ddfeb05b5ee703476742d730bf", + "reference": "c5f587eb445224ddfeb05b5ee703476742d730bf", "shasum": "" }, "require": { @@ -8234,7 +8253,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.1-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -8274,7 +8293,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v3.1.0" + "source": "https://github.com/symfony/http-client-contracts/tree/v3.2.0" }, "funding": [ { @@ -8290,20 +8309,20 @@ "type": "tidelift" } ], - "time": "2022-04-22T07:30:54+00:00" + "time": "2022-11-25T10:21:52+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.0.9", + "version": "v6.0.10", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "05abe9aab47decfd793632787d0c6a25268e2a5b" + "reference": "47f2aa677a96ff3b79d2ed70052adf75b16824a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/05abe9aab47decfd793632787d0c6a25268e2a5b", - "reference": "05abe9aab47decfd793632787d0c6a25268e2a5b", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/47f2aa677a96ff3b79d2ed70052adf75b16824a9", + "reference": "47f2aa677a96ff3b79d2ed70052adf75b16824a9", "shasum": "" }, "require": { @@ -8346,7 +8365,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.0.9" + "source": "https://github.com/symfony/http-foundation/tree/v6.0.10" }, "funding": [ { @@ -8362,20 +8381,20 @@ "type": "tidelift" } ], - "time": "2022-05-21T13:33:31+00:00" + "time": "2022-06-19T13:16:44+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.0.9", + "version": "v6.0.10", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "e78407f2a7b683fd1269057aa39355d77ddbcff9" + "reference": "fa3e92a78c3f311573671961c7f7a2c5bce0f54d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/e78407f2a7b683fd1269057aa39355d77ddbcff9", - "reference": "e78407f2a7b683fd1269057aa39355d77ddbcff9", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/fa3e92a78c3f311573671961c7f7a2c5bce0f54d", + "reference": "fa3e92a78c3f311573671961c7f7a2c5bce0f54d", "shasum": "" }, "require": { @@ -8455,7 +8474,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.0.9" + "source": "https://github.com/symfony/http-kernel/tree/v6.0.10" }, "funding": [ { @@ -8471,7 +8490,7 @@ "type": "tidelift" } ], - "time": "2022-05-27T07:14:30+00:00" + "time": "2022-06-26T17:02:18+00:00" }, { "name": "symfony/ldap", @@ -8550,16 +8569,16 @@ }, { "name": "symfony/lock", - "version": "v6.0.7", + "version": "v6.0.10", "source": { "type": "git", "url": "https://github.com/symfony/lock.git", - "reference": "dcbb2a00ddf90f0ea8d370c354e0cde1303bf4a5" + "reference": "82fb600a6e02ed70cba372d80a489f4be7f709da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/lock/zipball/dcbb2a00ddf90f0ea8d370c354e0cde1303bf4a5", - "reference": "dcbb2a00ddf90f0ea8d370c354e0cde1303bf4a5", + "url": "https://api.github.com/repos/symfony/lock/zipball/82fb600a6e02ed70cba372d80a489f4be7f709da", + "reference": "82fb600a6e02ed70cba372d80a489f4be7f709da", "shasum": "" }, "require": { @@ -8607,7 +8626,7 @@ "semaphore" ], "support": { - "source": "https://github.com/symfony/lock/tree/v6.0.7" + "source": "https://github.com/symfony/lock/tree/v6.0.10" }, "funding": [ { @@ -8623,7 +8642,7 @@ "type": "tidelift" } ], - "time": "2022-03-22T16:12:04+00:00" + "time": "2022-06-09T15:15:43+00:00" }, { "name": "symfony/mailchimp-mailer", @@ -8692,16 +8711,16 @@ }, { "name": "symfony/mailer", - "version": "v6.0.8", + "version": "v6.0.10", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "706af6b3e99ebcbc639c9c664f5579aaa869409b" + "reference": "9b60de35f0b4eed09ee2b25195a478b86acd128d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/706af6b3e99ebcbc639c9c664f5579aaa869409b", - "reference": "706af6b3e99ebcbc639c9c664f5579aaa869409b", + "url": "https://api.github.com/repos/symfony/mailer/zipball/9b60de35f0b4eed09ee2b25195a478b86acd128d", + "reference": "9b60de35f0b4eed09ee2b25195a478b86acd128d", "shasum": "" }, "require": { @@ -8746,7 +8765,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.0.8" + "source": "https://github.com/symfony/mailer/tree/v6.0.10" }, "funding": [ { @@ -8762,7 +8781,7 @@ "type": "tidelift" } ], - "time": "2022-04-27T17:10:30+00:00" + "time": "2022-06-19T12:07:20+00:00" }, { "name": "symfony/mailgun-mailer", @@ -8831,16 +8850,16 @@ }, { "name": "symfony/messenger", - "version": "v6.0.8", + "version": "v6.0.10", "source": { "type": "git", "url": "https://github.com/symfony/messenger.git", - "reference": "8ba92cff412af800ac9232728f0f659f2261a230" + "reference": "59a1a1eb3049129824d0592e6b4dcb5173e8279d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/messenger/zipball/8ba92cff412af800ac9232728f0f659f2261a230", - "reference": "8ba92cff412af800ac9232728f0f659f2261a230", + "url": "https://api.github.com/repos/symfony/messenger/zipball/59a1a1eb3049129824d0592e6b4dcb5173e8279d", + "reference": "59a1a1eb3049129824d0592e6b4dcb5173e8279d", "shasum": "" }, "require": { @@ -8896,7 +8915,7 @@ "description": "Helps applications send and receive messages to/from other applications or via message queues", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/messenger/tree/v6.0.8" + "source": "https://github.com/symfony/messenger/tree/v6.0.10" }, "funding": [ { @@ -8912,20 +8931,20 @@ "type": "tidelift" } ], - "time": "2022-04-12T16:11:42+00:00" + "time": "2022-06-26T13:01:22+00:00" }, { "name": "symfony/mime", - "version": "v6.0.9", + "version": "v6.0.10", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "e17bae63d437b3e21942dcc47ccca802d3573dd8" + "reference": "4de7886c66e0953f5d6edab3e49ceb751d01621c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/e17bae63d437b3e21942dcc47ccca802d3573dd8", - "reference": "e17bae63d437b3e21942dcc47ccca802d3573dd8", + "url": "https://api.github.com/repos/symfony/mime/zipball/4de7886c66e0953f5d6edab3e49ceb751d01621c", + "reference": "4de7886c66e0953f5d6edab3e49ceb751d01621c", "shasum": "" }, "require": { @@ -8977,7 +8996,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.0.9" + "source": "https://github.com/symfony/mime/tree/v6.0.10" }, "funding": [ { @@ -8993,20 +9012,20 @@ "type": "tidelift" } ], - "time": "2022-05-21T13:33:31+00:00" + "time": "2022-06-09T12:50:38+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v6.0.3", + "version": "v6.0.10", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "10d90ee25c6a76c12d4bbe8721e354c287e177da" + "reference": "5bdad92051f71996191d91c3bc77fc2f512d08fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/10d90ee25c6a76c12d4bbe8721e354c287e177da", - "reference": "10d90ee25c6a76c12d4bbe8721e354c287e177da", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/5bdad92051f71996191d91c3bc77fc2f512d08fd", + "reference": "5bdad92051f71996191d91c3bc77fc2f512d08fd", "shasum": "" }, "require": { @@ -9060,7 +9079,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v6.0.3" + "source": "https://github.com/symfony/monolog-bridge/tree/v6.0.10" }, "funding": [ { @@ -9076,7 +9095,7 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:55:41+00:00" + "time": "2022-06-19T12:07:20+00:00" }, { "name": "symfony/monolog-bundle", @@ -9300,16 +9319,16 @@ }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "433d05519ce6990bf3530fba6957499d327395c2" + "reference": "511a08c03c1960e08a883f4cffcacd219b758354" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/433d05519ce6990bf3530fba6957499d327395c2", - "reference": "433d05519ce6990bf3530fba6957499d327395c2", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", + "reference": "511a08c03c1960e08a883f4cffcacd219b758354", "shasum": "" }, "require": { @@ -9321,7 +9340,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -9361,7 +9380,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" }, "funding": [ { @@ -9377,7 +9396,7 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-intl-idn", @@ -9468,16 +9487,16 @@ }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "219aa369ceff116e673852dce47c3a41794c14bd" + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd", - "reference": "219aa369ceff116e673852dce47c3a41794c14bd", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", "shasum": "" }, "require": { @@ -9489,7 +9508,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -9532,7 +9551,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" }, "funding": [ { @@ -9548,20 +9567,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", - "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", "shasum": "" }, "require": { @@ -9576,7 +9595,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -9615,7 +9634,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" }, "funding": [ { @@ -9631,20 +9650,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2" + "reference": "869329b1e9894268a8a61dabb69153029b7a8c97" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/bf44a9fd41feaac72b074de600314a93e2ae78e2", - "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/869329b1e9894268a8a61dabb69153029b7a8c97", + "reference": "869329b1e9894268a8a61dabb69153029b7a8c97", "shasum": "" }, "require": { @@ -9653,7 +9672,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -9691,7 +9710,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.27.0" }, "funding": [ { @@ -9707,20 +9726,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85" + "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/e440d35fa0286f77fb45b79a03fedbeda9307e85", - "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9", + "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9", "shasum": "" }, "require": { @@ -9729,7 +9748,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -9770,7 +9789,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0" }, "funding": [ { @@ -9786,20 +9805,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace" + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", "shasum": "" }, "require": { @@ -9808,7 +9827,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -9853,7 +9872,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" }, "funding": [ { @@ -9869,7 +9888,7 @@ "type": "tidelift" } ], - "time": "2022-05-10T07:21:04+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php81", @@ -10099,16 +10118,16 @@ }, { "name": "symfony/process", - "version": "v6.1.0", + "version": "v6.1.3", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "318718453c2be58266f1a9e74063d13cb8dd4165" + "reference": "a6506e99cfad7059b1ab5cab395854a0a0c21292" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/318718453c2be58266f1a9e74063d13cb8dd4165", - "reference": "318718453c2be58266f1a9e74063d13cb8dd4165", + "url": "https://api.github.com/repos/symfony/process/zipball/a6506e99cfad7059b1ab5cab395854a0a0c21292", + "reference": "a6506e99cfad7059b1ab5cab395854a0a0c21292", "shasum": "" }, "require": { @@ -10140,7 +10159,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.1.0" + "source": "https://github.com/symfony/process/tree/v6.1.3" }, "funding": [ { @@ -10156,7 +10175,7 @@ "type": "tidelift" } ], - "time": "2022-05-11T12:12:29+00:00" + "time": "2022-06-27T17:24:16+00:00" }, { "name": "symfony/property-access", @@ -10239,16 +10258,16 @@ }, { "name": "symfony/property-info", - "version": "v6.0.9", + "version": "v6.0.10", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "f6ca518cee8cac7e1e1a3f922a5731ab866b9b0b" + "reference": "0e3bc4926c37e8cf3be484cd2fdd2d77624129e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/f6ca518cee8cac7e1e1a3f922a5731ab866b9b0b", - "reference": "f6ca518cee8cac7e1e1a3f922a5731ab866b9b0b", + "url": "https://api.github.com/repos/symfony/property-info/zipball/0e3bc4926c37e8cf3be484cd2fdd2d77624129e5", + "reference": "0e3bc4926c37e8cf3be484cd2fdd2d77624129e5", "shasum": "" }, "require": { @@ -10308,7 +10327,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v6.0.9" + "source": "https://github.com/symfony/property-info/tree/v6.0.10" }, "funding": [ { @@ -10324,7 +10343,7 @@ "type": "tidelift" } ], - "time": "2022-05-17T09:49:29+00:00" + "time": "2022-05-31T17:20:12+00:00" }, { "name": "symfony/proxy-manager-bridge", @@ -10974,16 +10993,16 @@ }, { "name": "symfony/security-http", - "version": "v6.0.9", + "version": "v6.0.10", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "94c5f8da5ad5b823b2777926c093b56ae576f5fb" + "reference": "f96a92d7371cb70108e5ea6999ec5972b487cc04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/94c5f8da5ad5b823b2777926c093b56ae576f5fb", - "reference": "94c5f8da5ad5b823b2777926c093b56ae576f5fb", + "url": "https://api.github.com/repos/symfony/security-http/zipball/f96a92d7371cb70108e5ea6999ec5972b487cc04", + "reference": "f96a92d7371cb70108e5ea6999ec5972b487cc04", "shasum": "" }, "require": { @@ -11037,7 +11056,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v6.0.9" + "source": "https://github.com/symfony/security-http/tree/v6.0.10" }, "funding": [ { @@ -11053,7 +11072,7 @@ "type": "tidelift" } ], - "time": "2022-05-14T12:52:12+00:00" + "time": "2022-06-26T13:01:22+00:00" }, { "name": "symfony/sendgrid-mailer", @@ -11122,16 +11141,16 @@ }, { "name": "symfony/serializer", - "version": "v6.0.9", + "version": "v6.0.10", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "cd209717fce097ed002a218cbd9be9d56ed53e78" + "reference": "d01114d1e6321070f11bffc6d0d4a698d1403867" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/cd209717fce097ed002a218cbd9be9d56ed53e78", - "reference": "cd209717fce097ed002a218cbd9be9d56ed53e78", + "url": "https://api.github.com/repos/symfony/serializer/zipball/d01114d1e6321070f11bffc6d0d4a698d1403867", + "reference": "d01114d1e6321070f11bffc6d0d4a698d1403867", "shasum": "" }, "require": { @@ -11203,7 +11222,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v6.0.9" + "source": "https://github.com/symfony/serializer/tree/v6.0.10" }, "funding": [ { @@ -11219,20 +11238,20 @@ "type": "tidelift" } ], - "time": "2022-05-10T09:19:38+00:00" + "time": "2022-06-26T16:34:50+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.1.0", + "version": "v3.2.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "d66cd8ab656780f62c4215b903a420eb86358957" + "reference": "aac98028c69df04ee77eb69b96b86ee51fbf4b75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d66cd8ab656780f62c4215b903a420eb86358957", - "reference": "d66cd8ab656780f62c4215b903a420eb86358957", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/aac98028c69df04ee77eb69b96b86ee51fbf4b75", + "reference": "aac98028c69df04ee77eb69b96b86ee51fbf4b75", "shasum": "" }, "require": { @@ -11248,7 +11267,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.1-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -11288,7 +11307,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.1.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.2.0" }, "funding": [ { @@ -11304,7 +11323,7 @@ "type": "tidelift" } ], - "time": "2022-05-07T08:07:09+00:00" + "time": "2022-11-25T10:21:52+00:00" }, { "name": "symfony/stopwatch", @@ -11370,16 +11389,16 @@ }, { "name": "symfony/string", - "version": "v6.1.0", + "version": "v6.2.2", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "d3edc75baf9f1d4f94879764dda2e1ac33499529" + "reference": "863219fd713fa41cbcd285a79723f94672faff4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/d3edc75baf9f1d4f94879764dda2e1ac33499529", - "reference": "d3edc75baf9f1d4f94879764dda2e1ac33499529", + "url": "https://api.github.com/repos/symfony/string/zipball/863219fd713fa41cbcd285a79723f94672faff4d", + "reference": "863219fd713fa41cbcd285a79723f94672faff4d", "shasum": "" }, "require": { @@ -11395,6 +11414,7 @@ "require-dev": { "symfony/error-handler": "^5.4|^6.0", "symfony/http-client": "^5.4|^6.0", + "symfony/intl": "^6.2", "symfony/translation-contracts": "^2.0|^3.0", "symfony/var-exporter": "^5.4|^6.0" }, @@ -11435,7 +11455,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.1.0" + "source": "https://github.com/symfony/string/tree/v6.2.2" }, "funding": [ { @@ -11451,20 +11471,20 @@ "type": "tidelift" } ], - "time": "2022-04-22T08:18:23+00:00" + "time": "2022-12-14T16:11:27+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.1.0", + "version": "v3.2.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "bfddd2a1faa271b782b791c361cc16e2dd49dfaa" + "reference": "68cce71402305a015f8c1589bfada1280dc64fe7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/bfddd2a1faa271b782b791c361cc16e2dd49dfaa", - "reference": "bfddd2a1faa271b782b791c361cc16e2dd49dfaa", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/68cce71402305a015f8c1589bfada1280dc64fe7", + "reference": "68cce71402305a015f8c1589bfada1280dc64fe7", "shasum": "" }, "require": { @@ -11476,7 +11496,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.1-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -11516,7 +11536,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.1.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.2.0" }, "funding": [ { @@ -11532,20 +11552,20 @@ "type": "tidelift" } ], - "time": "2022-04-22T07:30:54+00:00" + "time": "2022-11-25T10:21:52+00:00" }, { "name": "symfony/twig-bridge", - "version": "v6.0.9", + "version": "v6.0.10", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "5208e87aa1ad1405cd10e207b73f2f355cfbb123" + "reference": "4eae2e2a08d737bdd293fb4fa53239a655c4ea80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/5208e87aa1ad1405cd10e207b73f2f355cfbb123", - "reference": "5208e87aa1ad1405cd10e207b73f2f355cfbb123", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/4eae2e2a08d737bdd293fb4fa53239a655c4ea80", + "reference": "4eae2e2a08d737bdd293fb4fa53239a655c4ea80", "shasum": "" }, "require": { @@ -11636,7 +11656,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v6.0.9" + "source": "https://github.com/symfony/twig-bridge/tree/v6.0.10" }, "funding": [ { @@ -11652,7 +11672,7 @@ "type": "tidelift" } ], - "time": "2022-05-21T13:33:31+00:00" + "time": "2022-06-17T15:20:52+00:00" }, { "name": "symfony/twig-bundle", @@ -11743,16 +11763,16 @@ }, { "name": "symfony/validator", - "version": "v6.0.8", + "version": "v6.0.10", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "d8f47eea936014e9e9d1cd3248f8c73d57dc248b" + "reference": "e4d9e660e03458f06df2f6382ad1e9c51f238297" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/d8f47eea936014e9e9d1cd3248f8c73d57dc248b", - "reference": "d8f47eea936014e9e9d1cd3248f8c73d57dc248b", + "url": "https://api.github.com/repos/symfony/validator/zipball/e4d9e660e03458f06df2f6382ad1e9c51f238297", + "reference": "e4d9e660e03458f06df2f6382ad1e9c51f238297", "shasum": "" }, "require": { @@ -11831,7 +11851,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.0.8" + "source": "https://github.com/symfony/validator/tree/v6.0.10" }, "funding": [ { @@ -11847,7 +11867,7 @@ "type": "tidelift" } ], - "time": "2022-04-15T08:07:58+00:00" + "time": "2022-06-09T12:50:38+00:00" }, { "name": "symfony/var-dumper", @@ -11939,16 +11959,16 @@ }, { "name": "symfony/var-exporter", - "version": "v6.0.9", + "version": "v6.0.10", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "51c9947398d4f87f0b5a861999534a95afcd971e" + "reference": "e3df004a8d0fb572c420a6915cd23db9254c8366" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/51c9947398d4f87f0b5a861999534a95afcd971e", - "reference": "51c9947398d4f87f0b5a861999534a95afcd971e", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/e3df004a8d0fb572c420a6915cd23db9254c8366", + "reference": "e3df004a8d0fb572c420a6915cd23db9254c8366", "shasum": "" }, "require": { @@ -11991,7 +12011,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.0.9" + "source": "https://github.com/symfony/var-exporter/tree/v6.0.10" }, "funding": [ { @@ -12007,7 +12027,7 @@ "type": "tidelift" } ], - "time": "2022-05-21T13:33:31+00:00" + "time": "2022-05-27T12:57:11+00:00" }, { "name": "symfony/web-link", @@ -12097,16 +12117,16 @@ }, { "name": "symfony/yaml", - "version": "v6.0.3", + "version": "v6.0.10", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "e77f3ea0b21141d771d4a5655faa54f692b34af5" + "reference": "3b039081c8a6ff8773db2fc11069f2da4960449c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/e77f3ea0b21141d771d4a5655faa54f692b34af5", - "reference": "e77f3ea0b21141d771d4a5655faa54f692b34af5", + "url": "https://api.github.com/repos/symfony/yaml/zipball/3b039081c8a6ff8773db2fc11069f2da4960449c", + "reference": "3b039081c8a6ff8773db2fc11069f2da4960449c", "shasum": "" }, "require": { @@ -12151,7 +12171,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.0.3" + "source": "https://github.com/symfony/yaml/tree/v6.0.10" }, "funding": [ { @@ -12167,7 +12187,7 @@ "type": "tidelift" } ], - "time": "2022-01-26T17:23:29+00:00" + "time": "2022-06-20T11:58:32+00:00" }, { "name": "twig/twig", @@ -12678,16 +12698,16 @@ }, { "name": "infection/infection", - "version": "0.26.12", + "version": "0.26.14", "source": { "type": "git", "url": "https://github.com/infection/infection.git", - "reference": "dbc0b430d8dfbb5d57e61f09d6ac89265ea0087f" + "reference": "d35e0795d64c2a1e030e63c51fbf6b37991b08d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/infection/infection/zipball/dbc0b430d8dfbb5d57e61f09d6ac89265ea0087f", - "reference": "dbc0b430d8dfbb5d57e61f09d6ac89265ea0087f", + "url": "https://api.github.com/repos/infection/infection/zipball/d35e0795d64c2a1e030e63c51fbf6b37991b08d2", + "reference": "d35e0795d64c2a1e030e63c51fbf6b37991b08d2", "shasum": "" }, "require": { @@ -12696,6 +12716,7 @@ "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", + "ext-mbstring": "*", "infection/abstract-testframework-adapter": "^0.5.0", "infection/extension-installer": "^0.1.0", "infection/include-interceptor": "^0.2.5", @@ -12787,7 +12808,7 @@ ], "support": { "issues": "https://github.com/infection/infection/issues", - "source": "https://github.com/infection/infection/tree/0.26.12" + "source": "https://github.com/infection/infection/tree/0.26.14" }, "funding": [ { @@ -12799,7 +12820,7 @@ "type": "open_collective" } ], - "time": "2022-06-21T20:46:07+00:00" + "time": "2022-08-31T21:53:53+00:00" }, { "name": "liip/test-fixtures-bundle", @@ -13265,73 +13286,6 @@ }, "time": "2022-02-21T01:04:05+00:00" }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, { "name": "phpstan/extension-installer", "version": "1.1.0", @@ -13379,16 +13333,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.7.15", + "version": "1.8.2", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "cd0202ea1b1fc6d1bbe156c6e2e18a03e0ff160a" + "reference": "c53312ecc575caf07b0e90dee43883fdf90ca67c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/cd0202ea1b1fc6d1bbe156c6e2e18a03e0ff160a", - "reference": "cd0202ea1b1fc6d1bbe156c6e2e18a03e0ff160a", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/c53312ecc575caf07b0e90dee43883fdf90ca67c", + "reference": "c53312ecc575caf07b0e90dee43883fdf90ca67c", "shasum": "" }, "require": { @@ -13414,7 +13368,7 @@ "description": "PHPStan - PHP Static Analysis Tool", "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.7.15" + "source": "https://github.com/phpstan/phpstan/tree/1.8.2" }, "funding": [ { @@ -13434,26 +13388,26 @@ "type": "tidelift" } ], - "time": "2022-06-20T08:29:01+00:00" + "time": "2022-07-20T09:57:31+00:00" }, { "name": "phpstan/phpstan-symfony", - "version": "1.2.5", + "version": "1.2.9", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-symfony.git", - "reference": "85be852a17fd5a6b67d4fc6daed21e794f935b2d" + "reference": "f4cb3b8915d3656e780f305f01c86b70ff933272" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/85be852a17fd5a6b67d4fc6daed21e794f935b2d", - "reference": "85be852a17fd5a6b67d4fc6daed21e794f935b2d", + "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/f4cb3b8915d3656e780f305f01c86b70ff933272", + "reference": "f4cb3b8915d3656e780f305f01c86b70ff933272", "shasum": "" }, "require": { "ext-simplexml": "*", "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.6" + "phpstan/phpstan": "^1.8.2" }, "conflict": { "symfony/framework-bundle": "<3.0" @@ -13503,29 +13457,29 @@ "description": "Symfony Framework extensions and rules for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-symfony/issues", - "source": "https://github.com/phpstan/phpstan-symfony/tree/1.2.5" + "source": "https://github.com/phpstan/phpstan-symfony/tree/1.2.9" }, - "time": "2022-06-10T08:44:35+00:00" + "time": "2022-08-05T20:13:38+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.15", + "version": "9.2.16", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" + "reference": "2593003befdcc10db5e213f9f28814f5aa8ac073" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", - "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2593003befdcc10db5e213f9f28814f5aa8ac073", + "reference": "2593003befdcc10db5e213f9f28814f5aa8ac073", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", + "nikic/php-parser": "^4.14", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -13574,7 +13528,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.16" }, "funding": [ { @@ -13582,7 +13536,7 @@ "type": "github" } ], - "time": "2022-03-07T09:28:20+00:00" + "time": "2022-08-20T05:26:47+00:00" }, { "name": "phpunit/php-file-iterator", @@ -13827,16 +13781,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.21", + "version": "9.5.23", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1" + "reference": "888556852e7e9bbeeedb9656afe46118765ade34" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0e32b76be457de00e83213528f6bb37e2a38fcb1", - "reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/888556852e7e9bbeeedb9656afe46118765ade34", + "reference": "888556852e7e9bbeeedb9656afe46118765ade34", "shasum": "" }, "require": { @@ -13851,7 +13805,6 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", "phpunit/php-code-coverage": "^9.2.13", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", @@ -13869,9 +13822,6 @@ "sebastian/type": "^3.0", "sebastian/version": "^3.0.2" }, - "require-dev": { - "phpspec/prophecy-phpunit": "^2.0.1" - }, "suggest": { "ext-soap": "*", "ext-xdebug": "*" @@ -13913,7 +13863,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.21" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.23" }, "funding": [ { @@ -13925,7 +13875,7 @@ "type": "github" } ], - "time": "2022-06-19T12:14:25+00:00" + "time": "2022-08-22T14:01:36+00:00" }, { "name": "sanmai/later", @@ -15359,16 +15309,16 @@ }, { "name": "symfony/phpunit-bridge", - "version": "v6.1.0", + "version": "v6.1.2", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "092ccc3b364925cd8ed6046bc31dcf3a022bd5a4" + "reference": "899fdec151add3dc339cf394a15100a1acc177ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/092ccc3b364925cd8ed6046bc31dcf3a022bd5a4", - "reference": "092ccc3b364925cd8ed6046bc31dcf3a022bd5a4", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/899fdec151add3dc339cf394a15100a1acc177ad", + "reference": "899fdec151add3dc339cf394a15100a1acc177ad", "shasum": "" }, "require": { @@ -15422,7 +15372,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v6.1.0" + "source": "https://github.com/symfony/phpunit-bridge/tree/v6.1.2" }, "funding": [ { @@ -15438,20 +15388,20 @@ "type": "tidelift" } ], - "time": "2022-04-12T16:22:53+00:00" + "time": "2022-06-20T12:01:07+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v6.0.8", + "version": "v6.0.10", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "72c103c3aa0aad379bcd1c78b0ab8793496f668a" + "reference": "1a574f838dd56c5e1bdc37cc52e8798a363c2397" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/72c103c3aa0aad379bcd1c78b0ab8793496f668a", - "reference": "72c103c3aa0aad379bcd1c78b0ab8793496f668a", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/1a574f838dd56c5e1bdc37cc52e8798a363c2397", + "reference": "1a574f838dd56c5e1bdc37cc52e8798a363c2397", "shasum": "" }, "require": { @@ -15501,7 +15451,7 @@ "description": "Provides a development tool that gives detailed information about the execution of any request", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.0.8" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.0.10" }, "funding": [ { @@ -15517,20 +15467,20 @@ "type": "tidelift" } ], - "time": "2022-04-22T08:18:02+00:00" + "time": "2022-06-06T19:12:54+00:00" }, { "name": "thecodingmachine/safe", - "version": "v2.2.1", + "version": "v2.2.3", "source": { "type": "git", "url": "https://github.com/thecodingmachine/safe.git", - "reference": "2a8d758fd17763faf86e4aa798193e17b9fac38c" + "reference": "e454a3142d2197694d1fda291a4462ccd3f66e12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/2a8d758fd17763faf86e4aa798193e17b9fac38c", - "reference": "2a8d758fd17763faf86e4aa798193e17b9fac38c", + "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/e454a3142d2197694d1fda291a4462ccd3f66e12", + "reference": "e454a3142d2197694d1fda291a4462ccd3f66e12", "shasum": "" }, "require": { @@ -15653,9 +15603,9 @@ "description": "PHP core functions that throw exceptions instead of returning FALSE on error", "support": { "issues": "https://github.com/thecodingmachine/safe/issues", - "source": "https://github.com/thecodingmachine/safe/tree/v2.2.1" + "source": "https://github.com/thecodingmachine/safe/tree/v2.2.3" }, - "time": "2022-06-09T15:36:45+00:00" + "time": "2022-08-04T14:05:49+00:00" }, { "name": "theseer/tokenizer", diff --git a/src/Classes/JsonApiData.php b/src/Classes/JsonApiData.php index afc390c7ed..60b0bd8485 100644 --- a/src/Classes/JsonApiData.php +++ b/src/Classes/JsonApiData.php @@ -4,7 +4,9 @@ namespace App\Classes; +use App\RelationshipVoter\AbstractVoter; use App\Service\EntityRepositoryLookup; +use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; use Symfony\Component\Serializer\Normalizer\NormalizerInterface; class JsonApiData @@ -12,17 +14,14 @@ class JsonApiData protected array $data = []; protected array $includes = []; protected array $sideLoadCandidates = []; - protected EntityRepositoryLookup $entityRepositoryLookup; - protected NormalizerInterface $normalizer; public function __construct( - EntityRepositoryLookup $entityRepositoryLookup, - NormalizerInterface $normalizer, + protected EntityRepositoryLookup $entityRepositoryLookup, + protected NormalizerInterface $normalizer, + protected AuthorizationCheckerInterface $authorizationChecker, array $data, array $sideLoadFields ) { - $this->entityRepositoryLookup = $entityRepositoryLookup; - $this->normalizer = $normalizer; foreach ($data as $item) { $shapedItem = $this->shapeItem($item); $this->data[] = $shapedItem; @@ -157,16 +156,21 @@ protected function executeSideLoad(): void if ($newIds !== []) { $manager = $this->entityRepositoryLookup->getRepositoryForEndpoint($type); $dtos = $manager->findDTOsBy(['id' => $newIds]); - foreach ($dtos as $dto) { + $filteredDtos = array_filter( + $dtos, + fn($object) => $this->authorizationChecker->isGranted(AbstractVoter::VIEW, $object) + ); + foreach ($filteredDtos as $dto) { $data = $this->normalizer->normalize($dto, 'json-api'); $shaped = $this->shapeItem($data); $this->includes[] = $shaped; } } foreach ($ids as $id) { - $item = $this->getIncluded((string) $id, $type); - foreach ($candidates[$id] as $sideLoadFields) { - $this->extractSideLoadData($item['relationships'], $sideLoadFields); + if ($item = $this->getIncluded((string) $id, $type)) { + foreach ($candidates[$id] as $sideLoadFields) { + $this->extractSideLoadData($item['relationships'], $sideLoadFields); + } } } } diff --git a/src/Controller/IcsController.php b/src/Controller/IcsController.php index b89c988abd..2a2f0aee0d 100644 --- a/src/Controller/IcsController.php +++ b/src/Controller/IcsController.php @@ -10,8 +10,8 @@ use App\Repository\IlmSessionRepository; use App\Repository\OfferingRepository; use App\Repository\UserRepository; +use DateInterval; use DateTime; -use DateTimeImmutable; use Eluceo\iCal\Domain\ValueObject\Location; use Exception; use Eluceo\iCal\Domain\Entity\Calendar; @@ -58,7 +58,7 @@ public function getICSFeed(Request $request, $key) $calendar = new Calendar(); $calendar->setProductIdentifier('Ilios Calendar for ' . $user->getFirstAndLastName()); - //$calendar->setPublishedTTL('P1H'); + $calendar->setPublishedTTL(new DateInterval('PT1H')); $from = new DateTime(self::LOOK_BACK); $to = new DateTime(self::LOOK_FORWARD); diff --git a/src/EventListener/ClearCachedDto.php b/src/EventListener/ClearCachedDto.php index bc520268af..69f89ceb70 100644 --- a/src/EventListener/ClearCachedDto.php +++ b/src/EventListener/ClearCachedDto.php @@ -4,7 +4,7 @@ namespace App\EventListener; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use Doctrine\ORM\Event\OnFlushEventArgs; use Doctrine\ORM\PersistentCollection; use Flagception\Manager\FeatureManagerInterface; @@ -39,10 +39,10 @@ public function onFlush(OnFlushEventArgs $eventArgs) foreach ($entities as $entity) { $entityName = $entityManager->getMetadataFactory()->getMetadataFor($entity::class)->getName(); if ($action === 'create') { - $tags[] = DTOCacheTagger::getTag($entityName, false); + $tags[] = DTOCacheManager::getTag($entityName, false); } else { $id = (string) $entity; - $tags[] = DTOCacheTagger::getTag($entityName, $id); + $tags[] = DTOCacheManager::getTag($entityName, $id); } } } @@ -53,12 +53,12 @@ public function onFlush(OnFlushEventArgs $eventArgs) foreach ($col->getDeleteDiff() as $entity) { $entityName = $entityManager->getMetadataFactory()->getMetadataFor($entity::class)->getName(); $id = (string) $entity; - $tags[] = DTOCacheTagger::getTag($entityName, $id); + $tags[] = DTOCacheManager::getTag($entityName, $id); } foreach ($col->getInsertDiff() as $entity) { $entityName = $entityManager->getMetadataFactory()->getMetadataFor($entity::class)->getName(); $id = (string) $entity; - $tags[] = DTOCacheTagger::getTag($entityName, $id); + $tags[] = DTOCacheManager::getTag($entityName, $id); } } diff --git a/src/Repository/AamcMethodRepository.php b/src/Repository/AamcMethodRepository.php index c464889732..906889ed54 100644 --- a/src/Repository/AamcMethodRepository.php +++ b/src/Repository/AamcMethodRepository.php @@ -5,7 +5,7 @@ namespace App\Repository; use App\Entity\AamcMethod; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ImportableEntityRepository; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; @@ -13,8 +13,6 @@ use Doctrine\ORM\AbstractQuery; use App\Entity\DTO\AamcMethodDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_values; @@ -28,9 +26,7 @@ class AamcMethodRepository extends ServiceEntityRepository implements public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, AamcMethod::class); } diff --git a/src/Repository/AamcPcrsRepository.php b/src/Repository/AamcPcrsRepository.php index a065dfe24e..edb0a87861 100644 --- a/src/Repository/AamcPcrsRepository.php +++ b/src/Repository/AamcPcrsRepository.php @@ -4,7 +4,7 @@ namespace App\Repository; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ImportableEntityRepository; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; @@ -13,8 +13,6 @@ use App\Entity\AamcPcrs; use App\Entity\DTO\AamcPcrsDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; class AamcPcrsRepository extends ServiceEntityRepository implements DTORepositoryInterface, @@ -26,9 +24,7 @@ class AamcPcrsRepository extends ServiceEntityRepository implements public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, AamcPcrs::class); } diff --git a/src/Repository/AamcResourceTypeRepository.php b/src/Repository/AamcResourceTypeRepository.php index dea5d45816..28cef7aa43 100644 --- a/src/Repository/AamcResourceTypeRepository.php +++ b/src/Repository/AamcResourceTypeRepository.php @@ -5,7 +5,7 @@ namespace App\Repository; use App\Entity\AamcResourceType; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ImportableEntityRepository; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; @@ -13,8 +13,6 @@ use Doctrine\ORM\AbstractQuery; use App\Entity\DTO\AamcResourceTypeDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_values; @@ -28,9 +26,7 @@ class AamcResourceTypeRepository extends ServiceEntityRepository implements public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, AamcResourceType::class); } diff --git a/src/Repository/AlertChangeTypeRepository.php b/src/Repository/AlertChangeTypeRepository.php index 820d4f8312..1f13c73aaf 100644 --- a/src/Repository/AlertChangeTypeRepository.php +++ b/src/Repository/AlertChangeTypeRepository.php @@ -5,7 +5,7 @@ namespace App\Repository; use App\Entity\AlertChangeType; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ImportableEntityRepository; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; @@ -13,8 +13,6 @@ use Doctrine\ORM\AbstractQuery; use App\Entity\DTO\AlertChangeTypeDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_values; @@ -28,9 +26,7 @@ class AlertChangeTypeRepository extends ServiceEntityRepository implements public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, AlertChangeType::class); } diff --git a/src/Repository/AlertRepository.php b/src/Repository/AlertRepository.php index 101c4e4dda..4e60875600 100644 --- a/src/Repository/AlertRepository.php +++ b/src/Repository/AlertRepository.php @@ -5,15 +5,13 @@ namespace App\Repository; use App\Entity\Alert; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\QueryBuilder; use Doctrine\ORM\AbstractQuery; use App\Entity\DTO\AlertDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_values; @@ -23,9 +21,7 @@ class AlertRepository extends ServiceEntityRepository implements DTORepositoryIn public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, Alert::class); } diff --git a/src/Repository/ApplicationConfigRepository.php b/src/Repository/ApplicationConfigRepository.php index 84a52e18fd..9c3edda983 100644 --- a/src/Repository/ApplicationConfigRepository.php +++ b/src/Repository/ApplicationConfigRepository.php @@ -4,7 +4,7 @@ namespace App\Repository; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ImportableEntityRepository; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; @@ -13,8 +13,6 @@ use App\Entity\ApplicationConfig; use App\Entity\DTO\ApplicationConfigDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; class ApplicationConfigRepository extends ServiceEntityRepository implements DTORepositoryInterface, @@ -27,9 +25,7 @@ class ApplicationConfigRepository extends ServiceEntityRepository implements public function __construct( ManagerRegistry $registry, protected bool $cacheEnabled, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, ApplicationConfig::class); } diff --git a/src/Repository/AssessmentOptionRepository.php b/src/Repository/AssessmentOptionRepository.php index 51d81b4132..8bc19a8933 100644 --- a/src/Repository/AssessmentOptionRepository.php +++ b/src/Repository/AssessmentOptionRepository.php @@ -5,7 +5,7 @@ namespace App\Repository; use App\Entity\AssessmentOption; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ImportableEntityRepository; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; @@ -13,8 +13,6 @@ use Doctrine\ORM\AbstractQuery; use App\Entity\DTO\AssessmentOptionDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_values; @@ -28,9 +26,7 @@ class AssessmentOptionRepository extends ServiceEntityRepository implements public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, AssessmentOption::class); } diff --git a/src/Repository/AuditLogRepository.php b/src/Repository/AuditLogRepository.php index 181f0991e8..5bf2b5d50d 100644 --- a/src/Repository/AuditLogRepository.php +++ b/src/Repository/AuditLogRepository.php @@ -5,15 +5,13 @@ namespace App\Repository; use App\Entity\AuditLog; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use DateTime; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\QueryBuilder; use Doctrine\Persistence\ManagerRegistry; use Exception; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; class AuditLogRepository extends ServiceEntityRepository implements DTORepositoryInterface, RepositoryInterface { @@ -21,9 +19,7 @@ class AuditLogRepository extends ServiceEntityRepository implements DTORepositor public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, AuditLog::class); } diff --git a/src/Repository/AuthenticationRepository.php b/src/Repository/AuthenticationRepository.php index d4ec942f37..69ca1ab4ef 100644 --- a/src/Repository/AuthenticationRepository.php +++ b/src/Repository/AuthenticationRepository.php @@ -5,7 +5,7 @@ namespace App\Repository; use App\Entity\Authentication; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\NonUniqueResultException; @@ -15,8 +15,6 @@ use App\Entity\AuthenticationInterface; use App\Entity\DTO\AuthenticationDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function is_array; @@ -26,9 +24,7 @@ class AuthenticationRepository extends ServiceEntityRepository implements DTORep public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, Authentication::class); } diff --git a/src/Repository/CohortRepository.php b/src/Repository/CohortRepository.php index fce8ce2809..e589132d43 100644 --- a/src/Repository/CohortRepository.php +++ b/src/Repository/CohortRepository.php @@ -4,7 +4,7 @@ namespace App\Repository; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\QueryBuilder; @@ -12,8 +12,6 @@ use App\Entity\Cohort; use App\Entity\DTO\CohortDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_values; use function array_keys; @@ -24,9 +22,7 @@ class CohortRepository extends ServiceEntityRepository implements DTORepositoryI public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, Cohort::class); } diff --git a/src/Repository/CompetencyRepository.php b/src/Repository/CompetencyRepository.php index de28e0a658..9ad7991484 100644 --- a/src/Repository/CompetencyRepository.php +++ b/src/Repository/CompetencyRepository.php @@ -6,7 +6,7 @@ use App\Entity\Competency; use App\Service\DefaultDataImporter; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ImportableEntityRepository; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; @@ -14,8 +14,6 @@ use Doctrine\ORM\AbstractQuery; use App\Entity\DTO\CompetencyDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_values; use function array_keys; @@ -30,9 +28,7 @@ class CompetencyRepository extends ServiceEntityRepository implements public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, Competency::class); } diff --git a/src/Repository/CourseClerkshipTypeRepository.php b/src/Repository/CourseClerkshipTypeRepository.php index a56b3ae216..9e2333ca78 100644 --- a/src/Repository/CourseClerkshipTypeRepository.php +++ b/src/Repository/CourseClerkshipTypeRepository.php @@ -4,7 +4,7 @@ namespace App\Repository; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ImportableEntityRepository; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; @@ -13,8 +13,6 @@ use App\Entity\CourseClerkshipType; use App\Entity\DTO\CourseClerkshipTypeDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_values; @@ -28,9 +26,7 @@ class CourseClerkshipTypeRepository extends ServiceEntityRepository implements public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, CourseClerkshipType::class); } diff --git a/src/Repository/CourseLearningMaterialRepository.php b/src/Repository/CourseLearningMaterialRepository.php index 5f5205fee9..84d99996e0 100644 --- a/src/Repository/CourseLearningMaterialRepository.php +++ b/src/Repository/CourseLearningMaterialRepository.php @@ -4,7 +4,7 @@ namespace App\Repository; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\QueryBuilder; @@ -12,8 +12,6 @@ use App\Entity\CourseLearningMaterial; use App\Entity\DTO\CourseLearningMaterialDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_keys; use function array_values; @@ -26,9 +24,7 @@ class CourseLearningMaterialRepository extends ServiceEntityRepository implement public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, CourseLearningMaterial::class); } diff --git a/src/Repository/CourseObjectiveRepository.php b/src/Repository/CourseObjectiveRepository.php index 33bcf6426f..198b569ce2 100644 --- a/src/Repository/CourseObjectiveRepository.php +++ b/src/Repository/CourseObjectiveRepository.php @@ -6,7 +6,7 @@ use App\Entity\CourseObjective; use App\Entity\DTO\CourseObjectiveDTO; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use Doctrine\ORM\NonUniqueResultException; use Doctrine\ORM\NoResultException; @@ -14,8 +14,6 @@ use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\QueryBuilder; use Doctrine\ORM\AbstractQuery; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_values; use function array_keys; @@ -26,9 +24,7 @@ class CourseObjectiveRepository extends ServiceEntityRepository implements DTORe public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, CourseObjective::class); } diff --git a/src/Repository/CourseRepository.php b/src/Repository/CourseRepository.php index 17b0f48b9c..0cb98d3d16 100644 --- a/src/Repository/CourseRepository.php +++ b/src/Repository/CourseRepository.php @@ -8,7 +8,7 @@ use App\Classes\IndexableSession; use App\Entity\Course; use App\Entity\Session; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use DateTime; use Doctrine\DBAL\DBALException; @@ -18,8 +18,6 @@ use App\Entity\DTO\CourseDTO; use Doctrine\Persistence\ManagerRegistry; use Exception; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_values; use function array_keys; @@ -32,9 +30,7 @@ class CourseRepository extends ServiceEntityRepository implements public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, Course::class); } diff --git a/src/Repository/CurriculumInventoryAcademicLevelRepository.php b/src/Repository/CurriculumInventoryAcademicLevelRepository.php index f88fea3c6f..d54758e409 100644 --- a/src/Repository/CurriculumInventoryAcademicLevelRepository.php +++ b/src/Repository/CurriculumInventoryAcademicLevelRepository.php @@ -4,7 +4,7 @@ namespace App\Repository; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\QueryBuilder; @@ -12,8 +12,6 @@ use App\Entity\CurriculumInventoryAcademicLevel; use App\Entity\DTO\CurriculumInventoryAcademicLevelDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_values; use function array_keys; @@ -26,9 +24,7 @@ class CurriculumInventoryAcademicLevelRepository extends ServiceEntityRepository public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, CurriculumInventoryAcademicLevel::class); } diff --git a/src/Repository/CurriculumInventoryExportRepository.php b/src/Repository/CurriculumInventoryExportRepository.php index 8f0f220593..bdbe6fa845 100644 --- a/src/Repository/CurriculumInventoryExportRepository.php +++ b/src/Repository/CurriculumInventoryExportRepository.php @@ -6,14 +6,12 @@ use App\Entity\CurriculumInventoryExport; use App\Entity\DTO\CurriculumInventoryExportDTO; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use Doctrine\Persistence\ManagerRegistry; use Doctrine\ORM\AbstractQuery; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\QueryBuilder; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_keys; @@ -25,9 +23,7 @@ class CurriculumInventoryExportRepository extends ServiceEntityRepository implem public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, CurriculumInventoryExport::class); } diff --git a/src/Repository/CurriculumInventoryInstitutionRepository.php b/src/Repository/CurriculumInventoryInstitutionRepository.php index 70e4693db3..3fb1ceb7e5 100644 --- a/src/Repository/CurriculumInventoryInstitutionRepository.php +++ b/src/Repository/CurriculumInventoryInstitutionRepository.php @@ -5,7 +5,7 @@ namespace App\Repository; use App\Service\DefaultDataImporter; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ImportableEntityRepository; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; @@ -14,8 +14,6 @@ use App\Entity\CurriculumInventoryInstitution; use App\Entity\DTO\CurriculumInventoryInstitutionDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_keys; @@ -29,9 +27,7 @@ class CurriculumInventoryInstitutionRepository extends ServiceEntityRepository i public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, CurriculumInventoryInstitution::class); } diff --git a/src/Repository/CurriculumInventoryReportRepository.php b/src/Repository/CurriculumInventoryReportRepository.php index 1dc7d9b746..01840cf8d0 100644 --- a/src/Repository/CurriculumInventoryReportRepository.php +++ b/src/Repository/CurriculumInventoryReportRepository.php @@ -9,7 +9,7 @@ use App\Entity\ProgramYearObjective; use App\Entity\Session; use App\Entity\SessionObjective; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\Query; @@ -18,8 +18,6 @@ use App\Entity\DTO\CurriculumInventoryReportDTO; use Doctrine\Persistence\ManagerRegistry; use App\Entity\CurriculumInventoryReportInterface; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_values; use function array_keys; @@ -32,9 +30,7 @@ class CurriculumInventoryReportRepository extends ServiceEntityRepository implem public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, CurriculumInventoryReport::class); } diff --git a/src/Repository/CurriculumInventorySequenceBlockRepository.php b/src/Repository/CurriculumInventorySequenceBlockRepository.php index 0acbb09ddf..fd02613cc2 100644 --- a/src/Repository/CurriculumInventorySequenceBlockRepository.php +++ b/src/Repository/CurriculumInventorySequenceBlockRepository.php @@ -4,7 +4,7 @@ namespace App\Repository; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\QueryBuilder; @@ -12,8 +12,6 @@ use App\Entity\CurriculumInventorySequenceBlock; use App\Entity\DTO\CurriculumInventorySequenceBlockDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_values; use function array_keys; @@ -26,9 +24,7 @@ class CurriculumInventorySequenceBlockRepository extends ServiceEntityRepository public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, CurriculumInventorySequenceBlock::class); } diff --git a/src/Repository/CurriculumInventorySequenceRepository.php b/src/Repository/CurriculumInventorySequenceRepository.php index cb3d4dab1b..a20717d7d6 100644 --- a/src/Repository/CurriculumInventorySequenceRepository.php +++ b/src/Repository/CurriculumInventorySequenceRepository.php @@ -4,7 +4,7 @@ namespace App\Repository; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\QueryBuilder; @@ -12,8 +12,6 @@ use App\Entity\CurriculumInventorySequence; use App\Entity\DTO\CurriculumInventorySequenceDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_keys; @@ -25,9 +23,7 @@ class CurriculumInventorySequenceRepository extends ServiceEntityRepository impl public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, CurriculumInventorySequence::class); } diff --git a/src/Repository/IlmSessionRepository.php b/src/Repository/IlmSessionRepository.php index a51ddb0a0e..5306460d84 100644 --- a/src/Repository/IlmSessionRepository.php +++ b/src/Repository/IlmSessionRepository.php @@ -4,7 +4,7 @@ namespace App\Repository; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\QueryBuilder; @@ -12,8 +12,6 @@ use App\Entity\IlmSession; use App\Entity\DTO\IlmSessionDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_keys; use function array_values; @@ -24,9 +22,7 @@ class IlmSessionRepository extends ServiceEntityRepository implements DTOReposit public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, IlmSession::class); } diff --git a/src/Repository/IngestionExceptionRepository.php b/src/Repository/IngestionExceptionRepository.php index 5d4bebc006..8afc9cebdd 100644 --- a/src/Repository/IngestionExceptionRepository.php +++ b/src/Repository/IngestionExceptionRepository.php @@ -4,7 +4,7 @@ namespace App\Repository; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\QueryBuilder; @@ -12,8 +12,6 @@ use App\Entity\IngestionException; use App\Entity\DTO\IngestionExceptionDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_keys; @@ -25,9 +23,7 @@ class IngestionExceptionRepository extends ServiceEntityRepository implements public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, IngestionException::class); } diff --git a/src/Repository/InstructorGroupRepository.php b/src/Repository/InstructorGroupRepository.php index eda283c36c..232458f20f 100644 --- a/src/Repository/InstructorGroupRepository.php +++ b/src/Repository/InstructorGroupRepository.php @@ -4,7 +4,7 @@ namespace App\Repository; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\QueryBuilder; @@ -12,8 +12,6 @@ use App\Entity\InstructorGroup; use App\Entity\DTO\InstructorGroupDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_keys; use function array_values; @@ -24,9 +22,7 @@ class InstructorGroupRepository extends ServiceEntityRepository implements DTORe public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, InstructorGroup::class); } diff --git a/src/Repository/LearnerGroupRepository.php b/src/Repository/LearnerGroupRepository.php index 3d663e3ab3..80c864ebfb 100644 --- a/src/Repository/LearnerGroupRepository.php +++ b/src/Repository/LearnerGroupRepository.php @@ -4,7 +4,7 @@ namespace App\Repository; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\QueryBuilder; @@ -12,8 +12,6 @@ use App\Entity\LearnerGroup; use App\Entity\DTO\LearnerGroupDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_keys; use function array_values; @@ -24,9 +22,7 @@ class LearnerGroupRepository extends ServiceEntityRepository implements DTORepos public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, LearnerGroup::class); } diff --git a/src/Repository/LearningMaterialRepository.php b/src/Repository/LearningMaterialRepository.php index 5335969eca..9332127d73 100644 --- a/src/Repository/LearningMaterialRepository.php +++ b/src/Repository/LearningMaterialRepository.php @@ -5,7 +5,7 @@ namespace App\Repository; use App\Entity\LearningMaterial; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use Doctrine\ORM\AbstractQuery; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; @@ -13,8 +13,6 @@ use App\Entity\DTO\LearningMaterialDTO; use Doctrine\Persistence\ManagerRegistry; use App\Entity\LearningMaterialInterface; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_keys; use function array_values; @@ -25,9 +23,7 @@ class LearningMaterialRepository extends ServiceEntityRepository implements DTOR public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, LearningMaterial::class); } diff --git a/src/Repository/LearningMaterialStatusRepository.php b/src/Repository/LearningMaterialStatusRepository.php index d520a9e710..c934ee5068 100644 --- a/src/Repository/LearningMaterialStatusRepository.php +++ b/src/Repository/LearningMaterialStatusRepository.php @@ -4,7 +4,7 @@ namespace App\Repository; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ImportableEntityRepository; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; @@ -13,8 +13,6 @@ use App\Entity\LearningMaterialStatus; use App\Entity\DTO\LearningMaterialStatusDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; class LearningMaterialStatusRepository extends ServiceEntityRepository implements DTORepositoryInterface, @@ -26,9 +24,7 @@ class LearningMaterialStatusRepository extends ServiceEntityRepository implement public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, LearningMaterialStatus::class); } diff --git a/src/Repository/LearningMaterialUserRoleRepository.php b/src/Repository/LearningMaterialUserRoleRepository.php index 4a0ffda3d9..ffbff8ffe2 100644 --- a/src/Repository/LearningMaterialUserRoleRepository.php +++ b/src/Repository/LearningMaterialUserRoleRepository.php @@ -4,7 +4,7 @@ namespace App\Repository; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ImportableEntityRepository; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; @@ -13,8 +13,6 @@ use App\Entity\LearningMaterialUserRole; use App\Entity\DTO\LearningMaterialUserRoleDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; class LearningMaterialUserRoleRepository extends ServiceEntityRepository implements DTORepositoryInterface, @@ -26,9 +24,7 @@ class LearningMaterialUserRoleRepository extends ServiceEntityRepository impleme public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, LearningMaterialUserRole::class); } diff --git a/src/Repository/MeshConceptRepository.php b/src/Repository/MeshConceptRepository.php index df6dadad4c..f0195b5f19 100644 --- a/src/Repository/MeshConceptRepository.php +++ b/src/Repository/MeshConceptRepository.php @@ -4,7 +4,7 @@ namespace App\Repository; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\QueryBuilder; @@ -12,8 +12,6 @@ use App\Entity\MeshConcept; use App\Entity\DTO\MeshConceptDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_values; @@ -23,9 +21,7 @@ class MeshConceptRepository extends ServiceEntityRepository implements DTOReposi public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, MeshConcept::class); } diff --git a/src/Repository/MeshDescriptorRepository.php b/src/Repository/MeshDescriptorRepository.php index 22005a817f..d5401e7fd1 100644 --- a/src/Repository/MeshDescriptorRepository.php +++ b/src/Repository/MeshDescriptorRepository.php @@ -10,7 +10,7 @@ use App\Entity\MeshQualifier; use App\Entity\MeshTerm; use App\Entity\MeshTree; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Service\MeshDescriptorSetTransmogrifier; use App\Traits\ManagerRepository; use DateTime; @@ -27,8 +27,6 @@ use Ilios\MeSH\Model\DescriptorSet; use Ilios\MeSH\Model\Term; use PDO; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_values; use function array_keys; @@ -42,9 +40,7 @@ class MeshDescriptorRepository extends ServiceEntityRepository implements public function __construct( ManagerRegistry $registry, protected MeshDescriptorSetTransmogrifier $transmogrifier, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, MeshDescriptor::class); } diff --git a/src/Repository/MeshPreviousIndexingRepository.php b/src/Repository/MeshPreviousIndexingRepository.php index c9d941fdc7..6b34374c94 100644 --- a/src/Repository/MeshPreviousIndexingRepository.php +++ b/src/Repository/MeshPreviousIndexingRepository.php @@ -4,7 +4,7 @@ namespace App\Repository; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\QueryBuilder; @@ -12,8 +12,6 @@ use App\Entity\MeshPreviousIndexing; use App\Entity\DTO\MeshPreviousIndexingDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_values; use function array_key_exists; @@ -27,9 +25,7 @@ class MeshPreviousIndexingRepository extends ServiceEntityRepository implements public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, MeshPreviousIndexing::class); } diff --git a/src/Repository/MeshQualifierRepository.php b/src/Repository/MeshQualifierRepository.php index 0af41a9fee..a59fe7ac24 100644 --- a/src/Repository/MeshQualifierRepository.php +++ b/src/Repository/MeshQualifierRepository.php @@ -4,7 +4,7 @@ namespace App\Repository; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\QueryBuilder; @@ -12,8 +12,6 @@ use App\Entity\MeshQualifier; use App\Entity\DTO\MeshQualifierDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_values; @@ -23,9 +21,7 @@ class MeshQualifierRepository extends ServiceEntityRepository implements DTORepo public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, MeshQualifier::class); } diff --git a/src/Repository/MeshTermRepository.php b/src/Repository/MeshTermRepository.php index 51a158f873..442d7a3821 100644 --- a/src/Repository/MeshTermRepository.php +++ b/src/Repository/MeshTermRepository.php @@ -4,7 +4,7 @@ namespace App\Repository; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\QueryBuilder; @@ -12,8 +12,6 @@ use App\Entity\MeshTerm; use App\Entity\DTO\MeshTermDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_values; @@ -23,9 +21,7 @@ class MeshTermRepository extends ServiceEntityRepository implements DTORepositor public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, MeshTerm::class); } diff --git a/src/Repository/MeshTreeRepository.php b/src/Repository/MeshTreeRepository.php index 5937527584..291492612a 100644 --- a/src/Repository/MeshTreeRepository.php +++ b/src/Repository/MeshTreeRepository.php @@ -4,7 +4,7 @@ namespace App\Repository; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\QueryBuilder; @@ -12,8 +12,6 @@ use App\Entity\MeshTree; use App\Entity\DTO\MeshTreeDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_keys; @@ -23,9 +21,7 @@ class MeshTreeRepository extends ServiceEntityRepository implements DTORepositor public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, MeshTree::class); } diff --git a/src/Repository/OfferingRepository.php b/src/Repository/OfferingRepository.php index 2bf9d51083..a5a7813e71 100644 --- a/src/Repository/OfferingRepository.php +++ b/src/Repository/OfferingRepository.php @@ -5,7 +5,7 @@ namespace App\Repository; use App\Entity\Offering; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use DateTime; use DateTimeZone; @@ -14,8 +14,6 @@ use Doctrine\ORM\AbstractQuery; use App\Entity\DTO\OfferingDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_values; use function array_keys; @@ -29,9 +27,7 @@ class OfferingRepository extends ServiceEntityRepository implements DTORepositor public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, Offering::class); } diff --git a/src/Repository/PendingUserUpdateRepository.php b/src/Repository/PendingUserUpdateRepository.php index d77b1fbc25..e80e4ddedd 100644 --- a/src/Repository/PendingUserUpdateRepository.php +++ b/src/Repository/PendingUserUpdateRepository.php @@ -4,7 +4,7 @@ namespace App\Repository; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\QueryBuilder; @@ -12,8 +12,6 @@ use App\Entity\PendingUserUpdate; use App\Entity\DTO\PendingUserUpdateDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_keys; @@ -23,9 +21,7 @@ class PendingUserUpdateRepository extends ServiceEntityRepository implements DTO public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, PendingUserUpdate::class); } diff --git a/src/Repository/ProgramRepository.php b/src/Repository/ProgramRepository.php index 926d57644e..cb0b5836e9 100644 --- a/src/Repository/ProgramRepository.php +++ b/src/Repository/ProgramRepository.php @@ -5,15 +5,13 @@ namespace App\Repository; use App\Entity\Program; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\QueryBuilder; use Doctrine\ORM\AbstractQuery; use App\Entity\DTO\ProgramDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_keys; use function array_values; @@ -26,9 +24,7 @@ class ProgramRepository extends ServiceEntityRepository implements public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, Program::class); } diff --git a/src/Repository/ProgramYearObjectiveRepository.php b/src/Repository/ProgramYearObjectiveRepository.php index 1369736770..f421717b29 100644 --- a/src/Repository/ProgramYearObjectiveRepository.php +++ b/src/Repository/ProgramYearObjectiveRepository.php @@ -6,7 +6,7 @@ use App\Entity\ProgramYearObjective; use App\Entity\DTO\ProgramYearObjectiveDTO; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use Doctrine\ORM\NonUniqueResultException; use Doctrine\ORM\NoResultException; @@ -14,8 +14,6 @@ use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\QueryBuilder; use Doctrine\ORM\AbstractQuery; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_values; use function array_keys; @@ -28,9 +26,7 @@ class ProgramYearObjectiveRepository extends ServiceEntityRepository implements public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, ProgramYearObjective::class); } diff --git a/src/Repository/ProgramYearRepository.php b/src/Repository/ProgramYearRepository.php index 197e353dd3..b5c7833b53 100644 --- a/src/Repository/ProgramYearRepository.php +++ b/src/Repository/ProgramYearRepository.php @@ -5,15 +5,13 @@ namespace App\Repository; use App\Entity\ProgramYear; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use Doctrine\ORM\AbstractQuery; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\QueryBuilder; use App\Entity\DTO\ProgramYearDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_values; use function array_keys; @@ -26,9 +24,7 @@ class ProgramYearRepository extends ServiceEntityRepository implements public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, ProgramYear::class); } diff --git a/src/Repository/ReportRepository.php b/src/Repository/ReportRepository.php index df2ceec9d6..c17187e557 100644 --- a/src/Repository/ReportRepository.php +++ b/src/Repository/ReportRepository.php @@ -4,7 +4,7 @@ namespace App\Repository; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\QueryBuilder; @@ -12,8 +12,6 @@ use App\Entity\Report; use App\Entity\DTO\ReportDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_keys; @@ -23,9 +21,7 @@ class ReportRepository extends ServiceEntityRepository implements DTORepositoryI public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, Report::class); } diff --git a/src/Repository/SchoolConfigRepository.php b/src/Repository/SchoolConfigRepository.php index ce2f6128d9..b81f1de092 100644 --- a/src/Repository/SchoolConfigRepository.php +++ b/src/Repository/SchoolConfigRepository.php @@ -4,7 +4,7 @@ namespace App\Repository; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\NoResultException; @@ -13,8 +13,6 @@ use App\Entity\SchoolConfig; use App\Entity\DTO\SchoolConfigDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_keys; use function array_values; @@ -25,9 +23,7 @@ class SchoolConfigRepository extends ServiceEntityRepository implements DTORepos public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, SchoolConfig::class); } diff --git a/src/Repository/SchoolRepository.php b/src/Repository/SchoolRepository.php index 3b2ae25c5b..ba09e41664 100644 --- a/src/Repository/SchoolRepository.php +++ b/src/Repository/SchoolRepository.php @@ -6,7 +6,7 @@ use App\Entity\School; use App\Entity\Session; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ImportableEntityRepository; use App\Traits\ManagerRepository; use DateTime; @@ -20,8 +20,6 @@ use Doctrine\Persistence\ManagerRegistry; use App\Service\UserMaterialFactory; use App\Traits\CalendarEventRepository; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_values; use function array_keys; @@ -38,9 +36,7 @@ class SchoolRepository extends ServiceEntityRepository implements public function __construct( ManagerRegistry $registry, protected UserMaterialFactory $userMaterialFactory, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, School::class); } diff --git a/src/Repository/SessionLearningMaterialRepository.php b/src/Repository/SessionLearningMaterialRepository.php index 495a3acf68..0343f0fc1f 100644 --- a/src/Repository/SessionLearningMaterialRepository.php +++ b/src/Repository/SessionLearningMaterialRepository.php @@ -4,7 +4,7 @@ namespace App\Repository; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\QueryBuilder; @@ -12,8 +12,6 @@ use App\Entity\SessionLearningMaterial; use App\Entity\DTO\SessionLearningMaterialDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_values; use function array_keys; @@ -26,9 +24,7 @@ class SessionLearningMaterialRepository extends ServiceEntityRepository implemen public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, SessionLearningMaterial::class); } diff --git a/src/Repository/SessionObjectiveRepository.php b/src/Repository/SessionObjectiveRepository.php index 8657be4cac..85c8646f07 100644 --- a/src/Repository/SessionObjectiveRepository.php +++ b/src/Repository/SessionObjectiveRepository.php @@ -6,7 +6,7 @@ use App\Entity\SessionObjective; use App\Entity\DTO\SessionObjectiveDTO; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use Doctrine\ORM\NonUniqueResultException; use Doctrine\ORM\NoResultException; @@ -14,8 +14,6 @@ use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\QueryBuilder; use Doctrine\ORM\AbstractQuery; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_values; use function array_keys; @@ -26,9 +24,7 @@ class SessionObjectiveRepository extends ServiceEntityRepository implements DTOR public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, SessionObjective::class); } diff --git a/src/Repository/SessionRepository.php b/src/Repository/SessionRepository.php index efad67db30..b3ccb4f98b 100644 --- a/src/Repository/SessionRepository.php +++ b/src/Repository/SessionRepository.php @@ -5,7 +5,7 @@ namespace App\Repository; use App\Entity\Session; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use DateTime; use Doctrine\ORM\AbstractQuery; @@ -15,8 +15,6 @@ use Doctrine\ORM\QueryBuilder; use App\Entity\DTO\SessionDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_keys; use function array_values; @@ -29,9 +27,7 @@ class SessionRepository extends ServiceEntityRepository implements public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, Session::class); } diff --git a/src/Repository/SessionTypeRepository.php b/src/Repository/SessionTypeRepository.php index ab0ad8f0e1..8fc9b25dea 100644 --- a/src/Repository/SessionTypeRepository.php +++ b/src/Repository/SessionTypeRepository.php @@ -6,7 +6,7 @@ use App\Entity\SessionType; use App\Service\DefaultDataImporter; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ImportableEntityRepository; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; @@ -14,8 +14,6 @@ use Doctrine\ORM\AbstractQuery; use App\Entity\DTO\SessionTypeDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_values; use function array_keys; @@ -30,9 +28,7 @@ class SessionTypeRepository extends ServiceEntityRepository implements public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, SessionType::class); } diff --git a/src/Repository/TermRepository.php b/src/Repository/TermRepository.php index b4679d8645..6e07878fcc 100644 --- a/src/Repository/TermRepository.php +++ b/src/Repository/TermRepository.php @@ -6,7 +6,7 @@ use App\Entity\Term; use App\Service\DefaultDataImporter; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ImportableEntityRepository; use App\Traits\ManagerRepository; use Doctrine\ORM\AbstractQuery; @@ -15,8 +15,6 @@ use App\Entity\DTO\TermDTO; use Doctrine\Persistence\ManagerRegistry; use App\Entity\TermInterface; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_values; use function array_keys; @@ -31,9 +29,7 @@ class TermRepository extends ServiceEntityRepository implements public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, Term::class); } diff --git a/src/Repository/UserRepository.php b/src/Repository/UserRepository.php index bc3905ca64..39842169d7 100644 --- a/src/Repository/UserRepository.php +++ b/src/Repository/UserRepository.php @@ -7,7 +7,7 @@ use App\Entity\Session; use App\Entity\UserRole; use App\Entity\UserRoleInterface; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ManagerRepository; use DateTime; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; @@ -24,8 +24,6 @@ use App\Service\UserMaterialFactory; use App\Traits\CalendarEventRepository; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_keys; use function array_values; @@ -38,9 +36,7 @@ class UserRepository extends ServiceEntityRepository implements DTORepositoryInt public function __construct( ManagerRegistry $registry, protected UserMaterialFactory $factory, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, User::class); } diff --git a/src/Repository/UserRoleRepository.php b/src/Repository/UserRoleRepository.php index fa1f2e83a9..cc1ce644b6 100644 --- a/src/Repository/UserRoleRepository.php +++ b/src/Repository/UserRoleRepository.php @@ -4,7 +4,7 @@ namespace App\Repository; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ImportableEntityRepository; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; @@ -13,8 +13,6 @@ use App\Entity\UserRole; use App\Entity\DTO\UserRoleDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; class UserRoleRepository extends ServiceEntityRepository implements DTORepositoryInterface, @@ -26,9 +24,7 @@ class UserRoleRepository extends ServiceEntityRepository implements public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, UserRole::class); } diff --git a/src/Repository/VocabularyRepository.php b/src/Repository/VocabularyRepository.php index c86462eb54..481a4183bc 100644 --- a/src/Repository/VocabularyRepository.php +++ b/src/Repository/VocabularyRepository.php @@ -5,7 +5,7 @@ namespace App\Repository; use App\Service\DefaultDataImporter; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use App\Traits\ImportableEntityRepository; use App\Traits\ManagerRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; @@ -14,8 +14,6 @@ use App\Entity\Vocabulary; use App\Entity\DTO\VocabularyDTO; use Doctrine\Persistence\ManagerRegistry; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use function array_values; use function array_keys; @@ -30,9 +28,7 @@ class VocabularyRepository extends ServiceEntityRepository implements public function __construct( ManagerRegistry $registry, - protected CacheInterface $cache, - protected DTOCacheTagger $cacheTagger, - protected FeatureManagerInterface $featureManager, + protected DTOCacheManager $cacheManager, ) { parent::__construct($registry, Vocabulary::class); } diff --git a/src/Service/DTOCacheManager.php b/src/Service/DTOCacheManager.php new file mode 100644 index 0000000000..da48274465 --- /dev/null +++ b/src/Service/DTOCacheManager.php @@ -0,0 +1,139 @@ +featureManager->isActive('dto_caching'); + } + + /** + * Cache and tag a set of DTOs + */ + public function cacheDtos(string $name, array $dtos, string $idField): void + { + $tagger = $this; + foreach ($dtos as $dto) { + $this->cacheContract->get( + $this->getDtoCacheKey($name, $dto->$idField), + function (ItemInterface $item) use ($dto, $tagger) { + $tagger->tag($item, $dto); + return $dto; + } + ); + } + } + + /** + * Get DTOs from the cache + */ + public function getCachedDtos(string $name, array $ids): array + { + $cacheIds = array_map(fn(mixed $id) => $this->getDtoCacheKey($name, $id), $ids); + $items = $this->psr6Cache->getItems($cacheIds); + $rhett = []; + /** @var CacheItemInterface $item */ + foreach ($items as $item) { + if ($item->isHit()) { + $rhett[] = $item->get(); + } + } + return $rhett; + } + + + /** + * Tag a cache item with all the relationships and data for a DTO + */ + protected function tag(ItemInterface $item, object $dto): void + { + $tags = $this->getTagsForDto($dto); + $item->tag($tags); + $item->expiresAfter(DateInterval::createFromDateString('1 day')); + } + + /** + * Parse out the parts of a DTO + * Then, for each relationship, add a tag to the cache + */ + protected function getTagsForDto(object $dto): array + { + $tags = []; + $reflection = new ReflectionClass($dto); + $type = $this->entityMetadata->extractType($reflection); + $entity = $this->entityMetadata->getEntityForType($type); + $idProperty = $this->entityMetadata->extractId($reflection); + $tags[] = self::getTag($entity, $dto->$idProperty); + $tags[] = self::getTag($entity, false); + + $related = $this->entityMetadata->extractRelated($reflection); + foreach ($related as $name => $type) { + $entity = $this->entityMetadata->getEntityForType($type); + if (is_array($dto->$name)) { + foreach ($dto->$name as $id) { + $tags[] = self::getTag($entity, $id); + } + } elseif ($dto->$name) { + $tags[] = self::getTag($entity, $dto->$name); + } + } + return $tags; + } + + /** + * Get the tag for an entity/id combo. + * We do this here because we can't actually store the FQN for the entity + * because slash isn't an allowed character. + * When no id is sent we create a tag with just the entity name which is used + * when a new value is created to invalidate anything that touched the original. + */ + public static function getTag(string $entity, int|string|false $id): string + { + // backslashes aren't allowed in tags, remove them from our name + $name = str_replace('\\', '', $entity); + return $name . ($id ? "-${id}" : ''); + } + + /** + * Construct a consistent cache key for a DTO which doesn't contain reserved characters. + */ + protected function getDtoCacheKey(string $name, mixed $id): string + { + // backslashes aren't allowed in keys, remove them from our name + $name = str_replace('\\', '', $name); + return $name . self::CACHE_KEY_SEPARATOR . $id; + } + + /** + * Extract the ID from a cache key for a DTO + */ + protected function getDtoIdFromCacheKey(string $key): string + { + $arr = explode(self::CACHE_KEY_SEPARATOR, $key); + return $arr[1]; + } +} diff --git a/src/Service/DTOCacheTagger.php b/src/Service/DTOCacheTagger.php deleted file mode 100644 index 157827ca4f..0000000000 --- a/src/Service/DTOCacheTagger.php +++ /dev/null @@ -1,68 +0,0 @@ -getTagsForDto($dto); - $item->tag($tags); - $item->expiresAfter(DateInterval::createFromDateString('1 day')); - } - - /** - * Parse out the parts of a DTO - * Then, for each relationship, add a tag to the cache - */ - protected function getTagsForDto(object $dto): array - { - $tags = []; - $reflection = new ReflectionClassAlias($dto); - $type = $this->entityMetadata->extractType($reflection); - $entity = $this->entityMetadata->getEntityForType($type); - $idProperty = $this->entityMetadata->extractId($reflection); - $tags[] = self::getTag($entity, $dto->$idProperty); - $tags[] = self::getTag($entity, false); - - $related = $this->entityMetadata->extractRelated($reflection); - foreach ($related as $name => $type) { - $entity = $this->entityMetadata->getEntityForType($type); - if (is_array($dto->$name)) { - foreach ($dto->$name as $id) { - $tags[] = self::getTag($entity, $id); - } - } elseif ($dto->$name) { - $tags[] = self::getTag($entity, $dto->$name); - } - } - return $tags; - } - - /** - * Get the tag for an entity/id combo. - * We do this here because we can't actually store the FQN for the entity - * because slash isn't an allowed character. - * When no id is sent we create a tag with just the entity name which is used - * when a new value is created to invalidate anything that touched the original. - */ - public static function getTag(string $entity, int|string|false $id): string - { - // backslashes aren't allowed in tags, remove them from our name - $name = str_replace('\\', '', $entity); - return $name . ($id ? "-${id}" : ''); - } -} diff --git a/src/Service/DynamicCacheFactory.php b/src/Service/DynamicCacheFactory.php index e767707a51..d8e6f4de90 100644 --- a/src/Service/DynamicCacheFactory.php +++ b/src/Service/DynamicCacheFactory.php @@ -4,8 +4,6 @@ namespace App\Service; -use Symfony\Component\Cache\Adapter\ArrayAdapter; -use Symfony\Component\Cache\Adapter\ChainAdapter; use Symfony\Component\Cache\Adapter\FilesystemTagAwareAdapter; use Symfony\Component\Cache\Adapter\NullAdapter; use Symfony\Component\Cache\Adapter\RedisAdapter; diff --git a/src/Service/JsonApiDataShaper.php b/src/Service/JsonApiDataShaper.php index fe5cbe7b91..d54df5264d 100644 --- a/src/Service/JsonApiDataShaper.php +++ b/src/Service/JsonApiDataShaper.php @@ -5,14 +5,17 @@ namespace App\Service; use App\Classes\JsonApiData; +use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; use Symfony\Component\Serializer\Normalizer\NormalizerAwareTrait; class JsonApiDataShaper { use NormalizerAwareTrait; - public function __construct(protected EntityRepositoryLookup $entityRepositoryLookup) - { + public function __construct( + protected EntityRepositoryLookup $entityRepositoryLookup, + protected AuthorizationCheckerInterface $authorizationChecker, + ) { } public function shapeData(array $data, array $sideLoadFields): array @@ -20,6 +23,7 @@ public function shapeData(array $data, array $sideLoadFields): array $jsonApiData = new JsonApiData( $this->entityRepositoryLookup, $this->normalizer, + $this->authorizationChecker, $data, $sideLoadFields ); diff --git a/src/Traits/ManagerRepository.php b/src/Traits/ManagerRepository.php index b37e189f89..ad112c63a1 100644 --- a/src/Traits/ManagerRepository.php +++ b/src/Traits/ManagerRepository.php @@ -4,15 +4,13 @@ namespace App\Traits; -use App\Service\DTOCacheTagger; +use App\Service\DTOCacheManager; use Doctrine\DBAL\Connection; use Doctrine\ORM\AbstractQuery; use Doctrine\ORM\EntityManager; use Doctrine\ORM\Id\AssignedGenerator; use Doctrine\ORM\QueryBuilder; use Exception; -use Flagception\Manager\FeatureManagerInterface; -use Symfony\Contracts\Cache\CacheInterface; use Symfony\Contracts\Cache\ItemInterface; /** @@ -64,30 +62,22 @@ public function findDTOBy(array $criteria): ?object public function findDTOsBy(array $criteria, array $orderBy = null, $limit = null, $offset = null): array { $ids = $this->findIdsBy($criteria, $orderBy, $limit, $offset); - $cachedDtos = $this->getCachedDTOs($ids); + $cacheManager = $this->getCacheManager(); $idField = $this->getIdField(); - $cachedIds = array_column($cachedDtos, $idField); - - $missedDtos = []; - $missedIds = array_diff($ids, $cachedIds); - if (count($missedIds)) { - $hydratedDtos = $this->hydrateDTOsFromIds($missedIds); - if ($this->getFeatureManager()->isActive('dto_caching')) { - $tagger = $this->getCacheTagger(); - $missedDtos = array_map(fn($dto) => $this->getCache()->get( - $this->getDtoCacheKey($dto->$idField), - function (ItemInterface $item) use ($dto, $tagger) { - $tagger->tag($item, $dto); - return $dto; - } - ), $hydratedDtos); - } else { - $missedDtos = $hydratedDtos; + if ($cacheManager->isEnabled()) { + $cachedDtos = $cacheManager->getCachedDtos(self::class, $ids); + $cachedIds = array_column($cachedDtos, $idField); + $missedDtos = []; + $missedIds = array_diff($ids, $cachedIds); + if (count($missedIds)) { + $missedDtos = $this->hydrateDTOsFromIds($missedIds); + $cacheManager->cacheDtos(self::class, $missedDtos, $idField); } + $dtos = array_values([...$cachedDtos, ...$missedDtos]); + } else { + $dtos = $this->hydrateDTOsFromIds($ids); } - $dtos = array_values([...$cachedDtos, ...$missedDtos]); - // Lots of work here to re-order the results in the same way as originally requested $dtosById = []; foreach ($dtos as $dto) { @@ -133,40 +123,6 @@ protected function doFindIdsBy(array $criteria, array $orderBy = null, $limit = return $qb->getQuery()->getResult(AbstractQuery::HYDRATE_SCALAR_COLUMN); } - /** - * Construct a consistent cache key for a DTO which doesn't contain reserved characters. - */ - protected function getDtoCacheKey(mixed $id): string - { - // backslashes aren't allowed in keys, remove them from our name - $name = str_replace('\\', '', self::class); - return $name . 'xxDTOxx' . $id; - } - - /** - * Look into the cache and find any DTOs we already have - * But don't persist anything to the cache here, we'll do that after - * fetching missing items. - */ - protected function getCachedDTOs(array $ids): array - { - if (!$this->getFeatureManager()->isActive('dto_caching')) { - return []; - } - $dtosOrMisses = array_map( - fn(mixed $id) => $this->getCache()->get( - $this->getDtoCacheKey($id), - function (ItemInterface $item, bool &$save) { - $save = false; - return false; - } - ), - $ids - ); - - return array_filter($dtosOrMisses); - } - public function update($entity, $andFlush = true, $forceId = false): void { $this->getEntityManager()->persist($entity); @@ -345,30 +301,12 @@ abstract protected function attachCriteriaToQueryBuilder( ?int $offset ): void; - protected function getCache(): CacheInterface - { - if (!isset($this->cache)) { - throw new Exception("The 'cache' property is missing from " . self::class); - } - - return $this->cache; - } - - protected function getCacheTagger(): DTOCacheTagger - { - if (!isset($this->cacheTagger)) { - throw new Exception("The 'cacheTagger' property is missing from " . self::class); - } - - return $this->cacheTagger; - } - - protected function getFeatureManager(): FeatureManagerInterface + protected function getCacheManager(): DTOCacheManager { - if (!isset($this->featureManager)) { - throw new Exception("The 'featureManager' property is missing from " . self::class); + if (!isset($this->cacheManager)) { + throw new Exception("The 'cacheManager' property is missing from " . self::class); } - return $this->featureManager; + return $this->cacheManager; } } diff --git a/tests/Controller/IcsControllerTest.php b/tests/Controller/IcsControllerTest.php index 5b2399ea16..224c6a25b0 100644 --- a/tests/Controller/IcsControllerTest.php +++ b/tests/Controller/IcsControllerTest.php @@ -324,4 +324,29 @@ public function testLinkedSessionWithDueDatesNotShown2635() ); $this->assertFalse(strpos($content, $skipTitle), 'Prerequisite Session Not Included'); } + + public function testPublishedTTL(): void + { + $container = $this->kernelBrowser->getContainer(); + $session = $container->get(SessionData::class)->getOne(); + $this->makeJsonRequest( + $this->kernelBrowser, + 'PUT', + $this->getUrl( + $this->kernelBrowser, + 'app_api_sessions_put', + ['version' => $this->apiVersion, 'id' => $session['id']] + ), + json_encode(['session' => $session]), + $this->getTokenForUser($this->kernelBrowser, 2) + ); + $response = $this->kernelBrowser->getResponse(); + $this->assertJsonResponse($response, Response::HTTP_OK); + + $url = '/ics/' . hash('sha256', '1'); + $this->kernelBrowser->request('GET', $url); + $response = $this->kernelBrowser->getResponse(); + $content = $response->getContent(); + $this->assertStringContainsString('X-PUBLISHED-TTL:PT1H', $content); + } } diff --git a/tests/Endpoints/CourseTest.php b/tests/Endpoints/CourseTest.php index d6b3a87615..d680b79e56 100644 --- a/tests/Endpoints/CourseTest.php +++ b/tests/Endpoints/CourseTest.php @@ -740,4 +740,37 @@ public function testIncludeSessionDetails() $this->assertIsArray($includes['instructorGroups']); $this->assertEquals(['1', '2'], $includes['instructorGroups']); } + + public function testIncludedDataNotLoadedForUnprivilegedUsers() + { + $url = $this->getUrl( + $this->kernelBrowser, + "app_api_courses_getone", + [ + 'version' => $this->apiVersion, + 'id' => 1, + 'include' => 'sessions.administrators' + ] + ); + $this->createJsonApiRequest( + 'GET', + $url, + null, + $this->getTokenForUser($this->kernelBrowser, 5) + ); + + $response = $this->kernelBrowser->getResponse(); + + if (Response::HTTP_NOT_FOUND === $response->getStatusCode()) { + $this->fail("Unable to load url: {$url}"); + } + + $this->assertJsonApiResponse($response, Response::HTTP_OK); + $content = json_decode($response->getContent()); + $this->assertObjectHasAttribute('included', $content); + + $types = array_column($content->included, 'type'); + $this->assertCount(2, $content->included); + $this->assertNotContains('users', $types); + } } diff --git a/tests/Repository/AamcMethodRepositoryTest.php b/tests/Repository/AamcMethodRepositoryTest.php index fa2bfbdf8d..8d19202b03 100644 --- a/tests/Repository/AamcMethodRepositoryTest.php +++ b/tests/Repository/AamcMethodRepositoryTest.php @@ -9,7 +9,6 @@ use App\Repository\AamcMethodRepository; use App\Tests\Fixture\LoadAamcMethodData; use Doctrine\Common\DataFixtures\ReferenceRepository; -use Flagception\Manager\FeatureManagerInterface; use Liip\TestFixturesBundle\Services\DatabaseToolCollection; use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; use Symfony\Component\HttpKernel\KernelInterface;