[TASK] Update symfony dependencies to 4.4 or 5.0 54/62354/10
authorBenni Mack <benni@typo3.org>
Thu, 21 Nov 2019 09:57:46 +0000 (10:57 +0100)
committerBenni Mack <benni@typo3.org>
Thu, 21 Nov 2019 12:52:35 +0000 (13:52 +0100)
TYPO3 Core v10 should rely on Symfony 4.4 (LTS release)
and add support for 5.0 automatically.

Symfony 4.4 made breaking changes to the Mailer and Mime components
which now need adaptions.

Used composer command:

composer req "symfony/config":"^4.4 || ^5.0" \
"symfony/console":"^4.4 || ^5.0" \
"symfony/dependency-injection":"^4.4 || ^5.0" \
"symfony/expression-language":"^4.4 || ^5.0" \
"symfony/finder":"^4.4 || ^5.0" \
"symfony/mailer":"^4.4 || ^5.0" \
"symfony/mime":"^4.4 || ^5.0" \
"symfony/property-access":"^4.4 || ^5.0" \
"symfony/property-info":"^4.4 || ^5.0" \
"symfony/routing":"^4.4 || ^5.0" \
"symfony/yaml":"^4.4 || ^5.0" --update-with-all-dependencies

Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 0 installs, 27 updates, 0 removals
  - Updating symfony/polyfill-ctype (v1.11.0 => v1.12.0)
  - Updating symfony/filesystem (v4.3.1 => v4.4.0)
  - Updating symfony/config (v4.3.2 => v4.4.0)
  - Updating symfony/service-contracts (v1.1.2 => v1.1.8)
  - Updating symfony/polyfill-php73 (v1.11.0 => v1.12.0)
  - Updating symfony/polyfill-mbstring (v1.11.0 => v1.12.0)
  - Updating symfony/console (v4.3.1 => v4.4.0)
  - Updating symfony/dependency-injection (v4.3.2 => v4.4.0)
  - Updating symfony/var-exporter (v4.3.1 => v4.4.0)
  - Updating symfony/cache-contracts (v1.1.1 => v1.1.7)
  - Updating psr/log (1.0.2 => 1.1.2)
  - Updating symfony/cache (v4.3.1 => v4.4.0)
  - Updating symfony/expression-language (v4.3.1 => v4.4.0)
  - Updating symfony/finder (v4.3.3 => v4.4.0)
  - Updating symfony/polyfill-php72 (v1.11.0 => v1.12.0)
  - Updating symfony/polyfill-intl-idn (v1.11.0 => v1.12.0)
  - Updating symfony/mime (v4.3.2 => v4.4.0)
  - Updating symfony/event-dispatcher-contracts (v1.1.1 => v1.1.7)
  - Updating symfony/event-dispatcher (v4.3.1 => v4.4.0)
  - Updating doctrine/lexer (v1.0.1 => 1.2.0)
  - Updating egulias/email-validator (2.1.9 => 2.1.11)
  - Updating symfony/mailer (v4.3.2 => v4.4.0)
  - Updating symfony/inflector (v4.3.1 => v4.4.0)
  - Updating symfony/property-access (v4.3.1 => v4.4.0)
  - Updating symfony/property-info (v4.3.1 => v4.4.0)
  - Updating symfony/routing (v4.3.1 => v4.4.0)
  - Updating symfony/yaml (v4.3.1 => v4.4.0)

Resolves: #89721
Releases: master
Change-Id: I834a79e3880b3a7a95429c2fe052657e21599ec7
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/62354
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Tested-by: Susanne Moog <look@susi.dev>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Susanne Moog <look@susi.dev>
Reviewed-by: Benni Mack <benni@typo3.org>
30 files changed:
composer.json
composer.lock
typo3/sysext/core/Classes/Mail/FileSpool.php
typo3/sysext/core/Classes/Mail/MailMessage.php
typo3/sysext/core/Classes/Mail/Mailer.php
typo3/sysext/core/Classes/Mail/MboxTransport.php
typo3/sysext/core/Classes/Mail/MemorySpool.php
typo3/sysext/core/Configuration/Services.yaml
typo3/sysext/core/Documentation/Changelog/10.0/Feature-88643-NewMailAPIBasedOnSymfonymailerAndSymfonymime.rst
typo3/sysext/core/Documentation/Changelog/10.0/Feature-88770-PSR-14BasedEventDispatcher.rst
typo3/sysext/core/Documentation/Changelog/10.1/Deprecation-88850-ContentObjectRendererSendNotifyEmail.rst
typo3/sysext/core/Tests/Unit/Mail/Fixtures/FakeValidSpoolFixture.php
typo3/sysext/core/composer.json
typo3/sysext/extbase/Classes/Reflection/ClassSchema.php
typo3/sysext/extbase/Classes/Reflection/PropertyInfo/Extractor/PhpDocPropertyTypeExtractor.php [deleted file]
typo3/sysext/extbase/Tests/Unit/Reflection/PropertyInfo/Extractor/PhpDocPropertyTypeExtractorTest.php [deleted file]
typo3/sysext/extbase/composer.json
typo3/sysext/felogin/Classes/Controller/FrontendLoginController.php
typo3/sysext/fluid/composer.json
typo3/sysext/form/Classes/Domain/Finishers/EmailFinisher.php
typo3/sysext/form/composer.json
typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php
typo3/sysext/install/Classes/Authentication/AuthenticationService.php
typo3/sysext/install/Classes/Controller/EnvironmentController.php
typo3/sysext/install/composer.json
typo3/sysext/linkvalidator/Classes/Task/ValidatorTask.php
typo3/sysext/linkvalidator/Configuration/Services.yaml
typo3/sysext/redirects/Configuration/Services.yaml
typo3/sysext/scheduler/Classes/Example/TestTask.php
typo3/sysext/workspaces/Classes/Hook/DataHandlerHook.php

index a4eae5d..7c73c05 100644 (file)
                "psr/http-message": "^1.0",
                "psr/http-server-middleware": "^1.0",
                "psr/log": "^1.0",
-               "symfony/config": "^4.1",
-               "symfony/console": "^4.1",
-               "symfony/dependency-injection": "^4.1",
-               "symfony/expression-language": "^4.1",
-               "symfony/finder": "^4.3",
-               "symfony/mailer": "^4.3",
-               "symfony/mime": "^4.3",
+               "symfony/config": "^4.4 || ^5.0",
+               "symfony/console": "^4.4 || ^5.0",
+               "symfony/dependency-injection": "^4.4 || ^5.0",
+               "symfony/expression-language": "^4.4 || ^5.0",
+               "symfony/finder": "^4.4 || ^5.0",
+               "symfony/mailer": "^4.4 || ^5.0",
+               "symfony/mime": "^4.4 || ^5.0",
                "symfony/polyfill-intl-icu": "^1.6",
                "symfony/polyfill-intl-idn": "^1.10",
                "symfony/polyfill-mbstring": "^1.2",
-               "symfony/property-access": "^4.2",
-               "symfony/property-info": "^4.2",
-               "symfony/routing": "^4.1",
-               "symfony/yaml": "^4.1",
+               "symfony/property-access": "^4.4 || ^5.0",
+               "symfony/property-info": "^4.4 || ^5.0",
+               "symfony/routing": "^4.4 || ^5.0",
+               "symfony/yaml": "^4.4 || ^5.0",
                "typo3/class-alias-loader": "^1.0",
                "typo3/cms-cli": "^2.0",
                "typo3/cms-composer-installers": "^2.0",
index bd714e8..66dc153 100644 (file)
@@ -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": "bf7eeafca5ed23dd4044a2555c729197",
+    "content-hash": "99fedc54e7c17d0074bb3222b7aca3c0",
     "packages": [
         {
             "name": "cogpowered/finediff",
         },
         {
             "name": "doctrine/lexer",
-            "version": "v1.0.1",
+            "version": "1.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/lexer.git",
-                "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c"
+                "reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c",
-                "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c",
+                "url": "https://api.github.com/repos/doctrine/lexer/zipball/5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6",
+                "reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.2"
+                "php": "^7.2"
+            },
+            "require-dev": {
+                "doctrine/coding-standard": "^6.0",
+                "phpstan/phpstan": "^0.11.8",
+                "phpunit/phpunit": "^8.2"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "1.2.x-dev"
                 }
             },
             "autoload": {
-                "psr-0": {
-                    "Doctrine\\Common\\Lexer\\": "lib/"
+                "psr-4": {
+                    "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
             ],
             "authors": [
                 {
-                    "name": "Roman Borschel",
-                    "email": "roman@code-factory.org"
-                },
-                {
                     "name": "Guilherme Blanco",
                     "email": "guilhermeblanco@gmail.com"
                 },
                 {
+                    "name": "Roman Borschel",
+                    "email": "roman@code-factory.org"
+                },
+                {
                     "name": "Johannes Schmitt",
                     "email": "schmittjoh@gmail.com"
                 }
             ],
-            "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.",
-            "homepage": "http://www.doctrine-project.org",
+            "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.",
+            "homepage": "https://www.doctrine-project.org/projects/lexer.html",
             "keywords": [
+                "annotations",
+                "docblock",
                 "lexer",
-                "parser"
+                "parser",
+                "php"
             ],
-            "time": "2014-09-09T13:34:57+00:00"
+            "time": "2019-10-30T14:39:59+00:00"
         },
         {
             "name": "egulias/email-validator",
-            "version": "2.1.9",
+            "version": "2.1.11",
             "source": {
                 "type": "git",
                 "url": "https://github.com/egulias/EmailValidator.git",
-                "reference": "128cc721d771ec2c46ce59698f4ca42b73f71b25"
+                "reference": "92dd169c32f6f55ba570c309d83f5209cefb5e23"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/128cc721d771ec2c46ce59698f4ca42b73f71b25",
-                "reference": "128cc721d771ec2c46ce59698f4ca42b73f71b25",
+                "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/92dd169c32f6f55ba570c309d83f5209cefb5e23",
+                "reference": "92dd169c32f6f55ba570c309d83f5209cefb5e23",
                 "shasum": ""
             },
             "require": {
             "require-dev": {
                 "dominicsayers/isemail": "dev-master",
                 "phpunit/phpunit": "^4.8.35||^5.7||^6.0",
-                "satooshi/php-coveralls": "^1.0.1"
+                "satooshi/php-coveralls": "^1.0.1",
+                "symfony/phpunit-bridge": "^4.4@dev"
             },
             "suggest": {
                 "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation"
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.0.x-dev"
+                    "dev-master": "2.1.x-dev"
                 }
             },
             "autoload": {
                 "validation",
                 "validator"
             ],
-            "time": "2019-06-23T10:14:27+00:00"
+            "time": "2019-08-13T17:33:27+00:00"
         },
         {
             "name": "guzzlehttp/guzzle",
         },
         {
             "name": "psr/log",
-            "version": "1.0.2",
+            "version": "1.1.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/php-fig/log.git",
-                "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
+                "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
-                "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801",
+                "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801",
                 "shasum": ""
             },
             "require": {
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "1.1.x-dev"
                 }
             },
             "autoload": {
                 "psr",
                 "psr-3"
             ],
-            "time": "2016-10-10T12:19:37+00:00"
+            "time": "2019-11-01T11:05:21+00:00"
         },
         {
             "name": "ralouphie/getallheaders",
         },
         {
             "name": "symfony/cache",
-            "version": "v4.3.1",
+            "version": "v4.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/cache.git",
-                "reference": "2edc417da273bafee589a8758f0278416d04af38"
+                "reference": "72d5cdc6920f889290beb65fa96b5e9d4515e382"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/cache/zipball/2edc417da273bafee589a8758f0278416d04af38",
-                "reference": "2edc417da273bafee589a8758f0278416d04af38",
+                "url": "https://api.github.com/repos/symfony/cache/zipball/72d5cdc6920f889290beb65fa96b5e9d4515e382",
+                "reference": "72d5cdc6920f889290beb65fa96b5e9d4515e382",
                 "shasum": ""
             },
             "require": {
                 "php": "^7.1.3",
                 "psr/cache": "~1.0",
                 "psr/log": "~1.0",
-                "symfony/cache-contracts": "^1.1",
-                "symfony/service-contracts": "^1.1",
-                "symfony/var-exporter": "^4.2"
+                "symfony/cache-contracts": "^1.1.7|^2",
+                "symfony/service-contracts": "^1.1|^2",
+                "symfony/var-exporter": "^4.2|^5.0"
             },
             "conflict": {
                 "doctrine/dbal": "<2.5",
                 "symfony/dependency-injection": "<3.4",
-                "symfony/var-dumper": "<3.4"
+                "symfony/http-kernel": "<4.4",
+                "symfony/var-dumper": "<4.4"
             },
             "provide": {
                 "psr/cache-implementation": "1.0",
                 "doctrine/dbal": "~2.5",
                 "predis/predis": "~1.1",
                 "psr/simple-cache": "^1.0",
-                "symfony/config": "~4.2",
-                "symfony/dependency-injection": "~3.4|~4.1",
-                "symfony/var-dumper": "^4.1.1"
+                "symfony/config": "^4.2|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.1|^5.0",
+                "symfony/var-dumper": "^4.4|^5.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.3-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
                 "caching",
                 "psr6"
             ],
-            "time": "2019-06-06T10:05:02+00:00"
+            "time": "2019-11-17T11:01:12+00:00"
         },
         {
             "name": "symfony/cache-contracts",
-            "version": "v1.1.1",
+            "version": "v1.1.7",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/cache-contracts.git",
-                "reference": "7ff3902cc747dd5e2c6f26dc42603ed07b530293"
+                "reference": "af50d14ada9e4e82cfabfabdc502d144f89be0a1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/7ff3902cc747dd5e2c6f26dc42603ed07b530293",
-                "reference": "7ff3902cc747dd5e2c6f26dc42603ed07b530293",
+                "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/af50d14ada9e4e82cfabfabdc502d144f89be0a1",
+                "reference": "af50d14ada9e4e82cfabfabdc502d144f89be0a1",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3"
+                "php": "^7.1.3",
+                "psr/cache": "^1.0"
             },
             "suggest": {
-                "psr/cache": "",
                 "symfony/cache-implementation": ""
             },
             "type": "library",
                 "interoperability",
                 "standards"
             ],
-            "time": "2019-05-22T12:23:29+00:00"
+            "time": "2019-10-04T21:43:27+00:00"
         },
         {
             "name": "symfony/config",
-            "version": "v4.3.2",
+            "version": "v4.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/config.git",
-                "reference": "9198eea354be75794a7b1064de00d9ae9ae5090f"
+                "reference": "f08e1c48e1f05d07c32f2d8599ed539e62105beb"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/config/zipball/9198eea354be75794a7b1064de00d9ae9ae5090f",
-                "reference": "9198eea354be75794a7b1064de00d9ae9ae5090f",
+                "url": "https://api.github.com/repos/symfony/config/zipball/f08e1c48e1f05d07c32f2d8599ed539e62105beb",
+                "reference": "f08e1c48e1f05d07c32f2d8599ed539e62105beb",
                 "shasum": ""
             },
             "require": {
                 "php": "^7.1.3",
-                "symfony/filesystem": "~3.4|~4.0",
+                "symfony/filesystem": "^3.4|^4.0|^5.0",
                 "symfony/polyfill-ctype": "~1.8"
             },
             "conflict": {
                 "symfony/finder": "<3.4"
             },
             "require-dev": {
-                "symfony/dependency-injection": "~3.4|~4.0",
-                "symfony/event-dispatcher": "~3.4|~4.0",
-                "symfony/finder": "~3.4|~4.0",
-                "symfony/messenger": "~4.1",
-                "symfony/yaml": "~3.4|~4.0"
+                "symfony/event-dispatcher": "^3.4|^4.0|^5.0",
+                "symfony/finder": "^3.4|^4.0|^5.0",
+                "symfony/messenger": "^4.1|^5.0",
+                "symfony/service-contracts": "^1.1|^2",
+                "symfony/yaml": "^3.4|^4.0|^5.0"
             },
             "suggest": {
                 "symfony/yaml": "To use the yaml reference dumper"
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.3-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
             ],
             "description": "Symfony Config Component",
             "homepage": "https://symfony.com",
-            "time": "2019-06-08T06:33:08+00:00"
+            "time": "2019-11-16T15:22:42+00:00"
         },
         {
             "name": "symfony/console",
-            "version": "v4.3.1",
+            "version": "v4.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/console.git",
-                "reference": "d50bbeeb0e17e6dd4124ea391eff235e932cbf64"
+                "reference": "35d9077f495c6d184d9930f7a7ecbd1ad13c7ab8"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/d50bbeeb0e17e6dd4124ea391eff235e932cbf64",
-                "reference": "d50bbeeb0e17e6dd4124ea391eff235e932cbf64",
+                "url": "https://api.github.com/repos/symfony/console/zipball/35d9077f495c6d184d9930f7a7ecbd1ad13c7ab8",
+                "reference": "35d9077f495c6d184d9930f7a7ecbd1ad13c7ab8",
                 "shasum": ""
             },
             "require": {
                 "php": "^7.1.3",
                 "symfony/polyfill-mbstring": "~1.0",
                 "symfony/polyfill-php73": "^1.8",
-                "symfony/service-contracts": "^1.1"
+                "symfony/service-contracts": "^1.1|^2"
             },
             "conflict": {
                 "symfony/dependency-injection": "<3.4",
-                "symfony/event-dispatcher": "<4.3",
+                "symfony/event-dispatcher": "<4.3|>=5",
+                "symfony/lock": "<4.4",
                 "symfony/process": "<3.3"
             },
             "provide": {
             },
             "require-dev": {
                 "psr/log": "~1.0",
-                "symfony/config": "~3.4|~4.0",
-                "symfony/dependency-injection": "~3.4|~4.0",
+                "symfony/config": "^3.4|^4.0|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
                 "symfony/event-dispatcher": "^4.3",
-                "symfony/lock": "~3.4|~4.0",
-                "symfony/process": "~3.4|~4.0",
-                "symfony/var-dumper": "^4.3"
+                "symfony/lock": "^4.4|^5.0",
+                "symfony/process": "^3.4|^4.0|^5.0",
+                "symfony/var-dumper": "^4.3|^5.0"
             },
             "suggest": {
                 "psr/log": "For using the console logger",
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.3-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
             ],
             "description": "Symfony Console Component",
             "homepage": "https://symfony.com",
-            "time": "2019-06-05T13:25:51+00:00"
+            "time": "2019-11-13T07:39:40+00:00"
         },
         {
             "name": "symfony/dependency-injection",
-            "version": "v4.3.2",
+            "version": "v4.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/dependency-injection.git",
-                "reference": "b851928be349c065197fdc0832f78d85139e3903"
+                "reference": "d4439814135ed1343c93bde998b7792af8852e41"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/b851928be349c065197fdc0832f78d85139e3903",
-                "reference": "b851928be349c065197fdc0832f78d85139e3903",
+                "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/d4439814135ed1343c93bde998b7792af8852e41",
+                "reference": "d4439814135ed1343c93bde998b7792af8852e41",
                 "shasum": ""
             },
             "require": {
                 "php": "^7.1.3",
                 "psr/container": "^1.0",
-                "symfony/service-contracts": "^1.1.2"
+                "symfony/service-contracts": "^1.1.6|^2"
             },
             "conflict": {
-                "symfony/config": "<4.3",
+                "symfony/config": "<4.3|>=5.0",
                 "symfony/finder": "<3.4",
                 "symfony/proxy-manager-bridge": "<3.4",
                 "symfony/yaml": "<3.4"
             },
             "require-dev": {
                 "symfony/config": "^4.3",
-                "symfony/expression-language": "~3.4|~4.0",
-                "symfony/yaml": "~3.4|~4.0"
+                "symfony/expression-language": "^3.4|^4.0|^5.0",
+                "symfony/yaml": "^3.4|^4.0|^5.0"
             },
             "suggest": {
                 "symfony/config": "",
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.3-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
             ],
             "description": "Symfony DependencyInjection Component",
             "homepage": "https://symfony.com",
-            "time": "2019-06-15T04:08:07+00:00"
+            "time": "2019-11-20T13:27:43+00:00"
         },
         {
             "name": "symfony/event-dispatcher",
-            "version": "v4.3.1",
+            "version": "v4.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/event-dispatcher.git",
-                "reference": "4e6c670af81c4fb0b6c08b035530a9915d0b691f"
+                "reference": "ab1c43e17fff802bef0a898f3bc088ac33b8e0e1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/4e6c670af81c4fb0b6c08b035530a9915d0b691f",
-                "reference": "4e6c670af81c4fb0b6c08b035530a9915d0b691f",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/ab1c43e17fff802bef0a898f3bc088ac33b8e0e1",
+                "reference": "ab1c43e17fff802bef0a898f3bc088ac33b8e0e1",
                 "shasum": ""
             },
             "require": {
             },
             "require-dev": {
                 "psr/log": "~1.0",
-                "symfony/config": "~3.4|~4.0",
-                "symfony/dependency-injection": "~3.4|~4.0",
-                "symfony/expression-language": "~3.4|~4.0",
-                "symfony/http-foundation": "^3.4|^4.0",
-                "symfony/service-contracts": "^1.1",
-                "symfony/stopwatch": "~3.4|~4.0"
+                "symfony/config": "^3.4|^4.0|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+                "symfony/expression-language": "^3.4|^4.0|^5.0",
+                "symfony/http-foundation": "^3.4|^4.0|^5.0",
+                "symfony/service-contracts": "^1.1|^2",
+                "symfony/stopwatch": "^3.4|^4.0|^5.0"
             },
             "suggest": {
                 "symfony/dependency-injection": "",
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.3-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
             ],
             "description": "Symfony EventDispatcher Component",
             "homepage": "https://symfony.com",
-            "time": "2019-05-30T16:10:05+00:00"
+            "time": "2019-11-08T22:40:51+00:00"
         },
         {
             "name": "symfony/event-dispatcher-contracts",
-            "version": "v1.1.1",
+            "version": "v1.1.7",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/event-dispatcher-contracts.git",
-                "reference": "8fa2cf2177083dd59cf8e44ea4b6541764fbda69"
+                "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8fa2cf2177083dd59cf8e44ea4b6541764fbda69",
-                "reference": "8fa2cf2177083dd59cf8e44ea4b6541764fbda69",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c43ab685673fb6c8d84220c77897b1d6cdbe1d18",
+                "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18",
                 "shasum": ""
             },
             "require": {
                 "interoperability",
                 "standards"
             ],
-            "time": "2019-05-22T12:23:29+00:00"
+            "time": "2019-09-17T09:54:03+00:00"
         },
         {
             "name": "symfony/expression-language",
-            "version": "v4.3.1",
+            "version": "v4.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/expression-language.git",
-                "reference": "0243ebde208e0cb401b37e8b8a70a7c6a0aa1d6d"
+                "reference": "8a1028a65623a8f7bba582b60e4fd308e6f43001"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/expression-language/zipball/0243ebde208e0cb401b37e8b8a70a7c6a0aa1d6d",
-                "reference": "0243ebde208e0cb401b37e8b8a70a7c6a0aa1d6d",
+                "url": "https://api.github.com/repos/symfony/expression-language/zipball/8a1028a65623a8f7bba582b60e4fd308e6f43001",
+                "reference": "8a1028a65623a8f7bba582b60e4fd308e6f43001",
                 "shasum": ""
             },
             "require": {
                 "php": "^7.1.3",
-                "symfony/cache": "~3.4|~4.0",
-                "symfony/service-contracts": "^1.1"
+                "symfony/cache": "^3.4|^4.0|^5.0",
+                "symfony/service-contracts": "^1.1|^2"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.3-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
             ],
             "description": "Symfony ExpressionLanguage Component",
             "homepage": "https://symfony.com",
-            "time": "2019-05-30T16:10:05+00:00"
+            "time": "2019-11-12T14:53:53+00:00"
         },
         {
             "name": "symfony/filesystem",
-            "version": "v4.3.1",
+            "version": "v4.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/filesystem.git",
-                "reference": "bf2af40d738dec5e433faea7b00daa4431d0a4cf"
+                "reference": "d12b01cba60be77b583c9af660007211e3909854"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/filesystem/zipball/bf2af40d738dec5e433faea7b00daa4431d0a4cf",
-                "reference": "bf2af40d738dec5e433faea7b00daa4431d0a4cf",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/d12b01cba60be77b583c9af660007211e3909854",
+                "reference": "d12b01cba60be77b583c9af660007211e3909854",
                 "shasum": ""
             },
             "require": {
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.3-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
             ],
             "description": "Symfony Filesystem Component",
             "homepage": "https://symfony.com",
-            "time": "2019-06-03T20:27:40+00:00"
+            "time": "2019-11-12T14:51:11+00:00"
         },
         {
             "name": "symfony/finder",
-            "version": "v4.3.3",
+            "version": "v4.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/finder.git",
-                "reference": "9638d41e3729459860bb96f6247ccb61faaa45f2"
+                "reference": "ce8743441da64c41e2a667b8eb66070444ed911e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/finder/zipball/9638d41e3729459860bb96f6247ccb61faaa45f2",
-                "reference": "9638d41e3729459860bb96f6247ccb61faaa45f2",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/ce8743441da64c41e2a667b8eb66070444ed911e",
+                "reference": "ce8743441da64c41e2a667b8eb66070444ed911e",
                 "shasum": ""
             },
             "require": {
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.3-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
             ],
             "description": "Symfony Finder Component",
             "homepage": "https://symfony.com",
-            "time": "2019-06-28T13:16:30+00:00"
+            "time": "2019-11-17T21:56:56+00:00"
         },
         {
             "name": "symfony/inflector",
-            "version": "v4.3.1",
+            "version": "v4.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/inflector.git",
-                "reference": "889dc28cb6350ddb302fe9b8c796e4e6eb836856"
+                "reference": "98581481d9ddabe4db3a66e10202fe1fa08d791b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/inflector/zipball/889dc28cb6350ddb302fe9b8c796e4e6eb836856",
-                "reference": "889dc28cb6350ddb302fe9b8c796e4e6eb836856",
+                "url": "https://api.github.com/repos/symfony/inflector/zipball/98581481d9ddabe4db3a66e10202fe1fa08d791b",
+                "reference": "98581481d9ddabe4db3a66e10202fe1fa08d791b",
                 "shasum": ""
             },
             "require": {
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.3-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
                 "symfony",
                 "words"
             ],
