[FEATURE] Cache negative ux_* look up in autoloader

For every class instance that is requested via
t3lib_div::makeInstance(), a lookup for ux_"classname" is done
and that class is instantiated if it exists, instead of the original
class. If no ux_ class is found with class_exists(), the requested class
is instantiated. This is the basic "XCLASS" handling in the core.

The patch adds autoloader rows for unsuccessful (NULL) ux_* lookups to the
autoloader cache file. The file is updated during shutdown. This way the
information a XCLASS does NOT exist is cached between consecutive calls.
This leads to a performance improvement and is an advantage over the
current makeInstance class name cache that worked only for one call.
The old "cache for one call only" code is dropped with the patch.

Change-Id: I70573146600d658d218dc9b31694748341fc7a20
Resolves: #37915
Releases: 6.0
Reviewed-on: http://review.typo3.org/11943
Reviewed-by: Susanne Moog
Tested-by: Susanne Moog
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
[TASK] Remove empty constructor from localRecordList

__construct() in localRecordList just calls parent.

This is not needed, because parent constructors are always
called, even if an extending class does not specify this
explicitly.

Change-Id: I505169347964744bcd5a7f7deb2d89f696d02634
Fixes: #38334
Releases: 6.0
Reviewed-on: http://review.typo3.org/12313
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
[TASK] Remove empty constructor from t3lib_spritemanager_SimpleHandler

An empty constructor just calling parent is not needed, because parent
constructors are always called automatically.

Change-Id: I86818458540dd85709619f0d0ab21efa266e079b
Fixes: #38333
Releases: 6.0
Reviewed-on: http://review.typo3.org/12312
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
[TASK] Remove empty method from t3lib_file_Repository_FileCollectionRepo

In t3lib_file_Repository_FileCollectionRepository the method findByType
just call his parent.

Change-Id: Ia82ec630fdb8a54d77b413b98423c81f23a76941
Fixes: #38332
Releases: 6.0
Reviewed-on: http://review.typo3.org/12311
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
[TASK] Remove empty constructors in EXT:form

An empty constructor just calling parent is not needed, because parent
constructors are always called automatically.

Change-Id: I89384aa584048108fab444e3ee0d50e661c7d014
Fixes: #38335
Releases: 6.0
Reviewed-on: http://review.typo3.org/12314
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
[TASK] Remove empty init() method from EXT:tsconfig_help

In EXT:tsconfig_help the method init() just call his parent.

This is not needed, because parent method are always called,
even if an extending class does not specify this explicitly.

Change-Id: I69d7aa47af7f6d90b8c3fb78c2f00d088e8a0597
Fixes: #38336
Releases: 6.0
Reviewed-on: http://review.typo3.org/12315
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
[FEATURE] Add module menu object to the TYPO3 backend

The backend at the moment uses a combination of the
GLOBAL variables TBE_MODULES and TBE_MODULES_EXT to
build the main menus of the backend (the module menu
on the left and the submodule menus of the backend
modules - look at info for an example).

To be able to easily change the representation of
these menus and to offer a clean API for rendering
menus the menu is refactored into an object structure
with n levels. This patch migrates the old GLOBALS
to a 3 level menu object. This means that you can use
the module menu object in your backend modules to
render your submenu.

This patch just adds the object structure and
transformation. It does not change any handling of
menus in the core itself. These changes can be done
piece by piece after this patch.

Change-Id: I1f7f9f5fcf83274840acef6cbeb267ea4ca460c3
Resolves: #38138
Releases: 6.0
Reviewed-on: http://review.typo3.org/12146
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
[TASK] Raise submodule pointer

Change-Id: I9e1a9af81ec767475911c48772ae60e754c29384
Reviewed-on: http://review.typo3.org/12327
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
[BUGFIX] Wrong margin calculation for Text/Image

This patch fixes a wrong calculation of margins for Text/Image
items with the properties "Beside text, left" and "Beside
text, right".

Change-Id: Ie484685aa2839123c42338862c241403614e7f7a
Fixes: #36541
Releases: 6.0, 4.7
Reviewed-on: http://review.typo3.org/10995
Reviewed-by: Steffen Ritter
Tested-by: Steffen Ritter
[TASK] CGL cleanup for the new module menu classes

The new module menu classes have some CGL issues left.

Patch fixes missing comments and some wrong object
annotations.

Change-Id: I7b8e810fe732977e9efbd56075683601658971f4
Resolves: #38347
Releases: 6.0
Reviewed-on: http://review.typo3.org/12329
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
[BUGFIX] CamelCased class names impossible with empty cache

Issue #37110 that aimed to allow case sensitive class name in
ext_autoload files has a bug that any class registered with CamelCased
class name is only found if the autoload entries are read from cache.

