diff --git a/composer.json b/composer.json index 95ab298..c5dc777 100644 --- a/composer.json +++ b/composer.json @@ -45,6 +45,7 @@ "typo3/cms-install": "^14.3", "typo3/cms-reactions": "^14.3", "typo3/cms-recycler": "^14.3", + "typo3/cms-redirects": "^14.3", "typo3/cms-rte-ckeditor": "^14.3", "typo3/cms-scheduler": "^14.3", "typo3/cms-seo": "^14.3", diff --git a/composer.lock b/composer.lock index d8c41db..2712e06 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "f9a73e5875dc0072a5a3853989adda94", + "content-hash": "3bbaac32e05f454cec41735413f68091", "packages": [ { "name": "apache-solr-for-typo3/solr", @@ -133,16 +133,16 @@ }, { "name": "b13/container", - "version": "3.2.3", + "version": "3.2.4", "source": { "type": "git", "url": "https://github.com/b13/container.git", - "reference": "bc3e47686115fa98ed9dd439ec507547bd3d59ea" + "reference": "e96d2df1a42f7eb9f30842b8a395a0820ba14416" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/b13/container/zipball/bc3e47686115fa98ed9dd439ec507547bd3d59ea", - "reference": "bc3e47686115fa98ed9dd439ec507547bd3d59ea", + "url": "https://api.github.com/repos/b13/container/zipball/e96d2df1a42f7eb9f30842b8a395a0820ba14416", + "reference": "e96d2df1a42f7eb9f30842b8a395a0820ba14416", "shasum": "" }, "require": { @@ -189,9 +189,9 @@ "homepage": "https://b13.com", "support": { "issues": "https://github.com/b13/container/issues", - "source": "https://github.com/b13/container/tree/3.2.3" + "source": "https://github.com/b13/container/tree/3.2.4" }, - "time": "2026-03-17T15:00:20+00:00" + "time": "2026-09-30T11:17:07+00:00" }, { "name": "b13/typo3-updater", @@ -348,16 +348,16 @@ }, { "name": "composer/ca-bundle", - "version": "1.5.14", + "version": "1.6.0", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "0c8abba0634f637bd78c4e451981da368d403463" + "reference": "2c99cf2e92516985dea4914812b93d9daf01cdd6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/0c8abba0634f637bd78c4e451981da368d403463", - "reference": "0c8abba0634f637bd78c4e451981da368d403463", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/2c99cf2e92516985dea4914812b93d9daf01cdd6", + "reference": "2c99cf2e92516985dea4914812b93d9daf01cdd6", "shasum": "" }, "require": { @@ -404,7 +404,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.5.14" + "source": "https://github.com/composer/ca-bundle/tree/1.6.0" }, "funding": [ { @@ -416,20 +416,20 @@ "type": "github" } ], - "time": "2026-08-21T14:57:29+00:00" + "time": "2026-10-20T20:14:05+00:00" }, { "name": "composer/class-map-generator", - "version": "1.7.3", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/composer/class-map-generator.git", - "reference": "86d8208fc3c649a3a999daf1a63c25201be2990f" + "reference": "c0efbeb2f3fd7e23c7f180a59765c0b48a31fbc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/class-map-generator/zipball/86d8208fc3c649a3a999daf1a63c25201be2990f", - "reference": "86d8208fc3c649a3a999daf1a63c25201be2990f", + "url": "https://api.github.com/repos/composer/class-map-generator/zipball/c0efbeb2f3fd7e23c7f180a59765c0b48a31fbc4", + "reference": "c0efbeb2f3fd7e23c7f180a59765c0b48a31fbc4", "shasum": "" }, "require": { @@ -473,7 +473,7 @@ ], "support": { "issues": "https://github.com/composer/class-map-generator/issues", - "source": "https://github.com/composer/class-map-generator/tree/1.7.3" + "source": "https://github.com/composer/class-map-generator/tree/1.8.0" }, "funding": [ { @@ -485,7 +485,7 @@ "type": "github" } ], - "time": "2026-05-05T09:17:07+00:00" + "time": "2026-09-25T15:24:19+00:00" }, { "name": "composer/composer", @@ -745,16 +745,16 @@ }, { "name": "composer/semver", - "version": "3.4.4", + "version": "3.5.2", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95" + "reference": "9dfce66f1e97360ea5e6d3e38ab14277e4cc591e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/198166618906cb2de69b95d7d47e5fa8aa1b2b95", - "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95", + "url": "https://api.github.com/repos/composer/semver/zipball/9dfce66f1e97360ea5e6d3e38ab14277e4cc591e", + "reference": "9dfce66f1e97360ea5e6d3e38ab14277e4cc591e", "shasum": "" }, "require": { @@ -796,7 +796,7 @@ "homepage": "http://robbast.nl" } ], - "description": "Semver library that offers utilities, version constraint parsing and validation.", + "description": "Version comparison library that offers utilities, version constraint parsing and validation.", "keywords": [ "semantic", "semver", @@ -806,7 +806,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.4.4" + "source": "https://github.com/composer/semver/tree/3.5.2" }, "funding": [ { @@ -818,7 +818,7 @@ "type": "github" } ], - "time": "2025-08-20T19:15:30+00:00" + "time": "2026-10-22T15:37:26+00:00" }, { "name": "composer/spdx-licenses", @@ -1014,16 +1014,16 @@ }, { "name": "doctrine/dbal", - "version": "4.4.4", + "version": "4.4.5", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "fb9e0ffe15e1590e24dc61c0c0a23f9a33ee42ce" + "reference": "205fdf552ffafe33c1d12a41a2d6c7217666c32c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/fb9e0ffe15e1590e24dc61c0c0a23f9a33ee42ce", - "reference": "fb9e0ffe15e1590e24dc61c0c0a23f9a33ee42ce", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/205fdf552ffafe33c1d12a41a2d6c7217666c32c", + "reference": "205fdf552ffafe33c1d12a41a2d6c7217666c32c", "shasum": "" }, "require": { @@ -1039,9 +1039,9 @@ "phpstan/phpstan": "2.1.30", "phpstan/phpstan-phpunit": "2.0.7", "phpstan/phpstan-strict-rules": "^2", - "phpunit/phpunit": "11.5.50", - "slevomat/coding-standard": "8.27.1", - "squizlabs/php_codesniffer": "4.0.1", + "phpunit/phpunit": "11.5.56", + "slevomat/coding-standard": "8.31.1", + "squizlabs/php_codesniffer": "4.0.4", "symfony/cache": "^6.3.8|^7.0|^8.0", "symfony/console": "^5.4|^6.3|^7.0|^8.0" }, @@ -1100,7 +1100,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/4.4.4" + "source": "https://github.com/doctrine/dbal/tree/4.4.5" }, "funding": [ { @@ -1116,7 +1116,7 @@ "type": "tidelift" } ], - "time": "2026-07-21T14:34:40+00:00" + "time": "2026-09-03T13:05:34+00:00" }, { "name": "doctrine/deprecations", @@ -1237,27 +1237,25 @@ }, { "name": "doctrine/lexer", - "version": "3.0.1", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd" + "reference": "71d305eaa6480d3d3460c7d053d1da7749fa9cca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", - "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/71d305eaa6480d3d3460c7d053d1da7749fa9cca", + "reference": "71d305eaa6480d3d3460c7d053d1da7749fa9cca", "shasum": "" }, "require": { "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^12", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^10.5", - "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^5.21" + "doctrine/coding-standard": "^14", + "phpstan/phpstan": "^2", + "phpunit/phpunit": "^10.5.58 || ^12.5.4" }, "type": "library", "autoload": { @@ -1294,7 +1292,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/3.0.1" + "source": "https://github.com/doctrine/lexer/tree/3.0.3" }, "funding": [ { @@ -1310,7 +1308,7 @@ "type": "tidelift" } ], - "time": "2024-02-05T11:56:58+00:00" + "time": "2026-10-01T06:59:29+00:00" }, { "name": "egulias/email-validator", @@ -1381,16 +1379,16 @@ }, { "name": "enshrined/svg-sanitize", - "version": "0.22.0", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/darylldoyle/svg-sanitizer.git", - "reference": "0afa95ea74be155a7bcd6c6fb60c276c39984500" + "reference": "1976ff93c8d8a234cdd3ff99626bd43ecf11bf49" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/darylldoyle/svg-sanitizer/zipball/0afa95ea74be155a7bcd6c6fb60c276c39984500", - "reference": "0afa95ea74be155a7bcd6c6fb60c276c39984500", + "url": "https://api.github.com/repos/darylldoyle/svg-sanitizer/zipball/1976ff93c8d8a234cdd3ff99626bd43ecf11bf49", + "reference": "1976ff93c8d8a234cdd3ff99626bd43ecf11bf49", "shasum": "" }, "require": { @@ -1420,9 +1418,9 @@ "description": "An SVG sanitizer for PHP", "support": { "issues": "https://github.com/darylldoyle/svg-sanitizer/issues", - "source": "https://github.com/darylldoyle/svg-sanitizer/tree/0.22.0" + "source": "https://github.com/darylldoyle/svg-sanitizer/tree/1.1.1" }, - "time": "2025-08-12T10:13:48+00:00" + "time": "2026-10-20T09:45:10+00:00" }, { "name": "evomedien/evo-megamenu-json", @@ -1528,26 +1526,26 @@ }, { "name": "firebase/php-jwt", - "version": "v7.1.0", + "version": "v7.2.1", "source": { "type": "git", "url": "https://github.com/googleapis/php-jwt.git", - "reference": "b374a5d1a4f1f67fadc2165cdb284645945e2fc0" + "reference": "0501f5729b9e2448516674aff07c7d1727869b8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/googleapis/php-jwt/zipball/b374a5d1a4f1f67fadc2165cdb284645945e2fc0", - "reference": "b374a5d1a4f1f67fadc2165cdb284645945e2fc0", + "url": "https://api.github.com/repos/googleapis/php-jwt/zipball/0501f5729b9e2448516674aff07c7d1727869b8e", + "reference": "0501f5729b9e2448516674aff07c7d1727869b8e", "shasum": "" }, "require": { "php": "^8.0" }, "require-dev": { - "guzzlehttp/guzzle": "^7.4", + "guzzlehttp/guzzle": "^7.4||^8.0", "phpfastcache/phpfastcache": "^9.2", "phpseclib/phpseclib": "~3.0", - "phpspec/prophecy-phpunit": "^2.0", + "phpspec/prophecy-phpunit": "^2.2", "phpunit/phpunit": "^9.5", "psr/cache": "^2.0||^3.0", "psr/http-client": "^1.0", @@ -1559,6 +1557,14 @@ "phpseclib/phpseclib": "Support PS256 (RSASSA-PSS) signatures" }, "type": "library", + "extra": { + "component": { + "id": "jwt", + "path": "Jwt", + "entry": "README.md", + "target": "googleapis/php-jwt.git" + } + }, "autoload": { "psr-4": { "Firebase\\JWT\\": "src" @@ -1588,22 +1594,22 @@ ], "support": { "issues": "https://github.com/googleapis/php-jwt/issues", - "source": "https://github.com/googleapis/php-jwt/tree/v7.1.0" + "source": "https://github.com/googleapis/php-jwt/tree/v7.2.1" }, - "time": "2026-06-11T17:54:14+00:00" + "time": "2026-09-28T17:51:46+00:00" }, { "name": "friendsoftypo3/content-blocks", - "version": "2.4.9", + "version": "2.4.10", "source": { "type": "git", "url": "https://github.com/FriendsOfTYPO3/content-blocks.git", - "reference": "c4eef30dcdb1a5676f259174da1186caef116f67" + "reference": "95cd2c8b08ad8afd184142f96bba094c0d9652a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfTYPO3/content-blocks/zipball/c4eef30dcdb1a5676f259174da1186caef116f67", - "reference": "c4eef30dcdb1a5676f259174da1186caef116f67", + "url": "https://api.github.com/repos/FriendsOfTYPO3/content-blocks/zipball/95cd2c8b08ad8afd184142f96bba094c0d9652a2", + "reference": "95cd2c8b08ad8afd184142f96bba094c0d9652a2", "shasum": "" }, "require": { @@ -1650,7 +1656,7 @@ "symfony/var-exporter": "" } }, - "version": "2.4.9", + "version": "2.4.10", "web-dir": ".Build/public", "extension-key": "content_blocks" } @@ -1679,7 +1685,7 @@ "issues": "https://github.com/FriendsOfTYPO3/content-blocks/issues", "source": "https://github.com/FriendsOfTYPO3/content-blocks" }, - "time": "2026-09-09T14:14:58+00:00" + "time": "2026-09-22T14:35:10+00:00" }, { "name": "friendsoftypo3/headless", @@ -1779,27 +1785,27 @@ }, { "name": "georgringer/news", - "version": "14.1.1", + "version": "14.1.2", "source": { "type": "git", "url": "https://github.com/georgringer/news.git", - "reference": "4524b92db01754830a0625a0d16e88fd07808a64" + "reference": "36a5a983022f5648352975142d9daef6f77a657d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/georgringer/news/zipball/4524b92db01754830a0625a0d16e88fd07808a64", - "reference": "4524b92db01754830a0625a0d16e88fd07808a64", + "url": "https://api.github.com/repos/georgringer/news/zipball/36a5a983022f5648352975142d9daef6f77a657d", + "reference": "36a5a983022f5648352975142d9daef6f77a657d", "shasum": "" }, "require": { "php": ">= 8.2 < 8.6", "symfony/console": "^5.4 || ^6.4 || ^7.0", - "typo3/cms-backend": "^13.4.29 || ^14.0", - "typo3/cms-core": "^13.4.29 || ^14.0", - "typo3/cms-extbase": "^13.4.29 || ^14.0", - "typo3/cms-fluid": "^13.4.29 || ^14.0", - "typo3/cms-frontend": "^13.4.29 || ^14.0", - "typo3/cms-install": "^13.4.29 || ^14.0" + "typo3/cms-backend": "^13.4.29 || ^14.3", + "typo3/cms-core": "^13.4.29 || ^14.3", + "typo3/cms-extbase": "^13.4.29 || ^14.3", + "typo3/cms-fluid": "^13.4.29 || ^14.3", + "typo3/cms-frontend": "^13.4.29 || ^14.3", + "typo3/cms-install": "^13.4.29 || ^14.3" }, "conflict": { "sebastian/recursion-context": "6.0.0 || 6.0.1 || 6.0.2" @@ -1808,12 +1814,16 @@ "typo3-ter/news": "self.version" }, "require-dev": { + "a9f/fractor": "~1.0.0", + "a9f/fractor-xliff": "~1.0.0", + "a9f/fractor-xml": "~1.0.0", "a9f/typo3-fractor": "@dev", "friendsofphp/php-cs-fixer": "^3.89.2", "phpstan/phpdoc-parser": "^1.33.0", "phpunit/phpunit": "^10.5.58", "ssch/typo3-rector": "^3.7", - "typo3/cms-seo": "^13.4.29 || ^14.0", + "typo3/cms-fluid-styled-content": "^13.4.29 || ^14.3", + "typo3/cms-seo": "^13.4.29 || ^14.3", "typo3/coding-standards": "^0.8.0", "typo3/testing-framework": "^8.3.1", "webmozart/assert": "^1.12.1" @@ -1880,26 +1890,26 @@ "type": "patreon" } ], - "time": "2026-08-11T16:25:20+00:00" + "time": "2026-10-12T08:22:46+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "8.2.0", + "version": "8.3.1", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "93939470950a9b11e2e84204166ef5e048c55fe4" + "reference": "7d9b1f430bb65ac664e120af227bf9a795ad6333" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/93939470950a9b11e2e84204166ef5e048c55fe4", - "reference": "93939470950a9b11e2e84204166ef5e048c55fe4", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/7d9b1f430bb65ac664e120af227bf9a795ad6333", + "reference": "7d9b1f430bb65ac664e120af227bf9a795ad6333", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^3.0.2", - "guzzlehttp/psr7": "^3.1", + "guzzlehttp/promises": "^3.1", + "guzzlehttp/psr7": "^3.2", "php": "^7.4 || ^8.0", "psr/http-client": "^1.0", "psr/http-factory": "^1.0", @@ -1913,7 +1923,7 @@ "bamarni/composer-bin-plugin": "^1.8.2", "ext-curl": "*", "guzzle/client-integration-tests": "4.0.1", - "guzzlehttp/test-server": "^1.0.1", + "guzzlehttp/test-server": "^1.1", "php-http/message-factory": "^1.1", "phpunit/phpunit": "^9.6.34", "psr/log": "^1.1 || ^2.0 || ^3.0" @@ -1990,7 +2000,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/8.2.0" + "source": "https://github.com/guzzle/guzzle/tree/8.3.1" }, "funding": [ { @@ -2006,24 +2016,25 @@ "type": "tidelift" } ], - "time": "2026-09-06T13:55:09+00:00" + "time": "2026-10-25T21:35:34+00:00" }, { "name": "guzzlehttp/promises", - "version": "3.0.2", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "42118e66a53c492effaf92bc357e931985d5c6f9" + "reference": "094d0ec418eb3b1411ea271a180ec95cae6ae933" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/42118e66a53c492effaf92bc357e931985d5c6f9", - "reference": "42118e66a53c492effaf92bc357e931985d5c6f9", + "url": "https://api.github.com/repos/guzzle/promises/zipball/094d0ec418eb3b1411ea271a180ec95cae6ae933", + "reference": "094d0ec418eb3b1411ea271a180ec95cae6ae933", "shasum": "" }, "require": { - "php": "^7.4 || ^8.0" + "php": "^7.4 || ^8.0", + "symfony/deprecation-contracts": "^2.5 || ^3.0" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", @@ -2073,7 +2084,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/3.0.2" + "source": "https://github.com/guzzle/promises/tree/3.1.0" }, "funding": [ { @@ -2089,20 +2100,20 @@ "type": "tidelift" } ], - "time": "2026-08-24T10:00:26+00:00" + "time": "2026-10-18T12:48:16+00:00" }, { "name": "guzzlehttp/psr7", - "version": "3.1.0", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "a3059ba1a84c9139c4ae03cf0f45bea276c97c74" + "reference": "cdc139396207a5eba10c242d241fb014cb098390" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/a3059ba1a84c9139c4ae03cf0f45bea276c97c74", - "reference": "a3059ba1a84c9139c4ae03cf0f45bea276c97c74", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/cdc139396207a5eba10c242d241fb014cb098390", + "reference": "cdc139396207a5eba10c242d241fb014cb098390", "shasum": "" }, "require": { @@ -2192,7 +2203,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/3.1.0" + "source": "https://github.com/guzzle/psr7/tree/3.2.0" }, "funding": [ { @@ -2208,7 +2219,7 @@ "type": "tidelift" } ], - "time": "2026-08-24T11:02:13+00:00" + "time": "2026-10-17T23:57:19+00:00" }, { "name": "halaxa/json-machine", @@ -2274,16 +2285,16 @@ }, { "name": "justinrainbow/json-schema", - "version": "6.12.0", + "version": "6.14.0", "source": { "type": "git", "url": "https://github.com/jsonrainbow/json-schema.git", - "reference": "8ef236a1a37df364b518b7411a4b5bb95b040d79" + "reference": "bae415e135dd68260c2d020ba392850231e9b1ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/8ef236a1a37df364b518b7411a4b5bb95b040d79", - "reference": "8ef236a1a37df364b518b7411a4b5bb95b040d79", + "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/bae415e135dd68260c2d020ba392850231e9b1ab", + "reference": "bae415e135dd68260c2d020ba392850231e9b1ab", "shasum": "" }, "require": { @@ -2333,9 +2344,9 @@ ], "support": { "issues": "https://github.com/jsonrainbow/json-schema/issues", - "source": "https://github.com/jsonrainbow/json-schema/tree/6.12.0" + "source": "https://github.com/jsonrainbow/json-schema/tree/6.14.0" }, - "time": "2026-09-04T12:54:20+00:00" + "time": "2026-10-24T08:53:34+00:00" }, { "name": "lolli42/finediff", @@ -2662,20 +2673,21 @@ }, { "name": "masterminds/html5", - "version": "2.11.0", + "version": "2.12.0", "source": { "type": "git", "url": "https://github.com/Masterminds/html5-php.git", - "reference": "a1e7a2f88ee13635d86fc61cfbdf2306a76ddfc7" + "reference": "15e16663bd6f512352209d0e3a789c0a691c0d9b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/a1e7a2f88ee13635d86fc61cfbdf2306a76ddfc7", - "reference": "a1e7a2f88ee13635d86fc61cfbdf2306a76ddfc7", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/15e16663bd6f512352209d0e3a789c0a691c0d9b", + "reference": "15e16663bd6f512352209d0e3a789c0a691c0d9b", "shasum": "" }, "require": { "ext-dom": "*", + "ext-mbstring": "*", "php": ">=7.4" }, "require-dev": { @@ -2723,9 +2735,9 @@ ], "support": { "issues": "https://github.com/Masterminds/html5-php/issues", - "source": "https://github.com/Masterminds/html5-php/tree/2.11.0" + "source": "https://github.com/Masterminds/html5-php/tree/2.12.0" }, - "time": "2026-08-18T06:18:41+00:00" + "time": "2026-10-25T08:57:58+00:00" }, { "name": "netzbewegung/nb-headless-content-blocks", @@ -2798,16 +2810,16 @@ }, { "name": "nikic/php-parser", - "version": "v5.8.0", + "version": "v5.9.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "044a6a392ff8ad0d61f14370a5fbbd0a0107152f" + "reference": "9e33da9553fe7786f0962b35f4e4ecf01be89def" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/044a6a392ff8ad0d61f14370a5fbbd0a0107152f", - "reference": "044a6a392ff8ad0d61f14370a5fbbd0a0107152f", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/9e33da9553fe7786f0962b35f4e4ecf01be89def", + "reference": "9e33da9553fe7786f0962b35f4e4ecf01be89def", "shasum": "" }, "require": { @@ -2849,9 +2861,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.8.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.9.0" }, - "time": "2026-07-04T14:30:18+00:00" + "time": "2026-09-13T18:51:52+00:00" }, { "name": "opis/json-schema", @@ -3045,20 +3057,25 @@ }, { "name": "phpdocumentor/reflection-common", - "version": "2.2.0", + "version": "2.2.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + "reference": "ee15a5a2022c8383906b225055e9496a6a5e6e3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/ee15a5a2022c8383906b225055e9496a6a5e6e3b", + "reference": "ee15a5a2022c8383906b225055e9496a6a5e6e3b", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.8", + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^4.25" }, "type": "library", "extra": { @@ -3082,7 +3099,7 @@ } ], "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", + "homepage": "https://www.phpdoc.org", "keywords": [ "FQSEN", "phpDocumentor", @@ -3092,9 +3109,9 @@ ], "support": { "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.2.1" }, - "time": "2020-06-27T09:03:43+00:00" + "time": "2025-11-10T21:21:55+00:00" }, { "name": "phpdocumentor/reflection-docblock", @@ -3163,16 +3180,16 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "2.0.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "327a05bbee54120d4786a0dc67aad30226ad4cf9" + "reference": "dbe2133bb23e2e33a6834f4ed417f24a1b167769" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/327a05bbee54120d4786a0dc67aad30226ad4cf9", - "reference": "327a05bbee54120d4786a0dc67aad30226ad4cf9", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/dbe2133bb23e2e33a6834f4ed417f24a1b167769", + "reference": "dbe2133bb23e2e33a6834f4ed417f24a1b167769", "shasum": "" }, "require": { @@ -3215,22 +3232,22 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/2.0.0" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/2.1.0" }, - "time": "2026-01-06T21:53:42+00:00" + "time": "2026-09-27T19:32:54+00:00" }, { "name": "phpoffice/phpspreadsheet", - "version": "5.9.0", + "version": "5.10.0", "source": { "type": "git", "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", - "reference": "05e99ebf61238a70227b4d9cc02d0030d34f6339" + "reference": "eb18727acf6b1f4cc67145a52ab04f9fd4c28d53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/05e99ebf61238a70227b4d9cc02d0030d34f6339", - "reference": "05e99ebf61238a70227b4d9cc02d0030d34f6339", + "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/eb18727acf6b1f4cc67145a52ab04f9fd4c28d53", + "reference": "eb18727acf6b1f4cc67145a52ab04f9fd4c28d53", "shasum": "" }, "require": { @@ -3259,6 +3276,7 @@ "dealerdirect/phpcodesniffer-composer-installer": "dev-main", "dompdf/dompdf": "^2.0 || ^3.0", "ext-intl": "*", + "ext-openssl": "*", "friendsofphp/php-cs-fixer": "^3.2", "mitoteam/jpgraph": "^10.5", "mpdf/mpdf": "^8.1.1", @@ -3268,11 +3286,12 @@ "phpstan/phpstan-phpunit": "^1.0 || ^2.0", "phpunit/phpunit": "^10.5 || ^11.0", "squizlabs/php_codesniffer": "^3.7", - "tecnickcom/tcpdf": "^6.5" + "tecnickcom/tcpdf": ">=6.8.0 <7.0.0" }, "suggest": { "dompdf/dompdf": "Option for rendering PDF with PDF Writer", "ext-intl": "PHP Internationalization Functions, required for NumberFormat Wizard and StringHelper::setLocale()", + "ext-openssl": "Handline Agile-encrypted Xlsx spreadsheets", "mitoteam/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers", "mpdf/mpdf": "Option for rendering PDF with PDF Writer", "tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer" @@ -3324,22 +3343,22 @@ ], "support": { "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", - "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/5.9.0" + "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/5.10.0" }, - "time": "2026-07-12T19:17:39+00:00" + "time": "2026-09-17T03:54:50+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "2.3.5", + "version": "2.3.6", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "148cefffaf0233e4c08cc13db8a195a56dd6dfe9" + "reference": "1427af4647235b4a73b13940b1f1258d3584f36e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/148cefffaf0233e4c08cc13db8a195a56dd6dfe9", - "reference": "148cefffaf0233e4c08cc13db8a195a56dd6dfe9", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/1427af4647235b4a73b13940b1f1258d3584f36e", + "reference": "1427af4647235b4a73b13940b1f1258d3584f36e", "shasum": "" }, "require": { @@ -3371,9 +3390,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.5" + "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.6" }, - "time": "2026-08-31T16:05:28+00:00" + "time": "2026-09-27T20:07:45+00:00" }, { "name": "plan2net/backend-category-hierarchy", @@ -4148,16 +4167,16 @@ }, { "name": "seld/phar-utils", - "version": "1.2.2", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/Seldaek/phar-utils.git", - "reference": "990bbd0e92caa216d52eca0935f6e35e589bfaa5" + "reference": "65fb381613fd31745d39a740a112a233f978d2d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/990bbd0e92caa216d52eca0935f6e35e589bfaa5", - "reference": "990bbd0e92caa216d52eca0935f6e35e589bfaa5", + "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/65fb381613fd31745d39a740a112a233f978d2d9", + "reference": "65fb381613fd31745d39a740a112a233f978d2d9", "shasum": "" }, "require": { @@ -4190,9 +4209,9 @@ ], "support": { "issues": "https://github.com/Seldaek/phar-utils/issues", - "source": "https://github.com/Seldaek/phar-utils/tree/1.2.2" + "source": "https://github.com/Seldaek/phar-utils/tree/1.2.3" }, - "time": "2026-08-01T12:48:55+00:00" + "time": "2026-10-01T08:16:23+00:00" }, { "name": "seld/signal-handler", @@ -4668,16 +4687,16 @@ }, { "name": "symfony/console", - "version": "v7.4.18", + "version": "v7.4.21", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "23d6f88a29f6d0eac45bd77d70307adf83ba7ab0" + "reference": "21f1bc2296f7ff6043241a8dcbc09559b3732820" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/23d6f88a29f6d0eac45bd77d70307adf83ba7ab0", - "reference": "23d6f88a29f6d0eac45bd77d70307adf83ba7ab0", + "url": "https://api.github.com/repos/symfony/console/zipball/21f1bc2296f7ff6043241a8dcbc09559b3732820", + "reference": "21f1bc2296f7ff6043241a8dcbc09559b3732820", "shasum": "" }, "require": { @@ -4742,7 +4761,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.4.18" + "source": "https://github.com/symfony/console/tree/v7.4.21" }, "funding": [ { @@ -4762,20 +4781,20 @@ "type": "tidelift" } ], - "time": "2026-08-25T14:18:37+00:00" + "time": "2026-10-12T18:45:38+00:00" }, { "name": "symfony/dependency-injection", - "version": "v7.4.17", + "version": "v7.4.21", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "f318ac9da5aba0be2cf43ecdd562c05a33bc11c0" + "reference": "059334a6ef0eedfcabfec52fd0a71576d610a70c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f318ac9da5aba0be2cf43ecdd562c05a33bc11c0", - "reference": "f318ac9da5aba0be2cf43ecdd562c05a33bc11c0", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/059334a6ef0eedfcabfec52fd0a71576d610a70c", + "reference": "059334a6ef0eedfcabfec52fd0a71576d610a70c", "shasum": "" }, "require": { @@ -4826,7 +4845,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v7.4.17" + "source": "https://github.com/symfony/dependency-injection/tree/v7.4.21" }, "funding": [ { @@ -4846,7 +4865,7 @@ "type": "tidelift" } ], - "time": "2026-08-21T17:40:08+00:00" + "time": "2026-10-13T12:53:30+00:00" }, { "name": "symfony/deprecation-contracts", @@ -4921,16 +4940,16 @@ }, { "name": "symfony/doctrine-messenger", - "version": "v7.4.18", + "version": "v7.4.21", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-messenger.git", - "reference": "2356265da4dd8e8b689e735dcce33f5fd40506e5" + "reference": "512464b6905ae0b9ed5a67f01d0f15fe40615a13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/2356265da4dd8e8b689e735dcce33f5fd40506e5", - "reference": "2356265da4dd8e8b689e735dcce33f5fd40506e5", + "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/512464b6905ae0b9ed5a67f01d0f15fe40615a13", + "reference": "512464b6905ae0b9ed5a67f01d0f15fe40615a13", "shasum": "" }, "require": { @@ -4943,7 +4962,7 @@ "doctrine/persistence": "<1.3" }, "require-dev": { - "doctrine/persistence": "^1.3|^2|^3", + "doctrine/persistence": "^1.3|^2|^3|^4", "symfony/property-access": "^6.4|^7.0|^8.0", "symfony/serializer": "^6.4|^7.0|^8.0" }, @@ -4973,7 +4992,7 @@ "description": "Symfony Doctrine Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-messenger/tree/v7.4.18" + "source": "https://github.com/symfony/doctrine-messenger/tree/v7.4.21" }, "funding": [ { @@ -4993,7 +5012,7 @@ "type": "tidelift" } ], - "time": "2026-07-29T06:18:55+00:00" + "time": "2026-10-02T14:12:45+00:00" }, { "name": "symfony/event-dispatcher", @@ -5162,16 +5181,16 @@ }, { "name": "symfony/expression-language", - "version": "v7.4.18", + "version": "v7.4.21", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "b73866506ff02800836a40fa1f95614a71064f35" + "reference": "51c52817a02119ecd46a3369a2b38fc7f24dbf5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/b73866506ff02800836a40fa1f95614a71064f35", - "reference": "b73866506ff02800836a40fa1f95614a71064f35", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/51c52817a02119ecd46a3369a2b38fc7f24dbf5e", + "reference": "51c52817a02119ecd46a3369a2b38fc7f24dbf5e", "shasum": "" }, "require": { @@ -5206,7 +5225,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v7.4.18" + "source": "https://github.com/symfony/expression-language/tree/v7.4.21" }, "funding": [ { @@ -5226,20 +5245,20 @@ "type": "tidelift" } ], - "time": "2026-08-30T00:47:26+00:00" + "time": "2026-10-09T13:57:53+00:00" }, { "name": "symfony/filesystem", - "version": "v7.4.18", + "version": "v7.4.21", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "90d412aa5277c6819db39e7605aa46b1019e3232" + "reference": "fd0e3462be6d32a0d130e8423e4940a7688162d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/90d412aa5277c6819db39e7605aa46b1019e3232", - "reference": "90d412aa5277c6819db39e7605aa46b1019e3232", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/fd0e3462be6d32a0d130e8423e4940a7688162d8", + "reference": "fd0e3462be6d32a0d130e8423e4940a7688162d8", "shasum": "" }, "require": { @@ -5276,7 +5295,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.4.18" + "source": "https://github.com/symfony/filesystem/tree/v7.4.21" }, "funding": [ { @@ -5296,20 +5315,20 @@ "type": "tidelift" } ], - "time": "2026-08-23T10:03:40+00:00" + "time": "2026-10-06T20:05:19+00:00" }, { "name": "symfony/finder", - "version": "v7.4.17", + "version": "v7.4.20", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "5ce28827081f6d1f0c32eaf3882750f19cb5bbe6" + "reference": "2dd31e5208db7a0fda7bfc998ad727b79c2e4d1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/5ce28827081f6d1f0c32eaf3882750f19cb5bbe6", - "reference": "5ce28827081f6d1f0c32eaf3882750f19cb5bbe6", + "url": "https://api.github.com/repos/symfony/finder/zipball/2dd31e5208db7a0fda7bfc998ad727b79c2e4d1e", + "reference": "2dd31e5208db7a0fda7bfc998ad727b79c2e4d1e", "shasum": "" }, "require": { @@ -5344,7 +5363,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.4.17" + "source": "https://github.com/symfony/finder/tree/v7.4.20" }, "funding": [ { @@ -5364,20 +5383,20 @@ "type": "tidelift" } ], - "time": "2026-08-21T12:09:28+00:00" + "time": "2026-09-26T06:31:10+00:00" }, { "name": "symfony/http-foundation", - "version": "v7.4.18", + "version": "v7.4.21", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "d070b716a32fbe3bf04204db0f58ace73b86d133" + "reference": "58c89144c7a36dd89c3d01917e9fa3a72d8aaf31" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/d070b716a32fbe3bf04204db0f58ace73b86d133", - "reference": "d070b716a32fbe3bf04204db0f58ace73b86d133", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/58c89144c7a36dd89c3d01917e9fa3a72d8aaf31", + "reference": "58c89144c7a36dd89c3d01917e9fa3a72d8aaf31", "shasum": "" }, "require": { @@ -5426,7 +5445,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.4.18" + "source": "https://github.com/symfony/http-foundation/tree/v7.4.21" }, "funding": [ { @@ -5446,20 +5465,20 @@ "type": "tidelift" } ], - "time": "2026-08-30T20:10:52+00:00" + "time": "2026-10-08T16:56:12+00:00" }, { "name": "symfony/mailer", - "version": "v7.4.17", + "version": "v7.4.19", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "b17c9bf3a551d5f635638a3b6c05f06c4dc87584" + "reference": "6f6f2441bef07a42d2617b9b3aadf04a321aa514" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/b17c9bf3a551d5f635638a3b6c05f06c4dc87584", - "reference": "b17c9bf3a551d5f635638a3b6c05f06c4dc87584", + "url": "https://api.github.com/repos/symfony/mailer/zipball/6f6f2441bef07a42d2617b9b3aadf04a321aa514", + "reference": "6f6f2441bef07a42d2617b9b3aadf04a321aa514", "shasum": "" }, "require": { @@ -5510,7 +5529,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.4.17" + "source": "https://github.com/symfony/mailer/tree/v7.4.19" }, "funding": [ { @@ -5530,20 +5549,20 @@ "type": "tidelift" } ], - "time": "2026-08-21T17:40:08+00:00" + "time": "2026-09-15T06:01:15+00:00" }, { "name": "symfony/messenger", - "version": "v7.4.18", + "version": "v7.4.21", "source": { "type": "git", "url": "https://github.com/symfony/messenger.git", - "reference": "b109f9f4e54470ee6835751bc39318fe3d8275e6" + "reference": "9eac56eb4973fe13c89dce80a3fc08f0db5574cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/messenger/zipball/b109f9f4e54470ee6835751bc39318fe3d8275e6", - "reference": "b109f9f4e54470ee6835751bc39318fe3d8275e6", + "url": "https://api.github.com/repos/symfony/messenger/zipball/9eac56eb4973fe13c89dce80a3fc08f0db5574cb", + "reference": "9eac56eb4973fe13c89dce80a3fc08f0db5574cb", "shasum": "" }, "require": { @@ -5604,7 +5623,7 @@ "description": "Helps applications send and receive messages to/from other applications or via message queues", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/messenger/tree/v7.4.18" + "source": "https://github.com/symfony/messenger/tree/v7.4.21" }, "funding": [ { @@ -5624,20 +5643,20 @@ "type": "tidelift" } ], - "time": "2026-08-30T00:47:26+00:00" + "time": "2026-10-13T12:35:32+00:00" }, { "name": "symfony/mime", - "version": "v7.4.18", + "version": "v7.4.19", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "bf328d82105831db3e409195db0540ff57f27c80" + "reference": "f8ac7d0a800bcabbcd1f7de56594cf05e6cd5693" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/bf328d82105831db3e409195db0540ff57f27c80", - "reference": "bf328d82105831db3e409195db0540ff57f27c80", + "url": "https://api.github.com/repos/symfony/mime/zipball/f8ac7d0a800bcabbcd1f7de56594cf05e6cd5693", + "reference": "f8ac7d0a800bcabbcd1f7de56594cf05e6cd5693", "shasum": "" }, "require": { @@ -5693,7 +5712,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.4.18" + "source": "https://github.com/symfony/mime/tree/v7.4.19" }, "funding": [ { @@ -5713,7 +5732,7 @@ "type": "tidelift" } ], - "time": "2026-08-22T09:04:42+00:00" + "time": "2026-09-04T10:45:44+00:00" }, { "name": "symfony/options-resolver", @@ -5871,16 +5890,16 @@ }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.41.0", + "version": "v1.43.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "bb899c1db0aa8127dc3afe8cda4a67eb24915f8d" + "reference": "5cac8f4db97208823aa353f59a01faad2da52c75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/bb899c1db0aa8127dc3afe8cda4a67eb24915f8d", - "reference": "bb899c1db0aa8127dc3afe8cda4a67eb24915f8d", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/5cac8f4db97208823aa353f59a01faad2da52c75", + "reference": "5cac8f4db97208823aa353f59a01faad2da52c75", "shasum": "" }, "require": { @@ -5929,7 +5948,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.41.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.43.0" }, "funding": [ { @@ -5949,20 +5968,20 @@ "type": "tidelift" } ], - "time": "2026-07-28T08:25:59+00:00" + "time": "2026-09-25T15:46:47+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.42.0", + "version": "v1.43.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "51b5ff5ba85452b31ec6f55490b08148612339d9" + "reference": "533d68cf99c8f8ee2e8893c59ed59192e92cfd74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/51b5ff5ba85452b31ec6f55490b08148612339d9", - "reference": "51b5ff5ba85452b31ec6f55490b08148612339d9", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/533d68cf99c8f8ee2e8893c59ed59192e92cfd74", + "reference": "533d68cf99c8f8ee2e8893c59ed59192e92cfd74", "shasum": "" }, "require": { @@ -6016,7 +6035,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.42.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.43.0" }, "funding": [ { @@ -6036,20 +6055,20 @@ "type": "tidelift" } ], - "time": "2026-08-24T10:51:20+00:00" + "time": "2026-09-23T14:40:04+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.42.0", + "version": "v1.43.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "aa20edea75bd9c48cfecc8360922e5a6e5c44502" + "reference": "ebd57ccc7edb93d632e184efbe7693d2517bab3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/aa20edea75bd9c48cfecc8360922e5a6e5c44502", - "reference": "aa20edea75bd9c48cfecc8360922e5a6e5c44502", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/ebd57ccc7edb93d632e184efbe7693d2517bab3b", + "reference": "ebd57ccc7edb93d632e184efbe7693d2517bab3b", "shasum": "" }, "require": { @@ -6101,7 +6120,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.42.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.43.0" }, "funding": [ { @@ -6121,20 +6140,20 @@ "type": "tidelift" } ], - "time": "2026-08-07T06:33:24+00:00" + "time": "2026-09-23T22:02:09+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.38.2", + "version": "v1.43.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6" + "reference": "4d5d331bf731e0aedbc6b2f5e61135b7b7996a72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6", - "reference": "d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/4d5d331bf731e0aedbc6b2f5e61135b7b7996a72", + "reference": "4d5d331bf731e0aedbc6b2f5e61135b7b7996a72", "shasum": "" }, "require": { @@ -6186,7 +6205,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.38.2" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.43.0" }, "funding": [ { @@ -6206,7 +6225,7 @@ "type": "tidelift" } ], - "time": "2026-05-27T06:59:30+00:00" + "time": "2026-09-24T15:19:04+00:00" }, { "name": "symfony/polyfill-php73", @@ -6290,16 +6309,16 @@ }, { "name": "symfony/polyfill-php80", - "version": "v1.37.0", + "version": "v1.43.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "dfb55726c3a76ea3b6459fcfda1ec2d80a682411" + "reference": "9c6a5d6b01ca51d486c813e9a9c0ed55f208bb74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dfb55726c3a76ea3b6459fcfda1ec2d80a682411", - "reference": "dfb55726c3a76ea3b6459fcfda1ec2d80a682411", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/9c6a5d6b01ca51d486c813e9a9c0ed55f208bb74", + "reference": "9c6a5d6b01ca51d486c813e9a9c0ed55f208bb74", "shasum": "" }, "require": { @@ -6350,7 +6369,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.37.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.43.0" }, "funding": [ { @@ -6370,7 +6389,7 @@ "type": "tidelift" } ], - "time": "2026-04-10T16:19:22+00:00" + "time": "2026-09-25T15:50:05+00:00" }, { "name": "symfony/polyfill-php81", @@ -6454,16 +6473,16 @@ }, { "name": "symfony/polyfill-php82", - "version": "v1.38.1", + "version": "v1.43.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php82.git", - "reference": "002dc0cfe5fd4ed6033d48f27d4f19a486c4b04b" + "reference": "843bbe8b2a7934307b749751eede0f111f5d1cfc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php82/zipball/002dc0cfe5fd4ed6033d48f27d4f19a486c4b04b", - "reference": "002dc0cfe5fd4ed6033d48f27d4f19a486c4b04b", + "url": "https://api.github.com/repos/symfony/polyfill-php82/zipball/843bbe8b2a7934307b749751eede0f111f5d1cfc", + "reference": "843bbe8b2a7934307b749751eede0f111f5d1cfc", "shasum": "" }, "require": { @@ -6510,7 +6529,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php82/tree/v1.38.1" + "source": "https://github.com/symfony/polyfill-php82/tree/v1.43.0" }, "funding": [ { @@ -6530,20 +6549,20 @@ "type": "tidelift" } ], - "time": "2026-05-26T12:45:58+00:00" + "time": "2026-09-25T15:50:05+00:00" }, { "name": "symfony/polyfill-php83", - "version": "v1.41.0", + "version": "v1.43.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "5ea99087fb99c273a9b9236ed4c31e78b16103c6" + "reference": "80ccff923a8d61f73ebe9da0aa94e25232f004ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/5ea99087fb99c273a9b9236ed4c31e78b16103c6", - "reference": "5ea99087fb99c273a9b9236ed4c31e78b16103c6", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/80ccff923a8d61f73ebe9da0aa94e25232f004ce", + "reference": "80ccff923a8d61f73ebe9da0aa94e25232f004ce", "shasum": "" }, "require": { @@ -6590,7 +6609,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.41.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.43.0" }, "funding": [ { @@ -6610,20 +6629,20 @@ "type": "tidelift" } ], - "time": "2026-07-01T12:47:55+00:00" + "time": "2026-09-25T15:50:05+00:00" }, { "name": "symfony/polyfill-php84", - "version": "v1.38.1", + "version": "v1.43.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php84.git", - "reference": "f4e1dfaee5b74aba5964fe1fd4dfc7ba5e3085fa" + "reference": "22c6548499cbe5c5bb072fc0c42312dff062a015" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/f4e1dfaee5b74aba5964fe1fd4dfc7ba5e3085fa", - "reference": "f4e1dfaee5b74aba5964fe1fd4dfc7ba5e3085fa", + "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/22c6548499cbe5c5bb072fc0c42312dff062a015", + "reference": "22c6548499cbe5c5bb072fc0c42312dff062a015", "shasum": "" }, "require": { @@ -6670,7 +6689,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php84/tree/v1.38.1" + "source": "https://github.com/symfony/polyfill-php84/tree/v1.43.0" }, "funding": [ { @@ -6690,20 +6709,20 @@ "type": "tidelift" } ], - "time": "2026-05-26T12:51:13+00:00" + "time": "2026-09-23T22:01:09+00:00" }, { "name": "symfony/polyfill-php85", - "version": "v1.41.0", + "version": "v1.43.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php85.git", - "reference": "255fab485aaa1006ed411040c42aecd7b5302d7a" + "reference": "86a42cbcc07adc331481a5ab310a4024bfc227f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/255fab485aaa1006ed411040c42aecd7b5302d7a", - "reference": "255fab485aaa1006ed411040c42aecd7b5302d7a", + "url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/86a42cbcc07adc331481a5ab310a4024bfc227f6", + "reference": "86a42cbcc07adc331481a5ab310a4024bfc227f6", "shasum": "" }, "require": { @@ -6750,7 +6769,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php85/tree/v1.41.0" + "source": "https://github.com/symfony/polyfill-php85/tree/v1.43.0" }, "funding": [ { @@ -6770,20 +6789,20 @@ "type": "tidelift" } ], - "time": "2026-07-01T12:47:55+00:00" + "time": "2026-09-25T15:46:47+00:00" }, { "name": "symfony/polyfill-uuid", - "version": "v1.37.0", + "version": "v1.43.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "26dfec253c4cf3e51b541b52ddf7e42cb0908e94" + "reference": "b23ff8245cc5c4479ea2be3d0132d2e6dd433993" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/26dfec253c4cf3e51b541b52ddf7e42cb0908e94", - "reference": "26dfec253c4cf3e51b541b52ddf7e42cb0908e94", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/b23ff8245cc5c4479ea2be3d0132d2e6dd433993", + "reference": "b23ff8245cc5c4479ea2be3d0132d2e6dd433993", "shasum": "" }, "require": { @@ -6833,7 +6852,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.37.0" + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.43.0" }, "funding": [ { @@ -6853,20 +6872,20 @@ "type": "tidelift" } ], - "time": "2026-04-10T16:19:22+00:00" + "time": "2026-09-24T05:20:52+00:00" }, { "name": "symfony/process", - "version": "v7.4.18", + "version": "v7.4.21", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "058d17fc284cce14efb2385783b55014a461b176" + "reference": "e5247f4a5e0797d232ad8e8e6803aeb341843c83" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/058d17fc284cce14efb2385783b55014a461b176", - "reference": "058d17fc284cce14efb2385783b55014a461b176", + "url": "https://api.github.com/repos/symfony/process/zipball/e5247f4a5e0797d232ad8e8e6803aeb341843c83", + "reference": "e5247f4a5e0797d232ad8e8e6803aeb341843c83", "shasum": "" }, "require": { @@ -6898,7 +6917,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.4.18" + "source": "https://github.com/symfony/process/tree/v7.4.21" }, "funding": [ { @@ -6918,7 +6937,7 @@ "type": "tidelift" } ], - "time": "2026-08-21T17:40:08+00:00" + "time": "2026-10-08T16:56:12+00:00" }, { "name": "symfony/property-access", @@ -7003,16 +7022,16 @@ }, { "name": "symfony/property-info", - "version": "v7.4.18", + "version": "v7.4.20", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "52420d499b03ec20c0d38f0dc2f940bc9c43dc8e" + "reference": "d24c4c810b1285c5d8d77c6fd7b25e714479bd48" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/52420d499b03ec20c0d38f0dc2f940bc9c43dc8e", - "reference": "52420d499b03ec20c0d38f0dc2f940bc9c43dc8e", + "url": "https://api.github.com/repos/symfony/property-info/zipball/d24c4c810b1285c5d8d77c6fd7b25e714479bd48", + "reference": "d24c4c810b1285c5d8d77c6fd7b25e714479bd48", "shasum": "" }, "require": { @@ -7069,7 +7088,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v7.4.18" + "source": "https://github.com/symfony/property-info/tree/v7.4.20" }, "funding": [ { @@ -7089,7 +7108,7 @@ "type": "tidelift" } ], - "time": "2026-08-25T14:18:37+00:00" + "time": "2026-09-28T09:47:41+00:00" }, { "name": "symfony/rate-limiter", @@ -7167,16 +7186,16 @@ }, { "name": "symfony/routing", - "version": "v7.4.18", + "version": "v7.4.21", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "ddd558991e98f693ae6bf5063cc1b0362c6bbec3" + "reference": "7a344cf871532d081875bfdd18f3dff8dca36c5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/ddd558991e98f693ae6bf5063cc1b0362c6bbec3", - "reference": "ddd558991e98f693ae6bf5063cc1b0362c6bbec3", + "url": "https://api.github.com/repos/symfony/routing/zipball/7a344cf871532d081875bfdd18f3dff8dca36c5b", + "reference": "7a344cf871532d081875bfdd18f3dff8dca36c5b", "shasum": "" }, "require": { @@ -7228,7 +7247,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.4.18" + "source": "https://github.com/symfony/routing/tree/v7.4.21" }, "funding": [ { @@ -7248,7 +7267,7 @@ "type": "tidelift" } ], - "time": "2026-08-17T13:12:36+00:00" + "time": "2026-10-11T18:40:59+00:00" }, { "name": "symfony/service-contracts", @@ -7693,16 +7712,16 @@ }, { "name": "symfony/uid", - "version": "v7.4.17", + "version": "v7.4.21", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "69d732355a139c6f8881337d28515aa01f12b8be" + "reference": "3e706a245b5343ea93be9cafe84525bfb54e60fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/69d732355a139c6f8881337d28515aa01f12b8be", - "reference": "69d732355a139c6f8881337d28515aa01f12b8be", + "url": "https://api.github.com/repos/symfony/uid/zipball/3e706a245b5343ea93be9cafe84525bfb54e60fc", + "reference": "3e706a245b5343ea93be9cafe84525bfb54e60fc", "shasum": "" }, "require": { @@ -7747,7 +7766,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v7.4.17" + "source": "https://github.com/symfony/uid/tree/v7.4.21" }, "funding": [ { @@ -7767,20 +7786,20 @@ "type": "tidelift" } ], - "time": "2026-08-11T07:38:58+00:00" + "time": "2026-10-12T14:31:36+00:00" }, { "name": "symfony/validator", - "version": "v7.4.18", + "version": "v7.4.21", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "976bd879fda78de30ee4688fd38ae87bc4d2dc76" + "reference": "6c9b169bf3a1e46b2f2edc1c47be36c3b879d793" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/976bd879fda78de30ee4688fd38ae87bc4d2dc76", - "reference": "976bd879fda78de30ee4688fd38ae87bc4d2dc76", + "url": "https://api.github.com/repos/symfony/validator/zipball/6c9b169bf3a1e46b2f2edc1c47be36c3b879d793", + "reference": "6c9b169bf3a1e46b2f2edc1c47be36c3b879d793", "shasum": "" }, "require": { @@ -7851,7 +7870,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v7.4.18" + "source": "https://github.com/symfony/validator/tree/v7.4.21" }, "funding": [ { @@ -7871,7 +7890,7 @@ "type": "tidelift" } ], - "time": "2026-08-30T00:47:26+00:00" + "time": "2026-10-13T16:17:38+00:00" }, { "name": "symfony/var-exporter", @@ -7955,16 +7974,16 @@ }, { "name": "symfony/yaml", - "version": "v7.4.18", + "version": "v7.4.21", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "4cef939e55b8a21c5780418de0d98ab00d0736e1" + "reference": "044907929c7999814378be22da34722c7a86bad4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/4cef939e55b8a21c5780418de0d98ab00d0736e1", - "reference": "4cef939e55b8a21c5780418de0d98ab00d0736e1", + "url": "https://api.github.com/repos/symfony/yaml/zipball/044907929c7999814378be22da34722c7a86bad4", + "reference": "044907929c7999814378be22da34722c7a86bad4", "shasum": "" }, "require": { @@ -8007,7 +8026,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.4.18" + "source": "https://github.com/symfony/yaml/tree/v7.4.21" }, "funding": [ { @@ -8027,7 +8046,7 @@ "type": "tidelift" } ], - "time": "2026-08-30T00:47:26+00:00" + "time": "2026-10-12T12:34:30+00:00" }, { "name": "typo3/class-alias-loader", @@ -8094,23 +8113,23 @@ }, { "name": "typo3/cms-backend", - "version": "v14.3.7", + "version": "v14.3.10", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/backend.git", - "reference": "6106c22f6f9c93c16acf2e5052229e1e817b7fba" + "reference": "fd0421f304fe34353c99d5633adf267ca6cd72ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/backend/zipball/6106c22f6f9c93c16acf2e5052229e1e817b7fba", - "reference": "6106c22f6f9c93c16acf2e5052229e1e817b7fba", + "url": "https://api.github.com/repos/TYPO3-CMS/backend/zipball/fd0421f304fe34353c99d5633adf267ca6cd72ba", + "reference": "fd0421f304fe34353c99d5633adf267ca6cd72ba", "shasum": "" }, "require": { "ext-intl": "*", "ext-libxml": "*", "psr/event-dispatcher": "^1.0", - "typo3/cms-core": "14.3.7" + "typo3/cms-core": "14.3.10" }, "conflict": { "typo3/cms": "*" @@ -8183,24 +8202,24 @@ "type": "membership" } ], - "time": "2026-09-08T09:17:25+00:00" + "time": "2026-10-22T08:51:04+00:00" }, { "name": "typo3/cms-belog", - "version": "v14.3.7", + "version": "v14.3.10", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/belog.git", - "reference": "f783869a2814e4e538152ba3ffc560b667684c4e" + "reference": "4041bf60aa267a237864d59197fb9a8f518e48be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/belog/zipball/f783869a2814e4e538152ba3ffc560b667684c4e", - "reference": "f783869a2814e4e538152ba3ffc560b667684c4e", + "url": "https://api.github.com/repos/TYPO3-CMS/belog/zipball/4041bf60aa267a237864d59197fb9a8f518e48be", + "reference": "4041bf60aa267a237864d59197fb9a8f518e48be", "shasum": "" }, "require": { - "typo3/cms-core": "14.3.7" + "typo3/cms-core": "14.3.10" }, "conflict": { "typo3/cms": "*" @@ -8250,24 +8269,24 @@ "type": "membership" } ], - "time": "2026-09-08T09:17:25+00:00" + "time": "2026-10-22T08:51:04+00:00" }, { "name": "typo3/cms-beuser", - "version": "v14.3.7", + "version": "v14.3.10", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/beuser.git", - "reference": "6673e35faf4ebb89a9b5a42b1ac7c6ac58573cb2" + "reference": "30263d3dca15ef8a5d5cd92794c06b7e075ab8a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/beuser/zipball/6673e35faf4ebb89a9b5a42b1ac7c6ac58573cb2", - "reference": "6673e35faf4ebb89a9b5a42b1ac7c6ac58573cb2", + "url": "https://api.github.com/repos/TYPO3-CMS/beuser/zipball/30263d3dca15ef8a5d5cd92794c06b7e075ab8a2", + "reference": "30263d3dca15ef8a5d5cd92794c06b7e075ab8a2", "shasum": "" }, "require": { - "typo3/cms-core": "14.3.7" + "typo3/cms-core": "14.3.10" }, "conflict": { "typo3/cms": "*" @@ -8317,7 +8336,7 @@ "type": "membership" } ], - "time": "2026-09-08T09:17:25+00:00" + "time": "2026-10-22T08:51:04+00:00" }, { "name": "typo3/cms-cli", @@ -8426,16 +8445,16 @@ }, { "name": "typo3/cms-core", - "version": "v14.3.7", + "version": "v14.3.10", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/core.git", - "reference": "18071e452396230c34e23554298591ada6dc4c4a" + "reference": "280c82fcfe7622e244092eb8c781d97adca3f6d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/core/zipball/18071e452396230c34e23554298591ada6dc4c4a", - "reference": "18071e452396230c34e23554298591ada6dc4c4a", + "url": "https://api.github.com/repos/TYPO3-CMS/core/zipball/280c82fcfe7622e244092eb8c781d97adca3f6d2", + "reference": "280c82fcfe7622e244092eb8c781d97adca3f6d2", "shasum": "" }, "require": { @@ -8447,7 +8466,7 @@ "doctrine/dbal": "~4.4.4", "doctrine/lexer": "^3.0.1", "egulias/email-validator": "^4.0", - "enshrined/svg-sanitize": "~0.22", + "enshrined/svg-sanitize": "^1.1.1", "ext-dom": "*", "ext-intl": "*", "ext-json": "*", @@ -8480,10 +8499,10 @@ "symfony/dependency-injection": "^7.4.8", "symfony/doctrine-messenger": "^7.4.6", "symfony/event-dispatcher-contracts": "^3.6.0", - "symfony/expression-language": "^7.4.8", + "symfony/expression-language": "^7.4.21", "symfony/filesystem": "^7.4.8", "symfony/finder": "^7.4.8", - "symfony/http-foundation": "^7.4.13", + "symfony/http-foundation": "^7.4.19", "symfony/mailer": "^7.4.12", "symfony/messenger": "^7.4.8", "symfony/mime": "^7.4.12", @@ -8496,7 +8515,7 @@ "symfony/routing": "^7.4.13", "symfony/translation": "^7.4.8", "symfony/uid": "^7.4.8", - "symfony/yaml": "^7.4.12", + "symfony/yaml": "^7.4.18", "typo3/class-alias-loader": "^2.0.1", "typo3/cms-cli": "^3.1.3", "typo3/cms-composer-installers": "^5.0.2", @@ -8585,28 +8604,28 @@ "type": "membership" } ], - "time": "2026-09-08T09:17:25+00:00" + "time": "2026-10-22T08:51:04+00:00" }, { "name": "typo3/cms-dashboard", - "version": "v14.3.7", + "version": "v14.3.10", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/dashboard.git", - "reference": "e8fdeb94880a256f86db7a53e12ff0553aec559b" + "reference": "c6c4ab09823f46035c199382e7b37d6e88d7ccd0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/dashboard/zipball/e8fdeb94880a256f86db7a53e12ff0553aec559b", - "reference": "e8fdeb94880a256f86db7a53e12ff0553aec559b", + "url": "https://api.github.com/repos/TYPO3-CMS/dashboard/zipball/c6c4ab09823f46035c199382e7b37d6e88d7ccd0", + "reference": "c6c4ab09823f46035c199382e7b37d6e88d7ccd0", "shasum": "" }, "require": { - "typo3/cms-backend": "14.3.7", - "typo3/cms-core": "14.3.7", - "typo3/cms-extbase": "14.3.7", - "typo3/cms-fluid": "14.3.7", - "typo3/cms-frontend": "14.3.7" + "typo3/cms-backend": "14.3.10", + "typo3/cms-core": "14.3.10", + "typo3/cms-extbase": "14.3.10", + "typo3/cms-fluid": "14.3.10", + "typo3/cms-frontend": "14.3.10" }, "conflict": { "typo3/cms": "*" @@ -8657,20 +8676,20 @@ "type": "membership" } ], - "time": "2026-09-08T09:17:25+00:00" + "time": "2026-10-22T08:51:04+00:00" }, { "name": "typo3/cms-extbase", - "version": "v14.3.7", + "version": "v14.3.10", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/extbase.git", - "reference": "68375ff116d0943dd56245949ddc3da7fb7bae9c" + "reference": "7451e8dc7f587a2a1514d0469678666c88c76db6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/extbase/zipball/68375ff116d0943dd56245949ddc3da7fb7bae9c", - "reference": "68375ff116d0943dd56245949ddc3da7fb7bae9c", + "url": "https://api.github.com/repos/TYPO3-CMS/extbase/zipball/7451e8dc7f587a2a1514d0469678666c88c76db6", + "reference": "7451e8dc7f587a2a1514d0469678666c88c76db6", "shasum": "" }, "require": { @@ -8682,7 +8701,7 @@ "symfony/property-access": "^7.4.8", "symfony/property-info": "^7.4.15", "symfony/validator": "^7.4.8", - "typo3/cms-core": "14.3.7" + "typo3/cms-core": "14.3.10" }, "conflict": { "typo3/cms": "*" @@ -8743,25 +8762,25 @@ "type": "membership" } ], - "time": "2026-09-08T09:17:25+00:00" + "time": "2026-10-22T08:51:04+00:00" }, { "name": "typo3/cms-extensionmanager", - "version": "v14.3.7", + "version": "v14.3.10", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/extensionmanager.git", - "reference": "eb39b8b0e95747a5a4e70c48e3f655a38be5490b" + "reference": "30bb806c390d4ed9ff7b1eccf4c0148ae1a29100" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/extensionmanager/zipball/eb39b8b0e95747a5a4e70c48e3f655a38be5490b", - "reference": "eb39b8b0e95747a5a4e70c48e3f655a38be5490b", + "url": "https://api.github.com/repos/TYPO3-CMS/extensionmanager/zipball/30bb806c390d4ed9ff7b1eccf4c0148ae1a29100", + "reference": "30bb806c390d4ed9ff7b1eccf4c0148ae1a29100", "shasum": "" }, "require": { "ext-libxml": "*", - "typo3/cms-core": "14.3.7" + "typo3/cms-core": "14.3.10" }, "conflict": { "typo3/cms": "*" @@ -8813,24 +8832,24 @@ "type": "membership" } ], - "time": "2026-09-08T09:17:25+00:00" + "time": "2026-10-22T08:51:04+00:00" }, { "name": "typo3/cms-felogin", - "version": "v14.3.7", + "version": "v14.3.10", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/felogin.git", - "reference": "4d8d043c0d08394aab375eb5dc665062d9f251b5" + "reference": "e77980d85cfe28338041095e23fda4c1fca609bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/felogin/zipball/4d8d043c0d08394aab375eb5dc665062d9f251b5", - "reference": "4d8d043c0d08394aab375eb5dc665062d9f251b5", + "url": "https://api.github.com/repos/TYPO3-CMS/felogin/zipball/e77980d85cfe28338041095e23fda4c1fca609bf", + "reference": "e77980d85cfe28338041095e23fda4c1fca609bf", "shasum": "" }, "require": { - "typo3/cms-core": "14.3.7" + "typo3/cms-core": "14.3.10" }, "conflict": { "typo3/cms": "*" @@ -8880,24 +8899,24 @@ "type": "membership" } ], - "time": "2026-09-08T09:17:25+00:00" + "time": "2026-10-22T08:51:04+00:00" }, { "name": "typo3/cms-filelist", - "version": "v14.3.7", + "version": "v14.3.10", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/filelist.git", - "reference": "7b7acdf948aaf79844d45905f4b59d93a2f13b07" + "reference": "930aed7e59b9eb19c4883607c435eee981c41914" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/filelist/zipball/7b7acdf948aaf79844d45905f4b59d93a2f13b07", - "reference": "7b7acdf948aaf79844d45905f4b59d93a2f13b07", + "url": "https://api.github.com/repos/TYPO3-CMS/filelist/zipball/930aed7e59b9eb19c4883607c435eee981c41914", + "reference": "930aed7e59b9eb19c4883607c435eee981c41914", "shasum": "" }, "require": { - "typo3/cms-core": "14.3.7" + "typo3/cms-core": "14.3.10" }, "conflict": { "typo3/cms": "*" @@ -8949,27 +8968,27 @@ "type": "membership" } ], - "time": "2026-09-08T09:17:25+00:00" + "time": "2026-10-22T08:51:04+00:00" }, { "name": "typo3/cms-fluid", - "version": "v14.3.7", + "version": "v14.3.10", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/fluid.git", - "reference": "66831b8b7c35b535dd4df958777d084d70fa4d24" + "reference": "c7e6282503c7855ed7806d08ebe1191c4048b3d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/fluid/zipball/66831b8b7c35b535dd4df958777d084d70fa4d24", - "reference": "66831b8b7c35b535dd4df958777d084d70fa4d24", + "url": "https://api.github.com/repos/TYPO3-CMS/fluid/zipball/c7e6282503c7855ed7806d08ebe1191c4048b3d1", + "reference": "c7e6282503c7855ed7806d08ebe1191c4048b3d1", "shasum": "" }, "require": { "symfony/dependency-injection": "^7.4.8", "symfony/finder": "^7.4.8", - "typo3/cms-core": "14.3.7", - "typo3/cms-extbase": "14.3.7", + "typo3/cms-core": "14.3.10", + "typo3/cms-extbase": "14.3.10", "typo3fluid/fluid": "^5.3.2" }, "conflict": { @@ -9023,26 +9042,26 @@ "type": "membership" } ], - "time": "2026-09-08T09:17:25+00:00" + "time": "2026-10-22T08:51:04+00:00" }, { "name": "typo3/cms-fluid-styled-content", - "version": "v14.3.7", + "version": "v14.3.10", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/fluid_styled_content.git", - "reference": "9a57ba7cdae1e60cfe3d7c8c535b6927b3d30fe7" + "reference": "88e4c50ef4baaa9f7dae55a591ee30ffb43d2372" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/fluid_styled_content/zipball/9a57ba7cdae1e60cfe3d7c8c535b6927b3d30fe7", - "reference": "9a57ba7cdae1e60cfe3d7c8c535b6927b3d30fe7", + "url": "https://api.github.com/repos/TYPO3-CMS/fluid_styled_content/zipball/88e4c50ef4baaa9f7dae55a591ee30ffb43d2372", + "reference": "88e4c50ef4baaa9f7dae55a591ee30ffb43d2372", "shasum": "" }, "require": { - "typo3/cms-core": "14.3.7", - "typo3/cms-fluid": "14.3.7", - "typo3/cms-frontend": "14.3.7" + "typo3/cms-core": "14.3.10", + "typo3/cms-fluid": "14.3.10", + "typo3/cms-frontend": "14.3.10" }, "conflict": { "typo3/cms": "*" @@ -9092,27 +9111,27 @@ "type": "membership" } ], - "time": "2026-09-08T09:17:25+00:00" + "time": "2026-10-22T08:51:04+00:00" }, { "name": "typo3/cms-form", - "version": "v14.3.7", + "version": "v14.3.10", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/form.git", - "reference": "d3e48ac5a023c6e79f072af7c71ebac0be6dbda1" + "reference": "18f08ead758593f5195174c067c55deba49f4076" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/form/zipball/d3e48ac5a023c6e79f072af7c71ebac0be6dbda1", - "reference": "d3e48ac5a023c6e79f072af7c71ebac0be6dbda1", + "url": "https://api.github.com/repos/TYPO3-CMS/form/zipball/18f08ead758593f5195174c067c55deba49f4076", + "reference": "18f08ead758593f5195174c067c55deba49f4076", "shasum": "" }, "require": { "psr/http-message": "^1.1 || ^2.0", - "symfony/expression-language": "^7.4.8", - "typo3/cms-core": "14.3.7", - "typo3/cms-frontend": "14.3.7" + "symfony/expression-language": "^7.4.21", + "typo3/cms-core": "14.3.10", + "typo3/cms-frontend": "14.3.10" }, "conflict": { "typo3/cms": "*" @@ -9167,25 +9186,25 @@ "type": "membership" } ], - "time": "2026-09-08T09:17:25+00:00" + "time": "2026-10-22T08:51:04+00:00" }, { "name": "typo3/cms-frontend", - "version": "v14.3.7", + "version": "v14.3.10", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/frontend.git", - "reference": "3fc8a4d3b7d968b426c7536102b868ce23410eb7" + "reference": "461b61097ecd29a0a67b4aa8595d87ca93480ae0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/frontend/zipball/3fc8a4d3b7d968b426c7536102b868ce23410eb7", - "reference": "3fc8a4d3b7d968b426c7536102b868ce23410eb7", + "url": "https://api.github.com/repos/TYPO3-CMS/frontend/zipball/461b61097ecd29a0a67b4aa8595d87ca93480ae0", + "reference": "461b61097ecd29a0a67b4aa8595d87ca93480ae0", "shasum": "" }, "require": { "ext-libxml": "*", - "typo3/cms-core": "14.3.7" + "typo3/cms-core": "14.3.10" }, "conflict": { "typo3/cms": "*" @@ -9245,24 +9264,24 @@ "type": "membership" } ], - "time": "2026-09-08T09:17:25+00:00" + "time": "2026-10-22T08:51:04+00:00" }, { "name": "typo3/cms-impexp", - "version": "v14.3.7", + "version": "v14.3.10", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/impexp.git", - "reference": "ccbf36a2bbc3a1d1c62fd5c0bf213e27e3ff26fa" + "reference": "9b02b29f1492746be6cea7345bac48efae8a7a70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/impexp/zipball/ccbf36a2bbc3a1d1c62fd5c0bf213e27e3ff26fa", - "reference": "ccbf36a2bbc3a1d1c62fd5c0bf213e27e3ff26fa", + "url": "https://api.github.com/repos/TYPO3-CMS/impexp/zipball/9b02b29f1492746be6cea7345bac48efae8a7a70", + "reference": "9b02b29f1492746be6cea7345bac48efae8a7a70", "shasum": "" }, "require": { - "typo3/cms-core": "14.3.7" + "typo3/cms-core": "14.3.10" }, "conflict": { "typo3/cms": "*" @@ -9312,24 +9331,24 @@ "type": "membership" } ], - "time": "2026-09-08T09:17:25+00:00" + "time": "2026-10-22T08:51:04+00:00" }, { "name": "typo3/cms-info", - "version": "v14.3.7", + "version": "v14.3.10", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/info.git", - "reference": "9c1e82d8cc5f230e970877e8ab321a3fc123be71" + "reference": "0b46ba50df325549d0a226e95407903c768a6295" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/info/zipball/9c1e82d8cc5f230e970877e8ab321a3fc123be71", - "reference": "9c1e82d8cc5f230e970877e8ab321a3fc123be71", + "url": "https://api.github.com/repos/TYPO3-CMS/info/zipball/0b46ba50df325549d0a226e95407903c768a6295", + "reference": "0b46ba50df325549d0a226e95407903c768a6295", "shasum": "" }, "require": { - "typo3/cms-core": "14.3.7" + "typo3/cms-core": "14.3.10" }, "conflict": { "typo3/cms": "*" @@ -9382,20 +9401,20 @@ "type": "membership" } ], - "time": "2026-09-08T09:17:25+00:00" + "time": "2026-10-22T08:51:04+00:00" }, { "name": "typo3/cms-install", - "version": "v14.3.7", + "version": "v14.3.10", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/install.git", - "reference": "5b36d108ce0048d2e20792a65476fe14d3aee484" + "reference": "81ed244d2421a0a372ccb89c75c84891ad8086c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/install/zipball/5b36d108ce0048d2e20792a65476fe14d3aee484", - "reference": "5b36d108ce0048d2e20792a65476fe14d3aee484", + "url": "https://api.github.com/repos/TYPO3-CMS/install/zipball/81ed244d2421a0a372ccb89c75c84891ad8086c1", + "reference": "81ed244d2421a0a372ccb89c75c84891ad8086c1", "shasum": "" }, "require": { @@ -9403,10 +9422,10 @@ "guzzlehttp/promises": "^2.0.3 || ^3.0", "nikic/php-parser": "^5.4.0", "symfony/finder": "^7.4.8", - "symfony/http-foundation": "^7.4.13", - "typo3/cms-core": "14.3.7", - "typo3/cms-extbase": "14.3.7", - "typo3/cms-fluid": "14.3.7" + "symfony/http-foundation": "^7.4.19", + "typo3/cms-core": "14.3.10", + "typo3/cms-extbase": "14.3.10", + "typo3/cms-fluid": "14.3.10" }, "conflict": { "typo3/cms": "*" @@ -9459,24 +9478,24 @@ "type": "membership" } ], - "time": "2026-09-08T09:17:25+00:00" + "time": "2026-10-22T08:51:04+00:00" }, { "name": "typo3/cms-reactions", - "version": "v14.3.7", + "version": "v14.3.10", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/reactions.git", - "reference": "4f19877a23bda5ce9ce3258e085612a8219f4be2" + "reference": "2ac8630833cebb6eaaf40b70608bce78ada21a87" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/reactions/zipball/4f19877a23bda5ce9ce3258e085612a8219f4be2", - "reference": "4f19877a23bda5ce9ce3258e085612a8219f4be2", + "url": "https://api.github.com/repos/TYPO3-CMS/reactions/zipball/2ac8630833cebb6eaaf40b70608bce78ada21a87", + "reference": "2ac8630833cebb6eaaf40b70608bce78ada21a87", "shasum": "" }, "require": { - "typo3/cms-core": "14.3.7" + "typo3/cms-core": "14.3.10" }, "conflict": { "typo3/cms": "*" @@ -9526,24 +9545,24 @@ "type": "membership" } ], - "time": "2026-09-08T09:17:25+00:00" + "time": "2026-10-22T08:51:04+00:00" }, { "name": "typo3/cms-recycler", - "version": "v14.3.7", + "version": "v14.3.10", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/recycler.git", - "reference": "4c10966afed492b3b71276771c243fa042df9966" + "reference": "f4f73d54e579c47692c1457f5cc58e4600d81189" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/recycler/zipball/4c10966afed492b3b71276771c243fa042df9966", - "reference": "4c10966afed492b3b71276771c243fa042df9966", + "url": "https://api.github.com/repos/TYPO3-CMS/recycler/zipball/f4f73d54e579c47692c1457f5cc58e4600d81189", + "reference": "f4f73d54e579c47692c1457f5cc58e4600d81189", "shasum": "" }, "require": { - "typo3/cms-core": "14.3.7" + "typo3/cms-core": "14.3.10" }, "conflict": { "typo3/cms": "*" @@ -9596,24 +9615,101 @@ "type": "membership" } ], - "time": "2026-09-08T09:17:25+00:00" + "time": "2026-10-22T08:51:04+00:00" }, { - "name": "typo3/cms-reports", - "version": "v14.3.7", + "name": "typo3/cms-redirects", + "version": "v14.3.10", "source": { "type": "git", - "url": "https://github.com/TYPO3-CMS/reports.git", - "reference": "3080d816d2ecb641ed33ba2f85d8fe1c22398dcc" + "url": "https://github.com/TYPO3-CMS/redirects.git", + "reference": "185885bd3e3fec2b006ff6d0f732bed931c688bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/reports/zipball/3080d816d2ecb641ed33ba2f85d8fe1c22398dcc", - "reference": "3080d816d2ecb641ed33ba2f85d8fe1c22398dcc", + "url": "https://api.github.com/repos/TYPO3-CMS/redirects/zipball/185885bd3e3fec2b006ff6d0f732bed931c688bf", + "reference": "185885bd3e3fec2b006ff6d0f732bed931c688bf", "shasum": "" }, "require": { - "typo3/cms-core": "14.3.7" + "doctrine/dbal": "~4.4.4", + "psr/http-message": "^1.1 || ^2.0", + "psr/log": "^3.0.1", + "symfony/console": "^7.4.8", + "typo3/cms-backend": "14.3.10", + "typo3/cms-core": "14.3.10", + "typo3fluid/fluid": "^5.3.2" + }, + "conflict": { + "typo3/cms": "*" + }, + "suggest": { + "typo3/cms-reports": "Get reports of redirects", + "typo3/cms-scheduler": "Execute commands to update redirect status" + }, + "type": "typo3-cms-framework", + "extra": { + "typo3/cms": { + "Package": { + "partOfFactoryDefault": true + }, + "extension-key": "redirects" + }, + "branch-alias": { + "dev-main": "14.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "TYPO3\\CMS\\Redirects\\": "Classes/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "TYPO3 Core Team", + "email": "typo3cms@typo3.org", + "role": "Developer" + } + ], + "description": "TYPO3 CMS Redirects - Create manual redirects, list existing redirects and automatically createredirects on slug changes.", + "homepage": "https://typo3.community/", + "support": { + "chat": "https://typo3.community/meet/slack/", + "docs": "https://docs.typo3.org/c/typo3/cms-redirects/main/en-us/", + "forum": "https://talk.typo3.org/", + "issues": "https://forge.typo3.org/issues/", + "rss": "https://news.typo3.com/rss/", + "security": "https://typo3.org/security/", + "source": "https://github.com/TYPO3/typo3/" + }, + "funding": [ + { + "url": "https://typo3.org/membership", + "type": "membership" + } + ], + "time": "2026-10-22T08:51:04+00:00" + }, + { + "name": "typo3/cms-reports", + "version": "v14.3.10", + "source": { + "type": "git", + "url": "https://github.com/TYPO3-CMS/reports.git", + "reference": "8f8bd72296cc4d46de546a5440ac4267f54fb3a7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/TYPO3-CMS/reports/zipball/8f8bd72296cc4d46de546a5440ac4267f54fb3a7", + "reference": "8f8bd72296cc4d46de546a5440ac4267f54fb3a7", + "shasum": "" + }, + "require": { + "typo3/cms-core": "14.3.10" }, "conflict": { "typo3/cms": "*" @@ -9666,24 +9762,24 @@ "type": "membership" } ], - "time": "2026-09-08T09:17:25+00:00" + "time": "2026-10-22T08:51:04+00:00" }, { "name": "typo3/cms-rte-ckeditor", - "version": "v14.3.7", + "version": "v14.3.10", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/rte_ckeditor.git", - "reference": "b257f3319f05cfe041e57147311123ae04570f46" + "reference": "140d57728fe17a8abb5014c1bb3c853d2a8a691d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/rte_ckeditor/zipball/b257f3319f05cfe041e57147311123ae04570f46", - "reference": "b257f3319f05cfe041e57147311123ae04570f46", + "url": "https://api.github.com/repos/TYPO3-CMS/rte_ckeditor/zipball/140d57728fe17a8abb5014c1bb3c853d2a8a691d", + "reference": "140d57728fe17a8abb5014c1bb3c853d2a8a691d", "shasum": "" }, "require": { - "typo3/cms-core": "14.3.7" + "typo3/cms-core": "14.3.10" }, "conflict": { "typo3/cms": "*" @@ -9733,24 +9829,24 @@ "type": "membership" } ], - "time": "2026-09-08T09:17:25+00:00" + "time": "2026-10-22T08:51:04+00:00" }, { "name": "typo3/cms-scheduler", - "version": "v14.3.7", + "version": "v14.3.10", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/scheduler.git", - "reference": "4cee4b59a210f117a3b12d02c9747bb7af6fbd42" + "reference": "57581e40122f1f89cc2f219798d6ff936064e9d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/scheduler/zipball/4cee4b59a210f117a3b12d02c9747bb7af6fbd42", - "reference": "4cee4b59a210f117a3b12d02c9747bb7af6fbd42", + "url": "https://api.github.com/repos/TYPO3-CMS/scheduler/zipball/57581e40122f1f89cc2f219798d6ff936064e9d5", + "reference": "57581e40122f1f89cc2f219798d6ff936064e9d5", "shasum": "" }, "require": { - "typo3/cms-core": "14.3.7" + "typo3/cms-core": "14.3.10" }, "conflict": { "typo3/cms": "*" @@ -9797,26 +9893,26 @@ "type": "membership" } ], - "time": "2026-09-08T09:17:25+00:00" + "time": "2026-10-22T08:51:04+00:00" }, { "name": "typo3/cms-seo", - "version": "v14.3.7", + "version": "v14.3.10", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/seo.git", - "reference": "f094412c7c90851c330a1777903be1525eb34fd1" + "reference": "14ae3d05e77731aca837af205fe28d2ebf6c326b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/seo/zipball/f094412c7c90851c330a1777903be1525eb34fd1", - "reference": "f094412c7c90851c330a1777903be1525eb34fd1", + "url": "https://api.github.com/repos/TYPO3-CMS/seo/zipball/14ae3d05e77731aca837af205fe28d2ebf6c326b", + "reference": "14ae3d05e77731aca837af205fe28d2ebf6c326b", "shasum": "" }, "require": { - "typo3/cms-core": "14.3.7", - "typo3/cms-extbase": "14.3.7", - "typo3/cms-frontend": "14.3.7" + "typo3/cms-core": "14.3.10", + "typo3/cms-extbase": "14.3.10", + "typo3/cms-frontend": "14.3.10" }, "conflict": { "typo3/cms": "*" @@ -9869,24 +9965,24 @@ "type": "membership" } ], - "time": "2026-09-08T09:17:25+00:00" + "time": "2026-10-22T08:51:04+00:00" }, { "name": "typo3/cms-sys-note", - "version": "v14.3.7", + "version": "v14.3.10", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/sys_note.git", - "reference": "3e7f535da5536c0721794cfab40579ae1f0839cb" + "reference": "47bae2f533028f82a315a4daf0702e7043975d4e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/sys_note/zipball/3e7f535da5536c0721794cfab40579ae1f0839cb", - "reference": "3e7f535da5536c0721794cfab40579ae1f0839cb", + "url": "https://api.github.com/repos/TYPO3-CMS/sys_note/zipball/47bae2f533028f82a315a4daf0702e7043975d4e", + "reference": "47bae2f533028f82a315a4daf0702e7043975d4e", "shasum": "" }, "require": { - "typo3/cms-core": "14.3.7" + "typo3/cms-core": "14.3.10" }, "conflict": { "typo3/cms": "*" @@ -9939,24 +10035,24 @@ "type": "membership" } ], - "time": "2026-09-08T09:17:25+00:00" + "time": "2026-10-22T08:51:04+00:00" }, { "name": "typo3/cms-tstemplate", - "version": "v14.3.7", + "version": "v14.3.10", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/tstemplate.git", - "reference": "170a81430c146123ac88d868625f9344329960c9" + "reference": "272a6aee8c3105ae3c7ea2a56faf0ebb32c7640d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/tstemplate/zipball/170a81430c146123ac88d868625f9344329960c9", - "reference": "170a81430c146123ac88d868625f9344329960c9", + "url": "https://api.github.com/repos/TYPO3-CMS/tstemplate/zipball/272a6aee8c3105ae3c7ea2a56faf0ebb32c7640d", + "reference": "272a6aee8c3105ae3c7ea2a56faf0ebb32c7640d", "shasum": "" }, "require": { - "typo3/cms-core": "14.3.7" + "typo3/cms-core": "14.3.10" }, "conflict": { "typo3/cms": "*" @@ -10006,24 +10102,24 @@ "type": "membership" } ], - "time": "2026-09-08T09:17:25+00:00" + "time": "2026-10-22T08:51:04+00:00" }, { "name": "typo3/cms-viewpage", - "version": "v14.3.7", + "version": "v14.3.10", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/viewpage.git", - "reference": "71d80ee87905e641b61cd2f8d9b043a4970532b2" + "reference": "a0a0adb4f4740f4e86947ff454c8028ddb29feee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/viewpage/zipball/71d80ee87905e641b61cd2f8d9b043a4970532b2", - "reference": "71d80ee87905e641b61cd2f8d9b043a4970532b2", + "url": "https://api.github.com/repos/TYPO3-CMS/viewpage/zipball/a0a0adb4f4740f4e86947ff454c8028ddb29feee", + "reference": "a0a0adb4f4740f4e86947ff454c8028ddb29feee", "shasum": "" }, "require": { - "typo3/cms-core": "14.3.7" + "typo3/cms-core": "14.3.10" }, "conflict": { "typo3/cms": "*" @@ -10073,25 +10169,25 @@ "type": "membership" } ], - "time": "2026-09-08T09:17:25+00:00" + "time": "2026-10-22T08:51:04+00:00" }, { "name": "typo3/cms-webhooks", - "version": "v14.3.7", + "version": "v14.3.10", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/webhooks.git", - "reference": "9311ce04f27db1600d625762ac30ff11ed2bf279" + "reference": "c60f15358321af6183d6aa2cc557002d913feb6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/webhooks/zipball/9311ce04f27db1600d625762ac30ff11ed2bf279", - "reference": "9311ce04f27db1600d625762ac30ff11ed2bf279", + "url": "https://api.github.com/repos/TYPO3-CMS/webhooks/zipball/c60f15358321af6183d6aa2cc557002d913feb6a", + "reference": "c60f15358321af6183d6aa2cc557002d913feb6a", "shasum": "" }, "require": { "symfony/uid": "^7.4.8", - "typo3/cms-core": "14.3.7" + "typo3/cms-core": "14.3.10" }, "conflict": { "typo3/cms": "*" @@ -10141,7 +10237,7 @@ "type": "membership" } ], - "time": "2026-09-08T09:17:25+00:00" + "time": "2026-10-22T08:51:04+00:00" }, { "name": "typo3/html-sanitizer", @@ -10256,16 +10352,16 @@ }, { "name": "webmozart/assert", - "version": "2.4.1", + "version": "2.5.0", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "2ccb7c2e821038c03a3e6e1700c570c158c55f70" + "reference": "8a163706bbcac613733dba03f51e13b5eb1bb819" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/2ccb7c2e821038c03a3e6e1700c570c158c55f70", - "reference": "2ccb7c2e821038c03a3e6e1700c570c158c55f70", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/8a163706bbcac613733dba03f51e13b5eb1bb819", + "reference": "8a163706bbcac613733dba03f51e13b5eb1bb819", "shasum": "" }, "require": { @@ -10316,9 +10412,9 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/2.4.1" + "source": "https://github.com/webmozarts/assert/tree/2.5.0" }, - "time": "2026-06-15T15:31:57+00:00" + "time": "2026-10-05T23:14:19+00:00" } ], "packages-dev": [], diff --git a/packages/vitec/Classes/Command/AlignMarketPagesCommand.php b/packages/vitec/Classes/Command/AlignMarketPagesCommand.php index a2aa349..3b74e97 100644 --- a/packages/vitec/Classes/Command/AlignMarketPagesCommand.php +++ b/packages/vitec/Classes/Command/AlignMarketPagesCommand.php @@ -114,6 +114,7 @@ final class AlignMarketPagesCommand extends Command 'slug' => $joeSlug, ]; $targets[] = ['uid' => (int)$old['uid'], 'slug' => $joeSlug]; + $this->queueRedirect($datamap, (string)$old['slug'], (int)$old['uid']); $output->writeln(sprintf(' ~ %-36s RENAME from "%s" (uid %d), slug %s -> %s (redirect follows)', $joeName, $oldName, (int)$old['uid'], $old['slug'], $joeSlug)); continue; @@ -193,6 +194,7 @@ final class AlignMarketPagesCommand extends Command $expected = rtrim((string)$target['slug'], '/') . '/' . $this->slugify((string)$child['title']); if ((string)$child['slug'] !== $expected) { $datamap['pages'][(int)$child['uid']]['slug'] = $expected; + $this->queueRedirect($datamap, (string)$child['slug'], (int)$child['uid']); $output->writeln(sprintf(' ~ child slug: "%s" (uid %d) %s -> %s (redirect follows)', (string)$child['title'], (int)$child['uid'], (string)$child['slug'], $expected)); } @@ -218,6 +220,27 @@ final class AlignMarketPagesCommand extends Command return Command::SUCCESS; } + /** + * Queues the 301 for a vacated slug in the same DataHandler run - + * EXT:redirects' automatic creation does not fire for CLI DataHandler + * runs (found 2026-10-26: every renamed URL answered 404). + * + * @param array>> $datamap + */ + private function queueRedirect(array &$datamap, string $oldSlug, int $pageUid): void + { + $oldSlug = rtrim($oldSlug, '/'); + if ($oldSlug === '') { + return; + } + $datamap['sys_redirect']['NEWR' . substr(md5($oldSlug), 0, 10)] = [ + 'pid' => 0, + 'source_host' => '*', + 'source_path' => $oldSlug, + 'target' => 't3://page?uid=' . $pageUid, + 'target_statuscode' => 301, + ]; + } private function norm(string $value): string { return (string)preg_replace('/[^a-z0-9]+/', '', str_replace(['+', '&'], ['plus', 'and'], mb_strtolower($value))); diff --git a/packages/vitec/Classes/Command/BackfillRedirectsCommand.php b/packages/vitec/Classes/Command/BackfillRedirectsCommand.php new file mode 100644 index 0000000..3ab62ce --- /dev/null +++ b/packages/vitec/Classes/Command/BackfillRedirectsCommand.php @@ -0,0 +1,139 @@ + page uid; reconstructed from the command protocols. */ + private const REDIRECTS = [ + // markets realign 2026-10-23 (main pages) + '/markets/retail-hospitality-and-leisure' => 41, + '/markets/transport-and-infrastructure' => 45, + '/markets/sports-venues-and-entertainment' => 43, + '/markets/media-broadcast-and-telecom' => 40, + '/markets/healthcare-and-education' => 39, + '/markets/corporate-and-enterprise' => 36, + '/markets/energy-industrial-and-resources' => 38, + '/markets/defense-government-and-public-sector' => 37, + // markets child-slug pass 2026-10-23 + '/markets/sports-and-entertainment/events-experiences' => 538, + '/markets/media-broadcast-and-telecom/broadcast-and-media' => 443, + '/markets/media-broadcast-and-telecom/telecoms-and-networks' => 444, + '/markets/corporate-and-enterprise/corporate-environments' => 445, + '/markets/corporate-and-enterprise/enterprise-operations' => 446, + '/markets/critical-national-infrastructure/energy-utilities' => 536, + '/markets/government/government-agencies' => 539, + '/markets/government/traffic-smart-mobility' => 546, + '/markets/public-safety/rtcc-/-rtic' => 544, + '/markets/defense-and-security/defense-security' => 532, + // solutions normalize 2026-10-23 + '/solutions/control-room-command-centre-solutions/control-room-platforms-soc-/-noc-/-command-centres' => 467, + '/solutions/video-capture-encoding-processing/video-encoding-/-decoding' => 481, + '/solutions/digital-signage-content-delivery/passenger-/-public-information-displays' => 502, + '/solutions/enterprise-communications-engagament/guest-/-visitor-engagement' => 509, + // Engagament rename 2026-10-26 + '/solutions/enterprise-communications-engagament' => 465, + '/solutions/enterprise-communications-engagament/internal-communications-iptv' => 506, + '/solutions/enterprise-communications-engagament/staff-messaging-systems' => 507, + '/solutions/enterprise-communications-engagament/corporate-broadcasting' => 508, + '/solutions/enterprise-communications-engagament/guest-visitor-engagement' => 509, + '/solutions/enterprise-communications-engagament/multi-location-communication-networks' => 510, + ]; + + protected function configure(): void + { + $this->addOption('apply', null, InputOption::VALUE_NONE, 'Write changes (default: dry run)'); + } + + protected function execute(InputInterface $input, OutputInterface $output): int + { + Bootstrap::initializeBackendAuthentication(); + $apply = (bool)$input->getOption('apply'); + $connection = GeneralUtility::makeInstance(ConnectionPool::class); + $redirects = $connection->getConnectionForTable('sys_redirect'); + $pages = $connection->getConnectionForTable('pages'); + + $datamap = []; + $created = 0; + $i = 0; + foreach (self::REDIRECTS as $source => $uid) { + $i++; + $exists = $redirects->fetchOne( + "SELECT uid FROM sys_redirect WHERE deleted = 0 AND source_path = ? AND source_host IN ('*','dev.vitec.com')", + [$source] + ); + if ($exists) { + $output->writeln(' = ' . $source . ' already has a redirect (#' . (int)$exists . ')'); + continue; + } + $live = $pages->fetchOne('SELECT uid FROM pages WHERE deleted = 0 AND slug = ?', [$source]); + if ($live) { + $output->writeln(' ! ' . $source . ' is a LIVE page slug (uid ' . (int)$live . ') - refused'); + continue; + } + $target = $pages->fetchOne('SELECT uid FROM pages WHERE deleted = 0 AND uid = ?', [$uid]); + if (!$target) { + $output->writeln(' ! target page ' . $uid . ' missing for ' . $source . ' - skipped'); + continue; + } + $datamap['sys_redirect']['NEWR' . $i] = [ + 'pid' => 0, + 'source_host' => '*', + 'source_path' => $source, + 'target' => 't3://page?uid=' . $uid, + 'target_statuscode' => 301, + ]; + $created++; + $output->writeln(' + ' . $source . ' -> page #' . $uid); + } + + if ($created === 0) { + $output->writeln('Nothing to create.'); + return Command::SUCCESS; + } + if (!$apply) { + $output->writeln("\n" . $created . ' redirect(s). DRY RUN - nothing written. Add --apply to write.'); + return Command::SUCCESS; + } + $dataHandler = GeneralUtility::makeInstance(DataHandler::class); + $dataHandler->start($datamap, []); + $dataHandler->process_datamap(); + if ($dataHandler->errorLog !== []) { + $output->writeln('DataHandler: ' . implode(' | ', $dataHandler->errorLog) . ''); + return Command::FAILURE; + } + $output->writeln('' . $created . ' redirect(s) written. Flush the cache: vendor/bin/typo3 cache:flush'); + return Command::SUCCESS; + } +} diff --git a/packages/vitec/Classes/Command/NormalizeSlugsCommand.php b/packages/vitec/Classes/Command/NormalizeSlugsCommand.php index 4411c1b..803f3ae 100644 --- a/packages/vitec/Classes/Command/NormalizeSlugsCommand.php +++ b/packages/vitec/Classes/Command/NormalizeSlugsCommand.php @@ -117,6 +117,7 @@ final class NormalizeSlugsCommand extends Command $taken[$expected] = true; if ((string)$child['slug'] !== $expected) { $datamap['pages'][(int)$child['uid']]['slug'] = $expected; + $this->queueRedirect($datamap, (string)$child['slug'], (int)$child['uid']); $changes++; $output->writeln(sprintf(' ~ "%s" (uid %d) %s -> %s', (string)$child['title'], (int)$child['uid'], (string)$child['slug'], $expected)); } @@ -124,6 +125,27 @@ final class NormalizeSlugsCommand extends Command } } + /** + * Queues the 301 for a vacated slug in the same DataHandler run - + * EXT:redirects' automatic creation does not fire for CLI DataHandler + * runs (found 2026-10-26: every renamed URL answered 404). + * + * @param array>> $datamap + */ + private function queueRedirect(array &$datamap, string $oldSlug, int $pageUid): void + { + $oldSlug = rtrim($oldSlug, '/'); + if ($oldSlug === '') { + return; + } + $datamap['sys_redirect']['NEWR' . substr(md5($oldSlug), 0, 10)] = [ + 'pid' => 0, + 'source_host' => '*', + 'source_path' => $oldSlug, + 'target' => 't3://page?uid=' . $pageUid, + 'target_statuscode' => 301, + ]; + } private function slugify(string $value, string $style): string { $value = mb_strtolower(trim($value)); diff --git a/packages/vitec/Classes/Command/RenamePageCommand.php b/packages/vitec/Classes/Command/RenamePageCommand.php new file mode 100644 index 0000000..2e6947c --- /dev/null +++ b/packages/vitec/Classes/Command/RenamePageCommand.php @@ -0,0 +1,166 @@ +addOption('page', null, InputOption::VALUE_REQUIRED, 'Page uid or slug'); + $this->addOption('title', null, InputOption::VALUE_REQUIRED, 'The new page title'); + $this->addOption('style', null, InputOption::VALUE_REQUIRED, "Ampersand style: 'plain' (A & B -> a-b) or 'and' (-> a-and-b)", 'plain'); + $this->addOption('apply', null, InputOption::VALUE_NONE, 'Write changes (default: dry run)'); + } + + protected function execute(InputInterface $input, OutputInterface $output): int + { + Bootstrap::initializeBackendAuthentication(); + $apply = (bool)$input->getOption('apply'); + $pageArg = trim((string)$input->getOption('page')); + $newTitle = trim((string)$input->getOption('title')); + $style = (string)$input->getOption('style') === 'and' ? 'and' : 'plain'; + if ($pageArg === '' || $newTitle === '') { + $output->writeln('--page and --title are required.'); + return Command::FAILURE; + } + + $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('pages'); + $page = ctype_digit($pageArg) + ? $connection->fetchAssociative('SELECT uid, pid, title, slug FROM pages WHERE deleted = 0 AND uid = ?', [(int)$pageArg]) + : $connection->fetchAssociative('SELECT uid, pid, title, slug FROM pages WHERE deleted = 0 AND slug = ?', [rtrim($pageArg, '/')]); + if (!$page) { + $output->writeln('Page not found: ' . $pageArg . ''); + return Command::FAILURE; + } + + $parentSlug = ''; + if ((int)$page['pid'] > 0) { + $parent = $connection->fetchAssociative('SELECT slug FROM pages WHERE deleted = 0 AND uid = ?', [(int)$page['pid']]); + $parentSlug = rtrim((string)($parent['slug'] ?? ''), '/'); + } + $newSlug = $parentSlug . '/' . $this->slugify($newTitle, $style); + + $output->writeln(($apply ? 'APPLY' : 'DRY-RUN') . ' ยท page #' . (int)$page['uid']); + $datamap = []; + $changes = 0; + if ((string)$page['title'] !== $newTitle) { + $datamap['pages'][(int)$page['uid']]['title'] = $newTitle; + $changes++; + $output->writeln(' ~ title: "' . (string)$page['title'] . '" -> "' . $newTitle . '"'); + } + if ((string)$page['slug'] !== $newSlug) { + $datamap['pages'][(int)$page['uid']]['slug'] = $newSlug; + $this->queueRedirect($datamap, (string)$page['slug'], (int)$page['uid']); + $changes++; + $output->writeln(' ~ slug: ' . (string)$page['slug'] . ' -> ' . $newSlug . ' (redirect follows)'); + } + $this->cascade($connection, (int)$page['uid'], $newSlug, $style, $datamap, $changes, $output); + + if ($changes === 0) { + $output->writeln('Nothing to change.'); + return Command::SUCCESS; + } + if (!$apply) { + $output->writeln("\n" . $changes . ' change(s). DRY RUN - nothing written. Add --apply to write.'); + return Command::SUCCESS; + } + $dataHandler = GeneralUtility::makeInstance(DataHandler::class); + $dataHandler->start($datamap, []); + $dataHandler->process_datamap(); + if ($dataHandler->errorLog !== []) { + $output->writeln('DataHandler: ' . implode(' | ', $dataHandler->errorLog) . ''); + return Command::FAILURE; + } + $output->writeln('' . $changes . ' change(s) written. Flush the cache: vendor/bin/typo3 cache:flush'); + return Command::SUCCESS; + } + + /** + * Descendant slugs follow the renamed page, cascading, titles untouched. + * + * @param array>> $datamap + */ + private function cascade($connection, int $parentUid, string $parentSlug, string $style, array &$datamap, int &$changes, OutputInterface $output): void + { + foreach ($connection->fetchAllAssociative( + 'SELECT uid, title, slug, doktype FROM pages WHERE deleted = 0 AND pid = ? AND sys_language_uid IN (0,-1) ORDER BY sorting', + [$parentUid] + ) as $child) { + if (in_array((int)$child['doktype'], self::SKIP_DOKTYPES, true)) { + $this->cascade($connection, (int)$child['uid'], $parentSlug, $style, $datamap, $changes, $output); + continue; + } + $expected = $parentSlug . '/' . $this->slugify((string)$child['title'], $style); + if ((string)$child['slug'] !== $expected) { + $datamap['pages'][(int)$child['uid']]['slug'] = $expected; + $this->queueRedirect($datamap, (string)$child['slug'], (int)$child['uid']); + $changes++; + $output->writeln(sprintf(' ~ child: "%s" (uid %d) %s -> %s', (string)$child['title'], (int)$child['uid'], (string)$child['slug'], $expected)); + } + $this->cascade($connection, (int)$child['uid'], $expected, $style, $datamap, $changes, $output); + } + } + + /** + * Queues the 301 for a vacated slug in the same DataHandler run - + * EXT:redirects' automatic creation does not fire for CLI DataHandler + * runs (found 2026-10-26: every renamed URL answered 404). + * + * @param array>> $datamap + */ + private function queueRedirect(array &$datamap, string $oldSlug, int $pageUid): void + { + $oldSlug = rtrim($oldSlug, '/'); + if ($oldSlug === '') { + return; + } + $datamap['sys_redirect']['NEWR' . substr(md5($oldSlug), 0, 10)] = [ + 'pid' => 0, + 'source_host' => '*', + 'source_path' => $oldSlug, + 'target' => 't3://page?uid=' . $pageUid, + 'target_statuscode' => 301, + ]; + } + private function slugify(string $value, string $style): string + { + $value = mb_strtolower(trim($value)); + $value = str_replace('&', $style === 'and' ? ' and ' : ' ', $value); + return trim((string)preg_replace('/[^a-z0-9]+/', '-', $value), '-'); + } +} diff --git a/packages/vitec/Classes/Import/SubsolutionWorkbookImporter.php b/packages/vitec/Classes/Import/SubsolutionWorkbookImporter.php index 5152663..d54cc41 100644 --- a/packages/vitec/Classes/Import/SubsolutionWorkbookImporter.php +++ b/packages/vitec/Classes/Import/SubsolutionWorkbookImporter.php @@ -787,6 +787,10 @@ final class SubsolutionWorkbookImporter private function norm(string $value): string { + // The 39 delivered workbook metas carry the "Engagament" page-title + // typo (the generator read it from the tree before the 2026-10-26 + // rename); tolerate it so re-imports keep matching the fixed page. + $value = str_ireplace('engagament', 'engagement', $value); return (string)preg_replace('/[^a-z0-9]+/', '', str_replace('+', 'plus', mb_strtolower($value))); } }