The process of updating the TER
extension list takes approx 1 minute
because the extension manager needs
to mark all "latest versions". This is done
via a large UPDATE query on fields
without indices, additionally this is done
in PHP and not in SQL with a
simple subselect.

Additionally the SQL file does not set
appropriate indices at all, which is also
done in this patch.

The sorting by filename in the filelist is broken since the
introduction of sys_file_metadata. It tries to sort the file list
by property file. Before sys_file_metadata it couldn't find this
property and sorted by the default value name. But after introduction
of sys_file_metadata it has an property file, his own sys_file uid.

At some points where a file object is retrieved, a check for
the interpretation as integer is done for the method
argument only. If the argument is 0 a exception will be
thrown from the ResourceFactory.
A file object should only be fetched if the uid is an integer
greater than zero.

The lowlevel array browser tries to modify the array that
is displayed if it's an object.
Now that TYPO3_LOADED_EXT is a simulated array (an object
which implements array access) modifying the data leads to
a fatal error. Instead the iterated value is now modified.

The paginator in the extension list from TER is transformed into
using Ajax. This fails because this process searches for links inside
a class which is used by the frontend paginator widget. Changing it to
the id of the backend paginator widget makes the ajax calls work again.

Wizards used to be registered by defining a script path
to an entry script. Since we now aim to reduce
the number of entry scripts, wizards should be called
through mod.php and be registered accordingly.
However with the additional requirement of adding
CSRF protection for all mod.php calls, we cannot
hard code the script URLs for wizards any more.
Instead BackendUtility::getModuleUrl should be used,
which adds the CSRF protection token.
Since this token depends on the current user session
and TCA might be cached, we need a new way to register
a wizard by just specifying the module name in TCA.

FormEngine should then take care to call
BackendUtility::getModuleUrl()

Encoding a few extra character besides the ones according to RFC3986
makes password reset links working again in various mail clients which
do not comply to this RFC (and which do not have plans to fix this in
the near future).

With the addition of categories-related menus, new fields were added
to the tt_content "menu" palette for handling categories relations.
This causes problems when people define new menu types.

This patch adds the categories-related fields in a more targeted
way using subtypes_addlist. The difference is that these fields
are not *in* the palette anymore, but just after it. I think
it is okay from a usability point of view and it makes the whole
categories thing less intrusive.

The core ships upgrade wizards for all versions since TYPO3 CMS 4.2.
Users upgrading to TYPO3 CMS 6.2 LTS should have at least TYPO3 4.5 LTS
or later. Therefore all Upgrade-Wizards which already have been executed
to upgrade to TYPO3 CMS 4.5 LTS and below can be safely removed for the
current LTS.

This change removed all these wizards relating to changes in 4.2, 4.3 and
4.5.

Changing the entry script for func and info module
will cause integrated submodules to fail in
case they use the old entry point index.php
with a relative path somewhere in funcMenu or in
other links or actions.

A compatibility layer is introduced in
typo3/index.php to catch those old
links and redirect to mod.php with proper parameters.

If a javascript file is forceOnTop the script uses array_unshift()
to put the file at the beginning of the section array. If this is
the first file that got processed, the array does not exist yet,
so the array_unshift function returns NULL and the file
will not added to the array.

To be able to compare mostly only the data provided in the
database fixtures, the export needs to be limited to a given
set of fields of a record type.
This will loose the strict xml comparison of all existing fields
in the database and the tests would not break whenever we
change ext:core or ext:frontend ext_tables.sql.

In TYPO3_MODE == 'FE' we attached language overlays for file metadata
via an Signal in the MetaDataRepository. Within this signal the
methods of the PageRepository in $GLOBALS['TSFE'] are used to do the
actual language overlay.

When using eID the Frontend is not initialized. When creating file
objects in eID these functions are accessed on non-objects which
obviously leads to a fatal error.

As a result the registration of the Slot is extended to not register
itself in case of eID requests.

When having e.g. the link for ``typo3/`` pointing to
``typo3_src/typo3/``, the install tool complains because the trailing
slash is not expected. This slash is however perfectly ok, as there is
no difference between typo3_src/typo3 and typo3_src/typo3/ – both point
to the same "file" (i.e. node in the filesystem structure).

This patch strips trailing slashes from the actual link target before
doing the check, so no change to existing configuration is necessary.

It is faster to compare a string with === '' to find out if it's empty
than to run strlen() on it.

The replacement rules are applied as follows:
* if (strlen($str))
=> if ((string)$str !== '')
* if (!is_string($str) || strlen($str) === 0)
=> if (!is_string($str) || $str === '')
* If it can be seen easily that $str is a string,
the typecast is omitted.

Our functional test suit does not fail currently when
tested code emits a PHP warning. This is due to the
fact that the factory configuration uses the
production exception handler which silently discards
warnings.

This change adds additional configuration that
is merged with the factory configuration.

In this configuration the TYPO3 exception handling
is disabled and the core and classes cache is
disabled.

Additionally a new property is added to the base
class to easily add some configuration values that
might be needed for the test case.

The functional test teardown does not remove the
class loader but removes the instance directories.
Because of this the TYPO3 class loader is still
triggered (by PHPUnit classes) and tries to write
things to a cache directory that does not exist any more.

The workspaces API has the command "clearWSID" that reverts
elements that have been modified/created/deleted in a workspace.
The regular behavior is to keep the elements but mark it as
deleted and unset the value in "t3ver_wsid".

In a workspace, an existing content record is moved to an
existing page. Another existing record is moved after the
previously moved record on the target page. The Functional
Tests show, that the content records are faulty after the
processing and the first content record disappeared.

A similar behaviour has been discovered for pages which finally
lead to the regression causing this bug in issue #33104. Back
then a hook has been introduced for moving page records and
post-processing the database values. However, this hook has
been called for all move operations for any table and was wrong
in terms of the expected specific problem to be solved.

The hook gets reverted, since it's sufficient to resolve move
placeholders if a record shall be created after an existing one.

While Typo3DbBackend claims to be Extbase's connection to
the TYPO3 API, in reality it writes a lot of SQL state-
ments itself. This replaces self-written statements with
the according DatabaseConnection API call.

On copying a sys_category record, a new MM reference is created,
however without setting the "fieldname". This value is basically
defined from the opposite entity with MM_match_fields, but
cannot be accessed.

This change introduces the MM_oppositeUsage property for MM
definitions in the TCA.

After having performed changes to data structures using the
DataHandler, the correct impact for the frontend needs to be
asserted. This patch checks the correct behavior for DataHandler
action tests for regular, MM and IRRE disposal.

To ensure that actions in the backend have an accordant and
correct impact in the frontend, a frontend request needs to
be triggered from the functional test execution.
The response of that simulated frontend request shall be
delivered as JSON, exceptions need to be caught and
forwarded to the test suite as well. Besides that, it is
required to have a possibility to set up TypoScript
configuration, modify TCA and TYPO3_CONF_VARS for further
hook processing.

Discarding workspace changes works with the version command
"clearWSID" which might come down to a "delete" action if the
versioned records have a delete or new placeholder (which is
the case for copied or localized elements).
However, the functional tests need to use the "clearWSID"
instead of the "delete" command.

Problem: When the RTE inserts the link, the href looks like
http://somedomain/?file:1234. If a rel attribute is present, the link
is not transformed into a typolink on the way to the database.
However, the href attribute is not transformed, as it should, into a
normal file url. It should because the a-tag will be rendered as is in
the frontend.

Solution: When a link is not be transformed into a typolink,
transform the href into a normal file url.

A feature to resolve shortcut links directly in menu rendering
does not consider the overlay behaviour of the "shortcut" value.

TSFE first uses the "shortcut" value of the original/default
page and then serves for possible translated alternatives
(TypoScriptFrontendController::checkTranslatedShortcut()).
In menu rendering it's the other way round, the translated
overlay (if any) is used directly - the fallback to use the
"shortcut" value of the original/default page is not implemented.

This change introduces the fallback when rendering menus, which
will take the "shortcut" value of the default language if the
value in the overlay is empty.

Currently it is not possible to edit files as an editor because no file
uid is submitted. This happens because meta data properties are not
loaded. This patch makes sure they get loaded before returning them.