[TASK] Allow more DB and File Mounts for BE users and BE groups

In big installations, more than just 25 DB mount points are needed.

Solution: Raise the default configuration to 100.

Releases: 6.2
Resolves: #55018
Change-Id: I613a90bc6c15b7642f2c6b6b6ca4ec8221838c0b
Reviewed-on: https://review.typo3.org/26834
Reviewed-by: Tom Ruether
Tested-by: Tom Ruether
Reviewed-by: Wouter Wolters
Reviewed-by: Georg Ringer
Tested-by: Georg Ringer
[TASK] FrontendContentAdapterService processes record repeatedly

The FrontendContentAdapterService rewrites records so legacy
TypoScript is able to work on the files to. To do so it queries
the objects regarding the relations and fills the properties of
the record new line separated as known from pre-6.x records.

This change adds a runtime cache, so already processed records
of are not processed again, if the next cObject for the same
record is started.

Resolves: #54953
Releases: 6.2, 6.1
Change-Id: I1f632f175075c9d85079ea83e343e35867a1fcca
Reviewed-on: https://review.typo3.org/26786
Reviewed-by: Oliver Hader
Tested-by: Oliver Hader
Reviewed-by: Benjamin Mack
Tested-by: Benjamin Mack
[TASK] Cleanup __DIR__ and require/require_once

* Use __DIR__ instead of dirname(__FILE__) (since PHP 5.3.0)
* Use require_once for loading classes ("just once")

Resolves: #47203
Releases: 6.2
Change-Id: I4b5d003a0bbabd91dcc7e58081eed41b5314da3f
Reviewed-on: https://review.typo3.org/19952
Reviewed-by: Xavier Perseguers
Reviewed-by: Oliver Klee
Reviewed-by: Alexander Opitz
Tested-by: Alexander Opitz
Reviewed-by: Pascal Dürsteler
Reviewed-by: Stefan Froemken
Tested-by: Stefan Froemken
Reviewed-by: Markus Klein
Tested-by: Markus Klein
[TASK][CONF] Accept other settings in [SYS][setDBinit]

Since the mysqli interface recommends setting the charset using the
mysqli API the utf8 charset will be initialized when establishing the
database connection using mysqli_set_charset().

Additionally [SYS][setDBinit] can now be set to any value or can totally
be removed. To make sure the database connection still uses the correct
encoding an additional check is added to the database connection process
that checks the MySQL character set session variables.

Finally the old default value of [SYS][setDBinit] will automatically be
removed if it is set to the old default value.

Resolves: #41596
Releases: 6.2
Change-Id: I8d0a9eba50495d52accb59627147c1c87b6a9bb5
Reviewed-on: https://review.typo3.org/15369
Reviewed-by: Wouter Wolters
Reviewed-by: Alexander Opitz
Tested-by: Alexander Opitz
Reviewed-by: Michael Stucki
Tested-by: Michael Stucki
Reviewed-by: Markus Klein
Tested-by: Markus Klein
[TASK] Document that TYPO3 is not compatible with MySQL strict mode

Document that in the requirements section of the INSTALL.md.

Resolves: #54883
Releases: 6.2
Change-Id: Idd80528493b9920f4488e359f13fe4304ac5fe25
Reviewed-on: https://review.typo3.org/26725
Reviewed-by: Wouter Wolters
Reviewed-by: Philipp Gampe
Reviewed-by: Aske Ertmann
Reviewed-by: Oliver Klee
Reviewed-by: Stefan Neufeind
Reviewed-by: Michael Stucki
Tested-by: Michael Stucki
Reviewed-by: Markus Klein
Tested-by: Markus Klein
[!!!][TASK] Driver API has too many crosscutting concerns

The Driver within the FileAbstractionLayer is the actual
abstraction of a concrete file-system meant to unify
access to several kind of storage-systems the file data
might reside in. For each way of storing files there
has to be a driver.

Therefore a driver is solely a unique API to interact with
an underlying storage system based upon its own identifier
system.

Opposite to that, the AbstractDriver (defining our Interface)
knows about its storage, file- and folder-objects as well
as indexes. The methods within the current driver need to
implement more FAL-internal logic than one would expect from
what the driver is purposed to. As a result only a few drivers
are existing by now. In addition it's nearly impossible to
change FAL interals without touching every driver out there.

This change deals with these problems. In several steps the
current driver API has been refactored to have less dependencies
and only fullfills it's original purpose: the abstraction of a
file storage system.

The following things are considered:
   1. Change every return value which has been an object to the
      identifier and adapt the ResourceStorage accordingly.
   2. Change every method parameter being FileInterface, File,
      AbstractFile or Folder objects to a string: the identifier.
   3. Get rid of the storage as a member variable, only the uid
      of the storage is needed at two places.
   4. Remove all abstract methods from the AbstractDriver and
      put them in a newly created DriverInterface.
   5. Exchange all references to AbstractDriver to the interface.
   6. Remove unused methods, which came to light doing so.
   7. Merge addFile/removeFile and *Raw since the do the same if
      no objects are in place.
   8. Unify the creation of folder objects and how information
      is retrieved (analogue to files now).
   9. Unify and simplify the methods for retrieving folder
      contents (files / folders).
  10. Adapt the UnitTests of both classes to the changes.
      This also leads to the removal of some tests which are
      superfluous with that change.
  11. Make the DriverRegistry check the implementation of the
      newly created interface.
  12. Unify the parameter names in the methods.