The patch now creates a lower cased entry as soon as the core_autoload
and ext_autoload files are read. There is an additional test that fails
if the changes in the autoload class are not applied. The naming of the
existing camelCase test was adapted to show that it is handling the
answer of an successful cache fetch only.

Additionally the current strtolower is changed to t3lib_div::strtolower
to make the whole thing multibyte safe.

Change-Id: I94f7ca5b3e60234f08433c747c00639d8dd219cd
Fixes: #38331
Related: #37110
Releases: 6.0
Reviewed-on: http://review.typo3.org/12310
Reviewed-by: Steffen Ritter
Tested-by: Steffen Ritter
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
[TASK] Encapsulate bootstrap base code

This patch merges all bootstrap code that is independent from the local
instance and configuration into one class. A wrapper method in
Typo3_Bootsrap is introduced to call the only public method of this
class. This reduces the number of public bootstrap methods and
creates a clear definition what code must be run until instance
specific configuration comes into the game.

Some code fragments like the time initialization is now done more early
in bootstrap, the according methods are merged in the class.

The basic error_reporting setup is moved to the very end of the class,
which forced some called t3lib_div methods to be notice free.

All code that can be easily tested in this class now has unit tests.

Change-Id: I90d48f8f4ff4a59b5507becb6102c90b39d9eebd
Resolves: #38344
Releases: 6.0
Reviewed-on: http://review.typo3.org/12319
Reviewed-by: Steffen Ritter
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
Reviewed-by: Susanne Moog
Tested-by: Susanne Moog
[BUGFIX] Use the TestFinder to determine fixture path

Two tests still use a hardcoded path to the fixture files.
This fails if no typo3_src folder is present which is not
the case in some TYPO3 installations.

For this change it is necessary to also allow tests/ as prefix
for language files.

Change-Id: I89de174c8a80ea162ec3b0c3eef4817e7c8be475
Releases: 6.0
Resolves: #38349
Reviewed-on: http://review.typo3.org/12332
Reviewed-by: Helmut Hummel
Tested-by: Helmut Hummel
[BUGFIX] Backup global vars in DriverRegistryTest

The DriverRegistryTest pollutes the global variable space,
which leads to failures in other tests if they are executed
after this test.

Backup and restore the global variables for this test.

Change-Id: I1abacbb8a49a771c64356215749c96ae02700cc2
Resolves: #38350
Releases: 6.0
Reviewed-on: http://review.typo3.org/12333
Reviewed-by: Helmut Hummel
Tested-by: Helmut Hummel
[TASK] Add travis configuration file

For details read the ticket description.

Change-Id: Ibc22c62e7bb490e1871db92bbc09cd7e56581fa3
Resolves: #38357
Releases: 6.0
Reviewed-on: http://review.typo3.org/12339
Reviewed-by: Helmut Hummel
Tested-by: Helmut Hummel
[BUGFIX] Bootstrap_BaseSetup::getPathThisScript is not static

The method Typo3_Bootstrap_BaseSetup::getPathThisScript()
should be static but isn't

Change-Id: I96ce32ba5980f5a3612685bfe51c028eb23e2699
Resolves: #38428
Releases: 6.0
Reviewed-on: http://review.typo3.org/12394
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
[TASK] Raise submodule pointer

Change-Id: Ic305bb1a44273833f53df88330b8f6ec3cf5f0da
Reviewed-on: http://review.typo3.org/12408
Reviewed-by: TYPO3 Release Team
Tested-by: TYPO3 Release Team
[RELEASE] Release of TYPO3 6.0.0alpha2

Change-Id: I91407bb8bd36d96ce19935eaa3c314dfda7ad09a
Reviewed-on: http://review.typo3.org/12412
Reviewed-by: TYPO3 Release Team
Tested-by: TYPO3 Release Team
[TASK] Set TYPO3 version to 6.0-dev

Change-Id: I26ba2f65f6b55c03adf3fa77cc9c12e3cf8132b0
Reviewed-on: http://review.typo3.org/12413
Reviewed-by: TYPO3 Release Team
Tested-by: TYPO3 Release Team
[TASK] Usability: Replace "Sitemap" with "Special Menus"

Changes the labels to be a bit more general since this CType can
be used for more than just sitemaps. Also changes the default
menu type.

Change-Id: Ibed4a9aa6d67059c9f8d6a517248ae33ed2a301b
Resolves: #17969
Release: 6.0
Reviewed-on: http://review.typo3.org/6743
Reviewed-by: Georg Ringer
Tested-by: Georg Ringer
Reviewed-by: Stefan Neufeind
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn