Skip to content
  • Benni Mack's avatar
    [FEATURE] Add Contexts for storing data access modes · 5f8f50a0
    Benni Mack authored and Andreas Kienast's avatar Andreas Kienast committed
    A new "Context" concept is added which allows to keep
    the state of common TYPO3 Request Data in form of
    so-called Aspects.
    
    An aspect contains properties which can be fetched,
    but only the ones that are really necessary, instead of
    exposing a full object (e.g. BE_USER).
    
    The main goal is to centralize some global variables
    distributed in various places.
    
    In the first step the following variables are considered:
    
    - $TSFE->showHiddenPages
    - $TSFE->showHiddenRecords
    - $TSFE->beUserLogin
    - $TSFE->gr_list
    - $TSFE->loginUser
    - $GLOBALS[SIM_EXEC_TIME]
    - $GLOBALS['BE_USER']->workspace
    
    For now the Context is a singleton object, but should
    be fetched from a DI container.
    
    Sometimes a custom context is necessary, so it is
    cloned (see usage in TSFE).
    
    The difference to the PSR-7 request attributes is that the
    context is ONLY related to data access (like permissions / visibility)
    and also independent if TYPO3 is running via HTTP or CLI
    (thus, can be used in CLI mode as well).
    
    Next Steps:
    - Migrate PageRepository->versioningWorkspaceId
    - Migrate TSFE->simUserGroup
    - Use DateTimeAspect everywhere
    - Introduce Language + Page Aspects
    - Introduce the context object into ContentObjectRenderer and cObjects
    - Use Contexts in RestrictionContainers
    - Use Contexts in TYPO3 Backend
    - Decouple sys_page behaviour from TSFE where applicable
    - Ensure TypoScript conditions continue to work / have a documented alternative
    
    Resolves: #85389
    Releases: master
    Change-Id: I9e27e581a1632fcd8c3c6a9e0954b76b91f42c52
    Reviewed-on: https://review.typo3.org/57104
    
    
    Tested-by: default avatarTYPO3com <no-reply@typo3.com>
    Reviewed-by: default avatarStefan Bürk <stefan.buerk@pure-metal.de>
    Tested-by: default avatarStefan Bürk <stefan.buerk@pure-metal.de>
    Reviewed-by: default avatarSusanne Moog <susanne.moog@typo3.org>
    Tested-by: default avatarSusanne Moog <susanne.moog@typo3.org>
    Reviewed-by: default avatarAndreas Fernandez <a.fernandez@scripting-base.de>
    Tested-by: default avatarAndreas Fernandez <a.fernandez@scripting-base.de>
    5f8f50a0