Packages/TYPO3.CMS.git
4 months ago[FEATURE] Add symfony dependency injection for core and extbase 55/58255/71
Benjamin Franzke [Thu, 11 Jul 2019 08:13:04 +0000 (10:13 +0200)]
[FEATURE] Add symfony dependency injection for core and extbase

This feature is a combined approach using two containers/concepts:

1) symfony/dependency-injection (now exposed as official TYPO3 API):
   Supports: autoconfiguration, autowiring using Service.{yaml,php}
   files

2) service providers (fork of the experimental interfaces in
   container-interop/service-provider, sometimes called PSR-11+)
   Supports: factory-style configuration using plain php code
   provided for internal use and possible future public use.

1) Symfony dependency injection is provided to be used by extensions
and throughout the TYPO3 core for (auto)wiring of services (classes).
Extensions can control symfony's dependency injection use a file
located in Configuration/Services.yaml, if they need more flexibility
they may also use Configuration/Services.php which can
use symfony's ContainerConfigurator or ContainerBuilder.

2) Service providers are used (within TYPO3 core) to provide
dependency injection for services used in the install tool which require
failsafe boot. This is based on container-interop/service-provider.
container-interop/service-provider is supposed to become a PSR but is
still marked experimental, therefore this commit adds an implementation
to TYPO3 provided for internal use only – it is not public API.
We do still include it (as @interal fork) right now, to adapt to this
upcoming PSR from the very beginning, in order to actually push the
development of this proposal forward.

Service providers in failsafe mode are consumed by a simplistic,
non-compiled container.
Symfony's container is too slow when running uncached (as the compilation,
recursive directory lookups and autowiring needs to be performed on every
invocation). We do not want caching for recovery maintenance tasks
which would not be able to recover from scenarios with broken caches.

Services that are configured through service providers, are both available
in the non compiled install tool container and in the symfony container.
They do *not* need to be defined twice. The two "worlds" are bridged
using a ServiceProviderCompilerPass which creates symfony DI definitions
from service-provider factories. The code is a derivative of the code from
the (outdated) symfony bundle
thecodingmachine/service-provider-bridge-bundle.

Features
--------
 * inject* methods are now supported for all classes (not just Extbase)
   It is suggested to use constructor based injection, this feature
   is available to provide maximum compatibility to the old Extbase DI.
 * Autoconfiguration based on interface implementation.
   (current) autoconfigured interface are:
     SingletonInterface,  MiddlewareInterface, RequestHandlerInterface,
     LoggerAwareInterface, ControllerInterface, ViewHelperInterface
     (we expect more to follow in subsequent commits)

Included adaptions
------------------
In order to demonstrate and to be able to verify the features of this
patch, some classes are adapted to use or support dependency injection:
 * RedirectHandler/RedirectService autowired/autoconfigured
 * Application classes and their dependencies are manually wired in
   service providers. This is required as the application runs in fail-
   safe mode when there is no configuration available (first install)
 * MiddlewareStack is composed in service providers and injected
   as a RequestHandler into the Http\Application classes (in order to
   prevent injecting the Container, which would be an anti pattern).
 * Middleware configuration is treated as service (like a registry),
   and retrieval is provided through service providers (the service
   providers default to the existing middleware configuration format)
 * The Middleware dispatcher now first tries to retrieve classes from
   the PSR-11 container, falling back to makeInstance if not available
 * Dependency Injection using symfony for all core Extbase Controllers
 * A Services.yaml is added for each core extension which contains
   classes that are used in frontend/backend context
 * A LateBoot service is added for install tool

DI vs ext_localconf – loading order, legacy makeInstance support
----------------------------------------------------------------
Dependency Injection containers solve most of the tasks that
ext_localconf.php and GeneralUtility::makeInstance solve for Singletons:
Service configuration and instance management.

(Symfony) DI could therefore be used to replace both in the long run.
Both are doing similar tasks when talking about Singletons:
They create and configure services that are stored and shared in a
central memory storage (container for DI, GU::$singletonInstances for
our legacy TYPO3 case). That means they both actually conflict right
now – in terms of: Who is responsible for creating a class?

We've made a decision to connect these both: GeneralUtility::makeInstance
will offload instantiation to the Container if the class is a) available
and b) no runtime constructor arguments have been passed to makeInstance
(which symfony DI doesn't support).

The DI container itself does provides backwards compatibility to XCLASSES
and class aliases use a new internal helper method makeInstanceForDi.

ext_localconf's main design flaw is the mixture of initialization
and configuration composition without assurance that all configuration
is available before a configuration-dependent class is instantiated.
Proper DI first reads all configuration and then performs all service
injections on demand and pre calculated using a dependency tree – and
therefore always in proper sequence.

What we *don't* want (+ reasons)
-------------------------------
 * Symfony Bundles
   pro: provide a defined way for container configuration)
   con: Requires the Symfony HTTP kernel which is not compatible with PSR7
 * Usage of Symfony\DependencyInjection\ExtensionInterface
   con: It is not useful as it cannot add new compiler passes
 * Handling of prototypes that need dependency injection *and* a way to
   to get custom constructor arguments passed (individual per class)
   While symfony DI can handle prototypes (called 'shared: false'), it
   does not support passing constructor arguments like the Extbase object
   manager does. We'll advocate to using a factory pattern for those
   prototypes instead.
 * Circular dependencies: This is not supported by symfony DI and isn't
   possible with service providers either

Future changes (left out for brevity)
-------------------------------------

 * (cli) Build tool to warmup DI cache/state during deployment
 * Adaptions to (all) core dispatchers to prefer a PSR-11
   container over GeneralUtility::makeInstance

Dependency changes
------------------
composer require symfony/dependency-injection:^4.1 symfony/config:^4.1

Releases: master
Resolves: #88689
Resolves: #84112
Change-Id: I8efd817066b528a5953c56fdd027cb94b2bb8eb3
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/58255
Tested-by: Tobi Kretschmann <tobi@tobishome.de>
Tested-by: Jörg Bösche <typo3@joergboesche.de>
Tested-by: Alexander Schnitzler <review.typo3.org@alexanderschnitzler.de>
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Benjamin Franzke <bfr@qbus.de>
Reviewed-by: Tobi Kretschmann <tobi@tobishome.de>
Reviewed-by: Jörg Bösche <typo3@joergboesche.de>
Reviewed-by: Alexander Schnitzler <review.typo3.org@alexanderschnitzler.de>
Reviewed-by: Benjamin Franzke <bfr@qbus.de>
4 months ago[TASK] Use @import syntax in TypoScript example 44/61244/2
Georg Ringer [Thu, 11 Jul 2019 06:05:14 +0000 (08:05 +0200)]
[TASK] Use @import syntax in TypoScript example

The TypoScript which is created by the Install Tool should use the new
@import syntax.

Resolves: #88623
Releases: master, 9.5
Change-Id: I661cbe7bbc659c6ea804f4b131aa49fc7abca92a
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61244
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Josef Glatz <josefglatz@gmail.com>
Tested-by: Jörg Bösche <typo3@joergboesche.de>
Tested-by: Björn Jacob <bjoern.jacob@tritum.de>
Tested-by: Steffen Frese <steffenf14@gmail.com>
Tested-by: Benjamin Franzke <bfr@qbus.de>
Reviewed-by: Josef Glatz <josefglatz@gmail.com>
Reviewed-by: Jörg Bösche <typo3@joergboesche.de>
Reviewed-by: Björn Jacob <bjoern.jacob@tritum.de>
Reviewed-by: Steffen Frese <steffenf14@gmail.com>
Reviewed-by: Dieter Porth <d.porth@neusta.de>
Reviewed-by: Julian Geils <j_geils@web.de>
Reviewed-by: Benjamin Franzke <bfr@qbus.de>
4 months ago[TASK] Add info to cards if installation is in composer mode 12/60812/7
Eric Chavaillaz [Fri, 24 May 2019 12:29:48 +0000 (14:29 +0200)]
[TASK] Add info to cards if installation is in composer mode

The cards "Rebuild PHP Autoload Information"
and "Update TYPO3 Core" show information about,
how to update and trigger the autoload in composer mode.

Resolves: #88434
Releases: master, 9.5
Change-Id: Ia7990d333bfaaef09a598b197cf3e461d5da6dd5
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/60812
Tested-by: Eric Chavaillaz <eric@hemmer.ch>
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Julian Geils <j_geils@web.de>
Tested-by: Jörg Bösche <typo3@joergboesche.de>
Tested-by: Frank Naegler <frank.naegler@typo3.org>
Reviewed-by: Eric Chavaillaz <eric@hemmer.ch>
Reviewed-by: Julian Geils <j_geils@web.de>
Reviewed-by: Jörg Bösche <typo3@joergboesche.de>
Reviewed-by: Frank Naegler <frank.naegler@typo3.org>
4 months ago[BUGFIX] Check if title is provided before accessing it 65/61165/4
Georg Ringer [Fri, 28 Jun 2019 11:49:44 +0000 (13:49 +0200)]
[BUGFIX] Check if title is provided before accessing it

If no title is provided for a table in the TCA (ctrl|title),
the wizard for creating new records must not fail with an
exception.

Resolves: #88642
Releases: master, 9.5
Change-Id: Icdda8fdc4e8eb37a09cb8b918fc39b732c28d5b1
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61165
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Julian Geils <j_geils@web.de>
Tested-by: Benjamin Franzke <bfr@qbus.de>
Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: Julian Geils <j_geils@web.de>
Reviewed-by: Benjamin Franzke <bfr@qbus.de>
4 months ago[BUGFIX] Adjust EmailFinisher to new recipient style 37/61237/3
Susanne Moog [Mon, 8 Jul 2019 14:26:39 +0000 (16:26 +0200)]
[BUGFIX] Adjust EmailFinisher to new recipient style

With the symfony mail component recipient addresses should be
instantiated and used as either `Address` or `NamedAddress` object
instead of an associative array. The patch introduces usage of both.

Resolves: #88702
Releases: master
Change-Id: Ie592d93c6cc191da873478e59830900a66ea9aeb
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61237
Tested-by: Benjamin Franzke <bfr@qbus.de>
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Benjamin Franzke <bfr@qbus.de>
Reviewed-by: Benni Mack <benni@typo3.org>
4 months ago[!!!][TASK] Streamline felogin locallang keys 41/61241/4
Jan Stockfisch [Tue, 9 Jul 2019 10:43:40 +0000 (12:43 +0200)]
[!!!][TASK] Streamline felogin locallang keys

