• Christian Kuhn's avatar
    [!!!][TASK] Rewrite install tool · 2e3c9d5e
    Christian Kuhn authored
    Main features:
    * The god class "Installer" is gone and split into two major parts.
    A step controller handling major upgrade and install tasks, and a
    tool controller handling the known install tool actions.
    
    * The step controller is designed to be always called prior to the
    tool controller, if a step needs execution, it comes up, otherwise
    the tool controller will be executed.
    
    * The entry point typo3/install/index.php is gone and substituted
    by typo3/sysext/install/Start/Install.php. The file contains a
    lengthy comment to document the main request flow and used GET/POST
    parameters.
    
    * Most parts of the install tool do not bootstrap the whole system
    anymore, in general only the base bootstrap, dbal (if loaded),
    extbase and fluid ext_localconf.php are loaded. This makes sure
    the install tool can not fatal if some extensions ext_localconf
    is broken. The whole install tool runs without any caching, so a fatal
    in some cache file can not kill the install tool execution.
    
    * Installing TYPO3 CMS on a dbal enabled system is now handled in
    the step installer directly to make the according code easier to
    understand.
    
    * Rendering is done with a simplified fluid standalone view.
    
    * All install tool forms are CSRF protected.
    
    * A new and fully unit tested class structure is introduced, designed
    to take care of the basic file and folder structure of the instance.
    It is used during installation to create the needed structure and
    can be called in the install tool to compare and fix the current
    instance structure with the expected structure. In effect, the
    "dummy" package is obsolete. An instance can be created by just
    linking index.php, typo3_src/ and typo3/ within the document root,
    the installer takes care of creating everything else.
    
    * The installation procedure is released from the package handling.
    Packages will be handled by the extension manager after initial
    installation with another patch.
    
    Loose ends:
    * The whole package handling needs to be implemented in the
    extension manager.
    
    * Not all upgrade wizards work, this code area needs some love.
    
    * A 'core' auto updater could be implemented now. A GSoC project
    is currently running to realize this.
    
    * The SQL schema migration API is a mess and should be refactored.
    For now, another helper class is introduced to encapsulate some
    of the nasty details.
    
    * An auto configuration and configuration suggestion system is
    planned and needs to be done. It should suggest best configuration
    options in the install tool, and should auto configure the system
    during installation in the last install step.
    
    * If the backend or frontend fatals due to some extension that
    triggers a fatal in ext_localconf or ext_tables (for example
    due to a require() of a no longer existing file), a small helper
    action in the install tool could find those extensions and suggest
    to unload them.
    
    Change-Id: Ice3248caa903449ad6a83ea4f234c7bd125bdb66
    Resolves: #49162
    Releases: 6.2
    Reviewed-on: https://review.typo3.org/21468
    Reviewed-by: Anja Leichsenring
    Tested-by: Anja Leichsenring
    Tested-by: Alexander Opitz
    Reviewed-by: Stefan Froemken
    Tested-by: Stefan Froemken
    Reviewed-by: Christian Kuhn
    Tested-by: Christian Kuhn
    2e3c9d5e