-            "time": "2019-05-30T09:28:08+00:00"
+            "time": "2019-11-06T12:02:32+00:00"
         },
         {
             "name": "symfony/intl",
         },
         {
             "name": "symfony/mailer",
-            "version": "v4.3.2",
+            "version": "v4.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/mailer.git",
-                "reference": "623c5e5a8303a936a1a265dc08b488ac43977dce"
+                "reference": "050b93ce9d307de9567908aa8ab8d6fa3b970921"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/mailer/zipball/623c5e5a8303a936a1a265dc08b488ac43977dce",
-                "reference": "623c5e5a8303a936a1a265dc08b488ac43977dce",
+                "url": "https://api.github.com/repos/symfony/mailer/zipball/050b93ce9d307de9567908aa8ab8d6fa3b970921",
+                "reference": "050b93ce9d307de9567908aa8ab8d6fa3b970921",
                 "shasum": ""
             },
             "require": {
-                "egulias/email-validator": "^2.0",
+                "egulias/email-validator": "^2.1.10",
                 "php": "^7.1.3",
                 "psr/log": "~1.0",
                 "symfony/event-dispatcher": "^4.3",
-                "symfony/mime": "^4.3"
+                "symfony/mime": "^4.4|^5.0",
+                "symfony/service-contracts": "^1.1|^2"
+            },
+            "conflict": {
+                "symfony/http-kernel": "<4.4",
+                "symfony/sendgrid-mailer": "<4.4"
             },
             "require-dev": {
-                "symfony/amazon-mailer": "^4.3",
-                "symfony/google-mailer": "^4.3",
-                "symfony/http-client-contracts": "^1.1",
-                "symfony/mailchimp-mailer": "^4.3",
-                "symfony/mailgun-mailer": "^4.3.2",
-                "symfony/postmark-mailer": "^4.3",
-                "symfony/sendgrid-mailer": "^4.3"
+                "symfony/amazon-mailer": "^4.4|^5.0",
+                "symfony/google-mailer": "^4.4|^5.0",
+                "symfony/http-client-contracts": "^1.1|^2",
+                "symfony/mailchimp-mailer": "^4.4|^5.0",
+                "symfony/mailgun-mailer": "^4.4|^5.0",
+                "symfony/messenger": "^4.4|^5.0",
+                "symfony/postmark-mailer": "^4.4|^5.0",
+                "symfony/sendgrid-mailer": "^4.4|^5.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.3-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
             ],
             "description": "Symfony Mailer Component",
             "homepage": "https://symfony.com",
-            "time": "2019-06-26T08:48:20+00:00"
+            "time": "2019-11-14T14:24:33+00:00"
         },
         {
             "name": "symfony/mime",
-            "version": "v4.3.2",
+            "version": "v4.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/mime.git",
-                "reference": "ec2c5565de60e03f33d4296a655e3273f0ad1f8b"
+                "reference": "89da7b68b7149aab065c09b97f938753ab52831f"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/mime/zipball/ec2c5565de60e03f33d4296a655e3273f0ad1f8b",
-                "reference": "ec2c5565de60e03f33d4296a655e3273f0ad1f8b",
+                "url": "https://api.github.com/repos/symfony/mime/zipball/89da7b68b7149aab065c09b97f938753ab52831f",
+                "reference": "89da7b68b7149aab065c09b97f938753ab52831f",
                 "shasum": ""
             },
             "require": {
                 "symfony/polyfill-intl-idn": "^1.10",
                 "symfony/polyfill-mbstring": "^1.0"
             },
+            "conflict": {
+                "symfony/mailer": "<4.4"
+            },
             "require-dev": {
-                "egulias/email-validator": "^2.0",
-                "symfony/dependency-injection": "~3.4|^4.1"
+                "egulias/email-validator": "^2.1.10",
+                "symfony/dependency-injection": "^3.4|^4.1|^5.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.3-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
                 "mime",
                 "mime-type"
             ],
-            "time": "2019-06-04T09:22:54+00:00"
+            "time": "2019-11-13T07:39:40+00:00"
         },
         {
             "name": "symfony/polyfill-ctype",
-            "version": "v1.11.0",
+            "version": "v1.12.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-ctype.git",
-                "reference": "82ebae02209c21113908c229e9883c419720738a"
+                "reference": "550ebaac289296ce228a706d0867afc34687e3f4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a",
-                "reference": "82ebae02209c21113908c229e9883c419720738a",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/550ebaac289296ce228a706d0867afc34687e3f4",
+                "reference": "550ebaac289296ce228a706d0867afc34687e3f4",
                 "shasum": ""
             },
             "require": {
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.11-dev"
+                    "dev-master": "1.12-dev"
                 }
             },
             "autoload": {
             ],
             "authors": [
                 {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                },
-                {
                     "name": "Gert de Pagter",
                     "email": "BackEndTea@gmail.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
                 }
             ],
             "description": "Symfony polyfill for ctype functions",
                 "polyfill",
                 "portable"
             ],
-            "time": "2019-02-06T07:57:58+00:00"
+            "time": "2019-08-06T08:03:45+00:00"
         },
         {
             "name": "symfony/polyfill-intl-icu",
         },
         {
             "name": "symfony/polyfill-intl-idn",
-            "version": "v1.11.0",
+            "version": "v1.12.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-intl-idn.git",
-                "reference": "c766e95bec706cdd89903b1eda8afab7d7a6b7af"
+                "reference": "6af626ae6fa37d396dc90a399c0ff08e5cfc45b2"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/c766e95bec706cdd89903b1eda8afab7d7a6b7af",
-                "reference": "c766e95bec706cdd89903b1eda8afab7d7a6b7af",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6af626ae6fa37d396dc90a399c0ff08e5cfc45b2",
+                "reference": "6af626ae6fa37d396dc90a399c0ff08e5cfc45b2",
                 "shasum": ""
             },
             "require": {
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.9-dev"
+                    "dev-master": "1.12-dev"
                 }
             },
             "autoload": {
             ],
             "authors": [
                 {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                },
-                {
                     "name": "Laurent Bassin",
                     "email": "laurent@bassin.info"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
                 }
             ],
             "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
                 "portable",
                 "shim"
             ],
-            "time": "2019-03-04T13:44:35+00:00"
+            "time": "2019-08-06T08:03:45+00:00"
         },
         {
             "name": "symfony/polyfill-mbstring",
-            "version": "v1.11.0",
+            "version": "v1.12.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "fe5e94c604826c35a32fa832f35bd036b6799609"
+                "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fe5e94c604826c35a32fa832f35bd036b6799609",
-                "reference": "fe5e94c604826c35a32fa832f35bd036b6799609",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b42a2f66e8f1b15ccf25652c3424265923eb4f17",
+                "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17",
                 "shasum": ""
             },
             "require": {
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.11-dev"
+                    "dev-master": "1.12-dev"
                 }
             },
             "autoload": {
                 "portable",
                 "shim"
             ],
-            "time": "2019-02-06T07:57:58+00:00"
+            "time": "2019-08-06T08:03:45+00:00"
         },
         {
             "name": "symfony/polyfill-php72",
-            "version": "v1.11.0",
+            "version": "v1.12.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-php72.git",
-                "reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c"
+                "reference": "04ce3335667451138df4307d6a9b61565560199e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/ab50dcf166d5f577978419edd37aa2bb8eabce0c",
-                "reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c",
+                "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/04ce3335667451138df4307d6a9b61565560199e",
+                "reference": "04ce3335667451138df4307d6a9b61565560199e",
                 "shasum": ""
             },
             "require": {
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.11-dev"
+                    "dev-master": "1.12-dev"
                 }
             },
             "autoload": {
                 "portable",
                 "shim"
             ],
-            "time": "2019-02-06T07:57:58+00:00"
+            "time": "2019-08-06T08:03:45+00:00"
         },
         {
             "name": "symfony/polyfill-php73",
-            "version": "v1.11.0",
+            "version": "v1.12.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-php73.git",
-                "reference": "d1fb4abcc0c47be136208ad9d68bf59f1ee17abd"
+                "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/d1fb4abcc0c47be136208ad9d68bf59f1ee17abd",
-                "reference": "d1fb4abcc0c47be136208ad9d68bf59f1ee17abd",
+                "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/2ceb49eaccb9352bff54d22570276bb75ba4a188",
+                "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188",
                 "shasum": ""
             },
             "require": {
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.11-dev"
+                    "dev-master": "1.12-dev"
                 }
             },
             "autoload": {
                 "portable",
                 "shim"
             ],
-            "time": "2019-02-06T07:57:58+00:00"
+            "time": "2019-08-06T08:03:45+00:00"
         },
         {
             "name": "symfony/property-access",
-            "version": "v4.3.1",
+            "version": "v4.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/property-access.git",
-                "reference": "18ea48862a39e364927e71b9e4942af3c1a1cb8c"
+                "reference": "4df120cbe473d850eb59f75c341915955e45f25b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/property-access/zipball/18ea48862a39e364927e71b9e4942af3c1a1cb8c",
-                "reference": "18ea48862a39e364927e71b9e4942af3c1a1cb8c",
+                "url": "https://api.github.com/repos/symfony/property-access/zipball/4df120cbe473d850eb59f75c341915955e45f25b",
+                "reference": "4df120cbe473d850eb59f75c341915955e45f25b",
                 "shasum": ""
             },
             "require": {
                 "php": "^7.1.3",
-                "symfony/inflector": "~3.4|~4.0"
+                "symfony/inflector": "^3.4|^4.0|^5.0"
             },
             "require-dev": {
-                "symfony/cache": "~3.4|~4.0"
+                "symfony/cache": "^3.4|^4.0|^5.0"
             },
             "suggest": {
                 "psr/cache-implementation": "To cache access methods."
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.3-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
                 "property path",
                 "reflection"
             ],
-            "time": "2019-06-06T10:05:02+00:00"
+            "time": "2019-10-12T00:35:04+00:00"
         },
         {
             "name": "symfony/property-info",
-            "version": "v4.3.1",
+            "version": "v4.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/property-info.git",
-                "reference": "9a3d5ba14694017a29cada773ce770845224d9e4"
+                "reference": "8afd280f159697177e48eefa89efd4db60a57665"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/property-info/zipball/9a3d5ba14694017a29cada773ce770845224d9e4",
-                "reference": "9a3d5ba14694017a29cada773ce770845224d9e4",
+                "url": "https://api.github.com/repos/symfony/property-info/zipball/8afd280f159697177e48eefa89efd4db60a57665",
+                "reference": "8afd280f159697177e48eefa89efd4db60a57665",
                 "shasum": ""
             },
             "require": {
                 "php": "^7.1.3",
-                "symfony/inflector": "~3.4|~4.0"
+                "symfony/inflector": "^3.4|^4.0|^5.0"
             },
             "conflict": {
                 "phpdocumentor/reflection-docblock": "<3.0||>=3.2.0,<3.2.2",
                 "symfony/dependency-injection": "<3.4"
             },
             "require-dev": {
-                "doctrine/annotations": "~1.0",
+                "doctrine/annotations": "~1.7",
                 "phpdocumentor/reflection-docblock": "^3.0|^4.0",
-                "symfony/cache": "~3.4|~4.0",
-                "symfony/dependency-injection": "~3.4|~4.0",
-                "symfony/serializer": "~3.4|~4.0"
+                "symfony/cache": "^3.4|^4.0|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+                "symfony/serializer": "^3.4|^4.0|^5.0"
             },
             "suggest": {
                 "phpdocumentor/reflection-docblock": "To use the PHPDoc",
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.3-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
                 "type",
                 "validator"
             ],
-            "time": "2019-05-20T16:16:12+00:00"
+            "time": "2019-11-05T16:11:08+00:00"
         },
         {
             "name": "symfony/routing",
-            "version": "v4.3.1",
+            "version": "v4.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/routing.git",
-                "reference": "9b31cd24f6ad2cebde6845f6daa9c6d69efe2465"
+                "reference": "cf6d72cf0348775f5243b8389169a7096221ea40"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/routing/zipball/9b31cd24f6ad2cebde6845f6daa9c6d69efe2465",
-                "reference": "9b31cd24f6ad2cebde6845f6daa9c6d69efe2465",
+                "url": "https://api.github.com/repos/symfony/routing/zipball/cf6d72cf0348775f5243b8389169a7096221ea40",
+                "reference": "cf6d72cf0348775f5243b8389169a7096221ea40",
                 "shasum": ""
             },
             "require": {
             "require-dev": {
                 "doctrine/annotations": "~1.2",
                 "psr/log": "~1.0",
-                "symfony/config": "~4.2",
-                "symfony/dependency-injection": "~3.4|~4.0",
-                "symfony/expression-language": "~3.4|~4.0",
-                "symfony/http-foundation": "~3.4|~4.0",
-                "symfony/yaml": "~3.4|~4.0"
+                "symfony/config": "^4.2|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+                "symfony/expression-language": "^3.4|^4.0|^5.0",
+                "symfony/http-foundation": "^3.4|^4.0|^5.0",
+                "symfony/yaml": "^3.4|^4.0|^5.0"
             },
             "suggest": {
                 "doctrine/annotations": "For using the annotation loader",
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.3-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
                 "uri",
                 "url"
             ],
-            "time": "2019-06-05T09:16:20+00:00"
+            "time": "2019-11-20T13:44:34+00:00"
         },
         {
             "name": "symfony/service-contracts",
-            "version": "v1.1.2",
+            "version": "v1.1.8",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/service-contracts.git",
-                "reference": "191afdcb5804db960d26d8566b7e9a2843cab3a0"
+                "reference": "ffc7f5692092df31515df2a5ecf3b7302b3ddacf"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/service-contracts/zipball/191afdcb5804db960d26d8566b7e9a2843cab3a0",
-                "reference": "191afdcb5804db960d26d8566b7e9a2843cab3a0",
+                "url": "https://api.github.com/repos/symfony/service-contracts/zipball/ffc7f5692092df31515df2a5ecf3b7302b3ddacf",
+                "reference": "ffc7f5692092df31515df2a5ecf3b7302b3ddacf",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3"
+                "php": "^7.1.3",
+                "psr/container": "^1.0"
             },
             "suggest": {
-                "psr/container": "",
                 "symfony/service-implementation": ""
             },
             "type": "library",
                 "interoperability",
                 "standards"
             ],
-            "time": "2019-05-28T07:50:59+00:00"
+            "time": "2019-10-14T12:27:06+00:00"
         },
         {
             "name": "symfony/var-exporter",
-            "version": "v4.3.1",
+            "version": "v4.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/var-exporter.git",
-                "reference": "2b7c857d553423b2317ac0741fb2581d9bfd8fb7"
+                "reference": "72feb69a33def8f761e612360588e40bac98caad"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/var-exporter/zipball/2b7c857d553423b2317ac0741fb2581d9bfd8fb7",
-                "reference": "2b7c857d553423b2317ac0741fb2581d9bfd8fb7",
+                "url": "https://api.github.com/repos/symfony/var-exporter/zipball/72feb69a33def8f761e612360588e40bac98caad",
+                "reference": "72feb69a33def8f761e612360588e40bac98caad",
                 "shasum": ""
             },
             "require": {
                 "php": "^7.1.3"
             },
             "require-dev": {
-                "symfony/var-dumper": "^4.1.1"
+                "symfony/var-dumper": "^4.1.1|^5.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.3-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
                 "instantiate",
                 "serialize"
             ],
-            "time": "2019-04-10T19:42:49+00:00"
+            "time": "2019-11-13T07:39:40+00:00"
         },
         {
             "name": "symfony/yaml",
-            "version": "v4.3.1",
+            "version": "v4.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/yaml.git",
-                "reference": "c60ecf5ba842324433b46f58dc7afc4487dbab99"
+                "reference": "76de473358fe802578a415d5bb43c296cf09d211"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/yaml/zipball/c60ecf5ba842324433b46f58dc7afc4487dbab99",
-                "reference": "c60ecf5ba842324433b46f58dc7afc4487dbab99",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/76de473358fe802578a415d5bb43c296cf09d211",
+                "reference": "76de473358fe802578a415d5bb43c296cf09d211",
                 "shasum": ""
             },
             "require": {
                 "symfony/console": "<3.4"
             },
             "require-dev": {
-                "symfony/console": "~3.4|~4.0"
+                "symfony/console": "^3.4|^4.0|^5.0"
             },
             "suggest": {
                 "symfony/console": "For validating YAML files using the lint command"
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.3-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
             ],
             "description": "Symfony Yaml Component",
             "homepage": "https://symfony.com",
-            "time": "2019-04-06T14:04:46+00:00"
+            "time": "2019-11-12T14:51:11+00:00"
         },
         {
             "name": "typo3/class-alias-loader",
             "time": "2017-01-16T07:08:25+00:00"
         },
         {
-            "name": "mikey179/vfsstream",
+            "name": "mikey179/vfsStream",
             "version": "v1.6.5",
             "source": {
                 "type": "git",
             "authors": [
                 {
                     "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
+                    "role": "lead",
+                    "email": "sebastian@phpunit.de"
                 }
             ],
             "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
             "authors": [
                 {
                     "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
+                    "role": "lead",
+                    "email": "sebastian@phpunit.de"
                 }
             ],
             "description": "Utility class for timing",
             "authors": [
                 {
                     "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
+                    "role": "lead",
+                    "email": "sebastian@phpunit.de"
                 }
             ],
             "description": "The PHP Unit Testing framework.",
             "authors": [
                 {
                     "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
+                    "role": "lead",
+                    "email": "sebastian@phpunit.de"
                 }
             ],
             "description": "Collection of value objects that represent the types of the PHP type system",
index 8c5ff6a..6e6dbdf 100644 (file)
@@ -19,10 +19,10 @@ namespace TYPO3\CMS\Core\Mail;
 use DirectoryIterator;
 use Psr\Log\LoggerAwareInterface;
 use Psr\Log\LoggerAwareTrait;
-use Symfony\Component\Mailer\DelayedSmtpEnvelope;
+use Symfony\Component\Mailer\DelayedEnvelope;
+use Symfony\Component\Mailer\Envelope;
 use Symfony\Component\Mailer\Exception\TransportException;
 use Symfony\Component\Mailer\SentMessage;
-use Symfony\Component\Mailer\SmtpEnvelope;
 use Symfony\Component\Mailer\Transport\AbstractTransport;
 use Symfony\Component\Mailer\Transport\TransportInterface;
 use Symfony\Component\Mime\Email;
@@ -156,8 +156,8 @@ class FileSpool extends AbstractTransport implements DelayedTransportInterface,
                         RawMessage::class,
                         Message::class,
                         Email::class,
-                        DelayedSmtpEnvelope::class,
-                        SmtpEnvelope::class,
+                        DelayedEnvelope::class,
+                        Envelope::class,
                     ],
                 ]);
 
@@ -240,4 +240,20 @@ class FileSpool extends AbstractTransport implements DelayedTransportInterface,
     {
         return $this->timeLimit;
     }
+
+    public function __toString(): string
+    {
+        $result = '';
+        $directoryIterator = new DirectoryIterator($this->path);
+        foreach ($directoryIterator as $file) {
+            $file = $file->getRealPath();
+
+            if (substr($file, -8) != '.message') {
+                continue;
+            }
+
+            $result .= file_get_contents($file) . "\n";
+        }
+        return $result;
+    }
 }
index d412056..1a56dd7 100644 (file)
@@ -16,7 +16,6 @@ namespace TYPO3\CMS\Core\Mail;
 
 use Symfony\Component\Mime\Address;
 use Symfony\Component\Mime\Email;
-use Symfony\Component\Mime\NamedAddress;
 use TYPO3\CMS\Core\Exception\InvalidArgumentException;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 
@@ -78,7 +77,7 @@ class MailMessage extends Email
      * compatibility methods to allow for associative arrays as [name => email address]
      * as it was possible in TYPO3 v9 / SwiftMailer.
      *
-     * Also, ensure to switch to NamedAddress objects and the ->subject()/->from() methods directly
+     * Also, ensure to switch to Address objects and the ->subject()/->from() methods directly
      * to directly use the new API.
      */
 
@@ -240,7 +239,7 @@ class MailMessage extends Email
     }
 
     /**
-     * Converts Addresses into Address/NamedAddress objects.
+     * Converts address from [email, name] into Address objects.
      *
      * @param string|array $args
      * @return Address[]
@@ -248,7 +247,7 @@ class MailMessage extends Email
     protected function convertNamedAddress(...$args): array
     {
         if (isset($args[1])) {
-            return [new NamedAddress($args[0], $args[1])];
+            return [new Address($args[0], $args[1])];
         }
         if (is_string($args[0]) || is_array($args[0])) {
             return $this->convertAddresses($args[0]);
@@ -272,7 +271,7 @@ class MailMessage extends Email
             if (is_numeric($email) || ctype_digit($email)) {
                 $newAddresses[] = Address::create($name);
             } else {
-                $newAddresses[] = new NamedAddress($email, $name);
+                $newAddresses[] = new Address($email, $name);
             }
         }
 
index 9f5bdf3..29be28b 100644 (file)
@@ -15,13 +15,12 @@ namespace TYPO3\CMS\Core\Mail;
  */
 
 use Psr\EventDispatcher\EventDispatcherInterface;
+use Symfony\Component\Mailer\Envelope;
 use Symfony\Component\Mailer\MailerInterface;
 use Symfony\Component\Mailer\SentMessage;
-use Symfony\Component\Mailer\SmtpEnvelope;
 use Symfony\Component\Mailer\Transport\TransportInterface;
 use Symfony\Component\Mime\Address;
 use Symfony\Component\Mime\Email;
-use Symfony\Component\Mime\NamedAddress;
 use Symfony\Component\Mime\RawMessage;
 use TYPO3\CMS\Core\EventDispatcher\EventDispatcher;
 use TYPO3\CMS\Core\Exception as CoreException;
@@ -83,7 +82,7 @@ class Mailer implements MailerInterface
     /**
      * @inheritdoc
      */
-    public function send(RawMessage $message, SmtpEnvelope $envelope = null): void
+    public function send(RawMessage $message, Envelope $envelope = null): void
     {
         if ($message instanceof Email) {
             // Ensure to always have a From: header set
@@ -92,7 +91,7 @@ class Mailer implements MailerInterface
                 if ($address) {
                     $name = MailUtility::getSystemFromName();
                     if ($name) {
-                        $from = new NamedAddress($address, $name);
+                        $from = new Address($address, $name);
                     } else {
                         $from = new Address($address);
                     }
@@ -106,7 +105,7 @@ class Mailer implements MailerInterface
                     if ($address === 0) {
                         $replyTo = new Address($replyTo[$address]);
                     } else {
-                        $replyTo = new NamedAddress(reset($replyTo), $address);
+                        $replyTo = new Address(reset($replyTo), $address);
                     }
                     $message->replyTo($replyTo);
                 }
index edc53f9..4a0376c 100644 (file)
@@ -66,4 +66,9 @@ class MboxTransport extends AbstractTransport
         GeneralUtility::fixPermissions($this->mboxFile);
         $lockObject->release();
     }
+
+    public function __toString(): string
+    {
+        return $this->mboxFile;
+    }
 }
index 443cef9..867e36c 100644 (file)
@@ -106,4 +106,13 @@ class MemorySpool extends AbstractTransport implements SingletonInterface, Logge
     {
         $this->queuedMessages[] = $message;
     }
+
+    public function __toString(): string
+    {
+        $result = '';
+        foreach ($this->queuedMessages as $sentMessage) {
+            $result .= $sentMessage->toString() . "\n";
+        }
+        return $result;
+    }
 }
index 6b4060f..9f2ee9b 100644 (file)
@@ -41,197 +41,197 @@ services:
 
   TYPO3\CMS\Core\Compatibility\SlotReplacement:
     tags:
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onFileIndexRepositoryRecordCreated',
-          event: TYPO3\CMS\Core\Resource\Event\AfterFileAddedToIndexEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onFileIndexRepositoryRecordDeleted',
-          event: TYPO3\CMS\Core\Resource\Event\AfterFileRemovedFromIndexEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onFileIndexRepositoryRecordMarkedAsMissing',
-          event: TYPO3\CMS\Core\Resource\Event\AfterFileMarkedAsMissingEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onFileIndexRepositoryRecordUpdated',
-          event: TYPO3\CMS\Core\Resource\Event\AfterFileUpdatedInIndexEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onFileProcessingServiceEmitPostFileProcessSignal',
-          event: TYPO3\CMS\Core\Resource\Event\AfterFileProcessingEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onFileProcessingServiceEmitPreFileProcessSignal',
-          event: TYPO3\CMS\Core\Resource\Event\BeforeFileProcessingEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onMetaDataRepositoryRecordCreated',
-          event: TYPO3\CMS\Core\Resource\Event\AfterFileMetaDataCreatedEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onMetaDataRepositoryRecordDeleted',
-          event: TYPO3\CMS\Core\Resource\Event\AfterFileMetaDataDeletedEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onMetaDataRepositoryRecordPostRetrieval',
-          event: TYPO3\CMS\Core\Resource\Event\EnrichFileMetaDataEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onMetaDataRepositoryRecordUpdated',
-          event: TYPO3\CMS\Core\Resource\Event\AfterFileMetaDataUpdatedEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onResourceFactoryPostProcessStorage',
-          event: TYPO3\CMS\Core\Resource\Event\AfterResourceStorageInitializationEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onResourceFactoryPreProcessStorage',
-          event: TYPO3\CMS\Core\Resource\Event\BeforeResourceStorageInitializationEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onResourceStorageEmitPostFileAddSignal',
-          event: TYPO3\CMS\Core\Resource\Event\AfterFileAddedEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onResourceStorageEmitPostFileCopySignal',
-          event: TYPO3\CMS\Core\Resource\Event\AfterFileCopiedEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onResourceStorageEmitPostFileCreateSignal',
-          event: TYPO3\CMS\Core\Resource\Event\AfterFileCreatedEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onResourceStorageEmitPostFileDeleteSignal',
-          event: TYPO3\CMS\Core\Resource\Event\AfterFileDeletedEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onResourceStorageEmitPostFileMoveSignal',
-          event: TYPO3\CMS\Core\Resource\Event\AfterFileMovedEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onResourceStorageEmitPostFileRenameSignal',
-          event: TYPO3\CMS\Core\Resource\Event\AfterFileRenamedEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onResourceStorageEmitPostFileReplaceSignal',
-          event: TYPO3\CMS\Core\Resource\Event\AfterFileReplacedEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onResourceStorageEmitPostFileSetContentsSignal',
-          event: TYPO3\CMS\Core\Resource\Event\AfterFileContentsSetEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onResourceStorageEmitPostFolderAddSignal',
-          event: TYPO3\CMS\Core\Resource\Event\AfterFolderAddedEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onResourceStorageEmitPostFolderCopySignal',
-          event: TYPO3\CMS\Core\Resource\Event\AfterFolderCopiedEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onResourceStorageEmitPostFolderDeleteSignal',
-          event: TYPO3\CMS\Core\Resource\Event\AfterFolderDeletedEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onResourceStorageEmitPostFolderMoveSignal',
-          event: TYPO3\CMS\Core\Resource\Event\AfterFolderMovedEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onResourceStorageEmitPostFolderRenameSignal',
-          event: TYPO3\CMS\Core\Resource\Event\AfterFolderRenamedEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onResourceStorageEmitPreFileAddSignal',
-          event: TYPO3\CMS\Core\Resource\Event\BeforeFileAddedEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onResourceStorageEmitPreFileCopySignal',
-          event: TYPO3\CMS\Core\Resource\Event\BeforeFileCopiedEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onResourceStorageEmitPreFileCreateSignal',
-          event: TYPO3\CMS\Core\Resource\Event\BeforeFileCreatedEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onResourceStorageEmitPreFileDeleteSignal',
-          event: TYPO3\CMS\Core\Resource\Event\BeforeFileDeletedEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onResourceStorageEmitPreFileMoveSignal',
-          event: TYPO3\CMS\Core\Resource\Event\BeforeFileMovedEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onResourceStorageEmitPreFileRenameSignal',
-          event: TYPO3\CMS\Core\Resource\Event\BeforeFileRenamedEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onResourceStorageEmitPreFileReplaceSignal',
-          event: TYPO3\CMS\Core\Resource\Event\BeforeFileReplacedEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onResourceStorageEmitPreFileSetContentsSignal',
-          event: TYPO3\CMS\Core\Resource\Event\BeforeFileContentsSetEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onResourceStorageEmitPreFolderAddSignal',
-          event: TYPO3\CMS\Core\Resource\Event\BeforeFolderAddedEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onResourceStorageEmitPreFolderCopySignal',
-          event: TYPO3\CMS\Core\Resource\Event\BeforeFolderCopiedEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onResourceStorageEmitPreFolderDeleteSignal',
-          event: TYPO3\CMS\Core\Resource\Event\BeforeFolderDeletedEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onResourceStorageEmitPreFolderMoveSignal',
-          event: TYPO3\CMS\Core\Resource\Event\BeforeFolderMovedEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onResourceStorageEmitPreFolderRenameSignal',
-          event: TYPO3\CMS\Core\Resource\Event\BeforeFolderRenamedEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onResourceStorageEmitPreGeneratePublicUrlSignal',
-          event: TYPO3\CMS\Core\Resource\Event\GeneratePublicUrlForResourceEvent }
-      - { name: event.listener,
-          identifier: 'legacy-slot',
-          method: 'onResourceStorageEmitSanitizeFileNameSignal',
-          event: TYPO3\CMS\Core\Resource\Event\SanitizeFileNameEvent }
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onFileIndexRepositoryRecordCreated'
+        event: TYPO3\CMS\Core\Resource\Event\AfterFileAddedToIndexEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onFileIndexRepositoryRecordDeleted'
+        event: TYPO3\CMS\Core\Resource\Event\AfterFileRemovedFromIndexEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onFileIndexRepositoryRecordMarkedAsMissing'
+        event: TYPO3\CMS\Core\Resource\Event\AfterFileMarkedAsMissingEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onFileIndexRepositoryRecordUpdated'
+        event: TYPO3\CMS\Core\Resource\Event\AfterFileUpdatedInIndexEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onFileProcessingServiceEmitPostFileProcessSignal'
+        event: TYPO3\CMS\Core\Resource\Event\AfterFileProcessingEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onFileProcessingServiceEmitPreFileProcessSignal'
+        event: TYPO3\CMS\Core\Resource\Event\BeforeFileProcessingEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onMetaDataRepositoryRecordCreated'
+        event: TYPO3\CMS\Core\Resource\Event\AfterFileMetaDataCreatedEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onMetaDataRepositoryRecordDeleted'
+        event: TYPO3\CMS\Core\Resource\Event\AfterFileMetaDataDeletedEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onMetaDataRepositoryRecordPostRetrieval'
+        event: TYPO3\CMS\Core\Resource\Event\EnrichFileMetaDataEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onMetaDataRepositoryRecordUpdated'
+        event: TYPO3\CMS\Core\Resource\Event\AfterFileMetaDataUpdatedEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onResourceFactoryPostProcessStorage'
+        event: TYPO3\CMS\Core\Resource\Event\AfterResourceStorageInitializationEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onResourceFactoryPreProcessStorage'
+        event: TYPO3\CMS\Core\Resource\Event\BeforeResourceStorageInitializationEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onResourceStorageEmitPostFileAddSignal'
+        event: TYPO3\CMS\Core\Resource\Event\AfterFileAddedEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onResourceStorageEmitPostFileCopySignal'
+        event: TYPO3\CMS\Core\Resource\Event\AfterFileCopiedEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onResourceStorageEmitPostFileCreateSignal'
+        event: TYPO3\CMS\Core\Resource\Event\AfterFileCreatedEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onResourceStorageEmitPostFileDeleteSignal'
+        event: TYPO3\CMS\Core\Resource\Event\AfterFileDeletedEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onResourceStorageEmitPostFileMoveSignal'
+        event: TYPO3\CMS\Core\Resource\Event\AfterFileMovedEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onResourceStorageEmitPostFileRenameSignal'
+        event: TYPO3\CMS\Core\Resource\Event\AfterFileRenamedEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onResourceStorageEmitPostFileReplaceSignal'
+        event: TYPO3\CMS\Core\Resource\Event\AfterFileReplacedEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onResourceStorageEmitPostFileSetContentsSignal'
+        event: TYPO3\CMS\Core\Resource\Event\AfterFileContentsSetEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onResourceStorageEmitPostFolderAddSignal'
+        event: TYPO3\CMS\Core\Resource\Event\AfterFolderAddedEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onResourceStorageEmitPostFolderCopySignal'
+        event: TYPO3\CMS\Core\Resource\Event\AfterFolderCopiedEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onResourceStorageEmitPostFolderDeleteSignal'
+        event: TYPO3\CMS\Core\Resource\Event\AfterFolderDeletedEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onResourceStorageEmitPostFolderMoveSignal'
+        event: TYPO3\CMS\Core\Resource\Event\AfterFolderMovedEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onResourceStorageEmitPostFolderRenameSignal'
+        event: TYPO3\CMS\Core\Resource\Event\AfterFolderRenamedEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onResourceStorageEmitPreFileAddSignal'
+        event: TYPO3\CMS\Core\Resource\Event\BeforeFileAddedEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onResourceStorageEmitPreFileCopySignal'
+        event: TYPO3\CMS\Core\Resource\Event\BeforeFileCopiedEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onResourceStorageEmitPreFileCreateSignal'
+        event: TYPO3\CMS\Core\Resource\Event\BeforeFileCreatedEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onResourceStorageEmitPreFileDeleteSignal'
+        event: TYPO3\CMS\Core\Resource\Event\BeforeFileDeletedEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onResourceStorageEmitPreFileMoveSignal'
+        event: TYPO3\CMS\Core\Resource\Event\BeforeFileMovedEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onResourceStorageEmitPreFileRenameSignal'
+        event: TYPO3\CMS\Core\Resource\Event\BeforeFileRenamedEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onResourceStorageEmitPreFileReplaceSignal'
+        event: TYPO3\CMS\Core\Resource\Event\BeforeFileReplacedEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onResourceStorageEmitPreFileSetContentsSignal'
+        event: TYPO3\CMS\Core\Resource\Event\BeforeFileContentsSetEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onResourceStorageEmitPreFolderAddSignal'
+        event: TYPO3\CMS\Core\Resource\Event\BeforeFolderAddedEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onResourceStorageEmitPreFolderCopySignal'
+        event: TYPO3\CMS\Core\Resource\Event\BeforeFolderCopiedEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onResourceStorageEmitPreFolderDeleteSignal'
+        event: TYPO3\CMS\Core\Resource\Event\BeforeFolderDeletedEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onResourceStorageEmitPreFolderMoveSignal'
+        event: TYPO3\CMS\Core\Resource\Event\BeforeFolderMovedEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onResourceStorageEmitPreFolderRenameSignal'
+        event: TYPO3\CMS\Core\Resource\Event\BeforeFolderRenamedEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onResourceStorageEmitPreGeneratePublicUrlSignal'
+        event: TYPO3\CMS\Core\Resource\Event\GeneratePublicUrlForResourceEvent
+      - name: event.listener
+        identifier: 'legacy-slot'
+        method: 'onResourceStorageEmitSanitizeFileNameSignal'
+        event: TYPO3\CMS\Core\Resource\Event\SanitizeFileNameEvent
 
   # FAL security checks for backend users
   TYPO3\CMS\Core\Resource\Security\StoragePermissionsAspect:
     tags:
-      - { name: event.listener,
-          identifier: 'backend-user-permissions',
-          method: 'addUserPermissionsToStorage',
-          event: TYPO3\CMS\Core\Resource\Event\AfterResourceStorageInitializationEvent }
+      - name: event.listener
+        identifier: 'backend-user-permissions'
+        method: 'addUserPermissionsToStorage'
+        event: TYPO3\CMS\Core\Resource\Event\AfterResourceStorageInitializationEvent
 
   TYPO3\CMS\Core\Resource\OnlineMedia\Processing\PreviewProcessing:
     tags:
-      - { name: event.listener,
-          identifier: 'processing',
-          method: 'processFile',
-          event: TYPO3\CMS\Core\Resource\Event\BeforeFileProcessingEvent }
+      - name: event.listener
+        identifier: 'processing'
+        method: 'processFile'
+        event: TYPO3\CMS\Core\Resource\Event\BeforeFileProcessingEvent
 
   # clean up files
   TYPO3\CMS\Core\Resource\Processing\FileDeletionAspect:
     tags:
-      - { name: event.listener,
-          identifier: 'delete-processed-files-after-add',
-          method: 'cleanupProcessedFilesPostFileAdd',
-          event: TYPO3\CMS\Core\Resource\Event\AfterFileAddedEvent }
-      - { name: event.listener,
-          identifier: 'delete-processed-files-after-replace',
-          method: 'cleanupProcessedFilesPostFileReplace',
-          event: TYPO3\CMS\Core\Resource\Event\AfterFileReplacedEvent }
-      - { name: event.listener,
-          identifier: 'delete-processed-files-after-delete',
-          method: 'removeFromRepositoryAfterFileDeleted',
-          event: TYPO3\CMS\Core\Resource\Event\AfterFileDeletedEvent }
+      - name: event.listener
+        identifier: 'delete-processed-files-after-add'
+        method: 'cleanupProcessedFilesPostFileAdd'
+        event: TYPO3\CMS\Core\Resource\Event\AfterFileAddedEvent
+      - name: event.listener
+        identifier: 'delete-processed-files-after-replace'
+        method: 'cleanupProcessedFilesPostFileReplace'
+        event: TYPO3\CMS\Core\Resource\Event\AfterFileReplacedEvent
+      - name: event.listener
+        identifier: 'delete-processed-files-after-delete'
+        method: 'removeFromRepositoryAfterFileDeleted'
+        event: TYPO3\CMS\Core\Resource\Event\AfterFileDeletedEvent
 
 
   # Core caches, cache.core and cache.assets are injected as early
index a8e7615..d458de5 100644 (file)
@@ -32,7 +32,7 @@ and more flexibility, but is also stricter in validation.
 
 Especially custom extensions using the MailMessage API need to be evaluated,
 as it is not possible anymore to add multiple email addresses as a simple associative
-array but rather a NamedAddress object or a simple Address object from "symfony/mime" is required.
+array but rather an Address object from "symfony/mime" is required.
 
 All existing Swiftmailer-based transports which TYPO3 supports natively have been
 replaced by Symfony-based transport APIs.
@@ -56,7 +56,7 @@ An example implementation within a third-party extension:
 .. code-block:: php
 
     $email = GeneralUtility::makeInstance(MailMessage::class)
-         ->to(new Address('benni@typo3.org'), new NamedAddress('benni@typo3.org', 'Benni Mack'))
+         ->to(new Address('kasperYYYY@typo3.org'), new Address('benni@typo3.org', 'Benni Mack'))
          ->subject('This is an example email')
          ->text('This is the plain-text variant')
          ->html('<h4>Hello Benni.</h4><p>Enjoy a HTML-readable email. <marquee>We love TYPO3</marquee>.</p>');
