[BUGFIX] Enable skipped tests by properly creating mocks

Latest changes in PHP disallow unserialize on
certain internal classes. Since phpunit uses
unserialize to create objects of such classes
when requesting a mock without calling the constructor
these tests failed with a PHP fatal error.

Instead of skipping the tests, we can simply provide
mocked constructor arguments (if required) so that
phpunit can create a mock object by using the new operator
and passing these mocked constructor arguments.

Releases: 6.3, 6.2
Resolves: #59981
Related: #59685
Change-Id: Ibd3b9aee0376a5043e053cffa6c88f7b93c86e18
Reviewed-on: https://review.typo3.org/31228
Reviewed-by: Anja Leichsenring
Tested-by: Anja Leichsenring
Reviewed-by: Helmut Hummel
Tested-by: Helmut Hummel
[CLEANUP] Remove redundant code in Persistence

The getPlainValue method is consolidated in the DataMapper.

Resolves: #57255
Releases: 6.3
Change-Id: Ic35fd2768a1431f260c99d6faf8ad4e0a1754ea3
Reviewed-on: https://review.typo3.org/28576
Reviewed-by: Anja Leichsenring
Tested-by: Anja Leichsenring
Reviewed-by: Markus Klein
Tested-by: Markus Klein
[TASK] Rebuild the calcAge functionality

We have two calcAge functions with same functionality and same issues.
So this is moved to a new DateTimeUtility class and deprecated in the
the original classes. Also time functions from GeneralUtility are moved
to the new class.

Following issues are resolved:
* Age calculation does not respect leap years.
* Age calculation may round up so something seams older than it is.
* Between days and years there are months missing, so we get now 2 months
  instead of 60 days.

Resolves: #20016
Releases: 6.3, 6.2
Change-Id: Ie323f30b1fb97b68f89d43605ccda67f219a965a
Reviewed-on: https://review.typo3.org/24635
Reviewed-by: Markus Klein
Tested-by: Markus Klein
[TASK] Remove TCA building aspect and move code to bootstrap

The patch moves the slot code that implements the override loading
logic back to the bootstrap but keeps the signal.

Resolves: #59770
Related: #59414
Related: #59468
Releases: 6.3, 6.2
Change-Id: Ib4691eaa94f258ebd96f2609fb267cadc8356090
Reviewed-on: https://review.typo3.org/31007
Reviewed-by: Anja Leichsenring
Tested-by: Anja Leichsenring
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
Reviewed-by: Frans Saris
Reviewed-by: Helmut Hummel
Tested-by: Helmut Hummel
[CLEANUP] Improve code style of DatabaseRecordList

* adjust docheaders
* improve readability by introducing linebreaks
* use typesafe comparison where possible
* remove unnessessary full qualified class names

Resolves: #58293
Releases: 6.3
Change-Id: Iae277008d6baeb63304c2fb4a5d057019c5de9fc
Reviewed-on: https://review.typo3.org/29708
Reviewed-by: Anja Leichsenring
Tested-by: Anja Leichsenring
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
[TASK] Add extension key to API

Instead of relying on a "magic" global $_EXTKEY
being set, add a new parameter to API where
this was used beforehand.

Resolves: #59770
Releases: 6.2, 6.3
Change-Id: I531bb6067d79aa42c9c592e88f3564dc7f40b29d
Reviewed-on: https://review.typo3.org/31233
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
Reviewed-by: Anja Leichsenring
Tested-by: Anja Leichsenring
Reviewed-by: Helmut Hummel
Tested-by: Helmut Hummel
Revert "[TASK] Rebuild the calcAge functionality"

This change was considered to need some more work during
mrge post review:

* 6.2 version adds not allowed deprecations to a released branch
* It adds two arbitrary (public) constants CEIL and FLOOR
* Method names need improvement
* Violation of single responsibility
* The static utility class has dependencies
* The patch adds another "always loaded" file to main bootstrap
* Undocumented (minor) breaking changes
* (Minor) code style issues

Reverted: #20016
Releases: 6.3, 6.2

This reverts commit 98c0ff7144a67ce8780a1b1ebe55749b6909e202
Change-Id: I7b07f2176eae78f6000db685c0f54164d5040202
Reviewed-on: https://review.typo3.org/31236
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
[BUGFIX] Unique IDs for pagetree root nodes

To make sure that every ID in the pagetree is unique in pagetrees
with a virtual root node (which is used for normal editors) the
page UIDs of the webmounts are set in the mountpoint property of
the tree nodes. This makes sure that all tree node ids are unique.

Resolves: #57163
Releases: 6.3, 6.2
Change-Id: Ia938a9bf4839524d60056d55c0186196dbd11289
Reviewed-on: https://review.typo3.org/28616
Reviewed-by: Markus Klein
Tested-by: Markus Klein
[BUGFIX] Let live search use getRecordTitle

Live search uses the label configuration from TCA to get the title of a
record. An existing TODO note already suggests to use the method for
this from BackendUtility. Do this now.

Resolves: #59893
Resolves: #59957
Releases: 6.3, 6.2
Change-Id: Ic4aaabed47922863602e770b588fb8dacd9386de
Reviewed-on: https://review.typo3.org/31197
Reviewed-by: Marcin Sągol
Tested-by: Marcin Sągol
Reviewed-by: Nicole Cordes
Reviewed-by: Anja Leichsenring
Reviewed-by: Helmut Hummel
Tested-by: Nicole Cordes
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
[TASK] Re-work/simplify copyright header in JS files

This patch replaces the copyright/license header in JS files with a
new, simplified one. The new header does not show the year figure, nor
an author name, and refers to the LICENSE.txt file for the full
copyright information. License is: GPL2 or any later version.

Resolves: #59916
Releases: 6.3, 6.2
Change-Id: I312bd9682fc1cf30ec327ba5d17567a3e9609c7d
Reviewed-on: https://review.typo3.org/31164
Reviewed-by: Markus Klein
Tested-by: Markus Klein
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
[BUGFIX] Use correct array structure for EM error messages

The extension manager stores errors (like exceptions that
are thrown while installing an extension) in an array and
passes them to a fluid template.

The array has to be in a defined structure like
$errorMessages[extension name][i] = array(
»       error code,
»       error message
)

Currently, if an extension is installed from ter and an error occurs
while downloading the extension, the code and text are stored directly
under the extension name and therefore the array is not correctly parsed
by the fluid template.

Resolves: #59991
Releases: 6.3, 6.2
Change-Id: Id330f0af2a99ab99cb8b736332cb8506c857716c
Reviewed-on: https://review.typo3.org/31240
Reviewed-by: Nicole Cordes
Tested-by: Nicole Cordes
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
[BUGFIX] Show errors on distribution installation

When you install a distribution and an error occurred, you get a fluid
error: "Sorry, the requested view was not found."

There is currently no template / view for the action. This patch renders
the error messages as flash messages and redirects to the list view of
distributions where the errors are shown.

Resolves: #59564
Resolves: #59952
Releases: 6.3, 6.2
Change-Id: Ie0e055dfd5620d4e0a08ecf87b2f458e7877ee76
Reviewed-on: https://review.typo3.org/31241
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
[TASK] Remove unused use statements

Several classes include unused use statements. This patch removes those
statements or uses them in their code.

Resolves: #59997
Releases: 6.3
Change-Id: I5890a80bcee96976e3c35d967db8c53a9c11b002
Reviewed-on: https://review.typo3.org/31245
Reviewed-by: Alexander Opitz
Tested-by: Alexander Opitz
Reviewed-by: Oliver Klee
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
[BUGFIX] Fix PHP warning in BackendUtility::getProcessedValue()

BackendUtility::getProcessedValue() fails to initialize a variable which
causes a PHP warning on array access.

Fix this by initializing the variable to array properly.

Resolves: #59994
Releases: 6.3, 6.2
Change-Id: I26711b512a9a7fad40000de6f2de6a2b4a81ac75
Reviewed-on: https://review.typo3.org/31243
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
[FEATURE] Introduce afterPersistObjetct signal slot

At the moment we only have an afterUpdate signal which
is emitted when an object is updated. But we don't have
a signal which is emitted after persisting an existing
aggregate root, if only sub objects or object storages
belonging to the aggregate root are updated.

Since the aggregate root should "encapsulate" the contained
objects to the outer world, we should provide such a signal,
which is fired if all objects of an aggregate root are persisted.

The same signal is emitted in the persistObject method in
the AbstractBackend class in Flow.

Change-Id: I85b2257b127f73afddbf4a01db156ed30489c42a
Resolves: #59986
Releases: 6.3
Reviewed-on: https://review.typo3.org/31238
Reviewed-by: Anja Leichsenring
Tested-by: Anja Leichsenring
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
[CLEANUP] FormEngine: Use getters for global objects

Introduce getters for global objects like TYPO3_DB or LANG.
This patch does not change any functionality.

Resolves: #59775
Releases: 6.3, 6.2
Change-Id: Ia9a4f3adc656927467f2f51207396d9a41befe8c
Reviewed-on: https://review.typo3.org/31017
Reviewed-by: Anja Leichsenring
Tested-by: Anja Leichsenring
Reviewed-by: Oliver Klee
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
[CLEANUP] Update phpdoc for all FormEngine members

Furthermore ensure the initial values are correct.
All usages of the members have been checked such that no violation can
happen if the initial values have been modified.

This patch contains no change in functionality.

Resolves: #59775
Releases: 6.3, 6.2
Change-Id: I4566849bb930535b9fef8d38dba940d6a6fd86cc
Reviewed-on: https://review.typo3.org/31019
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
[TASK] Add action selector in toolbar in workspaces menu

Currently there are two selectors in the bottom toolbar of
the workspace module. One to handle stage changes on selected
elements and one for mass actions (publish, swap, discard) for
the whole workspace. To circumvent this, an additional selector
shall be added for record selections.

Resolves: #59898
Releases: 6.2, 6.3
Change-Id: I5991cc16a65ba5ac473ec380f534379ec925cad3
Reviewed-on: https://review.typo3.org/31158
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
[CLEANUP] Extbase reflection classes

Remove unnessessary full qualified class names.
Cleanup docheaders.

Resolves: #57878
Releases: 6.3
Change-Id: I5bcdb80c27da1698fd1446a001907d83c6845507
Reviewed-on: https://review.typo3.org/29444
Reviewed-by: Anja Leichsenring
Tested-by: Anja Leichsenring
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
[BUGFIX] Fix RTE width

edit_wideDocument option has been removed with #57295 but it was forgotten
to adjust RTE accordingly.

Wide screens are default now, so we remove the check for this option
also in RTE. Furthermore the settings for small screens are superfluous
too.

Documentation is adjusted as well.

Resolves: #59692
Releases: 6.3, 6.2
Change-Id: I9bb5fc2a892f3de446137856e9fa18317f40b5c1
Reviewed-on: https://review.typo3.org/30954
Reviewed-by: Marc Wöhlken
Tested-by: Marc Wöhlken
Reviewed-by: Frans Saris
Reviewed-by: Marcin Sągol
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters