[!!!][TASK] Remove deprecated module classes from backend 08/59208/3
authorChristian Kuhn <lolli@schwarzbu.ch>
Wed, 19 Dec 2018 10:06:46 +0000 (11:06 +0100)
committerAnja Leichsenring <aleichsenring@ab-softlab.de>
Wed, 19 Dec 2018 11:57:19 +0000 (12:57 +0100)
Removed classes:
TYPO3\CMS\Backend\Module\AbstractFunctionModule
TYPO3\CMS\Backend\Module\AbstractModule
TYPO3\CMS\Backend\Module\BaseScriptClass

Resolves: #87210
Releases: master
Change-Id: I56c92246e7b18fd87707e767f743fd4c84f043a1
Reviewed-on: https://review.typo3.org/59208
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
typo3/sysext/backend/Classes/Module/AbstractFunctionModule.php [deleted file]
typo3/sysext/backend/Classes/Module/AbstractModule.php [deleted file]
typo3/sysext/backend/Classes/Module/BaseScriptClass.php [deleted file]
typo3/sysext/backend/Classes/Template/DocumentTemplate.php
typo3/sysext/belog/Classes/Module/BackendLogModuleBootstrap.php
typo3/sysext/core/Classes/Database/QueryGenerator.php
typo3/sysext/core/Classes/Utility/ExtensionManagementUtility.php
typo3/sysext/core/Documentation/Changelog/master/Breaking-87193-DeprecatedFunctionalityRemoved.rst
typo3/sysext/info/Classes/Controller/TranslationStatusController.php
typo3/sysext/install/Configuration/ExtensionScanner/Php/ClassNameMatcher.php
typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php

diff --git a/typo3/sysext/backend/Classes/Module/AbstractFunctionModule.php b/typo3/sysext/backend/Classes/Module/AbstractFunctionModule.php
deleted file mode 100644 (file)
index 599e553..0000000
+++ /dev/null
@@ -1,228 +0,0 @@
-<?php
-namespace TYPO3\CMS\Backend\Module;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-use TYPO3\CMS\Backend\Template\DocumentTemplate;
-use TYPO3\CMS\Backend\Utility\BackendUtility;
-use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
-use TYPO3\CMS\Core\Localization\LanguageService;
-use TYPO3\CMS\Core\Page\PageRenderer;
-use TYPO3\CMS\Core\Utility\GeneralUtility;
-
-/**
- * Parent class for 'Extension Objects' in backend modules.
- *
- * Used for 'submodules' to other modules. Also called 'Function menu modules'
- * in \TYPO3\CMS\Core\Utility\ExtensionManagementUtility. And now its even called
- * 'Extension Objects'. Or 'Module functions'. Wish we had just one name. Or a
- * name at all...(?) Thank God its not so advanced when it works...
- *
- * In other words this class is used for backend modules which is not true
- * backend modules appearing in the menu but rather adds themselves as a new
- * entry in the function menu which typically exists for a backend
- * module (like Web>Info or Tools etc...)
- * The magic that binds this together is stored in the global variable
- * $TBE_MODULES_EXT where extensions wanting to connect a module based on
- * this class to an existing backend module store configuration which consists
- * of the classname, script-path and a label (title/name).
- *
- * For more information about this, please see the large example comment for the
- * class \TYPO3\CMS\Backend\Module\BaseScriptClass. This will show the principle of a
- * 'level-1' connection. The more advanced example - having two layers as it is done
- * with the 'web_info' module - can be seen in the comment above.
- *
- * EXAMPLE: One level.
- * This can be seen in the extension 'frontend' where the info module have a
- * function added. In 'ext_tables.php' this is done by this function call:
- *
- * \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::insertModuleFunction(
- * 'web_info',
- * \TYPO3\CMS\Frontend\Controller\PageInformationController::class,
- * NULL,
- * 'LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:mod_tx_cms_webinfo_page'
- * );
- *
- * For this two-level thing to work it also requires that the parent
- * module (the real backend module) supports it.
- * This is the case for the modules web_info since it has two
- * times inclusion sections in their index.php scripts.
- *
- * @see \TYPO3\CMS\Backend\Module\BaseScriptClass
- * @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0
- */
-abstract class AbstractFunctionModule
-{
-    /**
-     * Contains a reference to the parent (calling) object (which is probably an instance of
-     * an extension class to \TYPO3\CMS\Backend\Module\BaseScriptClass
-     *
-     * @var BaseScriptClass
-     * @see init()
-     */
-    public $pObj;
-
-    /**
-     * @var BaseScriptClass
-     */
-    public $extObj;
-
-    /**
-     * Can be hardcoded to the name of a locallang.xlf file (from the same directory as the class file) to use/load
-     * and is included / added to $GLOBALS['LOCAL_LANG']
-     *
-     * @see init()
-     * @var string
-     */
-    public $localLangFile = '';
-
-    /**
-     * Contains module configuration parts from TBE_MODULES_EXT if found
-     *
-     * @see handleExternalFunctionValue()
-     * @var array
-     */
-    public $extClassConf;
-
-    /**
-     * If this value is set it points to a key in the TBE_MODULES_EXT array (not on the top level..) where another classname/filepath/title can be defined for sub-subfunctions.
-     * This is a little hard to explain, so see it in action; it used in the extension 'func_wizards' in order to provide yet a layer of interfacing with the backend module.
-     * The extension 'func_wizards' has this description: 'Adds the 'Wizards' item to the function menu in Web>Func. This is just a framework for wizard extensions.' - so as you can see it is designed to allow further connectivity - 'level 2'
-     *
-     * @see handleExternalFunctionValue(), \TYPO3\CMS\FuncWizards\Controller\WebFunctionWizardsBaseController
-     * @var string
-     */
-    public $function_key = '';
-
-    /**
-     * @var PageRenderer
-     */
-    protected $pageRenderer;
-
-    /**
-     * Constructor deprecates the class
-     */
-    public function __construct()
-    {
-        trigger_error(
-            'Class AbstractFunctionModule is deprecated and will be removed in TYPO3 v10.0',
-            E_USER_DEPRECATED
-        );
-    }
-
-    /**
-     * Initialize the object
-     *
-     * @param \object $pObj A reference to the parent (calling) object
-     * @throws \RuntimeException
-     * @see \TYPO3\CMS\Backend\Module\BaseScriptClass::checkExtObj()
-     */
-    public function init($pObj)
-    {
-        $this->pObj = $pObj;
-        // Local lang:
-        if (!empty($this->localLangFile)) {
-            $this->getLanguageService()->includeLLFile($this->localLangFile);
-        }
-        // Setting MOD_MENU items as we need them for logging:
-        $this->pObj->MOD_MENU = array_merge($this->pObj->MOD_MENU, $this->modMenu());
-    }
-
-    /**
-     * If $this->function_key is set (which means there are two levels of object connectivity) then
-     * $this->extClassConf is loaded with the TBE_MODULES_EXT configuration for that sub-sub-module
-     *
-     * @see $function_key, \TYPO3\CMS\FuncWizards\Controller\WebFunctionWizardsBaseController::init()
-     */
-    public function handleExternalFunctionValue()
-    {
-        // Must clean first to make sure the correct key is set...
-        $this->pObj->MOD_SETTINGS = BackendUtility::getModuleData($this->pObj->MOD_MENU, GeneralUtility::_GP('SET'), $this->pObj->MCONF['name']);
-        if ($this->function_key) {
-            $this->extClassConf = $this->pObj->getExternalItemConfig($this->pObj->MCONF['name'], $this->function_key, $this->pObj->MOD_SETTINGS[$this->function_key]);
-        }
-    }
-
-    /**
-     * Same as \TYPO3\CMS\Backend\Module\BaseScriptClass::checkExtObj()
-     *
-     * @see \TYPO3\CMS\Backend\Module\BaseScriptClass::checkExtObj()
-     */
-    public function checkExtObj()
-    {
-        if (is_array($this->extClassConf) && $this->extClassConf['name']) {
-            $this->extObj = GeneralUtility::makeInstance($this->extClassConf['name']);
-            $this->extObj->init($this->pObj, $this->extClassConf);
-            // Re-write:
-            $this->pObj->MOD_SETTINGS = BackendUtility::getModuleData($this->pObj->MOD_MENU, GeneralUtility::_GP('SET'), $this->pObj->MCONF['name']);
-        }
-    }
-
-    /**
-     * Calls the main function inside ANOTHER sub-submodule which might exist.
-     */
-    public function extObjContent()
-    {
-        if (is_object($this->extObj)) {
-            return $this->extObj->main();
-        }
-    }
-
-    /**
-     * Dummy function - but is used to set up additional menu items for this submodule.
-     *
-     * @return array A MOD_MENU array which will be merged together with the one from the parent object
-     * @see init(), \TYPO3\CMS\Frontend\Controller\PageInformationController::modMenu()
-     */
-    public function modMenu()
-    {
-        return [];
-    }
-
-    /**
-     * @return LanguageService
-     */
-    protected function getLanguageService()
-    {
-        return $GLOBALS['LANG'];
-    }
-
-    /**
-     * @return BackendUserAuthentication
-     */
-    protected function getBackendUserAuthentication()
-    {
-        return $GLOBALS['BE_USER'];
-    }
-
-    /**
-     * @return DocumentTemplate
-     */
-    protected function getDocumentTemplate()
-    {
-        return $GLOBALS['TBE_TEMPLATE'];
-    }
-
-    /**
-     * @return PageRenderer
-     */
-    protected function getPageRenderer()
-    {
-        if ($this->pageRenderer === null) {
-            $this->pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
-        }
-
-        return $this->pageRenderer;
-    }
-}
diff --git a/typo3/sysext/backend/Classes/Module/AbstractModule.php b/typo3/sysext/backend/Classes/Module/AbstractModule.php
deleted file mode 100644 (file)
index 0e1ef8b..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-namespace TYPO3\CMS\Backend\Module;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\ServerRequestInterface;
-use TYPO3\CMS\Backend\Template\ModuleTemplate;
-use TYPO3\CMS\Core\Utility\GeneralUtility;
-
-/**
- * A backend module. This class may be used by extension backend modules
- * to implement own actions and controllers. It initializes the module
- * template and comes with a simple dispatcher method.
- *
- * @internal Experimental for now
- * @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0.
- */
-class AbstractModule
-{
-    /**
-     * ModuleTemplate object
-     *
-     * @var ModuleTemplate
-     */
-    protected $moduleTemplate;
-
-    /**
-     * Constructor Method
-     */
-    public function __construct()
-    {
-        trigger_error(
-            'Class AbstractModule is deprecated since TYPO3 v9 and will be removed with TYPO3 v10.0.'
-            . ' Instantiate ModuleTemplate yourself if needed and use routing registered in Routes.php.',
-            E_USER_DEPRECATED
-        );
-        $this->moduleTemplate = GeneralUtility::makeInstance(ModuleTemplate::class);
-    }
-
-    /**
-     * PSR Request Object
-     *
-     * @var ServerRequestInterface
-     */
-    protected $request;
-
-    /**
-     * Central Request Dispatcher
-     *
-     * @param ServerRequestInterface $request PSR7 Request Object
-     * @param ResponseInterface $response PSR7 Response Object
-     *
-     * @return ResponseInterface
-     *
-     * @throws \InvalidArgumentException In case an action is not callable
-     */
-    public function processRequest(ServerRequestInterface $request, ResponseInterface $response)
-    {
-        $methodName = $request->getQueryParams()['action'] ?: 'index';
-        if (!is_callable([$this, $methodName])) {
-            throw new \InvalidArgumentException(
-                'The method "' . $methodName . '" is not callable within "' . static::class . '".',
-                1442736343
-            );
-        }
-        return $this->{$methodName}($request, $response);
-    }
-}
diff --git a/typo3/sysext/backend/Classes/Module/BaseScriptClass.php b/typo3/sysext/backend/Classes/Module/BaseScriptClass.php
deleted file mode 100644 (file)
index 8e94182..0000000
+++ /dev/null
@@ -1,405 +0,0 @@
-<?php
-namespace TYPO3\CMS\Backend\Module;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-use TYPO3\CMS\Backend\Utility\BackendUtility;
-use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
-use TYPO3\CMS\Core\Localization\LanguageService;
-use TYPO3\CMS\Core\Messaging\FlashMessage;
-use TYPO3\CMS\Core\Messaging\FlashMessageService;
-use TYPO3\CMS\Core\Page\PageRenderer;
-use TYPO3\CMS\Core\Type\Bitmask\Permission;
-use TYPO3\CMS\Core\Utility\GeneralUtility;
-
-/**
- * Parent class for 'ScriptClasses' in backend modules.
- *
- * EXAMPLE PROTOTYPE
- *
- * As for examples there are lots of them if you search for classes which extends \TYPO3\CMS\Backend\Module\BaseScriptClass
- * However you can see a prototype example of how a module might use this class in an index.php file typically hosting a backend module.
- *
- * NOTICE: This example only outlines the basic structure of how this class is used.
- * You should consult the documentation and other real-world examples for some actual things to do when building modules.
- *
- * TYPICAL SETUP OF A BACKEND MODULE:
- *
- * PrototypeController EXTENDS THE CLASS \TYPO3\CMS\Backend\Module\BaseScriptClass with a main() function:
- *
- * namespace Vendor\Prototype\Controller;
- *
- * class PrototypeController extends \TYPO3\CMS\Backend\Module\BaseScriptClass {
- *     public function __construct() {
- *             $this->getLanguageService()->includeLLFile('EXT:prototype/Resources/Private/Language/locallang.xlf');
- *             $this->getBackendUser()->modAccess($GLOBALS['MCONF']);
- *     }
- * }
- *
- * MAIN FUNCTION - HERE YOU CREATE THE MODULE CONTENT IN $this->content
- * public function main() {
- *     TYPICALLY THE INTERNAL VAR, $this->doc is instantiated like this:
- *     $this->doc = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Template\DocumentTemplate::class);
- *     ... AND OF COURSE A LOT OF OTHER THINGS GOES ON - LIKE PUTTING CONTENT INTO $this->content
- *     $this->content='';
- * }
- *
- * MAKE INSTANCE OF THE SCRIPT CLASS AND CALL init()
- * $GLOBALS['SOBE'] = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\Vendor\Prototype\Controller\PrototypeController::class);
- * $GLOBALS['SOBE']->init();
- *
- *
- * THEN WE WILL CHECK IF THERE IS A 'SUBMODULE' REGISTERED TO BE INITIALIZED AS WELL:
- * $GLOBALS['SOBE']->checkExtObj();
- *
- * THEN WE CALL THE main() METHOD AND THIS SHOULD SPARK THE CREATION OF THE MODULE OUTPUT.
- * $GLOBALS['SOBE']->main();
- *
- * @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0
- */
-class BaseScriptClass
-{
-    /**
-     * Loaded with the global array $MCONF which holds some module configuration from the conf.php file of backend modules.
-     *
-     * @see init()
-     * @var array
-     */
-    public $MCONF = [];
-
-    /**
-     * The integer value of the GET/POST var, 'id'. Used for submodules to the 'Web' module (page id)
-     *
-     * @see init()
-     * @var int
-     */
-    public $id;
-
-    /**
-     * The value of GET/POST var, 'CMD'
-     *
-     * @see init()
-     * @var mixed
-     */
-    public $CMD;
-
-    /**
-     * A WHERE clause for selection records from the pages table based on read-permissions of the current backend user.
-     *
-     * @see init()
-     * @var string
-     */
-    public $perms_clause;
-
-    /**
-     * The module menu items array. Each key represents a key for which values can range between the items in the array of that key.
-     *
-     * @see init()
-     * @var array
-     */
-    public $MOD_MENU = [
-        'function' => []
-    ];
-
-    /**
-     * Current settings for the keys of the MOD_MENU array
-     *
-     * @see $MOD_MENU
-     * @var array
-     */
-    public $MOD_SETTINGS = [];
-
-    /**
-     * Module TSconfig based on PAGE TSconfig / USER TSconfig
-     *
-     * @see menuConfig()
-     * @var array
-     */
-    public $modTSconfig;
-
-    /**
-     * If type is 'ses' then the data is stored as session-lasting data. This means that it'll be wiped out the next time the user logs in.
-     * Can be set from extension classes of this class before the init() function is called.
-     *
-     * @see menuConfig(), \TYPO3\CMS\Backend\Utility\BackendUtility::getModuleData()
-     * @var string
-     */
-    public $modMenu_type = '';
-
-    /**
-     * dontValidateList can be used to list variables that should not be checked if their value is found in the MOD_MENU array. Used for dynamically generated menus.
-     * Can be set from extension classes of this class before the init() function is called.
-     *
-     * @see menuConfig(), \TYPO3\CMS\Backend\Utility\BackendUtility::getModuleData()
-     * @var string
-     */
-    public $modMenu_dontValidateList = '';
-
-    /**
-     * List of default values from $MOD_MENU to set in the output array (only if the values from MOD_MENU are not arrays)
-     * Can be set from extension classes of this class before the init() function is called.
-     *
-     * @see menuConfig(), \TYPO3\CMS\Backend\Utility\BackendUtility::getModuleData()
-     * @var string
-     */
-    public $modMenu_setDefaultList = '';
-
-    /**
-     * Contains module configuration parts from TBE_MODULES_EXT if found
-     *
-     * @see handleExternalFunctionValue()
-     * @var array
-     */
-    public $extClassConf;
-
-    /**
-     * Generally used for accumulating the output content of backend modules
-     *
-     * @var string
-     */
-    public $content = '';
-
-    /**
-     * @var \TYPO3\CMS\Backend\Template\DocumentTemplate
-     */
-    public $doc;
-
-    /**
-     * May contain an instance of a 'Function menu module' which connects to this backend module.
-     *
-     * @see checkExtObj()
-     * @var AbstractFunctionModule
-     */
-    public $extObj;
-
-    /**
-     * @var PageRenderer
-     */
-    protected $pageRenderer;
-
-    /**
-     * Constructor deprecates the class
-     */
-    public function __construct()
-    {
-        trigger_error(
-            'Class BaseScriptClass is deprecated and will be removed in TYPO3 v10.0',
-            E_USER_DEPRECATED
-        );
-    }
-
-    /**
-     * Initializes the backend module by setting internal variables, initializing the menu.
-     *
-     * @see menuConfig()
-     */
-    public function init()
-    {
-        // Name might be set from outside
-        if (!$this->MCONF['name']) {
-            $this->MCONF = $GLOBALS['MCONF'];
-        }
-        $this->id = (int)GeneralUtility::_GP('id');
-        $this->CMD = GeneralUtility::_GP('CMD');
-        $this->perms_clause = $this->getBackendUser()->getPagePermsClause(Permission::PAGE_SHOW);
-        $this->menuConfig();
-        $this->handleExternalFunctionValue();
-    }
-
-    /**
-     * Initializes the internal MOD_MENU array setting and unsetting items based on various conditions. It also merges in external menu items from the global array TBE_MODULES_EXT (see mergeExternalItems())
-     * Then MOD_SETTINGS array is cleaned up (see \TYPO3\CMS\Backend\Utility\BackendUtility::getModuleData()) so it contains only valid values. It's also updated with any SET[] values submitted.
-     * Also loads the modTSconfig internal variable.
-     *
-     * @see init(), $MOD_MENU, $MOD_SETTINGS, \TYPO3\CMS\Backend\Utility\BackendUtility::getModuleData(), mergeExternalItems()
-     */
-    public function menuConfig()
-    {
-        // Page / user TSconfig settings and blinding of menu-items
-        $this->modTSconfig['properties'] = BackendUtility::getPagesTSconfig($this->id)['mod.'][$this->MCONF['name'] . '.'] ?? [];
-        $this->MOD_MENU['function'] = $this->mergeExternalItems($this->MCONF['name'], 'function', $this->MOD_MENU['function']);
-        $blindActions = $this->modTSconfig['properties']['menu.']['function.'] ?? [];
-        foreach ($blindActions as $key => $value) {
-            if (!$value && array_key_exists($key, $this->MOD_MENU['function'])) {
-                unset($this->MOD_MENU['function'][$key]);
-            }
-        }
-        $this->MOD_SETTINGS = BackendUtility::getModuleData($this->MOD_MENU, GeneralUtility::_GP('SET'), $this->MCONF['name'], $this->modMenu_type, $this->modMenu_dontValidateList, $this->modMenu_setDefaultList);
-    }
-
-    /**
-     * Merges menu items from global array $TBE_MODULES_EXT
-     *
-     * @param string $modName Module name for which to find value
-     * @param string $menuKey Menu key, eg. 'function' for the function menu.
-     * @param array $menuArr The part of a MOD_MENU array to work on.
-     * @return array Modified array part.
-     * @internal
-     * @see \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::insertModuleFunction(), menuConfig()
-     */
-    public function mergeExternalItems($modName, $menuKey, $menuArr)
-    {
-        $mergeArray = $GLOBALS['TBE_MODULES_EXT'][$modName]['MOD_MENU'][$menuKey];
-        if (is_array($mergeArray)) {
-            foreach ($mergeArray as $k => $v) {
-                if (((string)$v['ws'] === '' || $this->getBackendUser()->workspace === 0 && GeneralUtility::inList($v['ws'], 'online')) || $this->getBackendUser()->workspace === -1 && GeneralUtility::inList($v['ws'], 'offline') || $this->getBackendUser()->workspace > 0 && GeneralUtility::inList($v['ws'], 'custom')) {
-                    $menuArr[$k] = $this->getLanguageService()->sL($v['title']);
-                }
-            }
-        }
-        return $menuArr;
-    }
-
-    /**
-     * Loads $this->extClassConf with the configuration for the CURRENT function of the menu.
-     *
-     * @param string $MM_key The key to MOD_MENU for which to fetch configuration. 'function' is default since it is first and foremost used to get information per "extension object" (I think that is what its called)
-     * @param string $MS_value The value-key to fetch from the config array. If NULL (default) MOD_SETTINGS[$MM_key] will be used. This is useful if you want to force another function than the one defined in MOD_SETTINGS[function]. Call this in init() function of your Script Class: handleExternalFunctionValue('function', $forcedSubModKey)
-     * @see getExternalItemConfig(), init()
-     */
-    public function handleExternalFunctionValue($MM_key = 'function', $MS_value = null)
-    {
-        if ($MS_value === null) {
-            $MS_value = $this->MOD_SETTINGS[$MM_key];
-        }
-        $this->extClassConf = $this->getExternalItemConfig($this->MCONF['name'], $MM_key, $MS_value);
-    }
-
-    /**
-     * Returns configuration values from the global variable $TBE_MODULES_EXT for the module given.
-     * For example if the module is named "web_info" and the "function" key ($menuKey) of MOD_SETTINGS is "stat" ($value) then you will have the values of $TBE_MODULES_EXT['webinfo']['MOD_MENU']['function']['stat'] returned.
-     *
-     * @param string $modName Module name
-     * @param string $menuKey Menu key, eg. "function" for the function menu. See $this->MOD_MENU
-     * @param string $value Optionally the value-key to fetch from the array that would otherwise have been returned if this value was not set. Look source...
-     * @return mixed The value from the TBE_MODULES_EXT array.
-     * @see handleExternalFunctionValue()
-     */
-    public function getExternalItemConfig($modName, $menuKey, $value = '')
-    {
-        if (isset($GLOBALS['TBE_MODULES_EXT'][$modName])) {
-            return (string)$value !== '' ? $GLOBALS['TBE_MODULES_EXT'][$modName]['MOD_MENU'][$menuKey][$value] : $GLOBALS['TBE_MODULES_EXT'][$modName]['MOD_MENU'][$menuKey];
-        }
-        return null;
-    }
-
-    /**
-     * Creates an instance of the class found in $this->extClassConf['name'] in $this->extObj if any (this should hold three keys, "name", "path" and "title" if a "Function menu module" tries to connect...)
-     * This value in extClassConf might be set by an extension (in an ext_tables/ext_localconf file) which thus "connects" to a module.
-     * The array $this->extClassConf is set in handleExternalFunctionValue() based on the value of MOD_SETTINGS[function]
-     * If an instance is created it is initiated with $this passed as value and $this->extClassConf as second argument. Further the $this->MOD_SETTING is cleaned up again after calling the init function.
-     *
-     * @see handleExternalFunctionValue(), \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::insertModuleFunction(), $extObj
-     */
-    public function checkExtObj()
-    {
-        if (is_array($this->extClassConf) && $this->extClassConf['name']) {
-            $this->extObj = GeneralUtility::makeInstance($this->extClassConf['name']);
-            $this->extObj->init($this, $this->extClassConf);
-            // Re-write:
-            $this->MOD_SETTINGS = BackendUtility::getModuleData($this->MOD_MENU, GeneralUtility::_GP('SET'), $this->MCONF['name'], $this->modMenu_type, $this->modMenu_dontValidateList, $this->modMenu_setDefaultList);
-        }
-    }
-
-    /**
-     * Calls the checkExtObj function in sub module if present.
-     */
-    public function checkSubExtObj()
-    {
-        if (is_object($this->extObj)) {
-            $this->extObj->checkExtObj();
-        }
-    }
-
-    /**
-     * Calls the 'header' function inside the "Function menu module" if present.
-     * A header function might be needed to add JavaScript or other stuff in the head. This can't be done in the main function because the head is already written.
-     */
-    public function extObjHeader()
-    {
-        if (is_callable([$this->extObj, 'head'])) {
-            $this->extObj->head();
-        }
-    }
-
-    /**
-     * Calls the 'main' function inside the "Function menu module" if present
-     */
-    public function extObjContent()
-    {
-        if ($this->extObj === null) {
-            $flashMessage = GeneralUtility::makeInstance(
-                FlashMessage::class,
-                $this->getLanguageService()->sL('LLL:EXT:backend/Resources/Private/Language/locallang.xlf:no_modules_registered'),
-                $this->getLanguageService()->getLL('title'),
-                FlashMessage::ERROR
-            );
-            /** @var \TYPO3\CMS\Core\Messaging\FlashMessageService $flashMessageService */
-            $flashMessageService = GeneralUtility::makeInstance(FlashMessageService::class);
-            /** @var \TYPO3\CMS\Core\Messaging\FlashMessageQueue $defaultFlashMessageQueue */
-            $defaultFlashMessageQueue = $flashMessageService->getMessageQueueByIdentifier();
-            $defaultFlashMessageQueue->enqueue($flashMessage);
-        } else {
-            $this->extObj->pObj = $this;
-            if (is_callable([$this->extObj, 'main'])) {
-                $this->content .= $this->extObj->main();
-            }
-        }
-    }
-
-    /**
-     * Return the content of the 'main' function inside the "Function menu module" if present
-     *
-     * @return string
-     */
-    public function getExtObjContent()
-    {
-        $savedContent = $this->content;
-        $this->content = '';
-        $this->extObjContent();
-        $newContent = $this->content;
-        $this->content = $savedContent;
-        return $newContent;
-    }
-
-    /**
-     * Returns the Language Service
-     * @return LanguageService
-     */
-    protected function getLanguageService()
-    {
-        return $GLOBALS['LANG'];
-    }
-
-    /**
-     * Returns the Backend User
-     * @return BackendUserAuthentication
-     */
-    protected function getBackendUser()
-    {
-        return $GLOBALS['BE_USER'];
-    }
-
-    /**
-     * @return PageRenderer
-     */
-    protected function getPageRenderer()
-    {
-        if ($this->pageRenderer === null) {
-            $this->pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
-        }
-
-        return $this->pageRenderer;
-    }
-}
index 970e8e2..45651d8 100644 (file)
@@ -664,7 +664,9 @@ function jumpToUrl(URL) {
 
     /**
      * Insert post rendering document style into already rendered content
-     * This is needed for extobjbase
+     *
+     * @todo: Review this, it may be obsolete or could be done differently?
+     * @todo: Previous comment was: "This is needed for extobjbase" (AbstractFunctionModule)
      *
      * @param string $content style-content to insert.
      * @return string content with inserted styles
index 174b743..a34fe0f 100644 (file)
@@ -21,7 +21,7 @@ use TYPO3\CMS\Extbase\Core\Bootstrap;
 /**
  * This class is a wrapper for WebInfo controller of belog.
  * It is registered in ext_tables.php with \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::insertModuleFunction()
- * and called by the info extension via SCbase functionality.
+ * and called by the info extension.
  *
  * Extbase currently provides no way to register a "TBE_MODULES_EXT" module directly,
  * therefore we need to bootstrap extbase on our own here to jump to the WebInfo controller.
index 69f7804..c0ddd1a 100644 (file)
@@ -14,7 +14,6 @@ namespace TYPO3\CMS\Core\Database;
  * The TYPO3 project - inspiring people to share!
  */
 
-use TYPO3\CMS\Backend\Module\BaseScriptClass;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
 use TYPO3\CMS\Core\Core\Environment;
@@ -1731,7 +1730,7 @@ class QueryGenerator
     }
 
     /**
-     * @return BaseScriptClass
+     * @return object
      */
     protected function getModule()
     {
index 2895c4c..45dfcf4 100644 (file)
@@ -950,7 +950,6 @@ class ExtensionManagementUtility
      * @param string $title Title of module
      * @param string $MM_key Menu array key - default is "function
      * @param string $WS Workspace conditions. Blank means all workspaces, any other string can be a comma list of "online", "offline" and "custom
-     * @see \TYPO3\CMS\Backend\Module\BaseScriptClass::mergeExternalItems()
      */
     public static function insertModuleFunction($modname, $className, $_ = null, $title, $MM_key = 'function', $WS = '')
     {
index efe6a26..490ccef 100644 (file)
@@ -11,6 +11,9 @@ Description
 
 The following PHP classes that have been previously deprecated for v9 have been removed:
 
+* :php:`TYPO3\CMS\Backend\Module\AbstractFunctionModule`
+* :php:`TYPO3\CMS\Backend\Module\AbstractModule`
+* :php:`TYPO3\CMS\Backend\Module\BaseScriptClass`
 * :php:`TYPO3\CMS\Core\Crypto\PasswordHashing\AbstractComposedSalt`
 * :php:`TYPO3\CMS\Core\Crypto\PasswordHashing\ExtensionManagerConfigurationUtility`
 * :php:`TYPO3\CMS\Core\Crypto\PasswordHashing\SaltedPasswordService`
index 74657e7..6884da4 100644 (file)
@@ -540,7 +540,7 @@ class TranslationStatusController
     }
 
     /**
-     * Since the AbstractFunctionModule cannot access the current request yet, we'll do it "old school"
+     * Since the controller does not access the current request yet, we'll do it "old school"
      * to fetch the Site based on the current ID.
      */
     protected function initializeSiteLanguages()
index 1089ebd..54c6130 100644 (file)
@@ -402,6 +402,7 @@ return [
     'TYPO3\CMS\Backend\Module\AbstractModule' => [
         'restFiles' => [
             'Breaking-82689-BackendAbstractWizardControllerNotExtendsAbstractModule.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     'TYPO3\CMS\Core\TypoScript\ConfigurationForm' => [
@@ -962,11 +963,13 @@ return [
     'TYPO3\CMS\Backend\Module\BaseScriptClass' => [
         'restFiles' => [
             'Deprecation-86225-ClassesBaseScriptClassAndAbstractFunctionModule.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     'TYPO3\CMS\Backend\Module\AbstractFunctionModule' => [
         'restFiles' => [
             'Deprecation-86225-ClassesBaseScriptClassAndAbstractFunctionModule.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     'TYPO3\CMS\Install\Updates\AbstractUpdate' => [
index c17583b..e205e6d 100644 (file)
@@ -15,7 +15,6 @@ namespace TYPO3\CMS\Recordlist\RecordList;
  */
 
 use TYPO3\CMS\Backend\Configuration\TranslationConfigurationProvider;
-use TYPO3\CMS\Backend\Module\BaseScriptClass;
 use TYPO3\CMS\Backend\RecordList\RecordListGetTableHookInterface;
 use TYPO3\CMS\Backend\Routing\UriBuilder;
 use TYPO3\CMS\Backend\Template\Components\ButtonBar;
@@ -2886,7 +2885,7 @@ class DatabaseRecordList
     }
 
     /**
-     * @return BaseScriptClass
+     * @return object
      */
     protected function getModule()
     {