Resolves: #88706
Releases: master
Change-Id: Ic32c33947c18adc9d4547c8ab7582e40c8474a69
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61241
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Jörg Bösche <typo3@joergboesche.de>
Tested-by: Henning Liebe <h.liebe@neusta.de>
Tested-by: Tobi Kretschmann <tobi@tobishome.de>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Steffen Frese <steffenf14@gmail.com>
Reviewed-by: Jörg Bösche <typo3@joergboesche.de>
Reviewed-by: Henning Liebe <h.liebe@neusta.de>
Reviewed-by: Tobi Kretschmann <tobi@tobishome.de>
Reviewed-by: Benni Mack <benni@typo3.org>
4 months ago[TASK] Fix wrong rst syntax in changelog 38/61238/2
Daniel Siepmann [Mon, 8 Jul 2019 17:37:14 +0000 (19:37 +0200)]
[TASK] Fix wrong rst syntax in changelog

Relates: #88643
Releases: master
Change-Id: Ie1dc52cdbf98b040f2d9bdacdcad3f82c2b4b364
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61238
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Tested-by: Benjamin Franzke <bfr@qbus.de>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Benjamin Franzke <bfr@qbus.de>
4 months ago[TASK] Remove dependencies of \TYPO3\CMS\Extbase\Mvc\Web\Request 35/61235/4
Alexander Schnitzler [Sat, 6 Jul 2019 10:59:52 +0000 (12:59 +0200)]
[TASK] Remove dependencies of \TYPO3\CMS\Extbase\Mvc\Web\Request

According to PSR-7 request objects should be immutable.
That can only be achieved if the state of the request
object is defined during construction. Therefore, the
web request object of Extbase mustn't have any service
dependencies that alter the state of the object during
runtime.

Although there are still setters that can alter the
state of request objects, the more crucial issue with
the object state were the injected services.

Releases: master
Resolves: #88697
Change-Id: Iedf6fc3d33a1e5b89bce20019cbfc484b1466cf8
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61235
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Benni Mack <benni@typo3.org>
Tested-by: Benjamin Franzke <bfr@qbus.de>
Reviewed-by: Benni Mack <benni@typo3.org>
Reviewed-by: Jörg Bösche <typo3@joergboesche.de>
Reviewed-by: Benjamin Franzke <bfr@qbus.de>
5 months ago[TASK] Make use of PSR-7 request object in BE Template module 93/60993/4
Benni Mack [Wed, 12 Jun 2019 21:10:30 +0000 (23:10 +0200)]
[TASK] Make use of PSR-7 request object in BE Template module

Switch from GeneralUtility::_GP() to PSR-7 in EXT:tstemplate.

All occurrences are replaced by proper Object-Oriented coding.

Resolves: #88582
Releases: master
Change-Id: I4cb94601f1c6bbe62025f40f92154f40ec051ce8
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/60993
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
5 months ago[TASK] Add unit tests for PathUtility::isAbsolutePath() 26/60426/8
Alexander Grein [Tue, 9 Apr 2019 10:06:41 +0000 (12:06 +0200)]
[TASK] Add unit tests for PathUtility::isAbsolutePath()

Resolves: #88116
Releases: master, 9.5
Change-Id: If7e84e2c8681b8cf52d513b9520564012d8f8b73
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/60426
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Daniel Windloff
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
5 months ago[TASK] Harden \TYPO3\CMS\Extbase\SignalSlot\Dispatcher 99/59599/7
Alexander Schnitzler [Thu, 31 Jan 2019 19:59:22 +0000 (20:59 +0100)]
[TASK] Harden \TYPO3\CMS\Extbase\SignalSlot\Dispatcher

- Use strict type mode
- Use type hints whereever possible

Releases: master
Resolves: #87604
Change-Id: Iab0fbcd4594d2c4c27846566b6e72fe97e40ec8d
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/59599
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
5 months ago[TASK] Deprecate usage of $GLOBALS[LOCAL_LANG] 78/60878/8
Benni Mack [Tue, 4 Jun 2019 14:17:18 +0000 (16:17 +0200)]
[TASK] Deprecate usage of $GLOBALS[LOCAL_LANG]

Instead of juggling with the globals, this should be handled within
the same LanguageService instance that knows the language
that was fetched.

Instead LanguageService now always returns the loaded
labels from the given file.

Resolves: #88567
Releases: master
Change-Id: Ie6a0367712625358b2c95b556c9fb0590e0d52ab
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/60878
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
5 months ago[BUGFIX] Multi-selection mode in List module 32/61232/6
Daniel Windloff [Fri, 5 Jul 2019 07:03:18 +0000 (09:03 +0200)]
[BUGFIX] Multi-selection mode in List module

$GLOBALS['SOBE'] is still used in DatabaseRecordList.

Regression from
https://review.typo3.org/c/Packages/TYPO3.CMS/+/59357

Resolves: #88079
Resolves: #87902
Related: #87354
Releases: master
Change-Id: I7327a86e1597bef0f57b8c23a7a36660d2e933ef
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61232
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
5 months ago[BUGFIX] Consider default recipients in preselection check 56/61056/2
Hannes Bochmann [Thu, 13 Jun 2019 13:00:21 +0000 (15:00 +0200)]
[BUGFIX] Consider default recipients in preselection check

When checking if a workspace stage has a preselection the
default recipients need to be considered, too.
Consequently the default recipients field in the TCA needs
to stay visible if the option to show the notification dialog
is unchecked.

Resolves: #82475
Releases: master, 9.5, 8.7
Change-Id: I7edb257c803a519a06e8fc65fe2b5cb03d3ce7ff
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61056
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Benni Mack <benni@typo3.org>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Benni Mack <benni@typo3.org>
Reviewed-by: Frank Naegler <frank.naegler@typo3.org>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
5 months ago[BUGFIX] Always use default language for fetching web mounts 59/59159/11
Alexander Bohndorf [Fri, 14 Dec 2018 17:17:39 +0000 (18:17 +0100)]
[BUGFIX] Always use default language for fetching web mounts

Fixes calculation of the rootline within web mounts for
translated pages to give editors access again.

Resolves: #87165
Resolves: #87223
Resolves: #87985
Resolves: #86575
Releases: master, 9.5
Change-Id: Ib7b026b1ab3961516567de9eec2d4e26cfaaae20
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/59159
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Tested-by: André Schließer <andy.schliesser@gmail.com>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: André Schließer <andy.schliesser@gmail.com>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
5 months ago[TASK] Harden repositories in Extbase 11/61111/3
Alexander Schnitzler [Fri, 21 Jun 2019 12:58:02 +0000 (14:58 +0200)]
[TASK] Harden repositories in Extbase

- Use strict type mode
- Use type hints whereever possible

Releases: master
Resolves: #88605
Change-Id: I749b356c9d7cde09120502c242a47f835ca82958
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61111
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Richard Haeser <richard@maxserv.com>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: Richard Haeser <richard@maxserv.com>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
5 months ago[TASK] Harden \TYPO3\CMS\Extbase\Error\Message and its derivatives 15/61115/6
Alexander Schnitzler [Fri, 21 Jun 2019 15:04:47 +0000 (17:04 +0200)]
[TASK] Harden \TYPO3\CMS\Extbase\Error\Message and its derivatives

- Use strict type mode
- Use type hints whereever possible
- Avoid possibly failing dynamic access of properties and methods

Releases: master
Resolves: #88608
Change-Id: I6213dfe0bcb01eddb457d41c4aac74d7cd325c13
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61115
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Richard Haeser <richard@maxserv.com>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: Johannes Seipelt <johannes.seipelt@3m5.de>
Reviewed-by: Richard Haeser <richard@maxserv.com>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
5 months ago[!!!][TASK] Configure extbase request handlers via PHP 26/61226/6
Alexander Schnitzler [Thu, 4 Jul 2019 15:04:28 +0000 (17:04 +0200)]
[!!!][TASK] Configure extbase request handlers via PHP

This patch removes the ability to configure extbase
request handlers via typoscript. This is done because
typoscript is too variable, i.e. the configuration may
change depending on the day, the hour and whatever
possibility typoscript offers when it comes to conditions.

The ability to configure request handlers does not vanish
but needs to be immutable and predictable at an early
stage of the runtime.

To achieve this, the configuration has to be put into the
file "EXT:Configuration/Extbase/RequestHandlers.php".

This patch is considered breaking as the configuration via
typoscript stops working immediately and the configuration
syntax slightly changed.

The easiest way to migrate to the new syntax is to have a
look at configuration files in core extensions.

With typoscript, it was also possible to override
configuration keys and therefore completely override
request handlers set by core extensions. This is no
longer possible and considered bad practice anyway.
A suitable request handler is now only determined by
its priority.

Releases: master
Resolves: #88687
Change-Id: I915d2af221f76c1ee882761f2087b985e5584bb0
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61226
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
5 months ago[BUGFIX] Always provide default language 18/61218/4
Andreas Fernandez [Wed, 3 Jul 2019 14:02:08 +0000 (16:02 +0200)]
[BUGFIX] Always provide default language

The TranslationConfigurationProvider should always provide the default
language, even if the backend user doesn't have permissions configured.

This is due to the fact that some actions always require the presence
of the default language. This is a regression introduced with sites.

This patch always adds the default languages, as it was with pseudo
sites in place.

Resolves: #88504
Releases: master, 9.5
Change-Id: I2a8be4d399f7c24f8e2f8ec53374d9f419e92b71
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61218
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Frank Naegler <frank.naegler@typo3.org>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: Georg Ringer <georg.ringer@gmail.com>
Reviewed-by: Frank Naegler <frank.naegler@typo3.org>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
5 months ago[BUGFIX] Use all available languages from all sites for permissions 99/61199/5
Benni Mack [Mon, 1 Jul 2019 07:45:23 +0000 (09:45 +0200)]
[BUGFIX] Use all available languages from all sites for permissions

Since Pseudo-Sites have been removed,
sys_language is not the recommended way
anymore to detect available languages.

It is however possible to use all site
configurations to select a language to
limit the language to a backend user / group
with proper labels now.

Resolves: #88659
Releases: master
Change-Id: Ifbbaba28897eb06e5d574742a1094c90b03ba8f3
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61199
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Riccardo De Contardi <erredeco@gmail.com>
Tested-by: Georg Ringer <georg.ringer@gmail.com>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Georg Ringer <georg.ringer@gmail.com>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
5 months ago[TASK] Harden \TYPO3\CMS\Extbase\Persistence\Generic\Storage\Typo3DbBackend 05/61205/6
Alexander Schnitzler [Wed, 3 Jul 2019 10:03:26 +0000 (12:03 +0200)]
[TASK] Harden \TYPO3\CMS\Extbase\Persistence\Generic\Storage\Typo3DbBackend

- Use strict type mode
- Use type hints whereever possible
- Use type casts according to phpstan results

Releases: master
Resolves: #88666
Change-Id: I4d93c3e3c75f5f6ca6b53bd73acffe73d7b6a58e
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61205
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Tested-by: Frank Naegler <frank.naegler@typo3.org>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: Frank Naegler <frank.naegler@typo3.org>
5 months ago[!!!][TASK] Remove `additionalJavaScriptSubmit` from FormEngine 61/60861/12
Andreas Fernandez [Sun, 2 Jun 2019 16:46:21 +0000 (18:46 +0200)]
[!!!][TASK] Remove `additionalJavaScriptSubmit` from FormEngine

With RequireJS in place, it is possible to minimize the amount of inline
JavaScript in the backend. This patch removes FormEngine's
`additionalJavaScriptSubmit` feature that registers additional submit
handlers and allows to abort the form submission.

This feature is rarely used at all, but can be achieved using a RequireJS
module that registers a callback in `TYPO3/CMS/Backend/DocumentSaveActions`.

Since the feature is gone, a lot of global code within TBE_EDITOR is
removed as well.

Resolves: #88667
Releases: master
Change-Id: I92f26aa52cafab5df30a706ea95f1e1702a4a778
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/60861
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Frank Naegler <frank.naegler@typo3.org>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
Reviewed-by: Frank Naegler <frank.naegler@typo3.org>
5 months ago[!!!][BUGFIX] Remove f:spaceless from default layout 58/58858/4
Georg Ringer [Tue, 6 Nov 2018 15:10:34 +0000 (16:10 +0100)]
[!!!][BUGFIX] Remove f:spaceless from default layout

As the ViewHelper `f:spaceless` removes too many spaces it should not be
used in the default layouts.

Resolves: #86862
Releases: master
Change-Id: Ie7f66554f240da9823899f357811903fa8285956
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/58858
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Benjamin Kott <benjamin.kott@outlook.com>
Tested-by: Torben Hansen <derhansen@gmail.com>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Benjamin Kott <benjamin.kott@outlook.com>
Reviewed-by: Torben Hansen <derhansen@gmail.com>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
5 months ago[TASK] Move "Refresh required" modal interception into JavaScript land 04/61204/3
Andreas Fernandez [Mon, 1 Jul 2019 10:25:58 +0000 (12:25 +0200)]
[TASK] Move "Refresh required" modal interception into JavaScript land

The "Refresh required" is currently built in PHP and invoked when changing
a field that is explictly configured as "onChange => reload" in TCA. Since
we aren't limited to the technology of our time anymore, the main logic
can get moved into FormEngine.js and only registration is kept in
FormEngine for now.

This commit also removed some superfluous usages of
`TBE_EDITOR_fieldChanged`, as those are already handled by FormEngine.

Resolves: #88665
Releases: master
Change-Id: I255b70fba7af8253c6bc02611029a74a57a2a043
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61204
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Frank Naegler <frank.naegler@typo3.org>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Frank Naegler <frank.naegler@typo3.org>
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
5 months ago[TASK] Streamline ClassSchema property api 01/61101/7
Alexander Schnitzler [Thu, 20 Jun 2019 14:32:10 +0000 (16:32 +0200)]
[TASK] Streamline ClassSchema property api

This patch tackles three different issues with the current
ClassSchema property api.

1) Due to the history and the refactoring of the ReflectionService,
   the ClassSchema class cached data redundantly. Information like
   the type of a property has been stored multiple times in different
   cache keys. With this patch, the redundancy has been removed.

2) The information about properties had been roughly grouped by the
   ones gathered by php reflection and the ones gathered from doc
   blocks and/or annotations. This kind of grouping had also been
   exposed to the public by different methods in the Property class.

   Said grouping has been removed and the api does no longer allow
   for requesting annotation data. The purpose of the api is to tell
   the status quo of the information about a property, regardless of
   how said information had been gathered in the first place.

   Instead of exposing the annotation data itself via method
   `getAnnotationValue('lazy')`, there is a specific method for each
   relevant piece of information like `isLazy()`.

3) A lot of information about properties are boolean values which
   had been stored as separate keys in the cache. All boolean keys
   are now represented by a BitSet, which saves quite a lot of
   bytes during serialization of ClassSchema instances.

Releases: master
Resolves: #88612
Change-Id: I838c7b996275341d4ee65e6b6c6a4f7de1b92e28
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61101
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
5 months ago[TASK] Switch to json_encode/json_decode for Extbase arguments 23/61223/2
Oliver Hader [Wed, 3 Jul 2019 15:46:13 +0000 (17:46 +0200)]
[TASK] Switch to json_encode/json_decode for Extbase arguments

Extbase argument mapping and request building can be optimized
by using json_encode instead of serialize which is a bit more
"space-saving".

Besides that information in [__referrer][arguments] is dropped
which was supposed to have happened in TYPO3 v8 already.

Resolves: #88682
Releases: master
Change-Id: Ifbb4192803378b1c1984405bdca04c282b8f4335
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61223
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Tested-by: Alexander Schnitzler <review.typo3.org@alexanderschnitzler.de>
Tested-by: Johannes Seipelt <johannes.seipelt@3m5.de>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: Alexander Schnitzler <review.typo3.org@alexanderschnitzler.de>
Reviewed-by: Johannes Seipelt <johannes.seipelt@3m5.de>
5 months ago[BUGFIX] Adapt SendEmailCommandTest for symfony/mailer 33/61233/2
Benjamin Franzke [Fri, 5 Jul 2019 11:25:51 +0000 (13:25 +0200)]
[BUGFIX] Adapt SendEmailCommandTest for symfony/mailer

The tests produced a warning which didn't cause CI to abort,
but the test was actually skipped:

1) TYPO3\CMS\Core\Tests\Unit\Command\SendEmailCommandTest
     ::executeWillFlushTheQueue
   Trying to configure method "flushQueue" which cannot be configured
   because it does not exist, has not been specified, is final, or is
   static

Resolves: #88692
Related: #88643
Releases: master
Change-Id: I3077a011e19050986585e9c788f5db03d18595d3
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61233
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Tested-by: Alexander Schnitzler <review.typo3.org@alexanderschnitzler.de>
Tested-by: Benjamin Franzke <bfr@qbus.de>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Alexander Schnitzler <review.typo3.org@alexanderschnitzler.de>
Reviewed-by: Benjamin Franzke <bfr@qbus.de>
5 months ago[TASK] Remove unneeded SingletonInstance resets in recent extbase tests 34/61234/2
Benjamin Franzke [Fri, 5 Jul 2019 11:54:51 +0000 (13:54 +0200)]
[TASK] Remove unneeded SingletonInstance resets in recent extbase tests

These were introduced with the recent extbase configuration manager
hardening but are not needed, because there are no singletons
triggered via makeInstance in these tests.

Change-Id: Iae4d55acd8a02997dd8fc256231c39503a8cfc88
Resolves: #88693
Related: #87628
Releases: master
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61234
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Alexander Schnitzler <review.typo3.org@alexanderschnitzler.de>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Alexander Schnitzler <review.typo3.org@alexanderschnitzler.de>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
5 months ago[!!!][TASK] Harden extbase configuration managers 24/59624/8
Alexander Schnitzler [Tue, 2 Jul 2019 15:12:29 +0000 (17:12 +0200)]
[!!!][TASK] Harden extbase configuration managers

- Use strict type mode
- Use type hints whereever possible

Releases: master
Resolves: #87628
Change-Id: I97ccf3d4ca66828efbb59b49786eb69e7de3c925
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/59624
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Benni Mack <benni@typo3.org>
Tested-by: Frank Naegler <frank.naegler@typo3.org>
Reviewed-by: Benni Mack <benni@typo3.org>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Frank Naegler <frank.naegler@typo3.org>
5 months ago[!!!][TASK] Drop FormEngine popup configuration 95/61195/3
Andreas Fernandez [Sun, 30 Jun 2019 06:12:46 +0000 (08:12 +0200)]
[!!!][TASK] Drop FormEngine popup configuration

The options `options.popupWindowSize` and `options.rte.popupWindowSize`
used to configure popup sizes have been removed.

Most of the popups are rendered as modals that don't allow configured
sizes, the remaining popups have hardcoded sizes.

Resolves: #88657
Releases: master
Change-Id: Ide212d0669e8c4bc199263c5fe868529cbbc7930
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61195
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Björn Jacob <bjoern.jacob@tritum.de>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Johannes Seipelt <johannes.seipelt@3m5.de>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
5 months ago[TASK] Harden \TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory 01/61201/4
Alexander Schnitzler [Mon, 1 Jul 2019 07:58:39 +0000 (09:58 +0200)]
[TASK] Harden \TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory

- Use strict type mode
- Use type hints whereever possible
- Use type casts according to phpstan results

Releases: master
Resolves: #88663
Change-Id: Ic4cf7fe508f62b2a2fd4d2e809f17628c3ad347b
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61201
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Benni Mack <benni@typo3.org>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: Benni Mack <benni@typo3.org>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
5 months ago[TASK] Harden \TYPO3\CMS\Extbase\Utility\DebuggerUtility 09/61109/4
Alexander Schnitzler [Thu, 4 Jul 2019 13:02:28 +0000 (15:02 +0200)]
[TASK] Harden \TYPO3\CMS\Extbase\Utility\DebuggerUtility

- Use strict type mode
- Use type hints whereever possible
- Use type casts according to phpstan results

Releases: master
Resolves: #88603
Change-Id: I54d3a036a7acdfe75e075269c000c03b7db3401b
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61109
Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
5 months ago[TASK] Switch to json_encode/decode for state saving 20/61220/2
Benni Mack [Wed, 3 Jul 2019 14:38:40 +0000 (16:38 +0200)]
[TASK] Switch to json_encode/decode for state saving

Various places (Trees, Inline Data) can be optimized by
using a more "space-saving" and faster approach.

By using json_encode/decode instead of serializing the
data, the stored information in "uc" of Backend Users
will be vastly smaller when dealing with larger installations.

Resolves: #88680
Releases: master
Change-Id: I59e83c8c7615e9da63b04ebb4930c2b68b38ad7c
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61220
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Tested-by: Oliver Hader <oliver.hader@typo3.org>
Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
5 months ago[!!!][FEATURE] Replace SwiftMailer with symfony/mailer and symfony/mime 52/61152/12
Benni Mack [Wed, 26 Jun 2019 05:24:29 +0000 (07:24 +0200)]
[!!!][FEATURE] Replace SwiftMailer with symfony/mailer and symfony/mime

SwiftMailer is not in active development anymore
as the author created the successor symfony/mailer
and symfony/mime packages to create and send
emails.

This is a breaking change, as PHP mail() is not
supported anymore. This is now automatically
switched to "sendmail".

In addition \Symfony\Mime\Email has a different
signature than \Swift_Message, which will
cause some trouble, however we've managed
to overcome most of that functionality to
stay backwards-compatible.

Also, all extensions extending from SwiftMailer
will fail as the package is be removed
with this patch.

Spooling has been reimplemented as direct transport
methods (DelayedTransportInterface) instead of
Symfony Messaging for the time being.

Used composer commands:
 * composer require symfony/mailer symfony/mime
 * composer remove swiftmailer/swiftmailer

Resolves: #88643
Releases: master
Change-Id: Ic02db633392f1d0d7b7061e7b322435f892d2c04
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61152
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Tested-by: Georg Ringer <georg.ringer@gmail.com>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Georg Ringer <georg.ringer@gmail.com>
5 months ago[!!!][TASK] Remove import of PHP files of admins from impexp 21/61221/3
Benni Mack [Wed, 3 Jul 2019 15:47:44 +0000 (17:47 +0200)]
[!!!][TASK] Remove import of PHP files of admins from impexp

The functionality, which was only allowed for admins, does not
consider FAL restrictions. In order to be consistent with FAL, this
is removed.

Resolves: #88681
Releases: master
Change-Id: I7a42539b5391af7d730deabffbe638a2ceed1a05
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61221
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Oliver Hader <oliver.hader@typo3.org>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
5 months ago[TASK] Fix deprecation warning in idnaEncode 19/61219/2
Simon Gilli [Wed, 3 Jul 2019 14:33:02 +0000 (16:33 +0200)]
[TASK] Fix deprecation warning in idnaEncode

__METHOD__ already includes the class name so __CLASS__ has to be
removed.

Resolves: #88679
Releases: master
Change-Id: I9a5fb6a4622a811f18547b55b22fdde0ea4ad62c
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61219
Tested-by: Alexander Schnitzler <review.typo3.org@alexanderschnitzler.de>
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Alexander Schnitzler <review.typo3.org@alexanderschnitzler.de>
Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
5 months ago[TASK] Streamline PageRenderer class 14/61214/2
Benni Mack [Tue, 2 Jul 2019 16:31:44 +0000 (18:31 +0200)]
[TASK] Streamline PageRenderer class

Some methods are not in use anymore, and also
some FQCN can be shortened in order to
clean up this class for further refactorings.

Resolves: #88673
Releases: master
Change-Id: I642caec9386945d0217984b76f586a9a24e13d14
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61214
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Alexander Schnitzler <review.typo3.org@alexanderschnitzler.de>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Sven Juergens <typo3@blue-side.de>
Reviewed-by: Alexander Schnitzler <review.typo3.org@alexanderschnitzler.de>
Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
5 months ago[BUGFIX] Remove obsolete IRRE-related functions 96/61196/2
Andreas Fernandez [Sun, 30 Jun 2019 06:32:29 +0000 (08:32 +0200)]
[BUGFIX] Remove obsolete IRRE-related functions

With the refactoring of client-side IRRE, some functions in TBE_EDITOR
became obsolete. Those are removed now.

Resolves: #88658
Related: #88182
Releases: master
Change-Id: I3e667b70b9108befd88f1a7ee067d73cfffafeb2
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61196
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Tested-by: Oliver Hader <oliver.hader@typo3.org>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Björn Jacob <bjoern.jacob@tritum.de>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
5 months ago[!!!][FEATURE] Introduce migration wizard for changed flexform fields 50/60450/24
Jan Stockfisch [Thu, 11 Apr 2019 17:25:30 +0000 (19:25 +0200)]
[!!!][FEATURE] Introduce migration wizard for changed flexform fields

Rename ext:felogin's flexform fields. Add prefix `settings.` to all of
them. This is for the later extbase change to easily access the flexform
values via $this->settings in the extbase controllers.

An update wizard is provided to migrate all existing felogin plugins
which are stored in the database.

Resolves: #88129
Releases: master
Change-Id: I76158d8c73d5510fc537fcd5d5bbb376b156c1e7
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/60450
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
5 months ago[TASK] Improve ViewHelper documentation 04/61104/9
Daniel Siepmann [Fri, 21 Jun 2019 07:42:44 +0000 (09:42 +0200)]
[TASK] Improve ViewHelper documentation

* Add examples to ViewHelpers that did not have any example yet.
* Add cross references between ViewHelpers where a different ViewHelper
  was mentioned.
* Add full stop to end if sentences.
* Fix indentation within examples.
* Add some syntax like code.
* Fix escaping of PHP classes with namespaces by wrapping them with
  :php:`` text role.
* Use https for urls to php.net.
* Remove '/en/' path from urls to php.net. This ensures the current user
  language is auto detected. Not forcing anyone to keep english.

Relates: #88600
Releases: master, 9.5
Change-Id: I2394890a20adba06719fa35990044057346dfb2b
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61104
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Tested-by: Tymoteusz Motylewski <t.motylewski@gmail.com>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Tymoteusz Motylewski <t.motylewski@gmail.com>
5 months ago[BUGFIX] Change comparison in BasicFileUtility 85/60885/4
Georg Ringer [Thu, 6 Jun 2019 03:20:15 +0000 (05:20 +0200)]
[BUGFIX] Change comparison in BasicFileUtility

Due to an unrelated change within #76257,
BasicFileUtility never accounts for proper
creating a randomly unique name.

Resolves: #88455
Related: #76257
Releases: master, 9.5, 8.7
Change-Id: I41fe95a9b5b68a7d29cf529f0877331197990940
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/60885
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Benni Mack <benni@typo3.org>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
Tested-by: Benni Mack <benni@typo3.org>
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
5 months ago[BUGFIX] Send "Set-Cookie" HTTP header as multi line 67/60867/11
Markus Poerschke [Mon, 3 Jun 2019 15:06:27 +0000 (17:06 +0200)]
[BUGFIX] Send "Set-Cookie" HTTP header as multi line

To set multiple cookies at the same request, the "Set-Cookie" header
must be sent as multi line. The default behavior, a comma separated list,
will cause that only the first cookie is set.

Resolves: #88482
Releases: master, 9.5
Change-Id: Ife4dfeb9e4e7c0452d8da10740450c8cbd26ac3e
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/60867
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Benni Mack <benni@typo3.org>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Benni Mack <benni@typo3.org>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
5 months ago[TASK] Harden exceptions in Extbase 12/61112/2
Alexander Schnitzler [Fri, 21 Jun 2019 13:23:23 +0000 (15:23 +0200)]
[TASK] Harden exceptions in Extbase

- Use strict type mode
- Use type hints whereever possible

Releases: master
Resolves: #88606
Change-Id: I44ed34b1dc81b22b9e1f68f7523d3c1f5311f20a
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61112
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Benni Mack <benni@typo3.org>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Benni Mack <benni@typo3.org>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
5 months ago[TASK] Follow-up: Replace config.persistence.classes typoscript 13/61113/4
Alexander Schnitzler [Fri, 21 Jun 2019 13:42:57 +0000 (15:42 +0200)]
[TASK] Follow-up: Replace config.persistence.classes typoscript

With #87623, a couple of fixture classes have been added to the
Classes folder instead of the Tests folder. With this patch the
fixture classes are moved to their proper location.

Releases: master
Resolves: #88607
Relates: #87623
Change-Id: Ib90f3c7e628270bd5bb16a7d95c1df5cf5fe8e9a
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61113
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Benni Mack <benni@typo3.org>
5 months ago[BUGFIX] Use correct QueryBuilder for NewRecord wizard 00/61200/2
Benni Mack [Mon, 1 Jul 2019 07:55:26 +0000 (09:55 +0200)]
[BUGFIX] Use correct QueryBuilder for NewRecord wizard

A database querybuilder for sys_language is requested,
however the database query is made on the "pages" table.

Resolves: #88661
Releases: master, 9.5
Change-Id: Ibb4ed52a87321af3d1ce80cf8a25053f62349dba
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61200
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Achim Fritz <af@achimfritz.de>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
5 months ago[BUGFIX] ImmediateResponseException needs to be relayed 70/60370/6
Jonas Schwabe [Thu, 4 Apr 2019 10:21:17 +0000 (12:21 +0200)]
[BUGFIX] ImmediateResponseException needs to be relayed

ImmediateResponseException were not handled correctly during content
object rendering when running in a production environment.
This patch makes sure that ImmediateResponses are handled as such instead
of just printing them during template rendering.

Resolves: #88080
Releases: master, 9.5
Change-Id: Id211b4064b438b3df0744c7a0de90b642ed872de
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/60370
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Benni Mack <benni@typo3.org>
Tested-by: Jonas Schwabe <jonas.schwabe@eyeworkers.de>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Benni Mack <benni@typo3.org>
Reviewed-by: Jonas Schwabe <jonas.schwabe@eyeworkers.de>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
5 months ago[BUGFIX] Menu of updated pages skips current page 62/60462/2
Benni Mack [Sat, 13 Apr 2019 05:43:20 +0000 (07:43 +0200)]
[BUGFIX] Menu of updated pages skips current page

When using beginAtLevel = 1 is set, then HMENU
should not include the current page at all, so this
is now fixed by "getTreeList" handing in a positive
page ID.

Resolves: #23255
Releases: master, 9.5
Change-Id: Ie596323950c961b86e4ec80fb4ef17a0d412a3e2
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/60462
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Riccardo De Contardi <erredeco@gmail.com>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Tested-by: Daniel Gorges <daniel.gorges@b13.de>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Daniel Gorges <daniel.gorges@b13.de>
Reviewed-by: Benni Mack <benni@typo3.org>
5 months ago[BUGFIX] Code block in docs regarding site base variants 69/61169/2
Daniel Siepmann [Sat, 29 Jun 2019 08:07:47 +0000 (10:07 +0200)]
[BUGFIX] Code block in docs regarding site base variants

Do not use inline notion of providing a whole block of code.

Relates: #88630
Releases: master, 9.5
Change-Id: I2f691cbdd4d617bf1a0ac4a82000f809f865c069
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61169
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Georg Ringer <georg.ringer@gmail.com>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Georg Ringer <georg.ringer@gmail.com>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
5 months ago[BUGFIX] Fix syntax and logic errors in BE Fluid templates 02/60802/6
Claus Due [Thu, 23 May 2019 10:47:49 +0000 (12:47 +0200)]
[BUGFIX] Fix syntax and logic errors in BE Fluid templates

Fixes an invalid syntax occurrence in the "PageZero.html"
template from EXT:tstemplate. And fixes a logical error
plus incorrect XML tag nesting in the partial template
"DocHeader.html" from EXT:backend.

Change-Id: Ib38fbb2d80cd8e24a2400ec7d2dbd12dee5605ec
Resolves: #88422
Releases: master, 9.5
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/60802
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Jonas Eberle <flightvision@googlemail.com>
Tested-by: Guido Schmechel <guido.schmechel@brandung.de>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Jonas Eberle <flightvision@googlemail.com>
Reviewed-by: Guido Schmechel <guido.schmechel@brandung.de>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
5 months ago[TASK] Harden \TYPO3\CMS\Extbase\Utility\FrontendSimulatorUtility 10/61110/3
Alexander Schnitzler [Fri, 21 Jun 2019 12:45:17 +0000 (14:45 +0200)]
[TASK] Harden \TYPO3\CMS\Extbase\Utility\FrontendSimulatorUtility

- Use strict type mode
- Use type hints whereever possible

Releases: master
Resolves: #88604
Change-Id: Ie2641c04a7e97313c657152c14bcf5b15d9d6a74
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61110
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Jonas Eberle <flightvision@googlemail.com>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: Jonas Eberle <flightvision@googlemail.com>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
5 months ago[BUGFIX] Add tests for email via typolink 51/61151/2
Benni Mack [Tue, 25 Jun 2019 10:38:32 +0000 (12:38 +0200)]
[BUGFIX] Add tests for email via typolink

Resolves: #88287
Releases: master
Change-Id: I4e6efbd00caca8c1ed01252f1dde30f36330640e
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61151
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Jonas Eberle <flightvision@googlemail.com>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Jonas Eberle <flightvision@googlemail.com>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
5 months ago[BUGFIX] Use correct PHP syntax in code example 92/61092/3
mstaatz [Wed, 19 Jun 2019 10:59:08 +0000 (12:59 +0200)]
[BUGFIX] Use correct PHP syntax in code example

Releases: master, 9.5
Resolves: #88591
Change-Id: I45588bfd8f1dd26debec6e06d6a3466a7458496a
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61092
Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: Guido Schmechel <guido.schmechel@brandung.de>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
Tested-by: Oliver Klee <typo3-coding@oliverklee.de>
Tested-by: Guido Schmechel <guido.schmechel@brandung.de>
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
5 months ago[BUGFIX] Prevent scrollbar in "Environment Overview" modal 41/61041/7
Jonas Eberle [Fri, 14 Jun 2019 19:41:56 +0000 (21:41 +0200)]
[BUGFIX] Prevent scrollbar in "Environment Overview" modal

Wrap potentially long version strings to prevent a horizontal
scrollbar in the modal content.

Introduces CSS class "text-wrap-allowed".

Resolves: #88522
Releases: master, 9.5
Change-Id: I848ecc111ec4879caf12b77f5308f5eadd403ffa
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61041
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Riccardo De Contardi <erredeco@gmail.com>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
5 months ago[!!!][TASK] Remove "sys_template.nextLevel" 58/61158/3
Benni Mack [Thu, 27 Jun 2019 12:43:29 +0000 (14:43 +0200)]
[!!!][TASK] Remove "sys_template.nextLevel"

The special handling "nextLevel" in TypoScript templates
to only load a specific sys_template on the next level (subpages and
further down the rootline) but not on the current level,
is removed.

It is recommended to use proper inclusions and TypoScript
conditions instead.

This reduces complexity within the TemplateService parser,
and for newcomers a very confusing option after gathering
some feedback on this topic.

The database field "sys_template.nextLevel" is therefore
removed.

Resolves: #88640
Releases: master
Change-Id: I06e14d6dfbde82eb36f2ffc30b61bd9870906246
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61158
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Benjamin Kott <benjamin.kott@outlook.com>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
5 months ago[BUGFIX] Convert class aliases of switchable controller actions to FQCN's 06/60906/3
Alexander Schnitzler [Sun, 9 Jun 2019 09:28:44 +0000 (11:28 +0200)]
[BUGFIX] Convert class aliases of switchable controller actions to FQCN's

When the patch https://forge.typo3.org/issues/87550 changed the controller
configuration of plugins and modules to use fully qualified controller
class names instead of just controller aliases, the override mechanism
called switchable controller actions, that can be used via typoscript
and flexforms broke.

This is due to the fact that switchable controller actions are usually
still used with controller aliases rather than fully qualified controller
class names.

To fix this, method overrideSwitchableControllerActions of class
\TYPO3\CMS\Extbase\Configuration\AbstractConfigurationManager has been
adjusted to convert controller aliases to FQCN's before overriding the
controller configuration.

Releases: master
Resolves: #88513
Relates: #87550
Change-Id: Ie2d1eb4b64d03d4e17d08a85aa7f8e548bff92bb
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/60906
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Benni Mack <benni@typo3.org>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Benni Mack <benni@typo3.org>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
5 months ago[TASK] Replace `TYPO3/CMS/Backend/SplitButtons` 64/61164/4
Andreas Fernandez [Fri, 28 Jun 2019 09:26:51 +0000 (11:26 +0200)]
[TASK] Replace `TYPO3/CMS/Backend/SplitButtons`

Since FormEngine doesn't use split buttons anymore with TYPO3 v9, the
JavaScript module `TYPO3/CMS/Backend/SplitButtons` has been replaced with
`TYPO3/CMS/Backend/DocumentSaveActions`.

The old module is still in place, but usage will trigger a deprecation
warning in the browser's console.

Resolves: #88651
Releases: master
Change-Id: If180f080b956804d49ca928afe4d86d07d1939bb
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61164
Tested-by: Frank Naegler <frank.naegler@typo3.org>
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Frank Naegler <frank.naegler@typo3.org>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
5 months ago[TASK] Install Tool: Move action buttons into modal footer 99/60899/3
Andreas Fernandez [Fri, 7 Jun 2019 14:51:53 +0000 (16:51 +0200)]
[TASK] Install Tool: Move action buttons into modal footer

Resolves: #88523
Releases: master
Change-Id: I26404c120702bac669b3ad3aaf9280a76eb8f0e2
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/60899
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Benni Mack <benni@typo3.org>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Benni Mack <benni@typo3.org>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
5 months ago[BUGFIX] Improve performance with symfony/property-info 76/61076/5
Alexander Schnitzler [Mon, 17 Jun 2019 16:12:56 +0000 (18:12 +0200)]
[BUGFIX] Improve performance with symfony/property-info

With the introduction of symfony/property-info, the class
\Symfony\Component\PropertyInfo\Extractor\PhpDocExtractor
has been used to extract property types from the php doc.

Unfortunately said extractor class doesn't cache the so
called context object, which is created repeatedly for
each property of each class.

The context object is used to determine non FQCN's and
its creation comes at very high costs.

To fix this issue, a custom PhpDocExtractor class has
been created which acts just like the original one, but
which caches the context objects.

Releases: master
Fixes: #88033
Change-Id: I54bec5b8adadeb6bde107547cbd115fa8be97526
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61076
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Benni Mack <benni@typo3.org>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Benni Mack <benni@typo3.org>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
5 months ago[FEATURE] Set Twitter Card Type in page properties 63/61163/4
Richard Haeser [Thu, 27 Jun 2019 20:42:34 +0000 (22:42 +0200)]
[FEATURE] Set Twitter Card Type in page properties

This option will make it possible to select a type of Twitter Card
that should be used when your page is shared on Twitter.

Resolves: #88648
Releases: master
Change-Id: I9b487cf51ae6380fe771e1bcbbfd196d8b952f0f
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61163
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Tested-by: Riny van Tiggelen <info@online-gamer.nl>
Tested-by: Richard Haeser <richard@maxserv.com>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Björn Jacob <bjoern.jacob@tritum.de>
Reviewed-by: Riny van Tiggelen <info@online-gamer.nl>
Reviewed-by: Richard Haeser <richard@maxserv.com>
5 months ago[!!!][TASK] Remove AbstractService inheritance from AbstractAuthService 25/61125/4
Benni Mack [Tue, 25 Jun 2019 04:23:35 +0000 (06:23 +0200)]
[!!!][TASK] Remove AbstractService inheritance from AbstractAuthService

The current Authentication Service API looks like this:

AbstractService
-> AbstractAuthenticationService
-> AuthenticationService

Most of the functionality of AbstractService is not
used and leads to a confusing PHP inheritance structure,
where most functionality is not needed actually.

Since there are no proper contracts APIs for neither
makeInstanceService / Service API nor Authentication,
the first step is to decouple the logic of both
areas and allow Authentication to continue without
a strong dependency on AbstractService.

This is a pre-patch to decouple Authentication logic
from Service logic.

Resolves: #88646
Releases: master
Change-Id: I525f7510d06747fcb1e204c63cf7cbc3296a54a2
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61125
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Tested-by: Georg Ringer <georg.ringer@gmail.com>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Georg Ringer <georg.ringer@gmail.com>
5 months ago[!!!][TASK] Remove 4th parameter of enableFields 73/61073/4
Benni Mack [Mon, 17 Jun 2019 13:26:44 +0000 (15:26 +0200)]
[!!!][TASK] Remove 4th parameter of enableFields

Since Versioning is completely handled via
the Context API and set within PageRepository
directly since TYPO3 v9, using the fourth
parameter would result in an invalid scenario.

Instead PageRepository->where_hid_del in
a live scenario now always contains (pid!=-1)
which filters out all non-versioned records.

This is a breaking change to avoid confusion,
however in regular scenarios this does
not affect the system, as PageRepository->versionOL()
filters out these cases in live workspace
anyways.

Resolves: #88574
Releases: master
Change-Id: I538c04997cb67e30c58a4dfa515acd751f868e9c
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61073
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Tested-by: Georg Ringer <georg.ringer@gmail.com>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Georg Ringer <georg.ringer@gmail.com>
5 months ago[BUGFIX] Add documentation for site-language base variants 62/61162/4
Benni Mack [Thu, 27 Jun 2019 20:17:12 +0000 (22:17 +0200)]
[BUGFIX] Add documentation for site-language base variants

