Commit f20a7aae authored by Benni Mack's avatar Benni Mack
Browse files

[TASK] Update symfony dependencies to 4.4 or 5.0

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: default avatarTYPO3com <noreply@typo3.com>
Tested-by: Anja Leichsenring's avatarAnja Leichsenring <aleichsenring@ab-softlab.de>
Tested-by: Susanne Moog's avatarSusanne Moog <look@susi.dev>
Tested-by: Benni Mack's avatarBenni Mack <benni@typo3.org>
Reviewed-by: Anja Leichsenring's avatarAnja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Susanne Moog's avatarSusanne Moog <look@susi.dev>
Reviewed-by: Benni Mack's avatarBenni Mack <benni@typo3.org>
parent da787baa
This diff is collapsed.
......@@ -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;
}
}
......@@ -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);
}
}
......
......@@ -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);
}
......
......@@ -66,4 +66,9 @@ class MboxTransport extends AbstractTransport
GeneralUtility::fixPermissions($this->mboxFile);
$lockObject->release();
}
public function __toString(): string
{
return $this->mboxFile;
}
}
......@@ -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;
}
}
......@@ -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
......
......@@ -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