Releases: 6.2
Resolves: #54230
Resolves: #54231
Change-Id: I4a51572c6a10859e6fd5f12f6cb539950444992e
Reviewed-on: https://review.typo3.org/26520
Reviewed-by: Frans Saris
Tested-by: Frans Saris
Reviewed-by: Benjamin Mack
Tested-by: Benjamin Mack
[BUGFIX] Bring back final class name cache

The class name needs to be determined through
a lookup in the implementation configuration
(AKA XCLASS).

This runtime cache was removed in favor of
a cache in the class loader. But this caching
behavior also changed due to the package management
API implementation.

Releases: 6.2
Resolves: #55024
Change-Id: I8dc101c0c04c88e531907fcfaf82e529af483e01
Reviewed-on: https://review.typo3.org/26821
Reviewed-by: Steffen Ritter
Tested-by: Steffen Ritter
[TASK] Extend DB fields for be users/groups of DB/file mounts

The maxitems entry for be_users / be_groups fields
db/file mounts was raised in issue #55018. The DB schema of
these fields should reflect the changes as well.

Releases: 6.2
Followup to: #55018
Resolves: #55025

Change-Id: I475ed18d3210a68e476c1434fa83b0b410937c8a
Reviewed-on: https://review.typo3.org/26837
Reviewed-by: Wouter Wolters
Reviewed-by: Helmut Hummel
Tested-by: Helmut Hummel
[TASK] Skip two tests in LocalDriverTests in PHP 5.3

For most tests in the LocalDriverTest vfsStream is used to
emulate the filesystem. This needs PHP filesystem functions
to use the stream wrappers.

For touch() this has been enabled with PHP 5.4. The reversal
conclusion is, that this does not work with PHP 5.3 which
causes failing tests there.

As a result If the PHP version is 5.3 we skip the two tests.
This is a follow-up to https://review.typo3.org/#/c/26520/

Resolves: #54230
Releases: 6.2
Change-Id: I4e92927e1d77f825bab8583318a944a8916051d5
Reviewed-on: https://review.typo3.org/26845
Reviewed-by: Steffen Ritter
Tested-by: Steffen Ritter
[TASK] Extend TypoScriptParser test cases

Resolves: #55026
Releases: 6.2
Change-Id: Ia1d03b4c3db6bb224b920b7252bd68df70053515
Reviewed-on: https://review.typo3.org/26842
Reviewed-by: Oliver Klee
Reviewed-by: Oliver Hader
Tested-by: Oliver Hader
[BUGFIX] Add fileSuffix option to GeneralUtility::tempnam()

Currently it is only possible to create a
temporary file with a given prefix and without
any file extension. But for some use-cases you
need a file with a certain file extension.

This patch introduces a new optional parameter to
GeneralUtility::tempnam() to make it possible to add
e.g. a specific extension to the created file.

In addition the occurrences in core, which can benefit
from this, are adapted resulting in less orphaned
temporary files in typo3temp.

Releases: 6.2
Resolves: #54750
Change-Id: I19383bc8f6b387133bff2f4033f05b28e883d427
Reviewed-on: https://review.typo3.org/26650
Reviewed-by: Helmut Hummel
Tested-by: Helmut Hummel
Reviewed-by: Markus Klein
Reviewed-by: Steffen Ritter
Tested-by: Steffen Ritter
[BUGFIX] Image CE rendering does not scale images

When rendering images with CssStyledContent while using the features
maxW and equalHeight at the same time, the rendering needs to pre-
calculate the target sizes. Doing this the GifBuilder is used to
determine the width and height of the file while still relying on the
being a locally reachable path. Since the introduction of FAL uids will
be present at that point and therefore this calcuation will fail.

This change extracts the width and height of the image from the
according file object which not only fixes the the mentioned issue but
will be way more performant since the values doe not need to be
derived from the filesystem.

Resolves: #45086
Releases: 6.2
Change-Id: Icb03d337bb84851a5c905a45c4941fc9d9539033
Reviewed-on: https://review.typo3.org/26556
Reviewed-by: Wouter Wolters
Reviewed-by: Frans Saris
Reviewed-by: Thomas Blaß
Tested-by: Thomas Blaß
Reviewed-by: Benjamin Mack
Tested-by: Benjamin Mack
[!!!][FEATURE] Improve caching framework by introducing groups

The current TYPO3 Core includes different types of caches. There are
system-related caches (class loading cache, configuration cache,
l10n_cache, extbase_object, extbase_reflection etc.) and
frontend-related caches (chash cache, page cache, page section
cache).

The patch introduces the possibility to group caches. The core uses
two groups "pages" with all page-related caches, and "system" that
is used for compile-time caches and configuration caches.

The new API is now used to be more flexible inside DataHandler
clear_cacheCmd without having hooks, as the Cache Manager is used
to clear all caches inside one hook.

!!! The "Clear all caches" command does not flush caches for
system-related caches anymore. Only "Clear Configuration Cache" or
inside the install tool in the backend removes all the system caches.

A new userTSconfig option is used to non-admins to be allowed to
clear the system caches.

Resolves: #54991
Releases: 6.2
Change-Id: Ie0fe134102882a1fcc5a85a0199016cdfbda08bf
Reviewed-on: https://review.typo3.org/26829
Reviewed-by: Helmut Hummel
Reviewed-by: Wouter Wolters
Reviewed-by: Markus Klein
Tested-by: Markus Klein
Tested-by: Helmut Hummel
Revert "[BUGFIX] Assume pid 0 for global backend context"

formal: the change is not marked as breaking.
functional: removing the functionality fetching the 
typoscript from a auto detected page completly without 
an alternative breaks all extbase backend modules using 
typoscript configuration.

This reverts commit ba2386e7305e0d6e64db5cc485bc38728728ad8e

Change-Id: I0c4c10b1bd8b5d09c54743a4949cce250d962ede
Reviewed-on: https://review.typo3.org/26864
Reviewed-by: Marc Bastian Heinrichs
Tested-by: Marc Bastian Heinrichs
[TASK] Use file_exists() instead of is_file()

is_file() checks whether a resource exists and whether it
is actually a file. There are several parts in the core,
where it is sufficient to check for the existence only,
which is faster.

Resolves: #55052
Releases: 6.2
Change-Id: I57b6d2f68dd3c1c45b603c3f194cc0c53c48e28c
Reviewed-on: https://review.typo3.org/26872
Reviewed-by: Wouter Wolters
Reviewed-by: Tom Ruether
Tested-by: Tom Ruether
Reviewed-by: Oliver Klee
Reviewed-by: Benjamin Mack
Tested-by: Benjamin Mack
[TASK] Fix typo in Install Tool

Replace 'chose' with 'choose'.

Change-Id: I5ad978009e20fa420ba888a3deabb86d0d1ae926
Resolves: #55053
Releases: 6.2
Reviewed-on: https://review.typo3.org/26873
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
[TASK] Add FlashMessage API to Extbase AbstractController

Flow comes with an API in AbstractController to add FlashMessages.
Introducing this API to Extbase provides a convenient way to
add new FlashMessages to the queue.
Usage in your controller: $this->addFlashMessage();

Resolves: #54036
Releases: 6.2
Change-Id: I3f6b69597d7f972054c5081d1f9e20d65b598848
Reviewed-on: https://review.typo3.org/25731
Reviewed-by: Benjamin Mack
Reviewed-by: Marcin S?gol
Tested-by: Marcin S?gol
Reviewed-by: Steffen Müller
Tested-by: Steffen Müller
[BUGFIX] Deprecated function call mysql_list_dbs in dbal

replaced mysql_list_dbs by show databases query

Resolves: #53761
Releases: 6.2
Change-Id: I2b41b19aa900ba7eef33f2a990c8c029cbc1c08c
Reviewed-on: https://review.typo3.org/26390
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
Reviewed-by: Oliver Klee
Reviewed-by: Stefan Neufeind
Tested-by: Stefan Neufeind
[BUGFIX] PackageManager no cache if TYPO3 dir has symlinks

In the PackageManager cache file is a validation of the actual file
path to the file path the cache was last generated. This was written
to invalidate the cache if someone moves TYPO3 around. This comparison
fails on symlinks in path. As you need to clear the complete cache
after moving the typo3 directory for other purposes and as this is no
real use case, we can remove this line.

Resolves: #55022
Releases: 6.2
Change-Id: I12d0fe09a3a7e1b3aad2f08c4bcde7a337cab769
Reviewed-on: https://review.typo3.org/26838
Reviewed-by: Thomas Maroschik
Tested-by: Thomas Maroschik
Reviewed-by: Markus Klein
Tested-by: Markus Klein
Reviewed-by: Stefan Neufeind
Tested-by: Stefan Neufeind
[BUGFIX] Use system locale when indexing external documents

If paths or filenames of external documents contain utf-8 characters the
system locale must be used. Functions like escapeshellarg and basename are
locale aware.

Change-Id: I50a73a42d60de569c63e5ba27ad6a6a3a66fd6c8
Fixes: #30244
Releases: 4.5, 6.0, 6.1, 6.2
Reviewed-on: https://review.typo3.org/5312
Reviewed-by: Markus Klein
Reviewed-by: Sebastian Fischer
Reviewed-by: Xavier Perseguers
Tested-by: Markus Klein
Reviewed-by: Stefan Neufeind
Tested-by: Stefan Neufeind