[FEATURE] Allow different overriding of object mapping per plugin

Currently the ObjectContainer has an array with a mapping of
class names to actual classes which allows the replacement
of objects via DI.

This mapping is set during the bootstrap process and uses the
typoscript settings in config.tx_extbase.objects which is too
strict. To be able to ovverride these settings for each plugin
extbase has to use 'CONFIGURATION_TYPE_FRAMEWORK' settings
instead of 'CONFIGURATION_TYPE_FULL_TYPOSCRIPT' settings.

Releases: 6.1
Resolves: #44796
Change-Id: I5d6ea135f5bec586073da3394f0ba8e0197020b7
Reviewed-on: https://review.typo3.org/17696
Reviewed-by: Mattias Nilsson
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
[TASK] Improve code coverage of Mvc/Request

Currently two important methods "getControllerObjectName"
and "setControllerObjectName" aren't tested at all. This
patch provides tests for both.

Releases: 6.1
Resolves: #44805
Change-Id: I3bcbfc72c5b77da3d876489dd4423c79823171c1
Reviewed-on: https://review.typo3.org/17702
Reviewed-by: Daniel Hürtgen
Tested-by: Daniel Hürtgen
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
[TASK] Provide unit test for Mvc/Response

Releases: 6.1
Resolves: #44804
Change-Id: Iaaaaa1e10915ec7527bf89605b557fa7f75d2df3
Reviewed-on: https://review.typo3.org/17701
Reviewed-by: Mattias Nilsson
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
Reviewed-by: Markus Günther
Tested-by: Markus Günther
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
[TASK] Add FileReference table mapping in extbase configuration

Extbase ships the FileReference model, but using it as a property
type causes a SQL error mentioning the table can not be found.

So adding the mapping to the extbase TypoScript configuration
resolves this problem.

Change-Id: I6d9452918dd78f767592aeafc9620e5ffc2880cc
Resolves: #44012
Releases: 6.0, 6.1
Reviewed-on: https://review.typo3.org/17160
Reviewed-by: Stefan Neufeind
Reviewed-by: Ingo Pfennigstorf
Reviewed-by: Helmut Hummel
Tested-by: Helmut Hummel
[TASK] Improve Test

Refine the test for DateTimeConverter timezone handling.

The suggested backport from Flow Fluid was already in place, but the
improved test was missing.

Resolves: #44213
Releases: 6.1
Change-Id: I3c7d73c1bba8ebecc5d49020d155d5d27c256961
Reviewed-on: https://review.typo3.org/18155
Reviewed-by: Markus Günther
Tested-by: Markus Günther
Reviewed-by: Daniel Hürtgen
Reviewed-by: Wouter Wolters
Reviewed-by: Marc Bastian Heinrichs
Tested-by: Marc Bastian Heinrichs
[TASK] Decouple BE module runner and Bootstrap

The Bootstrap class is currently registered as a dispatcher for backend
modules (called from mod.php). The dispatching is done in
Bootstrap::callModule(), which does not access the rest of the class
except run() (which is part of the public API).

To make the distinction more clear (and make different dispatchers
possible without logic fuckup), the module running code is moved
to a separate class ModuleRunner.

Change-Id: I7d7571d3204f9da927aa7c3d3cf0cca2b121ef15
Resolves: #45318
Releases: 6.1
Reviewed-on: https://review.typo3.org/18165
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
Reviewed-by: Anja Leichsenring
Tested-by: Anja Leichsenring
[FEATURE] (MVC): Whitelist-based Property Mapping Configuration

Up to now, property mapping in the rewritten property mapper always
allowed to modify all properties of a given object. Especially in the
MVC stack, this functionality was relied upon for all update and create
actions. However, for nested objects, the user needed to configure
whether updates and creations should be allowed.
This was an inconsistent behavior, especially because for read-only
actions the object could be also modified.
The behavior is now changed to be more predictive:
- the default PropertyMappingConfiguration used in the MVC stack is
  changed to be very restrictive: we do neither allow creation of any
  new objects nor modification of existing ones; and all properties
  which should be modified must be explicitly configured.
- For each form, Fluid now generates a list of trusted properties,
  based upon which the PropertyMappingConfiguration is set correctly.
  This means only properties which have been rendered by fluid are
  allowed to be modified, and creation / insertion is only permitted
  if needed.

(Excerpt from commit message of the original change in Flow)
https://review.typo3.org/#/c/10926/

This Patch is a 100% backport from this change with some needed
adjustments for the unit tests.