Since bugfix #87831 it is possible to also add base variants
for specific languages, however this was not documented.

See

https://review.typo3.org/c/Packages/TYPO3.CMS/+/59840

for the related change.

Related: #87831
Resolves: #88647
Releases: master, 9.5
Change-Id: I9c170fde6a02f98843eddc3388ced90bb1997849
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61162
Tested-by: Björn Jacob <bjoern.jacob@tritum.de>
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Björn Jacob <bjoern.jacob@tritum.de>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
5 months ago[BUGFIX] Use correct PHP syntax in code example 91/61091/3
mstaatz [Wed, 19 Jun 2019 10:10:40 +0000 (12:10 +0200)]
[BUGFIX] Use correct PHP syntax in code example

Releases: master,9.5
Resolves: #88589
Change-Id: If71c06dd3033e7d73abc2baf3cf3b786cd45e331
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61091
Tested-by: Alexander Schnitzler <review.typo3.org@alexanderschnitzler.de>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Alexander Schnitzler <review.typo3.org@alexanderschnitzler.de>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
5 months ago[!!!][TASK] Drop DB field sys_language.static_lang_isocode 87/60887/5
Benni Mack [Thu, 6 Jun 2019 05:10:37 +0000 (07:10 +0200)]
[!!!][TASK] Drop DB field sys_language.static_lang_isocode

The database field "static_lang_isocode" in the DB table
"sys_language" is configured via static_info_tables, however
due to legacy reasons, this was added in TYPO3 Core,
as some references were put there. It is now possible
to remove any references to this field, and have the third-party
extension deal with it.

Resolves: #88583
Releases: master
Change-Id: I5c366c84d21e0d291ec32d44c0b2c2e1064f669d
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/60887
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: Björn Jacob <bjoern.jacob@tritum.de>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
5 months ago[TASK] Deprecate TSFE->sys_language_isocode 02/61002/4
Benni Mack [Thu, 13 Jun 2019 13:31:32 +0000 (15:31 +0200)]
[TASK] Deprecate TSFE->sys_language_isocode

Due to the introduction of Site Handling, the public property
`$TSFE->sys_language_isocode` is not necessary anymore,
as this value is used outside of TSFE fully, and not needed as
public property to hold the state.

It is marked as deprecated.

Resolves: #88559
Releases: master
Change-Id: If02eb5b342fec4f83a9585dbc29fc13c8adda88e
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61002
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
5 months ago[!!!][TASK] Handle SoftRefParser without references 24/61124/3
Benni Mack [Tue, 25 Jun 2019 04:19:15 +0000 (06:19 +0200)]
[!!!][TASK] Handle SoftRefParser without references

The softRefParser logic previously contained its own
factory within BackendUtility with a magic singleton
logic built into "$GLOBALS['T3_VAR']['softRefParser']".

This has changed by building custom Singleton
Interfaces instead.

Resolves: #88638
Releases: master
Change-Id: I43f30c18b27f75672fbc2b5cc2cbdb725eb6f44a
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61124
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
5 months ago[TASK] fix list formatting 60/61160/3
Riccardo De Contardi [Thu, 27 Jun 2019 14:32:55 +0000 (14:32 +0000)]
[TASK] fix list formatting

Add some empty lines to allow correct list formatting, like on
https://github.com/TYPO3-Documentation/TYPO3CMS-Reference-CoreApi/edit/mas
ter/Documentation/ApiOverview/TypoScriptSyntax/Syntax/Includes.rst

Releases: master, 9.5
Resolves: #88641
Change-Id: Ice387d8b97d8b74ea859c92d274bcb535005fdae
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61160
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Björn Jacob <bjoern.jacob@tritum.de>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Björn Jacob <bjoern.jacob@tritum.de>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
5 months ago[TASK] Removed leftovers of AltPageTitleProvider 61/61161/2
Richard Haeser [Thu, 27 Jun 2019 19:29:31 +0000 (21:29 +0200)]
[TASK] Removed leftovers of AltPageTitleProvider

Removed the mention of altPageTitleProvider that were left on some
places after removing this deprecated provider.

Resolves: #88644
Releases: master
Change-Id: I0626373204706e7b57224ecd74b739d3b36d745b
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61161
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Benni Mack <benni@typo3.org>
Tested-by: Kevin Appelt <kevin.appelt@icloud.com>
Tested-by: Richard Haeser <richard@maxserv.com>
Reviewed-by: Benni Mack <benni@typo3.org>
Reviewed-by: Simon Gilli <typo3@gilbertsoft.org>
Reviewed-by: Kevin Appelt <kevin.appelt@icloud.com>
Reviewed-by: Richard Haeser <richard@maxserv.com>
5 months ago[TASK] Open ElementBrowser event based in FormEngine 18/60818/4
Andreas Fernandez [Fri, 24 May 2019 14:43:22 +0000 (16:43 +0200)]
[TASK] Open ElementBrowser event based in FormEngine

Currently, the ElementBrowser is used in three different places in
FormEngine, all of them trigger it differently. This patch introduces
an event-driven approach and streamlines all usages.

Resolves: #88436
Releases: master
Change-Id: I13e696f29ade0aede6a2466cbca1e27cebc86c61
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/60818
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Benni Mack <benni@typo3.org>
5 months ago[TASK] Remove special singleton handling of makeInstanceService 90/61090/3
Benni Mack [Wed, 19 Jun 2019 09:53:46 +0000 (11:53 +0200)]
[TASK] Remove special singleton handling of makeInstanceService

Calling GeneralUtility::makeInstanceService() stores
the instance as "persistent object". Since TYPO3 4.x this has been
dealt with SingletonInterface, which allows far more flexibility
in various places, as throughout the ENTIRE TYPO3 Core already.

The special handling of having GeneralUtility::makeInstanceService()
stores its own Singleton instances is removed, as the method
calls `GeneralUtility::makeInstance()` as well, which does handle
the SingletonInterface anyway.

For services in general (like Authentication Services), it is useful
to not have them as singleton. The current process within
"makeInstanceService()" now allows to properly "reset()" the
functionality anyway by re-calling "init()", which itself
calls "reset()" as well.

As there are no contracts (interfaces) for Services currently,
this should not interfere with anything existing services.

Resolves: #88588
Releases: master
Change-Id: Iba54715c04e510003c095578a237524ebe9f374f
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61090
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Tested-by: Daniel Sattler <sattler@b13.de>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Daniel Sattler <sattler@b13.de>
Reviewed-by: Benni Mack <benni@typo3.org>
5 months ago[BUGFIX] Decouple ColorPicker from FormEngine 94/61094/2
Andreas Fernandez [Wed, 19 Jun 2019 14:00:22 +0000 (16:00 +0200)]
[BUGFIX] Decouple ColorPicker from FormEngine

Since #87031 the color picker is tightly coupled to FormEngine, causing
issues if not used in FormEngine context, e.g. in Constant Editor.

This patch removes the introduced FormEngine handling and uses minicolors'
events to fix the original reported bug.

Resolves: #88593
Related: #87031
Releases: master, 9.5
Change-Id: Ibb20785785d406bc113035f79bec95d9788866ab
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61094
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Jonas Eberle <flightvision@googlemail.com>
Tested-by: Joerg Kummer <typo3@enobe.de>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Markus Klein <markus.klein@typo3.org>
Reviewed-by: Susanne Moog <look@susi.dev>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
5 months ago[BUGFIX] Correct global/multiple icon in listview 21/61121/3
Sven Juergens [Mon, 24 Jun 2019 13:11:17 +0000 (15:11 +0200)]
[BUGFIX] Correct global/multiple icon in listview

Resolves: #88620
Releases: master, 9.5

Correct global/multiple icon in listview

Change-Id: Id613f06d24148851d428c61c1166fabef1ad65af
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61121
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Benni Mack <benni@typo3.org>
Tested-by: Simon Gilli <typo3@gilbertsoft.org>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Benni Mack <benni@typo3.org>
Reviewed-by: Simon Gilli <typo3@gilbertsoft.org>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
5 months ago[BUGFIX] Consider translated pages in workspaces 44/60944/4
Benni Mack [Wed, 12 Jun 2019 11:04:35 +0000 (13:04 +0200)]
[BUGFIX] Consider translated pages in workspaces

This issue was raised that translated pages do not
show up in the list of records to be published/staged,
as translated pages are in the same table.

So, page handling needs to consider l10n_parent fields,
and check for the UID/l10n_parent, whereas other records
(like pages_language_overlay before) only are checked for
the "pid".

Resolves: #88446
Releases: master, 9.5
Change-Id: I9fe0b0290d4dd52104e15a08bb55e0aa7ab7473c
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/60944
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: matseriks <mats@pixelant.se>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: matseriks <mats@pixelant.se>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
5 months ago[BUGFIX] Do not rely on TYPO3_MODE for FE/BE checks 84/61084/4
Benni Mack [Tue, 18 Jun 2019 09:53:20 +0000 (11:53 +0200)]
[BUGFIX] Do not rely on TYPO3_MODE for FE/BE checks

In order to run a subrequest in Frontend,
TYPO3_MODE kills most of the functionality.

Although it is clear, that TYPO3 Core is not 100% there
yet, some very obvious changes can actually be replaced
with simple TSFE checks instead of TYPO3_MODE.

This is only focused on rendering content (Fluid),
and this happens in FE after TSFE is initialized, for eID
scripts, this would break already.

Resolves: #88581
Releases: master, 9.5
Change-Id: I9c97da60e7df572290e54d53da5eb8dac69e8f7e
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61084
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Daniel Gorges <daniel.gorges@b13.de>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Alexander Schnitzler <review.typo3.org@alexanderschnitzler.de>
Reviewed-by: Daniel Gorges <daniel.gorges@b13.de>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
5 months ago[BUGFIX] Display titles of changelog properly 54/61154/2
Daniel Siepmann [Wed, 26 Jun 2019 16:37:33 +0000 (18:37 +0200)]
[BUGFIX] Display titles of changelog properly

