Postgres will fail with an error, if a table sequence is requested for
a table without auto_increment column. MySql will just return '0'.
Test the relation type before trying to persist mm relations to
prevent that error.

To solve an inconsistency issue for API based content element
registration between CSS Styled Content (CSC) and Fluid Styled Content
(FSC) through `Extbase` or `addPItoST43` we are now Introducing a new
shared content object for content elements and drop the active usage of
lib.fluidContent.

The generated code relied on the existence of the removed lib.stdheader
and also ignored layouts, frames, spacebefore, spaceafter in context of
Fluid Styled Content.

For content element registration lib.contentElement is now used for CSC
and FSC and replaces the usage of lib.fluidContent. The generated code
was slightly adjusted to match the requirements of all content rendering
definitions and can be adapted to the specific needs of a content
element rendering definition anytime since a reference is used now
instead of a hard defintion.

The method for OptionSplitting in TemplateService
is completely isolated from everything else, and creates
a very strong dependency to TSFE + TemplateService
in various places.

Additionally, the TypoScriptService of Extbase is used
in several places of the core and has nothing to do
with Extbase itself, thus, it can be moved to a central place
where these functions are called.

Moving this code to it's own service class in the core
helps to decouple TSFE, tmpl, Extbase and cObject more.

Upgrades wizard scans tt_content for not deleted 'mailform' content
elements and offers to download and install old extjs based form
extension called 'form_legacy' from TER, it's git is
located at https://github.com/FriendsOfTYPO3/form_legacy

The current behavior for file fields using TCA type inline is configured
to use localizationMode=select, which is deprecated. Actually files have
been copied along during the localization of the parent record - and
files can then be defined independently for the default language record
and in the translated record. The localizationMode synchronization
behavior was disabled in the user-interface.

With this change the default core behavior will stay the same. If the
localization buttons would have been enabled individually, this now can
be done with the more specific allowLanguageSynchronization feature.

[TASK] Move all marker-based logic from cObj to MarkerBasedTemplateService

Now, all functionality for marker-based templates are encapsulated in
MarkerBasedTemplateService, instead of polluting cObjectRenderer which
is used a lot in the frontend, even though no markers are in use.

All methods within ContentObjectRenderer have been marked as deprecated.

The public property DocumentTemplate->extJScode can be used to fill in
ExtJS-specific code to be loaded on "onExtReady". The functionality is not
used in the core anymore, as there are better ways to include JavaScript
code in a backend response.

The ExtDirectApi simply calls PageRepository to store data in the "cache_hash"
cache. This can be simplified by just using the Caching Framework directly
without depending on a EXT:frontend class in a EXT:core class.

Loading a locallang.xlf inside the abstract function module now uses the regular
$GLOBALS['LANG']->includeLLFile() of the current file, instead of doing a manual
check on .xml and .php extensions, which the LanguageService/LanguageFactory
is taking care of anyway.

The PHP method incLocalLang() and the now not necessarily needed $thisPath
are therefore marked as deprecated.

The method cObject->URLqMark() adds a question mark to a string
to append it. This method should not be in scope of cObject, but rather
be put in e.g. StringUtility or GeneralUtility... however, since the functionality
is rather simple, it can be achieved without any helper method as a one-liner.

The TYPO3 Core currently has no guidline how to handle phpdoc
comments regarding @return annoations related to "void" and "null".

In practice, these annotations have no additional value if no additional
documentation is given.

With this change, the php-cs-fixer will remove any unnecessary linebreaks
within the comments above the @return annotation, as well as remove completely
empty phpdoc comments because the @return annotation is removed.

Please be aware, that once PSR-5 is accepted, this coding standard
within the TYPO3 Core will change again, where there are currently
some further proposal details like inheritance information.

For a more streamlined rendering this patch adds nessesary html tags
with fluid namespaces to all indexed_search templates, unifies indention
and adds an empty space before closing bracket of self-closing tags.

The protected property "AbstractXmlParser->charset" is set from
the outside but never used anymore in either the abstract class nor
in the subclasses.

The protected method "getCharset()" is basically useless:
a) it's never called or in use
b) it has nothing to do with the XmlParser as it does not work
with any properties / functionalities of the XmlParser itself.

The protected method "initialize()" is called solely in the
contructor which can be dealt with directly in the constructor
(that's what a constructor is there for).

The third parameter $charset within getParsedData() is
now not needed anymore within the Parsers, as all expect
UTF-8 for files.

The TypoScript Frontend Controller has a unnecessary dependency
to a static call (which is made non-static !) of PageRepository
which can be done exactly 1:1 by instantiating the cacheManager
and fetching the "cache_hash" cache directly by storing and fetching
the contents itself.

This patch adds a missing PHP version check to the /install/index.php file which
exists only for the redirect to the install tool. Because of this missing version check
an installation without PHP 7.0 will fatal with an parsing error.

FormEngineValidation is meant as integral part of FormEngine.
The current dependency definition is inverted, such that FormEngine
now depends on FormEngineValidation and not the other way around.
Note that FormEngineValidation does not need any other feature
of FormEngine, so this is safe.

Extbase now also overrides the help command by symfony to allow extbase
custom HelpCommandController to come into play when an Extbase command
was called.

This patch is critical for v8 so all core-internal CLI commands are available via
"typo3/sysext/core/bin/typo3", otherwise we'd need to explain every admin
that there are two CLI entrypoints for v8 which are relevant, because Extbase is
still solely using "typo3/cli_dispatch.phpsh" until now, while all other entry
points have been migrated already.

In preparation for upcomming switch from bootstrap to SASS the backend
style sources have been migrated to SASS. The autoprefixer configuration
was corrected to match CMS8 LTS requirements and minification of CSS
files is now enabled. Automatic style checks are now available through
grunt. The tasks `grunt format` and `grunt lint` will now check sources
files for consistency.

When saving a new task, now only the extra fields of the selected class
where submitted via post and no longer all extra fields of all possible
classes.
This prevents saving the wrong value if extra fields of different classes
have the same id.

The output which version of Extbase is used, does not need to be
fetched via getExtensionVersion() of EXT:extbase. The TYPO3_version
contains the same information as the information in EXT:extbase/ext_emconf.php.

On creating child records for an inline field, currently no language
is set and the children are stored with sys_language_uid 0. This patch
adds the proper configuration to ensure a default children language
according to its parent language.

With this patch, an integrator has prototype wide translation settings
for the 4 aspects of the form framework. Furthermore, the integrator is
able to define multiple translation files to avoid copying the whole
default translation files or using locallangXMLOverride.

This patch fixes a loading issue on poor internet connections.
In case of a slow internet connection the icons are not loaded and the
click binding does not work. A DOM ready check should solve the issue.

When the FAL metadata extraction task fails with an exception
this exception will now be logged via logException(), which is
added as a new method to AbstractTask. This method logs via
GeneralUtility::sysLog and the Logging API.

If an extension uses a default subcategory for its configuration but does
not define a sorting order, using PHP >= 7 the order is reversed. This
patch ensures an previously introduced counter is used as identifier.

TCA columns having 'l10n_mode' defined to either 'exclude' or
'mergeIfNotBlank' (later is autotatically migrated to the according
'allowLanguageSynchronization' behavior) are processed twice on handling
modifications in DataHandler. In a result an exeception is throws which
prevents recursions on chained translations.

Checking null values with plain isset() is replaced with a new method
using array_key_exists() to consider null values as well.