Change-Id: I6e59183a6ddfe83c65f975a2e2211e9ac33c5ccc
Resolves: #43057
Releases: 6.1
Reviewed-on: https://review.typo3.org/17092
Reviewed-by: Marc Bastian Heinrichs
Tested-by: Marc Bastian Heinrichs
Reviewed-by: Helmut Hummel
Tested-by: Helmut Hummel
Reviewed-by: Anja Leichsenring
Tested-by: Anja Leichsenring
[!!!][TASK] Remove forced STI settings from extbase configuration

The tx_extbase_type setting for fe_users and fe_groups was introduced
as a demonstration of Single Table Inheritance handled in extbase.
The forced setting brings more problems then doing good in real live
scenarios though.

So the typoscript is dropped, but TCA and sql kept for backwards
compatibility reasons.

Before 6.1 only fe_users with tx_extbase_type
Tx_Extbase_Domain_Model_FrontendUser and
fe_groups with Tx_Extbase_Domain_Model_FrontendUserGroup
are returned. Since 6.1 all fe_users and fe_groups are 
returned if you don't set the TypoScript setting on your own.

Resolves: #11021
Releases: 6.1
Change-Id: I8c1fbc48d4ee5ea1202ac6d7837170ff74eba442
Reviewed-on: https://review.typo3.org/17879
Reviewed-by: Oliver Klee
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
Reviewed-by: Wouter Wolters
Reviewed-by: Anja Leichsenring
Tested-by: Anja Leichsenring
[TASK] Clean up Unit tests in extbase

We had many tests in extbase that are incomplete.
These tests has been incomplete for several years.

Some test has been removed also in TYPO3 flow.

Change-Id: I75a20d1a1bac6fdeca79067acd5d00ad2db9f964
Fixes: #45330
Releases: 6.1
Reviewed-on: https://review.typo3.org/18169
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
Reviewed-by: Wouter Wolters
Reviewed-by: Oliver Klee
Reviewed-by: Anja Leichsenring
Tested-by: Anja Leichsenring
[TASK] Sync objectmananger get and create with Flow

ObjectManager::create was deprecated since Flow beta1 and was 
removed for Flow 1.0. To be in sync again deprecate Extbase
ObjectManager::create and use ObjectManager::get.

Change-Id: I5b92bae39ec63fdd985797ff03cb688ea6ff96d3
Resolves: #45322
Releases: 6.1
Reviewed-on: https://review.typo3.org/18162
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
Reviewed-by: Marc Bastian Heinrichs
Tested-by: Marc Bastian Heinrichs
[TASK] Replace ObjectManager create with get

Since Extbase ObjectManager::create is deprecated replace all
usages of the create method with get.

Change-Id: I4a438565d8512c8f892cef5b63fb6483fd74d712
Resolves: #45323
Releases: 6.1
Reviewed-on: https://review.typo3.org/18175
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
Reviewed-by: Andreas Wolf
Tested-by: Andreas Wolf
[BUGFIX] Followup to issue #45323

Fix two places where create() was changed to get() on wrong objects.

Change-Id: I4bb79a14e280ce36fe7a6da28149f0e1212f2383
Related: #45323
Reviewed-on: https://review.typo3.org/18182
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
[BUGFIX] Respect wildcard in PropertyConfiguration shouldMap()

Using 'name.*' in property mapping configuration did not work for
fields added on the client, because shouldMap() would reject those
fields before the configuration was even checked.

This patch is a backport from Flow.

Fixes: #43928
Releases: 6.1, 6.0
Change-Id: I7fb71f705f242160700e8c082373f547d9cf72b5
Reviewed-on: https://review.typo3.org/18177
Reviewed-by: Anja Leichsenring
Tested-by: Anja Leichsenring
Reviewed-by: Andreas Wolf
Tested-by: Andreas Wolf
[FEATURE] Make use of the ClassNamingUtility class

The Core got a new ClassNamingUtility, which provides a central place to
translate classnames. Extbase now uses this class in some places.

Resolves: #43836
Depends: #43052
Releases: 6.1
Change-Id: I29ae0215c403c7fb6456015ebf376b50919afb0f
Reviewed-on: https://review.typo3.org/17070
Reviewed-by: Markus Günther
Tested-by: Markus Günther
Reviewed-by: Andreas Wolf
Tested-by: Andreas Wolf
[BUGFIX] Add foreign_match_fields support for one-to-x relations

The data mapper currently has no foreign_match_fields support for
one to one or one to many relations. This is critical even for 6.0 as
without it, the data mapper can not correctly map FAL relations.

Fixes: #45337
Releases: 6.0, 6.1
Change-Id: If8c5ecd64bca0f4c6dbb43445125bdad876ed7a8
Reviewed-on: https://review.typo3.org/18186
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
Reviewed-by: Anja Leichsenring
Tested-by: Anja Leichsenring