As `\`  is escaping, there has to be an additional `\` in front, in
order to display the `\` as expected.

Resolves: #88634
Releases: master, 9.5
Change-Id: I790079dd3de6e0a3ceb6ebfb93e1a52ad9bb4249
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61154
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Alexander Schnitzler <review.typo3.org@alexanderschnitzler.de>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Alexander Schnitzler <review.typo3.org@alexanderschnitzler.de>
Reviewed-by: Mathias Brodala <mbrodala@pagemachine.de>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
5 months ago[BUGFIX] Use Context API for TemplateService->versionOL 26/61126/2
Benni Mack [Tue, 25 Jun 2019 04:45:16 +0000 (06:45 +0200)]
[BUGFIX] Use Context API for TemplateService->versionOL

The Context API can be used now within
TemplateService to fetch a version overlay, which now
only relies on the PageRepository (which also uses Context API),
to avoid certain magic detection of Frontend/Backend mode.

TemplateService is only used to fetch sys_template
records in this use-case.

Resolves: #88626
Releases: master
Change-Id: I5f6526868af090915748031d50eeaf245049e655
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61126
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Daniel Gorges <daniel.gorges@b13.de>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Daniel Gorges <daniel.gorges@b13.de>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
5 months ago[BUGFIX] Simplify item states in Menu Generation 65/60865/2
Benni Mack [Mon, 3 Jun 2019 11:12:02 +0000 (13:12 +0200)]
[BUGFIX] Simplify item states in Menu Generation

The same if() loop is used for checking menu generation item states
(ACT/IFSUB etc), this can be very much simplified by using
a loop over the available item states which are now defined
as a constant.

Resolves: #88477
Releases: master
Change-Id: If8b7ddbcb2d367954d5757d2957bea6b34f8ed60
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/60865
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Susanne Moog <look@susi.dev>
Tested-by: Daniel Gorges <daniel.gorges@b13.de>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Susanne Moog <look@susi.dev>
Reviewed-by: Daniel Gorges <daniel.gorges@b13.de>
Reviewed-by: Benni Mack <benni@typo3.org>
5 months ago[BUGFIX] Fix ExtensionScanner mismatch 57/61157/2
Benni Mack [Thu, 27 Jun 2019 11:25:48 +0000 (13:25 +0200)]
[BUGFIX] Fix ExtensionScanner mismatch

Due to #88498 a bug within the Extension
Scanner was introduced where the scanner
did not find the expected results due to
wrong information.

Resolves: #88639
Related: #88498
Releases: master
Change-Id: I47f0393fafd4860f058eeba6828b5143b6e1b8c2
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61157
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Benni Mack <benni@typo3.org>
5 months ago[BUGFIX] Use late static binding return type for Enumeration::cast 86/61086/8
Sascha Egerer [Tue, 18 Jun 2019 14:43:18 +0000 (16:43 +0200)]
[BUGFIX] Use late static binding return type for Enumeration::cast

The return type annotation must be `static` instead of `self` as the
method returns an instance of the inheriting class.

Do also replace some occurrences of get_calling_class()
by static::class

Resolves: #88587
Releases: master, 9.5, 8.7
Change-Id: Ib14d016ef733b94ed5a732ed36af8fcfcdee149b
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61086
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Alexander Schnitzler <review.typo3.org@alexanderschnitzler.de>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Alexander Schnitzler <review.typo3.org@alexanderschnitzler.de>
Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
Reviewed-by: Benni Mack <benni@typo3.org>
5 months ago[BUGFIX] Remove non-existing "pseudo-site" logic 23/61123/2
Benni Mack [Tue, 25 Jun 2019 04:16:15 +0000 (06:16 +0200)]
[BUGFIX] Remove non-existing "pseudo-site" logic

There are some leftovers where PseudoSite is mentioned.

Since TYPO3 v10.0 is built on Site Handling completely,
this logic is removed.

Resolves: #88625
Releases: master
Change-Id: I9f3b3a6c9a4bf29c2b509246c02d64aa5f536b4e
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61123
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Daniel Gorges <daniel.gorges@b13.de>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Daniel Gorges <daniel.gorges@b13.de>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
5 months ago[TASK] Ensure PageArgumentValidator is not dependent on TSFE 41/60841/6
Benni Mack [Wed, 29 May 2019 20:49:25 +0000 (22:49 +0200)]
[TASK] Ensure PageArgumentValidator is not dependent on TSFE

Checking if cHash matches any GET parameters can be
done without $TSFE->cHash_array and $TSFE->hash as
all data is built inside PageArguments already.

However, $TSFE->cHash_array is still necessary and
filled as before when ->setPageArguments() is called.

This is a precursor to re-structure the dependencies within
TSFE and PSR-15 middlewares.

Resolves: #88460
Releases: master
Change-Id: I43c2fdc1049d451b3fc9bc06a57b744703a7a323
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/60841
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Daniel Gorges <daniel.gorges@b13.de>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Daniel Gorges <daniel.gorges@b13.de>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
5 months ago[TASK] Unify Backend Route paths for modules 33/60433/5
Benni Mack [Tue, 9 Apr 2019 15:34:08 +0000 (17:34 +0200)]
[TASK] Unify Backend Route paths for modules

Modules which do not set a proper route path themselves
now have a different route path, basically "/module/file/list"
for example, whereas there is a proper prefix with
"/module/" and no trailing slash anymore.

It is still possible to build links to the route paths,
and resolve them properly.

The "old" route paths will stop working in TYPO3 v11.0.

Resolves: #82669
Releases: master
Change-Id: If976df458e87b1199933cf1c42c5d3d8ff2407ba
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/60433
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Susanne Moog <look@susi.dev>
Tested-by: Daniel Gorges <daniel.gorges@b13.de>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Susanne Moog <look@susi.dev>
Reviewed-by: Daniel Gorges <daniel.gorges@b13.de>
Reviewed-by: Benni Mack <benni@typo3.org>
5 months ago[TASK] Use generators for service objects in Authentication 95/61095/5
Benni Mack [Wed, 19 Jun 2019 14:04:13 +0000 (16:04 +0200)]
[TASK] Use generators for service objects in Authentication

The introduction of the Session Framework API in v8
introduced generators for fetching authentication service
objects within `AbstractUserAuthentication`.

Some places were however forgotten, which can
safely replaced with the `$this->getAuthServices()`
method.

Resolves: #88594
Releases: master
Change-Id: I987150be574232b549340f4766bb963baa17fd60
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61095
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Alexander Schnitzler <review.typo3.org@alexanderschnitzler.de>
Tested-by: Daniel Gorges <daniel.gorges@b13.de>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Alexander Schnitzler <review.typo3.org@alexanderschnitzler.de>
Reviewed-by: Daniel Gorges <daniel.gorges@b13.de>
Reviewed-by: Benni Mack <benni@typo3.org>
5 months ago[SECURITY] Disallow insecure deserialization for l18n_diffsource 46/61146/2
Oliver Hader [Tue, 25 Jun 2019 06:42:25 +0000 (08:42 +0200)]
[SECURITY] Disallow insecure deserialization for l18n_diffsource

Serialized values in l18n_diffsource are vulnerable to insecure
deserialization when being invoked in FormEngine or DataHandler.

Resolves: #88323
Releases: master, 9.5, 8.7
Security-Commit: 215de3e52140dc69ccb0e5802ab4234922b1aa63
Security-Bulletin: TYPO3-CORE-SA-2019-020
Change-Id: I03704b35d94e2575e9231656977f3760e6f04e2b
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61146
Tested-by: Oliver Hader <oliver.hader@typo3.org>
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
5 months ago[SECURITY] Deny pages' TSconfig and tsconfig_includes for non-admins 45/61145/2
Oliver Hader [Tue, 25 Jun 2019 06:42:09 +0000 (08:42 +0200)]
[SECURITY] Deny pages' TSconfig and tsconfig_includes for non-admins

Fields `TSconfig` and `tsconfig_includes` of table `pages` can be
misused by restricted users to contain malicious instructions and
lead to cross-site scripting as well as arbitrary code execution.
Since user input cannot be sanitized properly, the field is now
available for admin users only. In addition directory traversal
in TSconfig static includes has been mitigated.

Resolves: #88565
Releases: master, 9.5, 8.7
Security-Commit: b4ab9cd1f0539b3af675b94aa01d26e5c4b3a1d9
Security-Bulletin: TYPO3-CORE-SA-2019-019
Change-Id: I712364fde6a76ad761a0b738756cb151dc5c22e1
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61145
Tested-by: Oliver Hader <oliver.hader@typo3.org>
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
5 months ago[!!!][SECURITY] Disallow session data transfer on frontend user logout 44/61144/2
Oliver Hader [Tue, 25 Jun 2019 06:41:55 +0000 (08:41 +0200)]
[!!!][SECURITY] Disallow session data transfer on frontend user logout

When frontend users logged out their session data (e.g. shopping cart)
was transfered into an anonymous session. This session could have been
reused by a different user working with the very same browser.

In order to enhance security aspects on this topic session data is
purged when an according frontend user is logging out. Since this might
be breaking for some scenarios a new feature toggle has been introduced
which allows to keep the previous behavior:

boolean 'security.frontend.keepSessionDataOnLogout'
in $GLOBALS['TYPO3_CONF_VARS']['SYS']['features']

Resolves: #88139
Releases: master, 9.5, 8.7
Security-Commit: 89c45f80388f24f08f827c474daa5ab8fda63da2
Security-Bulletin: TYPO3-CORE-SA-2019-018
Change-Id: I869f3bee7c6bf6e2ae51bcd86273b6abc15f09c5
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61144
Tested-by: Oliver Hader <oliver.hader@typo3.org>
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
5 months ago[SECURITY] Deny access to import module for non-admin users 43/61143/2
Oliver Hader [Tue, 25 Jun 2019 06:41:42 +0000 (08:41 +0200)]
[SECURITY] Deny access to import module for non-admin users

Due to an incomplete condition it was possible for regular
backend users to make use of the import module - which only
would be accessible to admin users or to those users have
User TSconfig `options.impexp.enableImportForNonAdminUser`
enabled.

Resolves: #88284
Releases: master, 9.5
Security-Commit: a3ca05df1e9e9269b45daf9dd79517df9d202604
Security-Bulletin: TYPO3-CORE-SA-2019-017
Change-Id: I9ac9a026d5715f9c03eda37f0ef84178640b2f1d
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61143
Tested-by: Oliver Hader <oliver.hader@typo3.org>
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
5 months ago[SECURITY] Conflict insecure versions symfony/cache component 42/61142/2
Benni Mack [Tue, 25 Jun 2019 06:41:29 +0000 (08:41 +0200)]
[SECURITY] Conflict insecure versions symfony/cache component

The symfony/cache component is not directly used by the core but
is a dependency of symfony/expression-language which is used in
the core.

The affected symfony/cache packages have been marked as
"conflict" in the composer.json.

See https://symfony.com/blog/cve-2019-10912-prevent-destructors-with-side-effects-from-being-unserialized

Resolves: #88215
Releases: master, 9.5
Security-Commit: d13c36e9e9951030a0787c63674634a52ff0aae3
Security-Bulletin: TYPO3-CORE-SA-2019-016
Change-Id: If98391ceef88561507d0095d26455a8da128f01e
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61142
Tested-by: Oliver Hader <oliver.hader@typo3.org>
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
5 months ago[SECURITY] Disallow javascript & data scheme in URL link handler 41/61141/2
Oliver Hader [Tue, 25 Jun 2019 06:41:16 +0000 (08:41 +0200)]
[SECURITY] Disallow javascript & data scheme in URL link handler

URLs defined using TYPO3's internal t3://url/?url=... notation are
now hardened against using `javascript:` and`data:` URL schemes.

Resolves: #88476
Releases: master, 9.5, 8.7
Security-Commit: 1a873c662524a62b192661da45d27e223e517d18
Security-Bulletin: TYPO3-CORE-SA-2019-015
Change-Id: Ia9ca8784a1779492762e5a36fcb1ada67bb6c56a
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61141
Tested-by: Oliver Hader <oliver.hader@typo3.org>
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
5 months ago[SECURITY] Check record permissions in record information popup 40/61140/2
Andreas Fernandez [Tue, 25 Jun 2019 06:41:03 +0000 (08:41 +0200)]
[SECURITY] Check record permissions in record information popup

The ElementInformationController now checks a backend user has sufficient
permissions to see each referenced record.

Resolves: #88317
Releases: master, 9.5, 8.7
Security-Commit: 4322d6b827c09b98b35ab4ef47753e9c20f7f117
Security-Bulletin: TYPO3-CORE-SA-2019-014
Change-Id: I49d077e5628465111b4460dd3cb673182d09eaa0
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61140
Tested-by: Oliver Hader <oliver.hader@typo3.org>
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
5 months ago[!!!][TASK] Remove TCEMAIN.previewDomain 73/60773/10
Benni Mack [Fri, 17 May 2019 11:06:49 +0000 (13:06 +0200)]
[!!!][TASK] Remove TCEMAIN.previewDomain

The functionality to set a custom TCEMAIN.previewDomain via
PageTS is not in use anymore as SiteHandling
is using the proper domain anyway already.

Conceptually this does not work anymore, as the base (domain + path prefix)
determines Language + Site / PageTree entry point. Setting
this to something else via TCEMAIN.previewDomain would not work
anyways, so this hack is removed, as we now can safely
determine the full (speaking) URL with Site Handling.

In addition, the method BackendUtility::getViewDomain()
is now deprecated.

Resolves: #88499
Releases: master
Change-Id: Id88c16e2e86ccce8a2e7be02af0e2a39802624c0
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/60773
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Susanne Moog <look@susi.dev>
Tested-by: Daniel Gorges <daniel.gorges@b13.de>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Susanne Moog <look@susi.dev>
Reviewed-by: Daniel Gorges <daniel.gorges@b13.de>
Reviewed-by: Benni Mack <benni@typo3.org>
5 months ago[TASK] Follow-up: Change BitSet class doc block 00/61100/4
Alexander Schnitzler [Thu, 20 Jun 2019 11:26:31 +0000 (13:26 +0200)]
[TASK] Follow-up: Change BitSet class doc block

In order to have a meaningful class doc block for the
BitSet class, the former doc block has been replaced
with an explanation of how to use the BitSet class.
The explanation is similar to the one in the rst file
which has been introduced along the class.

Releases: master
Resolves: #88611
Releates: #88596
Change-Id: Ie6c5043a38db612f050438123ab9cd12d8030e9c
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61100
Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: Björn Jacob <bjoern.jacob@tritum.de>
Reviewed-by: Alexander Schnitzler <typo3@alexanderschnitzler.de>
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Björn Jacob <bjoern.jacob@tritum.de>
Tested-by: Alexander Schnitzler <typo3@alexanderschnitzler.de>
5 months ago[TASK] Remove backend user ID from workspace preview config 08/61108/2
Benni Mack [Fri, 21 Jun 2019 11:01:51 +0000 (13:01 +0200)]
[TASK] Remove backend user ID from workspace preview config

The configuration within `sys_preview` contained the
Backend User ID. Previously, until TYPO3 v9, this was
used to simulate a backend user with his/her permissions,
however this was changed with the introduction of Middlewares
and a custom PreviewUserAuthentication object.

This information does not need to be stored, as it hasn't
been evaluated anymore anyways.

Resolves: #88601
Releases: master
Change-Id: I2b3c4979f38a3c1343a0f5bff3c2bd762affc0e1
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61108
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Alexander Schnitzler <typo3@alexanderschnitzler.de>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Alexander Schnitzler <typo3@alexanderschnitzler.de>
Reviewed-by: Benni Mack <benni@typo3.org>
5 months ago[BUGFIX] Fix comment in ViewHelper action.link 20/61120/2
Joerg Kummer [Sun, 23 Jun 2019 22:22:32 +0000 (00:22 +0200)]
[BUGFIX] Fix comment in ViewHelper action.link

Correct closing tag in PHP comment example.

Resolves: #88619
Releases: master, 9.5
Change-Id: Ic90351399eccc4435231bbd4ccbc74c33727d70c
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61120
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Björn Jacob <bjoern.jacob@tritum.de>
Tested-by: Daniel Siepmann <daniel.siepmann@typo3.org>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Björn Jacob <bjoern.jacob@tritum.de>
Reviewed-by: Daniel Siepmann <daniel.siepmann@typo3.org>
Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
5 months ago[TASK] Move BitSet class into different namespace 98/61098/5
Alexander Schnitzler [Wed, 19 Jun 2019 16:26:23 +0000 (18:26 +0200)]
[TASK] Move BitSet class into different namespace

The BitSet class has been put into a DataStructure
namespace although the core puts classes of these
kind into a Type namespace. Therefore, the class
has been moved.

Releases: master
Resolves: #88596
Change-Id: I18385a5c761e002f36bc33dcaeeb26ce7f6d187e
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61098
Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: Mathias Brodala <mbrodala@pagemachine.de>
Reviewed-by: Benni Mack <benni@typo3.org>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Benni Mack <benni@typo3.org>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Tested-by: Alexander Schnitzler <typo3@alexanderschnitzler.de>
5 months ago[TASK] Rename "view helper" to "ViewHelper" 03/61103/2
Daniel Siepmann [Fri, 21 Jun 2019 07:12:45 +0000 (09:12 +0200)]
[TASK] Rename "view helper" to "ViewHelper"

As this is what its called. This also should make searches easier, as
there is only one way to write it.

Relates: #88600
Releases: master, 9.5
Change-Id: Ib6fcd4402b4a34aeaf0735a40788a18a324587dd
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61103
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Tom Warwick <tom.warwick@typo3.org>
Tested-by: Björn Jacob <bjoern.jacob@tritum.de>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Reviewed-by: Claus Due <claus@phpmind.net>
Reviewed-by: Björn Jacob <bjoern.jacob@tritum.de>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
5 months ago[BUGFIX] Remove caches for page title and meta tag 20/60520/12
Helmut Hummel [Fri, 19 Apr 2019 16:03:31 +0000 (18:03 +0200)]
[BUGFIX] Remove caches for page title and meta tag

By concept for frontend rendering the page title and meta tags
are not meant to be stored in page cache in order to allow
non cachable plugins to modify those.

Currently both page title and meta tags are stored
in separate cache entries, which violates the concept above
and unnecessarily tightly couples those code parts to the
TypoScriptFrontendController and internal logic of it.

This patch removes these caches.

In order to properly handle the uncached rendering state,
we make sure the meta tag registry is properly
serialized with all managers.

Resolves: #88179
Releases: master, 9.5
Change-Id: If5200398bf9ab9db09ab97403c976d82cb33d01d
Signed-off-by: Frank Naegler <frank.naegler@typo3.org>
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/60520
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Helmut Hummel <typo3@helhum.io>
Tested-by: Richard Haeser <richard@maxserv.com>
Reviewed-by: Helmut Hummel <typo3@helhum.io>
Reviewed-by: Richard Haeser <richard@maxserv.com>
5 months ago[BUGFIX] Use var path from Environment in tests 46/60946/7
Susanne Moog [Wed, 12 Jun 2019 11:15:28 +0000 (13:15 +0200)]
[BUGFIX] Use var path from Environment in tests

Some tests still use hardcoded 'typo3temp' for creating files and folders.
Where possible, this has been changed to use varPath from Environment class
instead.

Resolves: #88551
Releases: master
Change-Id: I2d9a8edfb3fb33cc8f86f8e487603d0c72ef3ff0
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/60946
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Frank Naegler <frank.naegler@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Frank Naegler <frank.naegler@typo3.org>
Reviewed-by: Benni Mack <benni@typo3.org>
5 months ago[TASK] Update symfony components 96/61096/2
Benni Mack [Wed, 19 Jun 2019 16:21:39 +0000 (18:21 +0200)]
[TASK] Update symfony components

In preparation for our next maintenance
release, symfony components are updated
to their latest versions.

Composer Command:
  composer update symfony/* --with-all-dependencies

Resolves: #88595
Releases: master, 9.5
Change-Id: Ib380cbe7fec57488bf0ca10328486bc9c5fcbd5c
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61096
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Alexander Schnitzler <typo3@alexanderschnitzler.de>
Tested-by: Markus Klein <markus.klein@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Alexander Schnitzler <typo3@alexanderschnitzler.de>
Reviewed-by: Markus Klein <markus.klein@typo3.org>
Reviewed-by: Benni Mack <benni@typo3.org>
5 months ago[BUGFIX] Remove "cache_" prefix from cache configuration keys 92/60892/2
Oliver Hader [Thu, 6 Jun 2019 17:31:40 +0000 (19:31 +0200)]
[BUGFIX] Remove "cache_" prefix from cache configuration keys

With #88366 "cache_" prefix has been deprecated. However, when
retrieving a deprecated cache like "cache_subject" its identifier
gets transformed to just "subject" which is (probably) not available
in cache configuration keys. That's why keys of cache configurations
have to be transformed as well.

Resolves: #88512
Releases: master
Change-Id: I224d55e71011a437ed2e990d13b1edbee08770b7
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/60892
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Benni Mack <benni@typo3.org>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Benni Mack <benni@typo3.org>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>