@@ -71,7 +71,7 @@ settings via a custom Transport for special cases.
     $mailer = GeneralUtility::makeInstance(Mailer::class)
 
     $email = GeneralUtility::makeInstance(MailMessage::class)
-         ->to(new Address('benni@typo3.org'), new NamedAddress('benni@typo3.org', 'Benni Mack'))
+         ->to(new Address('kasperYYYY@typo3.org'), new Address('benni@typo3.org', 'Benni Mack'))
          ->subject('This is an example email')
          ->text('This is the plain-text variant')
          ->html('<h4>Hello Benni.</h4><p>Enjoy a HTML-readable email. <marquee>We love TYPO3</marquee>.</p>');
index 740017b..bc21e5e 100644 (file)
@@ -71,10 +71,10 @@ Example:
    services:
      MyCompany\MyPackage\EventListener\NullMailer:
        tags:
-         - { name: event.listener,
-             identifier: 'myListener',
-             event: TYPO3\CMS\Core\Mail\Event\AfterMailerInitializationEvent,
-             before: 'redirects, anotherIdentifier' }
+         - name: event.listener
+           identifier: 'myListener'
+           event: TYPO3\CMS\Core\Mail\Event\AfterMailerInitializationEvent
+           before: 'redirects, anotherIdentifier'
 
 
 The tag name `event.listener` identifies that a listener should be registered.
index 5f7a73c..93e1a95 100644 (file)
@@ -34,7 +34,7 @@ To send a mail, use the :php:`\TYPO3\CMS\Core\Mail\MailMessage`-API
 .. code-block:: php
 
     $email = GeneralUtility::makeInstance(MailMessage::class)
-         ->to(new Address('john@domain.tld'), new NamedAddress('john@domain.tld', 'John Doe'))
+         ->to(new Address('katy@domain.tld'), new Address('john@domain.tld', 'John Doe'))
          ->subject('This is an example email')
          ->text('This is the plain-text variant')
          ->html('<h4>Hello John.</h4><p>Enjoy a HTML-readable email. <marquee>We love TYPO3</marquee>.</p>');
index c74640e..c7947ed 100644 (file)
@@ -14,8 +14,8 @@ namespace TYPO3\CMS\Core\Tests\Unit\Mail\Fixtures;
  * The TYPO3 project - inspiring people to share!
  */
 
+use Symfony\Component\Mailer\Envelope;
 use Symfony\Component\Mailer\SentMessage;
-use Symfony\Component\Mailer\SmtpEnvelope;
 use Symfony\Component\Mailer\Transport\TransportInterface;
 use Symfony\Component\Mime\RawMessage;
 use TYPO3\CMS\Core\Mail\DelayedTransportInterface;
@@ -37,7 +37,7 @@ class FakeValidSpoolFixture implements DelayedTransportInterface
         return $this->settings;
     }
 
-    public function send(RawMessage $message, SmtpEnvelope $envelope = null): ?SentMessage
+    public function send(RawMessage $message, Envelope $envelope = null): ?SentMessage
     {
         // dont do anything
     }
@@ -46,4 +46,9 @@ class FakeValidSpoolFixture implements DelayedTransportInterface
     {
         return 1;
     }
+
+    public function __toString(): string
+    {
+        return '';
+    }
 }
index 9f615b6..86f63fa 100644 (file)
                "psr/http-server-handler": "^1.0",
                "psr/http-server-middleware": "^1.0",
                "psr/log": "^1.0",
-               "symfony/config": "^4.1",
-               "symfony/console": "^4.1",
-               "symfony/dependency-injection": "^4.1",
-               "symfony/expression-language": "^4.1",
-               "symfony/finder": "^4.3",
-               "symfony/mailer": "^4.3",
-               "symfony/mime": "^4.3",
+               "symfony/config": "^4.4 || ^5.0",
+               "symfony/console": "^4.4 || ^5.0",
+               "symfony/dependency-injection": "^4.4 || ^5.0",
+               "symfony/expression-language": "^4.4 || ^5.0",
+               "symfony/finder": "^4.4 || ^5.0",
+               "symfony/mailer": "^4.4 || ^5.0",
+               "symfony/mime": "^4.4 || ^5.0",
                "symfony/polyfill-intl-icu": "^1.6",
                "symfony/polyfill-intl-idn": "^1.10",
                "symfony/polyfill-mbstring": "^1.2",
-               "symfony/routing": "^4.1",
-               "symfony/yaml": "^4.1",
+               "symfony/routing": "^4.4 || ^5.0",
+               "symfony/yaml": "^4.4 || ^5.0",
                "typo3/class-alias-loader": "^1.0",
                "typo3/cms-cli": "^2.0",
                "typo3/cms-composer-installers": "^2.0",
                "ext-zlib": "TYPO3 uses zlib for amongst others output compression and un/packing t3x extension files"
        },
        "conflict": {
-               "symfony/cache": "< 2.8.50 >= 2.8.0 || < 3.4.36 >= 3.4.0 || < 4.1.12 >= 4.1.0 || < 4.2.7 >= 4.2.0",
-               "symfony/finder": "2.7.44 || 2.8.37 || 3.4.7 || 4.0.7",
-               "typo3/cms": "*",
-               "symfony/routing": "4.2.7"
+               "typo3/cms": "*"
        },
        "replace": {
                "typo3/cms-lang": "*",
index eae84c8..c7bf7a5 100644 (file)
@@ -19,6 +19,7 @@ namespace TYPO3\CMS\Extbase\Reflection;
 use Doctrine\Common\Annotations\AnnotationReader;
 use phpDocumentor\Reflection\DocBlock\Tags\Param;
 use phpDocumentor\Reflection\DocBlockFactory;
+use Symfony\Component\PropertyInfo\Extractor\PhpDocExtractor;
 use Symfony\Component\PropertyInfo\Extractor\ReflectionExtractor;
 use Symfony\Component\PropertyInfo\PropertyInfoExtractor;
 use Symfony\Component\PropertyInfo\Type;
@@ -41,7 +42,6 @@ use TYPO3\CMS\Extbase\Reflection\ClassSchema\Method;
 use TYPO3\CMS\Extbase\Reflection\ClassSchema\Property;
 use TYPO3\CMS\Extbase\Reflection\ClassSchema\PropertyCharacteristics;
 use TYPO3\CMS\Extbase\Reflection\DocBlock\Tags\Null_;
-use TYPO3\CMS\Extbase\Reflection\PropertyInfo\Extractor\PhpDocPropertyTypeExtractor;
 use TYPO3\CMS\Extbase\Utility\TypeHandlingUtility;
 use TYPO3\CMS\Extbase\Validation\Exception\InvalidTypeHintException;
 use TYPO3\CMS\Extbase\Validation\Exception\InvalidValidationConfigurationException;
@@ -148,7 +148,10 @@ class ClassSchema
         }
 
         if (self::$propertyInfoExtractor === null) {
-            $phpDocExtractor = new PhpDocPropertyTypeExtractor();
+            $docBlockFactory = DocBlockFactory::createInstance();
+            $docBlockFactory->registerTagHandler('var', DocBlock\Tags\Var_::class);
+            $phpDocExtractor = new PhpDocExtractor($docBlockFactory);
+
             $reflectionExtractor = new ReflectionExtractor();
 
             self::$propertyInfoExtractor = new PropertyInfoExtractor(
diff --git a/typo3/sysext/extbase/Classes/Reflection/PropertyInfo/Extractor/PhpDocPropertyTypeExtractor.php b/typo3/sysext/extbase/Classes/Reflection/PropertyInfo/Extractor/PhpDocPropertyTypeExtractor.php
deleted file mode 100644 (file)
index 711a90a..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-<?php
-declare(strict_types = 1);
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-namespace TYPO3\CMS\Extbase\Reflection\PropertyInfo\Extractor;
-
-use phpDocumentor\Reflection\DocBlock;
-use phpDocumentor\Reflection\DocBlockFactory;
-use phpDocumentor\Reflection\Types\Context;
-use phpDocumentor\Reflection\Types\ContextFactory;
-use ReflectionProperty;
-use Symfony\Component\PropertyInfo\PropertyTypeExtractorInterface;
-use Symfony\Component\PropertyInfo\Type;
-use Symfony\Component\PropertyInfo\Util\PhpDocTypeHelper;
-use TYPO3\CMS\Extbase\Reflection\DocBlock\Tags\Var_;
-
-/**
- * @internal this is a concrete TYPO3 implementation and solely used for EXT:extbase and not part of TYPO3's Core API.
- */
-class PhpDocPropertyTypeExtractor implements PropertyTypeExtractorInterface
-{
-    /**
-     * @var DocBlockFactory
-     */
-    private $docBlockFactory;
-
-    /**
-     * @var ContextFactory
-     */
-    private $contextFactory;
-
-    /**
-     * @var PhpDocTypeHelper
-     */
-    private $phpDocTypeHelper;
-
-    /**
-     * @var array
-     */
-    private static $reflectionContextCache = [];
-
-    public function __construct()
-    {
-        $this->docBlockFactory = DocBlockFactory::createInstance();
-        $this->docBlockFactory->registerTagHandler('var', Var_::class);
-
-        $this->contextFactory = new ContextFactory();
-        $this->phpDocTypeHelper = new PhpDocTypeHelper();
-    }
-
-    /**
-     * @param string $class
-     * @param string $property
-     * @param array $context
-     *
-     * @return Type[]|null
-     */
-    public function getTypes($class, $property, array $context = []): ?array
-    {
-        try {
-            $reflectionProperty = $context['reflectionProperty'] ?? new \ReflectionProperty($class, $property);
-        } catch (\ReflectionException $e) {
-            return null;
-        }
-
-        if (!isset(static::$reflectionContextCache[$class])) {
-            static::$reflectionContextCache[$class] = $this->contextFactory->createFromReflector(
-                $reflectionProperty->getDeclaringClass()
-            );
-        }
-
-        $docBlock = $this->getDocBlockFromProperty(
-            $reflectionProperty,
-            static::$reflectionContextCache[$class]
-        );
-
-        if ($docBlock === null) {
-            return null;
-        }
-
-        $types = [];
-        /** @var Var_ $tag */
-        foreach ($docBlock->getTagsByName('var') as $tag) {
-            if ($tag && null !== $tag->getType()) {
-                $types = array_merge($types, $this->phpDocTypeHelper->getTypes($tag->getType()));
-            }
-        }
-
-        if (!isset($types[0])) {
-            return null;
-        }
-
-        return $types;
-    }
-
-    /**
-     * @param ReflectionProperty $reflectionProperty
-     * @param Context $context
-     * @return DocBlock|null
-     */
-    private function getDocBlockFromProperty(ReflectionProperty $reflectionProperty, Context $context): ?DocBlock
-    {
-        try {
-            return $this->docBlockFactory->create($reflectionProperty->getDocComment(), $context);
-        } catch (\InvalidArgumentException $e) {
-            return null;
-        }
-    }
-}
diff --git a/typo3/sysext/extbase/Tests/Unit/Reflection/PropertyInfo/Extractor/PhpDocPropertyTypeExtractorTest.php b/typo3/sysext/extbase/Tests/Unit/Reflection/PropertyInfo/Extractor/PhpDocPropertyTypeExtractorTest.php
deleted file mode 100644 (file)
index a32f669..0000000
+++ /dev/null
@@ -1,264 +0,0 @@
-<?php
-declare(strict_types = 1);
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-namespace Symfony\Component\PropertyInfo\Tests\PhpDocExtractor;
-
-use Symfony\Component\PropertyInfo\Extractor\PhpDocExtractor;
-use Symfony\Component\PropertyInfo\Type;
-use TYPO3\CMS\Extbase\Reflection\PropertyInfo\Extractor\PhpDocPropertyTypeExtractor;
-use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
-
-class PhpDocPropertyTypeExtractorTest extends UnitTestCase
-{
-    /**
-     * @var PhpDocExtractor
-     */
-    private static $extractor;
-
-    protected function setUp(): void
-    {
-        parent::setUp();
-
-        static::$extractor = new PhpDocPropertyTypeExtractor();
-    }
-
-    /**
-     * @dataProvider typesProvider
-     *
-     * @param string $property
-     * @param array|null $type
-     * @param string|null $shortDescription
-     * @param string|null $longDescription
-     */
-    public function testExtract(string $property, ?array $type, ?string $shortDescription, ?string $longDescription): void
-    {
-        self::assertEquals($type, static::$extractor->getTypes('Symfony\Component\PropertyInfo\Tests\Fixtures\Dummy', $property));
-    }
-
-    /**
-     * @dataProvider typesWithNoPrefixesProvider
-     *
-     * @param string $property
-     * @param array|null $type
-     */
-    public function testExtractTypesWithNoPrefixes(string $property, array $type = null): void
-    {
-        $noPrefixExtractor = new PhpDocExtractor(null, [], [], []);
-
-        self::assertEquals($type, $noPrefixExtractor->getTypes('Symfony\Component\PropertyInfo\Tests\Fixtures\Dummy', $property));
-    }
-
-    /**
-     * @return array
-     */
-    public function typesProvider(): array
-    {
-        return [
-            ['foo', null, 'Short description.', 'Long description.'],
-            ['bar', [new Type(Type::BUILTIN_TYPE_STRING)], 'This is bar', null],
-            ['baz', [new Type(Type::BUILTIN_TYPE_INT)], 'Should be used.', null],
-            ['foo2', [new Type(Type::BUILTIN_TYPE_FLOAT)], null, null],
-            ['foo3', [new Type(Type::BUILTIN_TYPE_CALLABLE)], null, null],
-            ['foo4', [new Type(Type::BUILTIN_TYPE_NULL)], null, null],
-            ['foo5', null, null, null],
-            [
-                'files',
-                [
-                    new Type(Type::BUILTIN_TYPE_ARRAY, false, null, true, new Type(Type::BUILTIN_TYPE_INT), new Type(Type::BUILTIN_TYPE_OBJECT, false, 'SplFileInfo')),
-                    new Type(Type::BUILTIN_TYPE_RESOURCE),
-                ],
-                null,
-                null,
-            ],
-            ['bal', [new Type(Type::BUILTIN_TYPE_OBJECT, false, 'DateTime')], null, null],
-            ['parent', [new Type(Type::BUILTIN_TYPE_OBJECT, false, 'Symfony\Component\PropertyInfo\Tests\Fixtures\ParentDummy')], null, null],
-            ['collection', [new Type(Type::BUILTIN_TYPE_ARRAY, false, null, true, new Type(Type::BUILTIN_TYPE_INT), new Type(Type::BUILTIN_TYPE_OBJECT, false, 'DateTime'))], null, null],
-            ['nestedCollection', [new Type(Type::BUILTIN_TYPE_ARRAY, false, null, true, new Type(Type::BUILTIN_TYPE_INT), new Type(Type::BUILTIN_TYPE_ARRAY, false, null, true, new Type(Type::BUILTIN_TYPE_INT), new Type(Type::BUILTIN_TYPE_STRING, false)))], null, null],
-            ['mixedCollection', [new Type(Type::BUILTIN_TYPE_ARRAY, false, null, true, null, null)], null, null],
-            ['g', [new Type(Type::BUILTIN_TYPE_ARRAY, true, null, true)], 'Nullable array.', null],
-            ['h', [new Type(Type::BUILTIN_TYPE_STRING, true)], null, null],
-            ['i', [new Type(Type::BUILTIN_TYPE_STRING, true), new Type(Type::BUILTIN_TYPE_INT, true)], null, null],
-            ['j', [new Type(Type::BUILTIN_TYPE_OBJECT, true, 'DateTime')], null, null],
-            ['donotexist', null, null, null],
-            ['staticGetter', null, null, null],
-            ['staticSetter', null, null, null],
-            ['emptyVar', null, null, null],
-        ];
-    }
-
-    /**
-     * @dataProvider provideCollectionTypes
-     *
-     * @param string $property
-     * @param array|null $type
-     * @param string|null $shortDescription
-     * @param string|null $longDescription
-     */
-    public function testExtractCollection(string $property, array $type, ?string $shortDescription, ?string $longDescription): void
-    {
-        if (!class_exists(Collection::class)) {
-            self::markTestSkipped('Collections are not implemented in current phpdocumentor/type-resolver version');
-        }
-
-        $this->testExtract($property, $type, $shortDescription, $longDescription);
-    }
-
-    /**
-     * @return array
-     */
-    public function provideCollectionTypes(): array
-    {
-        return [
-            ['iteratorCollection', [new Type(Type::BUILTIN_TYPE_OBJECT, false, 'Iterator', true, null, new Type(Type::BUILTIN_TYPE_STRING))], null, null],
-            ['iteratorCollectionWithKey', [new Type(Type::BUILTIN_TYPE_OBJECT, false, 'Iterator', true, new Type(Type::BUILTIN_TYPE_INT), new Type(Type::BUILTIN_TYPE_STRING))], null, null],
-            [
-                'nestedIterators',
-                [new Type(
-                    Type::BUILTIN_TYPE_OBJECT,
-                    false,
-                    'Iterator',
-                    true,
-                    new Type(Type::BUILTIN_TYPE_INT),
-                    new Type(Type::BUILTIN_TYPE_OBJECT, false, 'Iterator', true, new Type(Type::BUILTIN_TYPE_INT), new Type(Type::BUILTIN_TYPE_STRING))
-                )],
-                null,
-                null,
-            ],
-        ];
-    }
-
-    /**
-     * @dataProvider typesWithCustomPrefixesProvider
-     *
-     * @param string $property
-     * @param array|null $type
-     */
-    public function testExtractTypesWithCustomPrefixes(string $property, array $type = null): void
-    {
-        $customExtractor = new PhpDocExtractor(null, ['add', 'remove'], ['is', 'can']);
-
-        self::assertEquals($type, $customExtractor->getTypes('Symfony\Component\PropertyInfo\Tests\Fixtures\Dummy', $property));
-    }
-
-    /**
-     * @return array
-     */
-    public function typesWithCustomPrefixesProvider(): array
-    {
-        return [
-            ['foo', null, 'Short description.', 'Long description.'],
-            ['bar', [new Type(Type::BUILTIN_TYPE_STRING)], 'This is bar', null],
-            ['baz', [new Type(Type::BUILTIN_TYPE_INT)], 'Should be used.', null],
-            ['foo2', [new Type(Type::BUILTIN_TYPE_FLOAT)], null, null],
-            ['foo3', [new Type(Type::BUILTIN_TYPE_CALLABLE)], null, null],
-            ['foo4', [new Type(Type::BUILTIN_TYPE_NULL)], null, null],
-            ['foo5', null, null, null],
-            [
-                'files',
-                [
-                    new Type(Type::BUILTIN_TYPE_ARRAY, false, null, true, new Type(Type::BUILTIN_TYPE_INT), new Type(Type::BUILTIN_TYPE_OBJECT, false, 'SplFileInfo')),
-                    new Type(Type::BUILTIN_TYPE_RESOURCE),
-                ],
-                null,
-                null,
-            ],
-            ['bal', [new Type(Type::BUILTIN_TYPE_OBJECT, false, 'DateTime')], null, null],
-            ['parent', [new Type(Type::BUILTIN_TYPE_OBJECT, false, 'Symfony\Component\PropertyInfo\Tests\Fixtures\ParentDummy')], null, null],
-            ['collection', [new Type(Type::BUILTIN_TYPE_ARRAY, false, null, true, new Type(Type::BUILTIN_TYPE_INT), new Type(Type::BUILTIN_TYPE_OBJECT, false, 'DateTime'))], null, null],
-            ['nestedCollection', [new Type(Type::BUILTIN_TYPE_ARRAY, false, null, true, new Type(Type::BUILTIN_TYPE_INT), new Type(Type::BUILTIN_TYPE_ARRAY, false, null, true, new Type(Type::BUILTIN_TYPE_INT), new Type(Type::BUILTIN_TYPE_STRING, false)))], null, null],
-            ['mixedCollection', [new Type(Type::BUILTIN_TYPE_ARRAY, false, null, true, null, null)], null, null],
-            ['a', null, 'A.', null],
-            ['b', null, 'B.', null],
-            ['c', [new Type(Type::BUILTIN_TYPE_BOOL, true)], null, null],
-            ['d', [new Type(Type::BUILTIN_TYPE_BOOL)], null, null],
-            ['e', [new Type(Type::BUILTIN_TYPE_ARRAY, false, null, true, new Type(Type::BUILTIN_TYPE_INT), new Type(Type::BUILTIN_TYPE_RESOURCE))], null, null],
-            ['f', [new Type(Type::BUILTIN_TYPE_ARRAY, false, null, true, new Type(Type::BUILTIN_TYPE_INT), new Type(Type::BUILTIN_TYPE_OBJECT, false, 'DateTime'))], null, null],
-            ['g', [new Type(Type::BUILTIN_TYPE_ARRAY, true, null, true)], 'Nullable array.', null],
-            ['h', [new Type(Type::BUILTIN_TYPE_STRING, true)], null, null],
-            ['i', [new Type(Type::BUILTIN_TYPE_STRING, true), new Type(Type::BUILTIN_TYPE_INT, true)], null, null],
-            ['j', [new Type(Type::BUILTIN_TYPE_OBJECT, true, 'DateTime')], null, null],
-            ['donotexist', null, null, null],
-            ['staticGetter', null, null, null],
-            ['staticSetter', null, null, null],
-        ];
-    }
-
-    /**
-     * @return array
-     */
-    public function typesWithNoPrefixesProvider(): array
-    {
-        return [
-            ['foo', null, 'Short description.', 'Long description.'],
-            ['bar', [new Type(Type::BUILTIN_TYPE_STRING)], 'This is bar', null],
-            ['baz', [new Type(Type::BUILTIN_TYPE_INT)], 'Should be used.', null],
-            ['foo2', [new Type(Type::BUILTIN_TYPE_FLOAT)], null, null],
-            ['foo3', [new Type(Type::BUILTIN_TYPE_CALLABLE)], null, null],
-            ['foo4', [new Type(Type::BUILTIN_TYPE_NULL)], null, null],
-            ['foo5', null, null, null],
-            [
-                'files',
-                [
-                    new Type(Type::BUILTIN_TYPE_ARRAY, false, null, true, new Type(Type::BUILTIN_TYPE_INT), new Type(Type::BUILTIN_TYPE_OBJECT, false, 'SplFileInfo')),
-                    new Type(Type::BUILTIN_TYPE_RESOURCE),
-                ],
-                null,
-                null,
-            ],
-            ['bal', [new Type(Type::BUILTIN_TYPE_OBJECT, false, 'DateTime')], null, null],
-            ['parent', [new Type(Type::BUILTIN_TYPE_OBJECT, false, 'Symfony\Component\PropertyInfo\Tests\Fixtures\ParentDummy')], null, null],
-            ['collection', [new Type(Type::BUILTIN_TYPE_ARRAY, false, null, true, new Type(Type::BUILTIN_TYPE_INT), new Type(Type::BUILTIN_TYPE_OBJECT, false, 'DateTime'))], null, null],
-            ['nestedCollection', [new Type(Type::BUILTIN_TYPE_ARRAY, false, null, true, new Type(Type::BUILTIN_TYPE_INT), new Type(Type::BUILTIN_TYPE_ARRAY, false, null, true, new Type(Type::BUILTIN_TYPE_INT), new Type(Type::BUILTIN_TYPE_STRING, false)))], null, null],
-            ['mixedCollection', [new Type(Type::BUILTIN_TYPE_ARRAY, false, null, true, null, null)], null, null],
-            ['a', null, 'A.', null],
-            ['b', null, 'B.', null],
-            ['c', null, null, null],
-            ['d', null, null, null],
-            ['e', null, null, null],
-            ['f', null, null, null],
-            ['g', [new Type(Type::BUILTIN_TYPE_ARRAY, true, null, true)], 'Nullable array.', null],
-            ['h', [new Type(Type::BUILTIN_TYPE_STRING, true)], null, null],
-            ['i', [new Type(Type::BUILTIN_TYPE_STRING, true), new Type(Type::BUILTIN_TYPE_INT, true)], null, null],
-            ['j', [new Type(Type::BUILTIN_TYPE_OBJECT, true, 'DateTime')], null, null],
-            ['donotexist', null, null, null],
-            ['staticGetter', null, null, null],
-            ['staticSetter', null, null, null],
-        ];
-    }
-
-    /**
-     * @return array
-     */
-    public function dockBlockFallbackTypesProvider(): array
-    {
-        return [
-            'pub' => [
-                'pub', [new Type(Type::BUILTIN_TYPE_STRING)],
-            ]
-        ];
-    }
-
-    /**
-     * @dataProvider dockBlockFallbackTypesProvider
-     *
-     * @param string $property
-     * @param array $types
-     */
-    public function testDocBlockFallback(string $property, array $types): void
-    {
-        self::assertEquals($types, static::$extractor->getTypes('Symfony\Component\PropertyInfo\Tests\Fixtures\DockBlockFallback', $property));
-    }
-}
index 3562d13..5b34b4f 100644 (file)
@@ -14,9 +14,9 @@
        },
        "require": {
                "phpdocumentor/reflection-docblock": "^4.3",
-               "symfony/dependency-injection": "^4.1",
-               "symfony/property-access": "^4.2",
-               "symfony/property-info": "^4.2",
+               "symfony/dependency-injection": "^4.4 || ^5.0",
+               "symfony/property-access": "^4.4 || ^5.0",
+               "symfony/property-info": "^4.4 || ^5.0",
                "typo3/cms-core": "10.2.*@dev",
                "webmozart/assert": "^1.0"
        },
index 48d1219..00c49e3 100644 (file)
@@ -14,7 +14,7 @@ namespace TYPO3\CMS\Felogin\Controller;
  * The TYPO3 project - inspiring people to share!
  */
 
-use Symfony\Component\Mime\NamedAddress;
+use Symfony\Component\Mime\Address;
 use TYPO3\CMS\Core\Authentication\LoginType;
 use TYPO3\CMS\Core\Context\Context;
 use TYPO3\CMS\Core\Crypto\PasswordHashing\PasswordHashFactory;
@@ -1058,10 +1058,8 @@ class FrontendLoginController extends AbstractPlugin
         $mail = GeneralUtility::makeInstance(MailMessage::class);
         $senderName = trim($senderName);
         $senderAddress = trim($senderAddress);
-        if ($senderName !== '' && $senderAddress !== '') {
-            $mail->from(new NamedAddress($senderAddress, $senderName));
-        } elseif ($senderAddress !== '') {
-            $mail->from($senderAddress);
+        if ($senderAddress !== '') {
+            $mail->from(new Address($senderAddress, $senderName));
         }
         $parsedReplyTo = MailUtility::parseAddresses($replyTo);
         if (!empty($parsedReplyTo)) {
index 4756e81..13cccad 100644 (file)
@@ -13,7 +13,7 @@
                "sort-packages": true
        },
        "require": {
-               "symfony/dependency-injection": "^4.1",
+               "symfony/dependency-injection": "^4.4 || ^5.0",
                "typo3/cms-core": "10.2.*@dev",
                "typo3/cms-extbase": "10.2.*@dev",
                "typo3fluid/fluid": "^2.6.6"
index 6990486..78e5674 100644 (file)
@@ -15,7 +15,7 @@ namespace TYPO3\CMS\Form\Domain\Finishers;
  * The TYPO3 project - inspiring people to share!
  */
 
-use Symfony\Component\Mime\NamedAddress;
+use Symfony\Component\Mime\Address;
 use TYPO3\CMS\Core\Mail\MailMessage;
 use TYPO3\CMS\Core\Utility\MathUtility;
 use TYPO3\CMS\Extbase\Domain\Model\FileReference;
@@ -105,7 +105,7 @@ class EmailFinisher extends AbstractFinisher
 
         $mail = $this->objectManager->get(MailMessage::class);
 
-        $mail->from(new NamedAddress($senderAddress, $senderName))
+        $mail->from(new Address($senderAddress, $senderName))
             ->to(...$recipients)
             ->subject($subject);
 
@@ -282,7 +282,7 @@ class EmailFinisher extends AbstractFinisher
             if (empty($address)) {
                 continue;
             }
-            $addresses[] = new NamedAddress($address, $name);
+            $addresses[] = new Address($address, $name);
         }
         return $addresses;
     }
index 93bdbd0..19d2f75 100644 (file)
@@ -14,7 +14,7 @@
        },
        "require": {
                "psr/http-message": "^1.0",
-               "symfony/expression-language": "^4.1",
+               "symfony/expression-language": "^4.4 || ^5.0",
                "typo3/cms-core": "10.2.*@dev"
        },
        "suggest": {
index 4b95570..a6b438e 100644 (file)
@@ -19,7 +19,7 @@ use Doctrine\DBAL\Driver\Statement;
 use Psr\Container\ContainerInterface;
 use Psr\Log\LoggerAwareInterface;
 use Psr\Log\LoggerAwareTrait;
-use Symfony\Component\Mime\NamedAddress;
+use Symfony\Component\Mime\Address;
 use TYPO3\CMS\Core\Authentication\AbstractUserAuthentication;
 use TYPO3\CMS\Core\Cache\CacheManager;
 use TYPO3\CMS\Core\Context\Context;
@@ -5756,10 +5756,8 @@ class ContentObjectRenderer implements LoggerAwareInterface
         $mail = GeneralUtility::makeInstance(MailMessage::class);
         $senderName = trim($senderName);
         $senderAddress = trim($senderAddress);
-        if ($senderName !== '' && $senderAddress !== '') {
-            $mail->from(new NamedAddress($senderAddress, $senderName));
-        } elseif ($senderAddress !== '') {
-            $mail->from($senderAddress);
+        if ($senderAddress !== '') {
+            $mail->from(new Address($senderAddress, $senderName));
         }
         $parsedReplyTo = MailUtility::parseAddresses($replyTo);
         if (!empty($parsedReplyTo)) {
index 2f0da9f..8d92165 100644 (file)
@@ -15,7 +15,7 @@ namespace TYPO3\CMS\Install\Authentication;
  * The TYPO3 project - inspiring people to share!
  */
 
-use Symfony\Component\Mime\NamedAddress;
+use Symfony\Component\Mime\Address;
 use TYPO3\CMS\Core\Crypto\PasswordHashing\PasswordHashFactory;
 use TYPO3\CMS\Core\Mail\MailMessage;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
@@ -77,7 +77,7 @@ class AuthenticationService
             $mailMessage
                 ->to($warningEmailAddress)
                 ->subject('Install Tool Login at \'' . $GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename'] . '\'')
-                ->from(new NamedAddress($this->getSenderEmailAddress(), $this->getSenderEmailName()))
+                ->from(new Address($this->getSenderEmailAddress(), $this->getSenderEmailName()))
                 ->text('There has been an Install Tool login at TYPO3 site'
                     . ' \'' . $GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename'] . '\''
                     . ' (' . GeneralUtility::getIndpEnv('HTTP_HOST') . ')'
@@ -98,7 +98,7 @@ class AuthenticationService
             $mailMessage
                 ->to($warningEmailAddress)
                 ->subject('Install Tool Login ATTEMPT at \'' . $GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename'] . '\'')
-                ->from(new NamedAddress($this->getSenderEmailAddress(), $this->getSenderEmailName()))
+                ->from(new Address($this->getSenderEmailAddress(), $this->getSenderEmailName()))
                 ->text('There has been an Install Tool login attempt at TYPO3 site'
                     . ' \'' . $GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename'] . '\''
                     . ' (' . GeneralUtility::getIndpEnv('HTTP_HOST') . ')'
index b8c5611..3dfad76 100644 (file)
@@ -17,7 +17,7 @@ namespace TYPO3\CMS\Install\Controller;
 
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\ServerRequestInterface;
-use Symfony\Component\Mime\NamedAddress;
+use Symfony\Component\Mime\Address;
 use TYPO3\CMS\Core\Core\Environment;
 use TYPO3\CMS\Core\Database\ConnectionPool;
 use TYPO3\CMS\Core\FormProtection\FormProtectionFactory;
@@ -247,7 +247,7 @@ class EnvironmentController extends AbstractController
                 $mailMessage = GeneralUtility::makeInstance(MailMessage::class);
                 $mailMessage
                     ->to($recipient)
-                    ->from(new NamedAddress($this->getSenderEmailAddress(), $this->getSenderEmailName()))
+                    ->from(new Address($this->getSenderEmailAddress(), $this->getSenderEmailName()))
                     ->subject($this->getEmailSubject())
                     ->html('<html><body>html test content</body></html>')
                     ->text('plain test content')
index eb417e6..85d81a1 100644 (file)
@@ -14,7 +14,7 @@
        },
        "require": {
                "nikic/php-parser": "^4.3",
-               "symfony/finder": "^4.3",
+               "symfony/finder": "^4.4 || ^5.0",
                "typo3/cms-core": "10.2.*@dev",
                "typo3/cms-extbase": "10.2.*@dev",
                "typo3/cms-fluid": "10.2.*@dev"
index 37c3007..fedba4d 100644 (file)
@@ -14,7 +14,7 @@ namespace TYPO3\CMS\Linkvalidator\Task;
  * The TYPO3 project - inspiring people to share!
  */
 
-use Symfony\Component\Mime\NamedAddress;
+use Symfony\Component\Mime\Address;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Core\Mail\MailMessage;
 use TYPO3\CMS\Core\Service\MarkerBasedTemplateService;
@@ -460,7 +460,7 @@ class ValidatorTask extends AbstractTask
             $modTsConfig['mail.']['fromname'] = MailUtility::getSystemFromName();
         }
         if (GeneralUtility::validEmail($modTsConfig['mail.']['fromemail'])) {
-            $mail->from(new NamedAddress($modTsConfig['mail.']['fromemail'], $modTsConfig['mail.']['fromname']));
+            $mail->from(new Address($modTsConfig['mail.']['fromemail'], $modTsConfig['mail.']['fromname']));
         } else {
             throw new \Exception(
                 $lang->sL($this->languageFile . ':tasks.error.invalidFromEmail'),
@@ -468,7 +468,7 @@ class ValidatorTask extends AbstractTask
             );
         }
         if (GeneralUtility::validEmail($modTsConfig['mail.']['replytoemail'])) {
-            $mail->replyTo(new NamedAddress($modTsConfig['mail.']['replytoemail'], $modTsConfig['mail.']['replytoname']));
+            $mail->replyTo(new Address($modTsConfig['mail.']['replytoemail'], $modTsConfig['mail.']['replytoname']));
         }
         if (!empty($modTsConfig['mail.']['subject'])) {
             $mail->subject($modTsConfig['mail.']['subject']);
index 3a4e9a2..90fb8b5 100644 (file)
@@ -12,15 +12,15 @@ services:
   # EventListeners
   TYPO3\CMS\Linkvalidator\EventListener\CheckBrokenRteLinkEventListener:
     tags:
-      - { name: event.listener,
-          identifier: 'rte-check-link-external',
-          event: TYPO3\CMS\Core\Html\Event\BrokenLinkAnalysisEvent,
-          method: 'checkExternalLink' }
-      - { name: event.listener,
-          identifier: 'rte-check-link-to-page',
-          event: TYPO3\CMS\Core\Html\Event\BrokenLinkAnalysisEvent,
-          method: 'checkPageLink' }
-      - { name: event.listener,
-          identifier: 'rte-check-link-to-file',
-          event: TYPO3\CMS\Core\Html\Event\BrokenLinkAnalysisEvent,
-          method: 'checkFileLink' }
+      - name: event.listener
+        identifier: 'rte-check-link-external'
+        event: TYPO3\CMS\Core\Html\Event\BrokenLinkAnalysisEvent
+        method: 'checkExternalLink'
+      - name: event.listener
+        identifier: 'rte-check-link-to-page'
+        event: TYPO3\CMS\Core\Html\Event\BrokenLinkAnalysisEvent
+        method: 'checkPageLink'
+      - name: event.listener
+        identifier: 'rte-check-link-to-file'
+        event: TYPO3\CMS\Core\Html\Event\BrokenLinkAnalysisEvent
+        method: 'checkFileLink'
index 54b28f9..1737270 100644 (file)
@@ -15,11 +15,11 @@ services:
 
   TYPO3\CMS\Redirects\EventListener\RecordHistoryRollbackEventsListener:
     tags:
-      - { name: event.listener,
-          identifier: 'redirects-disable-hook',
-          event: TYPO3\CMS\Backend\History\Event\BeforeHistoryRollbackStartEvent,
-          method: 'beforeHistoryRollbackStartEvent' }
-      - { name: event.listener,
-          identifier: 'redirects-enable-hook',
-          event: TYPO3\CMS\Backend\History\Event\AfterHistoryRollbackFinishedEvent,
-          method: 'afterHistoryRollbackFinishedEvent' }
+      - name: event.listener
+        identifier: 'redirects-disable-hook'
+        event: TYPO3\CMS\Backend\History\Event\BeforeHistoryRollbackStartEvent
+        method: 'beforeHistoryRollbackStartEvent'
+      - name: event.listener
+        identifier: 'redirects-enable-hook'
+        event: TYPO3\CMS\Backend\History\Event\AfterHistoryRollbackFinishedEvent
+        method: 'afterHistoryRollbackFinishedEvent'
index d6fcfa7..4137a71 100644 (file)
@@ -14,7 +14,7 @@ namespace TYPO3\CMS\Scheduler\Example;
  * The TYPO3 project - inspiring people to share!
  */
 
-use Symfony\Component\Mime\NamedAddress;
+use Symfony\Component\Mime\Address;
 use TYPO3\CMS\Core\Core\Environment;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 
@@ -62,7 +62,7 @@ class TestTask extends \TYPO3\CMS\Scheduler\Task\AbstractTask
             // Prepare mailer and send the mail
             try {
                 $mailer = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Mail\MailMessage::class);
-                $mailer->from(new NamedAddress($this->email, 'SCHEDULER TEST-TASK'));
+                $mailer->from(new Address($this->email, 'SCHEDULER TEST-TASK'));
                 $mailer->setSubject('SCHEDULER TEST-TASK');
                 $mailer->text($mailBody);
                 $mailer->setTo($this->email);
index 3246bfb..61b4453 100644 (file)
@@ -17,7 +17,6 @@ namespace TYPO3\CMS\Workspaces\Hook;
 use Doctrine\DBAL\DBALException;
 use Doctrine\DBAL\Platforms\SQLServerPlatform;
 use Symfony\Component\Mime\Address;
-use Symfony\Component\Mime\NamedAddress;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Core\Cache\CacheManager;
 use TYPO3\CMS\Core\Core\Environment;
@@ -650,11 +649,7 @@ class DataHandlerHook
                 $emailMessage = $templateService->substituteMarkerArray($emailMessage, $markers, '', true, true);
                 // Send an email to the recipient
                 $mail = GeneralUtility::makeInstance(MailMessage::class);
-                if (!empty($recipientData['realName'])) {
-                    $recipient = new NamedAddress($recipientData['email'], $recipientData['realName']);
-                } else {
-                    $recipient = new Address($recipientData['email']);
-                }
+                $recipient = new Address($recipientData['email'], $recipientData['realName']);
                 $mail->to($recipient)
                     ->subject($emailSubject)
                     ->html($emailMessage);