[!!!][TASK] Remove deprecated code / TypoScript in EXT:frontend 93/52493/8
authorBenni Mack <benni@typo3.org>
Tue, 18 Apr 2017 21:47:07 +0000 (23:47 +0200)
committerSusanne Moog <susanne.moog@typo3.org>
Wed, 19 Apr 2017 21:36:44 +0000 (23:36 +0200)
Any code/options related to Frontend rendering / TypoScript that
has been deprecated in v8 is now removed.

Resolves: #80715
Resolves: #80711
Releases: master
Change-Id: I217cf2f936d6ce7fc0fe71ed970fed5d4f802535
Reviewed-on: https://review.typo3.org/52493
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Susanne Moog <susanne.moog@typo3.org>
Tested-by: Susanne Moog <susanne.moog@typo3.org>
29 files changed:
typo3/sysext/core/Classes/Authentication/AbstractUserAuthentication.php
typo3/sysext/core/Classes/Messaging/AbstractStandaloneMessage.php [deleted file]
typo3/sysext/core/Classes/Messaging/ErrorpageMessage.php [deleted file]
typo3/sysext/core/Classes/TimeTracker/NullTimeTracker.php [deleted file]
typo3/sysext/core/Classes/TypoScript/TemplateService.php
typo3/sysext/core/Configuration/DefaultConfiguration.php
typo3/sysext/core/Configuration/DefaultConfigurationDescription.php
typo3/sysext/core/Documentation/Changelog/master/Breaking-80700-DeprecatedFunctionalityRemoved.rst
typo3/sysext/core/Resources/Private/Templates/Page/Error.html [deleted file]
typo3/sysext/frontend/Classes/Authentication/FrontendUserAuthentication.php
typo3/sysext/frontend/Classes/ContentObject/AbstractContentObject.php
typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php
typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php
typo3/sysext/frontend/Classes/Http/RequestHandler.php
typo3/sysext/frontend/Classes/Page/FramesetRenderer.php [deleted file]
typo3/sysext/frontend/Classes/Page/PageGenerator.php
typo3/sysext/frontend/Classes/Page/PageRepository.php
typo3/sysext/frontend/Classes/Plugin/AbstractPlugin.php
typo3/sysext/frontend/Classes/Typolink/AbstractTypolinkBuilder.php
typo3/sysext/frontend/Classes/View/AdminPanelView.php
typo3/sysext/frontend/Tests/Functional/ContentObject/ContentObjectRendererTest.php
typo3/sysext/frontend/Tests/Unit/ContentObject/ContentObjectRendererTest.php
typo3/sysext/frontend/Tests/Unit/Controller/TypoScriptFrontendControllerTest.php
typo3/sysext/frontend/Tests/Unit/Page/Fixtures/PageGeneratorFixture.php
typo3/sysext/frontend/Tests/Unit/Page/PageGeneratorTest.php
typo3/sysext/frontend/Tests/Unit/Page/PageRepositoryTest.php
typo3/sysext/install/Classes/Service/SilentConfigurationUpgradeService.php
typo3/sysext/t3editor/Resources/Private/tsref.xml
typo3/sysext/t3editor/Resources/Public/JavaScript/parse_typoscript/tokenizetyposcript.js

index dcbed6f..21f68e2 100644 (file)
@@ -343,7 +343,6 @@ abstract class AbstractUserAuthentication
     /**
      * Holds deserialized data from session records.
      * 'Reserved' keys are:
-     *   - 'recs': (DEPRECATED) Array: Used to 'register' records, eg in a shopping basket. Structure: [recs][tablename][record_uid]=number
      *   - 'sys': Reserved for TypoScript standard code.
      * @var array
      */
diff --git a/typo3/sysext/core/Classes/Messaging/AbstractStandaloneMessage.php b/typo3/sysext/core/Classes/Messaging/AbstractStandaloneMessage.php
deleted file mode 100644 (file)
index b9cb153..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-<?php
-namespace TYPO3\CMS\Core\Messaging;
-
-use TYPO3\CMS\Core\Service\MarkerBasedTemplateService;
-use TYPO3\CMS\Core\Utility\GeneralUtility;
-
-/*
- * 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!
- */
-
-/**
- * Abstract class as base for standalone messages (error pages etc.)
- * This class is deprecated since TYPO3 v8 in favor of the ErrorPageController, and will be removed in TYPO3 v9
- */
-abstract class AbstractStandaloneMessage extends AbstractMessage
-{
-    /**
-     * Path to the HTML template file, relative to PATH_site
-     *
-     * @var string
-     */
-    protected $htmlTemplate;
-
-    /**
-     * Default markers
-     *
-     * @var array
-     */
-    protected $defaultMarkers = [];
-
-    /**
-     * Markers in template to be filled
-     *
-     * @var array
-     */
-    protected $markers = [];
-
-    /**
-     * Constructor
-     *
-     * @param string $message Message
-     * @param string $title Title
-     * @param int $severity Severity, see class constants of AbstractMessage
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, use the ErrorPageController instead
-     */
-    public function __construct($message = '', $title = '', $severity = AbstractMessage::ERROR)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        if (!empty($message)) {
-            $this->setMessage($message);
-        }
-        $this->setTitle(!empty($title) ? $title : 'Error!');
-        $this->setSeverity($severity);
-    }
-
-    /**
-     * Sets the markers of the templates, which have to be replaced with the specified contents.
-     * The marker array passed, will be merged with already present markers.
-     *
-     * @param array $markers Array containing the markers and values (e.g. ###MARKERNAME### => value)
-     */
-    public function setMarkers(array $markers)
-    {
-        $this->markers = array_merge($this->markers, $markers);
-    }
-
-    /**
-     * Returns the default markers like title and message, which exist for every standalone message
-     *
-     * @return array
-     */
-    protected function getDefaultMarkers()
-    {
-        $classes = [
-            self::NOTICE => 'notice',
-            self::INFO => 'information',
-            self::OK => 'ok',
-            self::WARNING => 'warning',
-            self::ERROR => 'error'
-        ];
-        $defaultMarkers = [
-            '###CSS_CLASS###' => $classes[$this->severity],
-            '###TITLE###' => $this->title,
-            '###MESSAGE###' => $this->message,
-            // Avoid calling TYPO3_SITE_URL here to get the base URL as it might be that we output an exception message with
-            // invalid trusted host, which would lead to a nested exception! See: #30377
-            // Instead we calculate the relative path to the document root without involving HTTP request parameters.
-            '###BASEURL###' => substr(PATH_site, strlen(GeneralUtility::getIndpEnv('TYPO3_DOCUMENT_ROOT'))),
-            '###TYPO3_mainDir###' => TYPO3_mainDir,
-            '###TYPO3_copyright_year###' => TYPO3_copyright_year
-        ];
-        return $defaultMarkers;
-    }
-
-    /**
-     * Gets the filename of the HTML template.
-     *
-     * @return string The filename of the HTML template.
-     */
-    public function getHtmlTemplate()
-    {
-        if (!$this->htmlTemplate) {
-            throw new \RuntimeException('No HTML template file has been defined, yet', 1314390127);
-        }
-        return $this->htmlTemplate;
-    }
-
-    /**
-     * Sets the filename to the HTML template
-     *
-     * @param string $htmlTemplate The filename of the HTML template, relative to PATH_site
-     */
-    public function setHtmlTemplate($htmlTemplate)
-    {
-        $this->htmlTemplate = PATH_site . $htmlTemplate;
-        if (!file_exists($this->htmlTemplate)) {
-            throw new \RuntimeException('Template file "' . $this->htmlTemplate . '" not found', 1312830504);
-        }
-    }
-
-    /**
-     * Renders the message.
-     *
-     * @return string The message as HTML.
-     */
-    public function render()
-    {
-        $markers = array_merge($this->getDefaultMarkers(), $this->markers);
-        $content = file_get_contents($this->htmlTemplate);
-        $templateService = GeneralUtility::makeInstance(MarkerBasedTemplateService::class);
-        $content = $templateService->substituteMarkerArray($content, $markers, '', false, true);
-        return $content;
-    }
-
-    /**
-     * Renders the message and echoes it.
-     */
-    public function output()
-    {
-        $content = $this->render();
-        echo $content;
-    }
-}
diff --git a/typo3/sysext/core/Classes/Messaging/ErrorpageMessage.php b/typo3/sysext/core/Classes/Messaging/ErrorpageMessage.php
deleted file mode 100644 (file)
index cd40bf1..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-namespace TYPO3\CMS\Core\Messaging;
-
-/*
- * 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\Core\Utility\ExtensionManagementUtility;
-use TYPO3\CMS\Core\Utility\GeneralUtility;
-
-/**
- * A class representing error messages shown on a page.
- * Classic Example: "No pages are found on rootlevel"
- * This class is deprecated since TYPO3 v8 in favor of the ErrorPageController, and will be removed in TYPO3 v9
- */
-class ErrorpageMessage extends AbstractStandaloneMessage
-{
-    /**
-     * Constructor for an Error message
-     *
-     * @param string $message The error message
-     * @param string $title Title of the message, can be empty
-     * @param int $severity Optional severity, must be either of AbstractMessage::INFO or related constants
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, use the ErrorPageController instead
-     */
-    public function __construct($message = '', $title = '', $severity = AbstractMessage::ERROR)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        $this->setHtmlTemplate(ExtensionManagementUtility::siteRelPath('core') . 'Resources/Private/Templates/Page/Error.html');
-        parent::__construct($message, $title, $severity);
-    }
-
-    /**
-     * Returns the default markers for the template, with some additional parameters for the error page.
-     *
-     * @return array
-     */
-    protected function getDefaultMarkers()
-    {
-        $defaultMarkers = parent::getDefaultMarkers();
-        $defaultMarkers['###EXTPATH_CORE###'] = ExtensionManagementUtility::siteRelPath('core');
-        $defaultMarkers['###EXTPATH_BACKEND###'] = ExtensionManagementUtility::siteRelPath('backend');
-        return $defaultMarkers;
-    }
-}
diff --git a/typo3/sysext/core/Classes/TimeTracker/NullTimeTracker.php b/typo3/sysext/core/Classes/TimeTracker/NullTimeTracker.php
deleted file mode 100644 (file)
index 0ba34b9..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-<?php
-namespace TYPO3\CMS\Core\TimeTracker;
-
-/*
- * 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\Core\Utility\GeneralUtility;
-
-/**
- * A fake time tracker that does nothing but providing the methods of the real time tracker.
- * This is done to save some performance over the real time tracker.
- * @deprecated since TYPO3 v8, will be removed in v9
- */
-class NullTimeTracker
-{
-    /**
-     * "Constructor"
-     * Sets the starting time
-     *
-     * does nothing
-     *
-     * @deprecated since TYPO3 v8, will be removed in v9, use the regular time tracking
-     */
-    public function start()
-    {
-        GeneralUtility::logDeprecatedFunction();
-    }
-
-    /**
-     * Pushes an element to the TypoScript tracking array
-     *
-     * does nothing
-     *
-     * @param string $tslabel Label string for the entry, eg. TypoScript property name
-     * @param string $value Additional value(?)
-     */
-    public function push($tslabel, $value = '')
-    {
-    }
-
-    /**
-     * Pulls an element from the TypoScript tracking array
-     *
-     * does nothing
-     *
-     * @param string $content The content string generated within the push/pull part.
-     */
-    public function pull($content = '')
-    {
-    }
-
-    /**
-     * Set TSselectQuery - for messages in TypoScript debugger.
-     *
-     * does nothing
-     *
-     * @param array $data Query array
-     * @param string $msg Message/Label to attach
-     */
-    public function setTSselectQuery(array $data, $msg = '')
-    {
-    }
-
-    /**
-     * Logs the TypoScript entry
-     *
-     * does nothing
-     *
-     * @param string $content The message string
-     * @param int $num Message type: 0: information, 1: message, 2: warning, 3: error
-     */
-    public function setTSlogMessage($content, $num = 0)
-    {
-    }
-
-    /**
-     * Print TypoScript parsing log
-     *
-     * does nothing
-     *
-     * @return string HTML table with the information about parsing times.
-     */
-    public function printTSlog()
-    {
-    }
-
-    /**
-     * Increases the stack pointer
-     *
-     * does nothing
-     */
-    public function incStackPointer()
-    {
-    }
-
-    /**
-     * Decreases the stack pointer
-     *
-     * does nothing
-     */
-    public function decStackPointer()
-    {
-    }
-
-    /**
-     * Gets a microtime value as milliseconds value.
-     *
-     * @param float $microtime The microtime value - if not set the current time is used
-     * @return int The microtime value as milliseconds value
-     */
-    public function getMilliseconds($microtime = null)
-    {
-    }
-}
index c5be14b..02fffbf 100644 (file)
@@ -1300,25 +1300,6 @@ class TemplateService
      * Various API functions, used from elsewhere in the frontend classes
      *
      *******************************************************************/
-    /**
-     * Implementation of the "optionSplit" feature in TypoScript (used eg. for MENU objects)
-     * What it does is to split the incoming TypoScript array so that the values are exploded by certain strings ("||" and "|*|") and each part distributed into individual TypoScript arrays with a similar structure, but individualized values.
-     * The concept is known as "optionSplit" and is rather advanced to handle but quite powerful, in particular for creating menus in TYPO3.
-     *
-     * @param array $conf A TypoScript array
-     * @param int $splitCount The number of items for which to generated individual TypoScript arrays
-     * @return array The individualized TypoScript array.
-     * @see \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer::IMGTEXT(), \TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject::procesItemStates()
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, use TypoScriptService::explodeConfigurationForOptionSplit() instead
-     */
-    public function splitConfArray($conf, $splitCount)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        if (!is_array($conf)) {
-            return [];
-        }
-        return GeneralUtility::makeInstance(TypoScriptService::class)->explodeConfigurationForOptionSplit($conf, (int)$splitCount);
-    }
 
     /**
      * Returns the reference used for the frontend inclusion, checks against allowed paths for inclusion.
@@ -1404,58 +1385,6 @@ class TemplateService
     }
 
     /**
-     * Reads the fileContent of $fileName and returns it.
-     * Similar to GeneralUtility::getUrl() but with an additional check if the path is allowed
-     *
-     * @param string $fileName Absolute filepath to record
-     * @return NULL|string The content returned
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, use $this->getFileName() and file_get_contents directly
-     */
-    public function fileContent($fileName)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        $fileName = $this->getFileName($fileName);
-        if ($fileName) {
-            return GeneralUtility::getUrl($fileName);
-        }
-        return null;
-    }
-
-    /**
-     * Removes the "?" of input string IF the "?" is the last character.
-     *
-     * @param string $url Input string
-     * @return string Output string, free of "?" in the end, if any such character.
-     * @see linkData(), \TYPO3\CMS\Frontend\Page\FramesetRenderer::frameParams()
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, use rtrim($url, '?') instead
-     */
-    public function removeQueryString($url)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        if (substr($url, -1) === '?') {
-            return substr($url, 0, -1);
-        } else {
-            return $url;
-        }
-    }
-
-    /**
-     * Takes a TypoScript array as input and returns an array which contains all integer properties found which had a value (not only properties). The output array will be sorted numerically.
-     * Call it like \TYPO3\CMS\Core\TypoScript\TemplateService::sortedKeyList()
-     *
-     * @param array $setupArr TypoScript array with numerical array in
-     * @param bool $acceptOnlyProperties If set, then a value is not required - the properties alone will be enough.
-     * @return array An array with all integer properties listed in numeric order.
-     * @see \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer::cObjGet(), \TYPO3\CMS\Frontend\Imaging\GifBuilder, \TYPO3\CMS\Frontend\ContentObject\Menu\ImageMenuContentObject::makeImageMap()
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, use ArrayUtility::filterAndSortByNumericKeys instead
-     */
-    public static function sortedKeyList($setupArr, $acceptOnlyProperties = false)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return ArrayUtility::filterAndSortByNumericKeys($setupArr, $acceptOnlyProperties);
-    }
-
-    /**
      * Returns the level of the given page in the rootline - Multiple pages can be given by separating the UIDs by comma.
      *
      * @param string $list A list of UIDs for which the rootline-level should get returned
@@ -1487,15 +1416,15 @@ class TemplateService
      * @param array $page The page record of the page to which we are creating a link. Needed due to fields like uid, alias, target, no_cache, title and sectionIndex_uid.
      * @param string $oTarget Default target string to use IF not $page['target'] is set.
      * @param bool $no_cache If set, then the "&no_cache=1" parameter is included in the URL.
-     * @param string $script Alternative script name if you don't want to use $this->getTypoScriptFrontendController()->config['mainScript'] (normally set to "index.php")
+     * @param string $_ not in use anymore
      * @param array $overrideArray Array with overriding values for the $page array.
      * @param string $addParams Additional URL parameters to set in the URL. Syntax is "&foo=bar&foo2=bar2" etc. Also used internally to add parameters if needed.
      * @param string $typeOverride If you set this value to something else than a blank string, then the typeNumber used in the link will be forced to this value. Normally the typeNum is based on the target set OR on $this->getTypoScriptFrontendController()->config['config']['forceTypeValue'] if found.
      * @param string $targetDomain The target Doamin, if any was detected in typolink
      * @return array Contains keys like "totalURL", "url", "sectionIndex", "linkVars", "no_cache", "type", "target" of which "totalURL" is normally the value you would use while the other keys contains various parts that was used to construct "totalURL
-     * @see \TYPO3\CMS\Frontend\Page\FramesetRenderer::frameParams(), \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer::typoLink(), \TYPO3\CMS\Frontend\Page\PageGenerator::pagegenInit(), \TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject::link()
+     * @see \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer::typoLink(), \TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject::link()
      */
-    public function linkData($page, $oTarget, $no_cache, $script, $overrideArray = null, $addParams = '', $typeOverride = '', $targetDomain = '')
+    public function linkData($page, $oTarget, $no_cache, $_ = null, $overrideArray = null, $addParams = '', $typeOverride = '', $targetDomain = '')
     {
         $LD = [];
         // Overriding some fields in the page record and still preserves the values by adding them as parameters. Little strange function.
@@ -1519,9 +1448,7 @@ class TemplateService
             }
         }
         // Setting ID/alias:
-        if (!$script) {
-            $script = $this->getTypoScriptFrontendController()->config['mainScript'];
-        }
+        $script = 'index.php';
         if ($page['alias']) {
             $LD['url'] = $script . '?id=' . rawurlencode($page['alias']);
         } else {
index af10366..e84625f 100644 (file)
@@ -957,7 +957,6 @@ return [
     'FE' => [ // Configuration for the TypoScript frontend (FE). Nothing here relates to the administration backend!
         'addAllowedPaths' => '',
         'debug' => false,
-        'noPHPscriptInclude' => false,
         'compressionLevel' => 0,
         'pageNotFound_handling' => '',
         'pageNotFound_handling_statheader' => 'HTTP/1.0 404 Not Found',
@@ -971,7 +970,6 @@ return [
         'loginSecurityLevel' => '',
         'lifetime' => 0,
         'sessionDataLifetime' => 86400,
-        'maxSessionDataSize' => 10000,
         'permalogin' => 0,
         'cookieDomain' => '',
         'cookieName' => 'fe_typo_user',
index 00d1477..de42972 100644 (file)
@@ -131,7 +131,6 @@ return [
     'FE' => [ // Configuration for the TypoScript frontend (FE). Nothing here relates to the administration backend!
         'addAllowedPaths' => 'Additional relative paths (comma-list) to allow TypoScript resources be in. Should be prepended with \'/\'. If not, then any path where the first part is like this path will match. That is: \'myfolder/ , myarchive\' will match eg. \'myfolder/\', \'myarchive/\', \'myarchive_one/\', \'myarchive_2/\' ... No check is done to see if this directory actually exists in the root of the site. Paths are matched by simply checking if these strings equals the first part of any TypoScript resource filepath. (See class template, function init() in <code>\\TYPO3\\CMS\\Core\\TypoScript\\Parser\\TypoScriptParser)</code>',
         'debug' => 'Boolean: If set, some debug HTML-comments may be output somewhere. Can also be set by TypoScript.',
-        'noPHPscriptInclude' => 'Boolean: If set, PHP-scripts are not included by TypoScript configurations, unless they reside in the folders typo3/ext/, typo3/sysext/ or typo3conf/ext. This is a security option to ensure that users with template-access do not terrorize',
         'compressionLevel' => 'Integer: Determines output compression of FE output. Makes output smaller but slows down the page generation depending on the compression level. Requires zlib in your PHP installation. Range 1-9, where 1 is least compression and 9 is greatest compression. \'true\' as value will set the compression based on the PHP default settings (usually 5). Suggested and most optimal value is 5.',
         'pageNotFound_handling' => '<p>How TYPO3 should handle requests for non-existing/accessible pages.</p> <dl><dt>empty (default)</dt><dd>The next visible page upwards in the page tree is shown.</dd> <dt>\'true\' or \'1\'</dt><dd>An error message is shown.</dd><dt>String</dt><dd>Static HTML file to show (reads content and outputs with correct headers), e.g. \'notfound.html\' or \'http://www.example.org/errors/notfound.html\'.</dd> <dt>Prefix "REDIRECT:"</dt><dd> If prefixed with "REDIRECT:" it will redirect to the URL/script after the prefix.</dd><dt>Prefix "READFILE:"</dt><dd>If prefixed with "READFILE" then it will expect the remaining string to be a HTML file which will be read and outputted directly after having the marker "###CURRENT_URL###" substituted with REQUEST_URI and ###REASON### with reason text, for example: "READFILE:fileadmin/notfound.html".</dd> <dt>Prefix "USER_FUNCTION:"</dt><dd> If prefixed with "USER_FUNCTION:" a user function is called, e.g. "USER_FUNCTION:fileadmin/class.user_notfound.php:user_notFound->pageNotFound" where the file must contain a class "user_notFound" with a method "pageNotFound" inside with two parameters $param and $ref.</dd></dl>',
         'pageNotFound_handling_statheader' => 'If \'pageNotFound_handling\' is enabled, this string will always be sent as header before the actual handling.',
@@ -145,7 +144,6 @@ return [
         'loginSecurityLevel' => 'See description for <a href="#BE-loginSecurityLevel">[BE][loginSecurityLevel]</a>. Default state for frontend is "normal". Alternative authentication services can implement higher levels if preferred. For example, "rsa" level uses RSA password encryption (only if the rsaauth extension is installed).',
         'lifetime' => 'Integer: positive. If >0 and the option permalogin is >=0, the cookie of FE users will have a lifetime of the number of seconds this value indicates. Otherwise it will be a session cookie (deleted when browser is shut down). Setting this value to 604800 will result in automatic login of FE users during a whole week, 86400 will keep the FE users logged in for a day.',
         'sessionDataLifetime' => 'Integer: positive. If >0, the session data will timeout and be removed after the number of seconds given (86400 seconds represents 24 hours).',
-        'maxSessionDataSize' => 'Integer: Setting (deprecated) the maximum size (bytes) of frontend session data stored in the table fe_session_data. Set to zero (0) means no limit, but this is not recommended since it also disables a check that session data is stored only if a confirmed cookie is set. <code>@deprecated since TYPO3 v8, will be removed in TYPO3 v9.</code>',
         'permalogin' => 'In any case, permanent login is only possible if <a href="#FE-lifetime">[FE][lifetime]</a> lifetime is > 0.</dd></dl>',
         'cookieDomain' => 'Same as <a href="#SYS-cookieDomain">$TYPO3_CONF_VARS[\'SYS\'][\'cookieDomain\']</a> but only for FE cookies. If empty, $TYPO3_CONF_VARS[\'SYS\'][\'cookieDomain\'] value will be used.',
         'cookieName' => 'String: Set the name for the cookie used for the front-end user session',
index 6e03cd5..6978154 100644 (file)
@@ -15,6 +15,10 @@ The following PHP classes that have been previously deprecated for v8 have been
 * TYPO3\CMS\Backend\Console\CliRequestHandler
 * TYPO3\CMS\Core\Controller\CommandLineController
 * TYPO3\CMS\Core\Http\AjaxRequestHandler
+* TYPO3\CMS\Core\Messaging\AbstractStandaloneMessage
+* TYPO3\CMS\Core\Messaging\ErrorpageMessage
+* TYPO3\CMS\Core\TimeTracker\NullTimeTracker
+* TYPO3\CMS\Frontend\Page\FramesetRenderer
 * TYPO3\CMS\Lowlevel\CleanerCommand
 
 The following PHP class methods that have been previously deprecated for v8 have been removed:
@@ -48,6 +52,10 @@ The following PHP class methods that have been previously deprecated for v8 have
 * TYPO3\CMS\Core\Charset\CharsetConverter->utf8_strrpos()
 * TYPO3\CMS\Core\Charset\CharsetConverter->utf8_strtrunc()
 * TYPO3\CMS\Core\Charset\CharsetConverter->utf8_substr()
+* TYPO3\CMS\Core\TypoScript\TemplateService->splitConfArray()
+* TYPO3\CMS\Core\TypoScript\TemplateService->fileContent()
+* TYPO3\CMS\Core\TypoScript\TemplateService->removeQueryString()
+* TYPO3\CMS\Core\TypoScript\TemplateService->sortedKeyList()
 * TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addExtJSModule()
 * TYPO3\CMS\Core\Utility\ExtensionManagementUtility::appendToTypoConfVars()
 * TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath()
@@ -80,6 +88,39 @@ The following PHP class methods that have been previously deprecated for v8 have
 * TYPO3\CMS\Fluid\Core\Rendering\RenderingContext->getTemplateVariableContainer()
 * TYPO3\CMS\Fluid\Core\Rendering\RenderingContext->injectObjectManager()
 * TYPO3\CMS\Fluid\Core\Rendering\RenderingContext->setLegacyMode()
+* TYPO3\CMS\Frontend\Authentication\FrontendUserAuthentication->record_registration()
+* TYPO3\CMS\Frontend\ContentObject\AbstractContentObject->getContentObject()
+* TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->URLqMark()
+* TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->clearTSProperties()
+* TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->fileResource()
+* TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->fillInMarkerArray()
+* TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->getSubpart()
+* TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->getWhere()
+* TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->gifBuilderTextBox()
+* TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->includeLibs()
+* TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->linebreaks()
+* TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->processParams()
+* TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->removeBadHTML()
+* TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->stdWrap_fontTag()
+* TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->stdWrap_removeBadHTML()
+* TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->substituteMarker()
+* TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->substituteMarkerAndSubpartArrayRecursive()
+* TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->substituteMarkerArray()
+* TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->substituteMarkerArrayCached()
+* TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->substituteMarkerInObject()
+* TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->substituteSubpart()
+* TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->substituteSubpartArray()
+* TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->beLoginLinkIPList()
+* TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->csConv()
+* TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->encryptCharcode()
+* TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->encryptEmail()
+* TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->generatePage_whichScript()
+* TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->includeLibraries()
+* TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->setParseTime()
+* TYPO3\CMS\Frontend\Page\PageGenerator::pagegenInit()
+* TYPO3\CMS\Frontend\Page\PageRepository->getPathFromRootline()
+* TYPO3\CMS\Frontend\Page\PageRepository::getHash()
+* TYPO3\CMS\Frontend\Page\PageRepository::storeHash()
 * TYPO3\CMS\Lang\LanguageService->addModuleLabels()
 * TYPO3\CMS\Lang\LanguageService->getParserFactory()
 * TYPO3\CMS\Lang\LanguageService->makeEntities()
@@ -97,24 +138,36 @@ The following methods changed signature according to previous deprecations in v8
 * TYPO3\CMS\Core\Localization\Parser\LocallangXmlParser->getParsedData() - Third argument dropped
 * TYPO3\CMS\Core\Page\PageRenderer->addInlineLanguageLabelFile() - Fourth argument dropped
 * TYPO3\CMS\Core\Page\PageRenderer->includeLanguageFileForInline() - Fourth argument dropped
+* TYPO3\CMS\Core\TypoScript\TemplateService->linkData() - Fourth argument unused
 * TYPO3\CMS\Core\Utility\GeneralUtility::callUserFunction() - Persistent or file prefix in first argument removed
 * TYPO3\CMS\Core\Utility\GeneralUtility::getFileAbsFileName() - Second and thrird argument dropped
 * TYPO3\CMS\Core\Utility\GeneralUtility::getUserObj() - File reference prefix in first argument removed
 * TYPO3\CMS\Core\Utility\GeneralUtility::wrapJS() - Second argument dropped
+* TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->searchWhere() - Third parameter is now mandatory
+* TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->whichWorkspace() - First argument removed
+* TYPO3\CMS\Frontend\Plugin\AbstractPlugin->__constructor() - First argument unused
 * TYPO3\CMS\Lang\LanguageService->getLL() - Second argument dropped
 * TYPO3\CMS\Lang\LanguageService->getLLL() - Third argument dropped
 * TYPO3\CMS\Lang\LanguageService->getsL() - Second argument dropped
 
-The following class properties have been dropped:
+The following public class properties have been dropped:
 * TYPO3\CMS\Core\Charset\CharsetConverter->charSetArray
 * TYPO3\CMS\Core\Charset\CharsetConverter->fourByteSets
+* TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->compensateFieldWidth
+* TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->excludeCHashVars
+* TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->scriptParseTime
+* TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->csConvObj
+* TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->defaultCharSet
+* TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->renderCharset
 * TYPO3\CMS\Lang\LanguageService->charSet
 * TYPO3\CMS\Lang\LanguageService->csConvObj
 * TYPO3\CMS\Lang\LanguageService->moduleLabels
 * TYPO3\CMS\Lang\LanguageService->parserFactory
 
 The following configuration options are not evaluated anymore:
-* $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['GLOBAL']['cliKeys']
+* $TYPO3_CONF_VARS[SC_OPTIONS][GLOBAL][cliKeys]
+* $TYPO3_CONF_VARS[FE][noPHPscriptInclude]
+* $TYPO3_CONF_VARS[FE][maxSessionDataSize]
 
 The following entry points have been removed:
 * typo3/cli_dispatch.phpsh
@@ -122,6 +175,22 @@ The following entry points have been removed:
 The following hooks have been removed:
 * $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_befunc.php']['getFlexFormDSClass']
 
+The following TypoScript options have been removed:
+* stdWrap.fontTag
+* stdWrap.removeBadHTML
+* config.mainScript
+* config.frameReloadIfNotInFrameset
+* config.noScaleUp
+* config.setJS_mouseOver
+* config.setJS_openPic
+* config.doctype = xhtml_frames
+* config.xhtmlDoctype = xhtml_frames
+* config.pageGenScript
+* config.beLoginLinkIPList
+* config.beLoginLinkIPList_login
+* config.beLoginLinkIPList_logout
+* page.frameSet
+* page.insertClassesFromRTE
 
 Impact
 ======
diff --git a/typo3/sysext/core/Resources/Private/Templates/Page/Error.html b/typo3/sysext/core/Resources/Private/Templates/Page/Error.html
deleted file mode 100644 (file)
index dcd65d1..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-       <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-       <meta name="robots" content="noindex, follow" />
-
-       <title>###TITLE###</title>
-
-       <base href="###BASEURL###" />
-
-       <link rel="stylesheet" href="###EXTPATH_CORE###Resources/Public/Css/errorpage.css" />
-</head>
-
-<body class="t3-message-page t3-###CSS_CLASS###page-message">
-
-<div class="t3-error-wrap">
-       <div class="t3-message-page-container">
-               <div class="t3-message-page-logo">
-                       <img src="###EXTPATH_BACKEND###Resources/Public/Images/typo3_orange.svg" class="typo3-error-image" alt="TYPO3 logo">
-               </div>
-               <div class="callout callout-danger">
-                       <div class="media">
-                               <div class="media-left">
-                    <span class="fa-stack fa-lg callout-icon">
-                        <i class="fa fa-circle fa-stack-2x"></i>
-                        <i class="fa fa-exclamation-triangle fa-stack-1x"></i>
-                    </span>
-                               </div>
-                               <div class="media-body">
-                                       <h4 class="alert-title">###TITLE###</h4>
-
-                                       <div class="callout-body">
-                                               ###MESSAGE###
-                                       </div>
-                               </div>
-                       </div>
-               </div>
-               <div id="t3-footer">
-                       <div id="t3-copyright-notice">
-                               TYPO3 CMS is an open source content management system. To maintain the quality of the system and to improve it, please help us by
-                               donating.
-                               TYPO3 CMS. Copyright &copy; ###TYPO3_copyright_year### Kasper Skårhøj. Extensions are copyright of their respective owners. Go to
-                               https:typo3.org/ for details.
-                               TYPO3 CMS comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions.
-                               Obstructing the appearance of this notice is prohibited by law.
-                       </div>
-               </div>
-       </div>
-</div>
-
-</body>
-</html>
-
index 5b8aa80..fd6fc5b 100644 (file)
@@ -519,13 +519,12 @@ class FrontendUserAuthentication extends AbstractUserAuthentication
     /**
      * Saves session data, either persistent or bound to current session cookie. Please see getKey() for more details.
      * When a value is set the flags $this->userData_change or $this->sesData_change will be set so that the final call to ->storeSessionData() will know if a change has occurred and needs to be saved to the database.
-     * Notice: The key "recs" is already used by the function record_registration() which stores table/uid=value pairs in that key. This is used for the shopping basket among other things.
      * Notice: Simply calling this function will not save the data to the database! The actual saving is done in storeSessionData() which is called as some of the last things in \TYPO3\CMS\Frontend\Http\RequestHandler. So if you exit before this point, nothing gets saved of course! And the solution is to call $GLOBALS['TSFE']->storeSessionData(); before you exit.
      *
      * @param string $type Session data type; Either "user" (persistent, bound to fe_users profile) or "ses" (temporary, bound to current session cookie)
      * @param string $key Key from the data array to store incoming data in; The session data (in either case) is an array ($this->uc / $this->sessionData) and this value determines in which key the $data value will be stored.
      * @param mixed $data The data value to store in $key
-     * @see setKey(), storeSessionData(), record_registration()
+     * @see setKey(), storeSessionData()
      */
     public function setKey($type, $key, $data)
     {
@@ -579,43 +578,6 @@ class FrontendUserAuthentication extends AbstractUserAuthentication
     }
 
     /**
-     * Registration of records/"shopping basket" in session data
-     * This will take the input array, $recs, and merge into the current "recs" array found in the session data.
-     * If a change in the recs storage happens (which it probably does) the function setKey() is called in order to store the array again.
-     *
-     * @param array $recs The data array to merge into/override the current recs values. The $recs array is constructed as [table]][uid] = scalar-value (eg. string/integer).
-     * @param int $maxSizeOfSessionData The maximum size of stored session data. If zero, no limit is applied and even confirmation of cookie session is discarded.
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9. Automatically feeding a "basket" by magic GET/POST keyword "recs" has been deprecated.
-     */
-    public function record_registration($recs, $maxSizeOfSessionData = 0)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        // Storing value ONLY if there is a confirmed cookie set,
-        // otherwise a shellscript could easily be spamming the fe_sessions table
-        // with bogus content and thus bloat the database
-        if (!$maxSizeOfSessionData || $this->isCookieSet()) {
-            if ($recs['clear_all']) {
-                $this->setKey('ses', 'recs', []);
-            }
-            $change = 0;
-            $recs_array = $this->getKey('ses', 'recs');
-            foreach ($recs as $table => $data) {
-                if (is_array($data)) {
-                    foreach ($data as $rec_id => $value) {
-                        if ($value != $recs_array[$table][$rec_id]) {
-                            $recs_array[$table][$rec_id] = $value;
-                            $change = 1;
-                        }
-                    }
-                }
-            }
-            if ($change && (!$maxSizeOfSessionData || strlen(serialize($recs_array)) < $maxSizeOfSessionData)) {
-                $this->setKey('ses', 'recs', $recs_array);
-            }
-        }
-    }
-
-    /**
      * Garbage collector, removing old expired sessions.
      *
      * @internal
index 808e8c4..5cc4796 100644 (file)
@@ -54,18 +54,6 @@ abstract class AbstractContentObject
      * Getter for current ContentObjectRenderer
      *
      * @return ContentObjectRenderer
-     * @deprecated since TYPO3 v8, will be removed with TYPO3 v9. Use getContentObjectRenderer() instead.
-     */
-    public function getContentObject()
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->getContentObjectRenderer();
-    }
-
-    /**
-     * Getter for current ContentObjectRenderer
-     *
-     * @return ContentObjectRenderer
      */
     public function getContentObjectRenderer()
     {
index 88d396b..8ef73da 100644 (file)
@@ -173,8 +173,6 @@ class ContentObjectRenderer
         'bytes.' => 'array',
         'substring' => 'parameters',
         'substring.' => 'array',
-        'removeBadHTML' => 'boolean',
-        'removeBadHTML.' => 'array',
         'cropHTML' => 'crop',
         'cropHTML.' => 'array',
         'stripHtml' => 'boolean',
@@ -200,8 +198,6 @@ class ContentObjectRenderer
         'innerWrap.' => 'array',
         'innerWrap2' => 'wrap',
         'innerWrap2.' => 'array',
-        'fontTag' => 'wrap',
-        'fontTag.' => 'array',
         'addParams.' => 'array',
         'filelink.' => 'array',
         'preCObject' => 'cObject',
@@ -1364,34 +1360,6 @@ class ContentObjectRenderer
     }
 
     /**
-     * Returns content of a file. If it's an image the content of the file is not returned but rather an image tag is.
-     *
-     * @param string $fName The filename, being a TypoScript resource data type
-     * @param string $addParams Additional parameters (attributes). Default is empty alt and title tags.
-     * @return string If jpg,gif,jpeg,png: returns image_tag with picture in. If html,txt: returns content string
-     * @see FILE()
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, use file_get_contents() directly
-     */
-    public function fileResource($fName, $addParams = 'alt="" title=""')
-    {
-        GeneralUtility::logDeprecatedFunction();
-        $tsfe = $this->getTypoScriptFrontendController();
-        $incFile = $tsfe->tmpl->getFileName($fName);
-        if ($incFile && file_exists($incFile)) {
-            $fileInfo = GeneralUtility::split_fileref($incFile);
-            $extension = $fileInfo['fileext'];
-            if ($extension === 'jpg' || $extension === 'jpeg' || $extension === 'gif' || $extension === 'png') {
-                $imgFile = $incFile;
-                $imgInfo = @getimagesize($imgFile);
-                return '<img src="' . htmlspecialchars($tsfe->absRefPrefix . $imgFile) . '" width="' . (int)$imgInfo[0] . '" height="' . (int)$imgInfo[1] . '"' . $this->getBorderAttr(' border="0"') . ' ' . $addParams . ' />';
-            } elseif (filesize($incFile) < 1024 * 1024) {
-                return file_get_contents($incFile);
-            }
-        }
-        return '';
-    }
-
-    /**
      * Sets the SYS_LASTCHANGED timestamp if input timestamp is larger than current value.
      * The SYS_LASTCHANGED timestamp can be used by various caching/indexing applications to determine if the page has new content.
      * Therefore you should call this function with the last-changed timestamp of any element you display.
@@ -1530,204 +1498,6 @@ class ContentObjectRenderer
      * HTML template processing functions
      *
      ***********************************************/
-    /**
-     * Returns a subpart from the input content stream.
-     * A subpart is a part of the input stream which is encapsulated in a
-     * string matching the input string, $marker. If this string is found
-     * inside of HTML comment tags the start/end points of the content block
-     * returned will be that right outside that comment block.
-     * Example: The contennt string is
-     * "Hello <!--###sub1### begin--> World. How are <!--###sub1### end--> you?"
-     * If $marker is "###sub1###" then the content returned is
-     * " World. How are ". The input content string could just as well have
-     * been "Hello ###sub1### World. How are ###sub1### you?" and the result
-     * would be the same
-     * Wrapper for \TYPO3\CMS\Core\Utility\MarkerBasedTemplateService::getSubpart which behaves identical
-     *
-     * @param string $content The content stream, typically HTML template content.
-     * @param string $marker The marker string, typically on the form "###[the marker string]###
-     * @return string The subpart found, if found.
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, please use the MarkerBasedTemplateService instead.
-     */
-    public function getSubpart($content, $marker)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->templateService->getSubpart($content, $marker);
-    }
-
-    /**
-     * Substitute subpart in input template stream.
-     * This function substitutes a subpart in $content with the content of
-     * $subpartContent.
-     * Wrapper for \TYPO3\CMS\Core\Utility\MarkerBasedTemplateService::substituteSubpart which behaves identical
-     *
-     * @param string $content The content stream, typically HTML template content.
-     * @param string $marker The marker string, typically on the form "###[the marker string]###
-     * @param mixed $subpartContent The content to insert instead of the subpart found. If a string, then just plain substitution happens (includes removing the HTML comments of the subpart if found). If $subpartContent happens to be an array, it's [0] and [1] elements are wrapped around the EXISTING content of the subpart (fetched by getSubpart()) thereby not removing the original content.
-     * @param bool|int $recursive If $recursive is set, the function calls itself with the content set to the remaining part of the content after the second marker. This means that proceding subparts are ALSO substituted!
-     * @return string The processed HTML content string.
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, please use the MarkerBasedTemplateService instead.
-     */
-    public function substituteSubpart($content, $marker, $subpartContent, $recursive = 1)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->templateService->substituteSubpart($content, $marker, $subpartContent, $recursive);
-    }
-
-    /**
-     * Substitues multiple subparts at once
-     *
-     * @param string $content The content stream, typically HTML template content.
-     * @param array $subpartsContent The array of key/value pairs being subpart/content values used in the substitution. For each element in this array the function will substitute a subpart in the content stream with the content.
-     * @return string The processed HTML content string.
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, please use the MarkerBasedTemplateService instead.
-     */
-    public function substituteSubpartArray($content, array $subpartsContent)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->templateService->substituteSubpartArray($content, $subpartsContent);
-    }
-
-    /**
-     * Substitutes a marker string in the input content
-     * (by a simple str_replace())
-     *
-     * @param string $content The content stream, typically HTML template content.
-     * @param string $marker The marker string, typically on the form "###[the marker string]###
-     * @param mixed $markContent The content to insert instead of the marker string found.
-     * @return string The processed HTML content string.
-     * @see substituteSubpart()
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, please use the MarkerBasedTemplateService instead.
-     */
-    public function substituteMarker($content, $marker, $markContent)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->templateService->substituteMarker($content, $marker, $markContent);
-    }
-
-    /**
-     * Multi substitution function with caching.
-     *
-     * This function should be a one-stop substitution function for working
-     * with HTML-template. It does not substitute by str_replace but by
-     * splitting. This secures that the value inserted does not themselves
-     * contain markers or subparts.
-     *
-     * Note that the "caching" won't cache the content of the substition,
-     * but only the splitting of the template in various parts. So if you
-     * want only one cache-entry per template, make sure you always pass the
-     * exact same set of marker/subpart keys. Else you will be flooding the
-     * user's cache table.
-     *
-     * This function takes three kinds of substitutions in one:
-     * $markContentArray is a regular marker-array where the 'keys' are
-     * substituted in $content with their values
-     *
-     * $subpartContentArray works exactly like markContentArray only is whole
-     * subparts substituted and not only a single marker.
-     *
-     * $wrappedSubpartContentArray is an array of arrays with 0/1 keys where
-     * the subparts pointed to by the main key is wrapped with the 0/1 value
-     * alternating.
-     *
-     * @param string $content The content stream, typically HTML template content.
-     * @param array $markContentArray Regular marker-array where the 'keys' are substituted in $content with their values
-     * @param array $subpartContentArray Exactly like markContentArray only is whole subparts substituted and not only a single marker.
-     * @param array $wrappedSubpartContentArray An array of arrays with 0/1 keys where the subparts pointed to by the main key is wrapped with the 0/1 value alternating.
-     * @return string The output content stream
-     * @see substituteSubpart(), substituteMarker(), substituteMarkerInObject(), TEMPLATE()
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, please use the MarkerBasedTemplateService instead.
-     */
-    public function substituteMarkerArrayCached($content, array $markContentArray = null, array $subpartContentArray = null, array $wrappedSubpartContentArray = null)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->templateService->substituteMarkerArrayCached($content, $markContentArray, $subpartContentArray, $wrappedSubpartContentArray);
-    }
-
-    /**
-     * Traverses the input $markContentArray array and for each key the marker
-     * by the same name (possibly wrapped and in upper case) will be
-     * substituted with the keys value in the array.
-     *
-     * This is very useful if you have a data-record to substitute in some
-     * content. In particular when you use the $wrap and $uppercase values to
-     * pre-process the markers. Eg. a key name like "myfield" could effectively
-     * be represented by the marker "###MYFIELD###" if the wrap value
-     * was "###|###" and the $uppercase boolean TRUE.
-     *
-     * @param string $content The content stream, typically HTML template content.
-     * @param array $markContentArray The array of key/value pairs being marker/content values used in the substitution. For each element in this array the function will substitute a marker in the content stream with the content.
-     * @param string $wrap A wrap value - [part 1] | [part 2] - for the markers before substitution
-     * @param bool $uppercase If set, all marker string substitution is done with upper-case markers.
-     * @param bool $deleteUnused If set, all unused marker are deleted.
-     * @return string The processed output stream
-     * @see substituteMarker(), substituteMarkerInObject(), TEMPLATE()
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, please use the MarkerBasedTemplateService instead.
-     */
-    public function substituteMarkerArray($content, array $markContentArray, $wrap = '', $uppercase = false, $deleteUnused = false)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->templateService->substituteMarkerArray($content, $markContentArray, $wrap, $uppercase, $deleteUnused);
-    }
-
-    /**
-     * Substitute marker array in an array of values
-     *
-     * @param mixed $tree If string, then it just calls substituteMarkerArray. If array(and even multi-dim) then for each key/value pair the marker array will be substituted (by calling this function recursively)
-     * @param array $markContentArray The array of key/value pairs being marker/content values used in the substitution. For each element in this array the function will substitute a marker in the content string/array values.
-     * @return mixed The processed input variable.
-     * @see substituteMarker()
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, please use the MarkerBasedTemplateService instead.
-     */
-    public function substituteMarkerInObject(&$tree, array $markContentArray)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        if (is_array($tree)) {
-            foreach ($tree as $key => $value) {
-                $this->templateService->substituteMarkerInObject($tree[$key], $markContentArray);
-            }
-        } else {
-            $tree = $this->templateService->substituteMarkerArray($tree, $markContentArray);
-        }
-        return $tree;
-    }
-
-    /**
-     * Replaces all markers and subparts in a template with the content provided in the structured array.
-     *
-     * @param string $content
-     * @param array $markersAndSubparts
-     * @param string $wrap
-     * @param bool $uppercase
-     * @param bool $deleteUnused
-     * @return string
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, please use the MarkerBasedTemplateService instead.
-     */
-    public function substituteMarkerAndSubpartArrayRecursive($content, array $markersAndSubparts, $wrap = '', $uppercase = false, $deleteUnused = false)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->templateService->substituteMarkerAndSubpartArrayRecursive($content, $markersAndSubparts, $wrap, $uppercase, $deleteUnused);
-    }
-
-    /**
-     * Adds elements to the input $markContentArray based on the values from
-     * the fields from $fieldList found in $row
-     *
-     * @param array $markContentArray Array with key/values being marker-strings/substitution values.
-     * @param array $row An array with keys found in the $fieldList (typically a record) which values should be moved to the $markContentArray
-     * @param string $fieldList A list of fields from the $row array to add to the $markContentArray array. If empty all fields from $row will be added (unless they are integers)
-     * @param bool $nl2br If set, all values added to $markContentArray will be nl2br()'ed
-     * @param string $prefix Prefix string to the fieldname before it is added as a key in the $markContentArray. Notice that the keys added to the $markContentArray always start and end with "###
-     * @param bool $HSC If set, all values are passed through htmlspecialchars() - RECOMMENDED to avoid most obvious XSS and maintain XHTML compliance.
-     * @return array The modified $markContentArray
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, please use the MarkerBasedTemplateService instead.
-     */
-    public function fillInMarkerArray(array $markContentArray, array $row, $fieldList = '', $nl2br = true, $prefix = 'FIELD_', $HSC = false)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        $tsfe = $this->getTypoScriptFrontendController();
-        return $this->templateService->fillInMarkerArray($markContentArray, $row, $fieldList, $nl2br, $prefix, $HSC, !empty($tsfe->xhtmlDoctype));
-    }
 
     /**
      * Sets the current file object during iterations over files.
@@ -2598,19 +2368,6 @@ class ContentObjectRenderer
     }
 
     /**
-     * removeBadHTML
-     * Removes HTML tags based on stdWrap properties
-     *
-     * @param string $content Input value undergoing processing in this function.
-     * @return string The processed input value
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9
-     */
-    public function stdWrap_removeBadHTML($content = '')
-    {
-        return $this->removeBadHTML($content);
-    }
-
-    /**
      * cropHTML
      * Crops content to a given size while leaving HTML tags untouched
      *
@@ -2786,22 +2543,6 @@ class ContentObjectRenderer
     }
 
     /**
-     * fontTag
-     * A wrap formerly used to apply font tags to format the content
-     * See wrap
-     *
-     * @param string $content Input value undergoing processing in this function.
-     * @param array $conf stdWrap properties for fontTag.
-     * @return string The processed input value
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9
-     */
-    public function stdWrap_fontTag($content = '', $conf = [])
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->wrap($content, $conf['fontTag']);
-    }
-
-    /**
      * addParams
      * Adds tag attributes to any content that is a tag
      *
@@ -3796,47 +3537,6 @@ class ContentObjectRenderer
     }
 
     /**
-     * Function for removing malicious HTML code when you want to provide some HTML code user-editable.
-     * The purpose is to avoid XSS attacks and the code will be continuously modified to remove such code.
-     * For a complete reference with javascript-on-events, see http://www.wdvl.com/Authoring/JavaScript/Events/events_target.html
-     *
-     * @param string $text Input string to be cleaned.
-     * @return string Return string
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9
-     */
-    public function removeBadHTML($text)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        // Copyright 2002-2003 Thomas Bley
-        $text = preg_replace([
-            '\'<script[^>]*?>.*?</script[^>]*?>\'si',
-            '\'<applet[^>]*?>.*?</applet[^>]*?>\'si',
-            '\'<object[^>]*?>.*?</object[^>]*?>\'si',
-            '\'<iframe[^>]*?>.*?</iframe[^>]*?>\'si',
-            '\'<frameset[^>]*?>.*?</frameset[^>]*?>\'si',
-            '\'<style[^>]*?>.*?</style[^>]*?>\'si',
-            '\'<marquee[^>]*?>.*?</marquee[^>]*?>\'si',
-            '\'<script[^>]*?>\'si',
-            '\'<meta[^>]*?>\'si',
-            '\'<base[^>]*?>\'si',
-            '\'<applet[^>]*?>\'si',
-            '\'<object[^>]*?>\'si',
-            '\'<link[^>]*?>\'si',
-            '\'<iframe[^>]*?>\'si',
-            '\'<frame[^>]*?>\'si',
-            '\'<frameset[^>]*?>\'si',
-            '\'<input[^>]*?>\'si',
-            '\'<form[^>]*?>\'si',
-            '\'<embed[^>]*?>\'si',
-            '\'background-image:url\'si',
-            '\'<\\w+.*?(onabort|onbeforeunload|onblur|onchange|onclick|ondblclick|ondragdrop|onerror|onfilterchange|onfocus|onhelp|onkeydown|onkeypress|onkeyup|onload|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|onmove|onreadystatechange|onreset|onresize|onscroll|onselect|onselectstart|onsubmit|onunload).*?>\'si'
-        ], '', $text);
-        $text = preg_replace('/<a[^>]*href[[:space:]]*=[[:space:]]*["\']?[[:space:]]*javascript[^>]*/i', '', $text);
-        // Return clean content
-        return $text;
-    }
-
-    /**
      * Implements the TypoScript function "addParams"
      *
      * @param string $content The string with the HTML tag.
@@ -6259,29 +5959,6 @@ class ContentObjectRenderer
     }
 
     /**
-     * Parses a set of text lines with "[parameters] = [values]" into an array with parameters as keys containing the value
-     * If lines are empty or begins with "/" or "#" then they are ignored.
-     *
-     * @param string $params Text which the parameters
-     * @return array array with the parameters as key/value pairs
-     * @deprecated since TYPO3 CMS 8, will be removed in TYPO3 CMS 9.
-     */
-    public function processParams($params)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        $paramArr = [];
-        $lines = GeneralUtility::trimExplode(LF, $params, true);
-        foreach ($lines as $val) {
-            $pair = explode('=', $val, 2);
-            $key = trim($pair[0]);
-            if ($key[0] !== '#' && $key[0] !== '/') {
-                $paramArr[$key] = trim($pair[1]);
-            }
-        }
-        return $paramArr;
-    }
-
-    /**
      * Cleans up a string of keywords. Keywords at splitted by "," (comma)  ";" (semi colon) and linebreak
      *
      * @param string $content String of keywords
@@ -6457,45 +6134,6 @@ class ContentObjectRenderer
     }
 
     /**
-     * Checks if $url has a '?' in it and if not, a '?' is inserted between $url and $params, which are anyway concatenated and returned
-     *
-     * @param string $url Input URL
-     * @param string $params URL parameters
-     * @return string
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, please use this functionality by yourself instead of using cObj for that
-     */
-    public function URLqMark($url, $params)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        if ($params && !strstr($url, '?')) {
-            return $url . '?' . $params;
-        } else {
-            return $url . $params;
-        }
-    }
-
-    /**
-     * Clears TypoScript properties listed in $propList from the input TypoScript array.
-     *
-     * @param array $TSArr TypoScript array of values/properties
-     * @param string $propList List of properties to clear both value/properties for. Eg. "myprop,another_property
-     * @return array The TypoScript array
-     * @see gifBuilderTextBox()
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, as the textbox is built within GifBuilder
-     */
-    public function clearTSProperties($TSArr, $propList)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        $list = explode(',', $propList);
-        foreach ($list as $prop) {
-            $prop = trim($prop);
-            unset($TSArr[$prop]);
-            unset($TSArr[$prop . '.']);
-        }
-        return $TSArr;
-    }
-
-    /**
      * Resolves a TypoScript reference value to the full set of properties BUT overridden with any local properties set.
      * So the reference is resolved but overlaid with local TypoScript properties of the reference value.
      *
@@ -6519,108 +6157,6 @@ class ContentObjectRenderer
         return $confArr;
     }
 
-    /**
-     * This function creates a number of TEXT-objects in a Gifbuilder configuration in order to create a text-field like thing.
-     *
-     * @param array $gifbuilderConf TypoScript properties for Gifbuilder - TEXT GIFBUILDER objects are added to this array and returned.
-     * @param array $conf TypoScript properties for this function
-     * @param string $text The text string to write onto the GIFBUILDER file
-     * @return array The modified $gifbuilderConf array
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, as the textbox is built within GifBuilder
-     */
-    public function gifBuilderTextBox($gifbuilderConf, $conf, $text)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        $chars = (int)$conf['chars'] ?: 20;
-        $lineDist = (int)$conf['lineDist'] ?: 20;
-        $Valign = strtolower(trim($conf['Valign']));
-        $tmplObjNumber = (int)$conf['tmplObjNumber'];
-        $maxLines = (int)$conf['maxLines'];
-        if ($tmplObjNumber && $gifbuilderConf[$tmplObjNumber] === 'TEXT') {
-            $textArr = $this->linebreaks($text, $chars, $maxLines);
-            $angle = (int)$gifbuilderConf[$tmplObjNumber . '.']['angle'];
-            foreach ($textArr as $c => $textChunk) {
-                $index = $tmplObjNumber + 1 + $c * 2;
-                // Workarea
-                $gifbuilderConf = $this->clearTSProperties($gifbuilderConf, $index);
-                $rad_angle = 2 * pi() / 360 * $angle;
-                $x_d = sin($rad_angle) * $lineDist;
-                $y_d = cos($rad_angle) * $lineDist;
-                $diff_x_d = 0;
-                $diff_y_d = 0;
-                if ($Valign === 'center') {
-                    $diff_x_d = $x_d * count($textArr);
-                    $diff_x_d = $diff_x_d / 2;
-                    $diff_y_d = $y_d * count($textArr);
-                    $diff_y_d = $diff_y_d / 2;
-                }
-                $x_d = round($x_d * $c - $diff_x_d);
-                $y_d = round($y_d * $c - $diff_y_d);
-                $gifbuilderConf[$index] = 'WORKAREA';
-                $gifbuilderConf[$index . '.']['set'] = $x_d . ',' . $y_d;
-                // Text
-                $index++;
-                $gifbuilderConf = $this->clearTSProperties($gifbuilderConf, $index);
-                $gifbuilderConf[$index] = 'TEXT';
-                $gifbuilderConf[$index . '.'] = $this->clearTSProperties($gifbuilderConf[$tmplObjNumber . '.'], 'text');
-                $gifbuilderConf[$index . '.']['text'] = $textChunk;
-            }
-            $gifbuilderConf = $this->clearTSProperties($gifbuilderConf, $tmplObjNumber);
-        }
-        return $gifbuilderConf;
-    }
-
-    /**
-     * Splits a text string into lines and returns an array with these lines but a max number of lines.
-     *
-     * @param string $string The string to break
-     * @param int $chars Max number of characters per line.
-     * @param int $maxLines Max number of lines in all.
-     * @return array array with lines.
-     * @access private
-     * @see gifBuilderTextBox()
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, as the textbox is built within GifBuilder
-     */
-    public function linebreaks($string, $chars, $maxLines = 0)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        $lines = explode(LF, $string);
-        $lineArr = [];
-        $c = 0;
-        foreach ($lines as $paragraph) {
-            $words = explode(' ', $paragraph);
-            foreach ($words as $word) {
-                if (strlen($lineArr[$c] . $word) > $chars) {
-                    $c++;
-                }
-                if (!$maxLines || $c < $maxLines) {
-                    $lineArr[$c] .= $word . ' ';
-                }
-            }
-            $c++;
-        }
-        return $lineArr;
-    }
-
-    /**
-     * Includes resources if the config property 'includeLibs' is set.
-     *
-     * @param array $config TypoScript configuration
-     * @return bool Whether a configuration for including libs was found and processed
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, use proper class loading instead.
-     */
-    public function includeLibs(array $config)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        $librariesIncluded = false;
-        if (isset($config['includeLibs']) && $config['includeLibs']) {
-            $libraries = GeneralUtility::trimExplode(',', $config['includeLibs'], true);
-            $this->getTypoScriptFrontendController()->includeLibraries($libraries);
-            $librariesIncluded = true;
-        }
-        return $librariesIncluded;
-    }
-
     /***********************************************
      *
      * Database functions, making of queries
@@ -6891,23 +6427,14 @@ class ContentObjectRenderer
      * @param string $searchTable The table name you search in (recommended for DBAL compliance. Will be prepended field names as well)
      * @return string The WHERE clause.
      */
-    public function searchWhere($searchWords, $searchFieldList, $searchTable = '')
+    public function searchWhere($searchWords, $searchFieldList, $searchTable)
     {
         if (!$searchWords) {
             return ' AND 1=1';
         }
 
-        if (empty($searchTable)) {
-            GeneralUtility::deprecationLog(
-                'Parameter 3 of ContentObjectRenderer::searchWhere() is required can not be omitted anymore. Using Default connection!'
-            );
-            $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
-                ->getConnectionByName(ConnectionPool::DEFAULT_CONNECTION_NAME)
-                ->createQueryBuilder();
-        } else {
-            $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
-                ->getQueryBuilderForTable($searchTable);
-        }
+        $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
+            ->getQueryBuilderForTable($searchTable);
 
         $prefixTableName = $searchTable ? $searchTable . '.' : '';
 
@@ -7446,64 +6973,6 @@ class ContentObjectRenderer
     }
 
     /**
-     * Helper function for getQuery(), creating the WHERE clause of the SELECT query
-     *
-     * @param string $table The table name
-     * @param array $conf The TypoScript configuration properties
-     * @param bool $returnQueryArray If set, the function will return the query not as a string but array with the various parts. RECOMMENDED!
-     * @return mixed A WHERE clause based on the relevant parts of the TypoScript properties for a "select" function in TypoScript, see link. If $returnQueryArray is FALSE the where clause is returned as a string with WHERE, GROUP BY and ORDER BY parts, otherwise as an array with these parts.
-     * @access private
-     * @see getQuery()
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9
-     */
-    public function getWhere($table, $conf, $returnQueryArray = false)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        // Init:
-        $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($table);
-        $queryConstraints = $this->getQueryConstraints($table, $conf);
-        $query = '';
-
-        $queryParts = [
-            'SELECT' => '',
-            'FROM' => '',
-            'WHERE' => '',
-            'GROUPBY' => '',
-            'ORDERBY' => '',
-            'LIMIT' => ''
-        ];
-
-        // MAKE WHERE:
-        if (!empty($queryConstraints['where'])) {
-            $queryParts['WHERE'] = (string)$queryConstraints['where'];
-            $query = 'WHERE ' . $queryParts['WHERE'];
-        }
-
-        // GROUP BY
-        if (!empty($queryConstraints['groupBy'])) {
-            $queryParts['GROUPBY'] = implode(
-                ', ',
-                array_map([$queryBuilder, 'quoteIdentifier'], $queryConstraints['groupBy'])
-            );
-            $query .= ' GROUP BY ' . $queryParts['GROUPBY'];
-        }
-
-        // ORDER BY
-        if (!empty($queryConstraints['orderBy'])) {
-            $orderBy = [];
-            foreach ($queryConstraints['orderBy'] as $orderPair) {
-                list($fieldName, $direction) = $orderPair;
-                $orderBy[] = trim($queryBuilder->quoteIdentifier($fieldName) . ' ' . $direction);
-            }
-            $queryParts['ORDERBY'] = implode(', ', $orderBy);
-            $query .= ' ORDER BY ' . $queryParts['ORDERBY'];
-        }
-
-        // Return result:
-        return $returnQueryArray ? $queryParts : $query;
-    }
-
-    /**
      * Helper function for getQuery, sanitizing the select part
      *
      * This functions checks if the necessary fields are part of the select
@@ -7549,7 +7018,7 @@ class ContentObjectRenderer
      * @param array $listArr Array of Page UID numbers for select and for which pages with enablefields and bad doktypes should be removed.
      * @return array Returns the array of remaining page UID numbers
      * @access private
-     * @see getWhere(),checkPid()
+     * @see checkPid()
      */
     public function checkPidArray($listArr)
     {
@@ -7592,7 +7061,7 @@ class ContentObjectRenderer
      * @param int $uid Page UID to test
      * @return bool TRUE if OK
      * @access private
-     * @see getWhere(), checkPidArray()
+     * @see checkPidArray()
      */
     public function checkPid($uid)
     {
index 39e207e..8d1399c 100644 (file)
@@ -40,7 +40,6 @@ use TYPO3\CMS\Core\TimeTracker\TimeTracker;
 use TYPO3\CMS\Core\TypoScript\Parser\TypoScriptParser;
 use TYPO3\CMS\Core\TypoScript\TemplateService;
 use TYPO3\CMS\Core\Utility\ArrayUtility;
-use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\HttpUtility;
 use TYPO3\CMS\Core\Utility\MathUtility;
@@ -487,13 +486,6 @@ class TypoScriptFrontendController
     public $absRefPrefix = '';
 
     /**
-     * Factor for form-field widths compensation
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9
-     * @var string
-     */
-    public $compensateFieldWidth = '';
-
-    /**
      * Lock file path
      * @var string
      */
@@ -529,15 +521,6 @@ class TypoScriptFrontendController
     public $linkVars = '';
 
     /**
-     * A string set with a comma list of additional GET vars which should NOT be
-     * included in the cHash calculation. These vars should otherwise be detected
-     * and involved in caching, eg. through a condition in TypoScript.
-     * @deprecatd since TYPO3 v8, will be removed in TYPO3 v9, this is taken care of via TYPO3_CONF_VARS nowadays
-     * @var string
-     */
-    public $excludeCHashVars = '';
-
-    /**
      * If set, edit icons are rendered aside content records. Must be set only if
      * the ->beUserLogin flag is set and set_no_cache() must be called as well.
      * @var string
@@ -704,35 +687,6 @@ class TypoScriptFrontendController
     public $content = '';
 
     /**
-     * @var int
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, use the calculations in setParseTime() directly
-     */
-    public $scriptParseTime = 0;
-
-    /**
-     * Character set (charset) conversion object:
-     * charset conversion class. May be used by any application.
-     *
-     * @var CharsetConverter
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, instantiate CharsetConverter on your own if you need it
-     */
-    public $csConvObj;
-
-    /**
-     * The default charset used in the frontend if nothing else is set.
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9
-     * @var string
-     */
-    public $defaultCharSet = 'utf-8';
-
-    /**
-     * Internal charset of the frontend during rendering. (Default: UTF-8)
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9
-     * @var string
-     */
-    public $renderCharset = 'utf-8';
-
-    /**
      * Output charset of the websites content. This is the charset found in the
      * header, meta tag etc. If different than utf-8 a conversion
      * happens before output to browser. Defaults to utf-8.
@@ -872,7 +826,6 @@ class TypoScriptFrontendController
         $this->MP = $GLOBALS['TYPO3_CONF_VARS']['FE']['enable_mount_pids'] ? (string)$MP : '';
         $this->RDCT = $RDCT;
         $this->uniqueString = md5(microtime());
-        $this->csConvObj = GeneralUtility::makeInstance(CharsetConverter::class);
         $this->initPageRenderer();
         // Call post processing function for constructor:
         if (is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_fe.php']['tslib_fe-PostProc'])) {
@@ -1010,15 +963,6 @@ class TypoScriptFrontendController
         $this->fe_user->start();
         $this->fe_user->unpack_uc();
 
-        // @deprecated since TYPO3 v8, will be removed in TYPO3 v9
-        // @todo: With the removal of that in v9, TYPO3_CONF_VARS maxSessionDataSize can be removed as well,
-        // @todo: and a silent ugrade wizard to remove the setting from LocalConfiguration should be added.
-        $recs = GeneralUtility::_GP('recs');
-        if (is_array($recs)) {
-            // If any record registration is submitted, register the record.
-            $this->fe_user->record_registration($recs, $GLOBALS['TYPO3_CONF_VARS']['FE']['maxSessionDataSize']);
-        }
-
         // Call hook for possible manipulation of frontend user object
         if (is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_fe.php']['initFEuser'])) {
             $_params = ['pObj' => &$this];
@@ -2532,10 +2476,6 @@ class TypoScriptFrontendController
                     }
                     // Processing for the config_array:
                     $this->config['rootLine'] = $this->tmpl->rootLine;
-                    $this->config['mainScript'] = trim($this->config['config']['mainScript']) ?: 'index.php';
-                    if (isset($this->config['config']['mainScript']) || $this->config['mainScript'] !== 'index.php') {
-                        $this->logDeprecatedTyposcript('config.mainScript', 'Setting the frontend script to something else than index.php is deprecated as of TYPO3 v8, and will not be possible in TYPO3 v9 without a custom extension');
-                    }
                     // Class for render Header and Footer parts
                     if ($this->pSetup['pageHeaderFooterTemplateFile']) {
                         $file = $this->tmpl->getFileName($this->pSetup['pageHeaderFooterTemplateFile']);
@@ -3216,41 +3156,9 @@ class TypoScriptFrontendController
         } else {
             $this->absRefPrefix = '';
         }
-        if ($this->type && $this->config['config']['frameReloadIfNotInFrameset']) {
-            $this->logDeprecatedTyposcript(
-                'config.frameReloadIfNotInFrameset',
-                'frameReloadIfNotInFrameset has been marked as deprecated since TYPO3 v8, ' .
-                'and will be removed in TYPO3 v9.'
-            );
-            $tdlLD = $this->tmpl->linkData($this->page, '_top', $this->no_cache, '');
-            $this->additionalJavaScript['JSCode'] .= 'if(!parent.' . trim($this->sPre) . ' && !parent.view_frame) top.location.href="' . $this->baseUrlWrap($tdlLD['totalURL']) . '"';
-        }
-        $this->compensateFieldWidth = '' . $this->config['config']['compensateFieldWidth'];
         $this->lockFilePath = '' . $this->config['config']['lockFilePath'];
         $this->lockFilePath = $this->lockFilePath ?: $GLOBALS['TYPO3_CONF_VARS']['BE']['fileadminDir'];
-        if (isset($this->config['config']['noScaleUp'])) {
-            $this->logDeprecatedTyposcript(
-                'config.noScaleUp',
-                'The TypoScript property "config.noScaleUp" is deprecated since TYPO3 v8 and will be removed in TYPO3 v9. ' .
-                'Please use the global TYPO3 configuration setting "GFX/processor_allowUpscaling" instead.'
-            );
-        }
-        $GLOBALS['TYPO3_CONF_VARS']['GFX']['processor_allowUpscaling'] = (bool)(isset($this->config['config']['noScaleUp']) ? !$this->config['config']['noScaleUp'] : $GLOBALS['TYPO3_CONF_VARS']['GFX']['processor_allowUpscaling']);
         $this->ATagParams = trim($this->config['config']['ATagParams']) ? ' ' . trim($this->config['config']['ATagParams']) : '';
-        if ($this->config['config']['setJS_mouseOver']) {
-            $this->logDeprecatedTyposcript(
-                'config.setJS_mouseOver',
-                'The TypoScript property "config.setJS_mouseOver" is deprecated since TYPO3 v8 and will be removed in TYPO3 v9. Please include the JavaScript snippet directly via TypoScript page.jsInline.'
-            );
-            $this->setJS('mouseOver');
-        }
-        if ($this->config['config']['setJS_openPic']) {
-            $this->logDeprecatedTyposcript(
-                'config.setJS_openPic',
-                'The TypoScript property "config.setJS_openPic" is deprecated since TYPO3 v8 and will be removed in TYPO3 v9. Please include the JavaScript snippet directly via TypoScript page.jsInline.'
-            );
-            $this->setJS('openPic');
-        }
         $this->initializeSearchWordDataInTsfe();
         // linkVars
         $this->calculateLinkVars();
@@ -3259,7 +3167,7 @@ class TypoScriptFrontendController
         if ($this->config['config']['doctype']) {
             if (in_array(
                 (string)$this->config['config']['doctype'],
-                ['xhtml_trans', 'xhtml_frames', 'xhtml_basic', 'html5'],
+                ['xhtml_trans', 'xhtml_basic', 'html5'],
                 true)
             ) {
                 $this->dtdAllowsFrames = true;
@@ -3279,14 +3187,6 @@ class TypoScriptFrontendController
                 case 'xhtml_strict':
                     $this->xhtmlVersion = 100;
                     break;
-                case 'xhtml_frames':
-                    $this->logDeprecatedTyposcript(
-                        'config.xhtmlDoctype=frames',
-                        'xhtmlDoctype = xhtml_frames  and doctype = xhtml_frames have been marked as deprecated since TYPO3 v8, ' .
-                        'and will be removed in TYPO3 v9.'
-                    );
-                    $this->xhtmlVersion = 100;
-                    break;
                 case 'xhtml_basic':
                     $this->xhtmlVersion = 105;
                     break;
@@ -3330,22 +3230,6 @@ class TypoScriptFrontendController
     }
 
     /**
-     * Determines to include custom or pagegen.php script
-     * returns script-filename if a TypoScript (config) script is defined and should be included instead of pagegen.php
-     *
-     * @return string|NULL The relative filepath of "config.pageGenScript" if found and allowed
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9
-     */
-    public function generatePage_whichScript()
-    {
-        if (!$GLOBALS['TYPO3_CONF_VARS']['FE']['noPHPscriptInclude'] && $this->config['config']['pageGenScript']) {
-            GeneralUtility::logDeprecatedFunction();
-            return $this->tmpl->getFileName($this->config['config']['pageGenScript']);
-        }
-        return null;
-    }
-
-    /**
      * Does some processing AFTER the pagegen script is included.
      * This includes caching the page, indexing the page (if configured) and setting sysLastChanged
      */
@@ -3762,24 +3646,6 @@ class TypoScriptFrontendController
     }
 
     /**
-     * Sets the parsetime of the page.
-     *
-     * @access private
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, as the Request Handler is taking care of that now
-     */
-    public function setParseTime()
-    {
-        GeneralUtility::logDeprecatedFunction();
-        // Compensates for the time consumed with Back end user initialization.
-        $microtime_start = isset($GLOBALS['TYPO3_MISC']['microtime_start']) ? $GLOBALS['TYPO3_MISC']['microtime_start'] : null;
-        $microtime_end = isset($GLOBALS['TYPO3_MISC']['microtime_end']) ? $GLOBALS['TYPO3_MISC']['microtime_end'] : null;
-        $microtime_BE_USER_start = isset($GLOBALS['TYPO3_MISC']['microtime_BE_USER_start']) ? $GLOBALS['TYPO3_MISC']['microtime_BE_USER_start'] : null;
-        $microtime_BE_USER_end = isset($GLOBALS['TYPO3_MISC']['microtime_BE_USER_end']) ? $GLOBALS['TYPO3_MISC']['microtime_BE_USER_end'] : null;
-        $timeTracker = $this->getTimeTracker();
-        $this->scriptParseTime = $timeTracker->getMilliseconds($microtime_end) - $timeTracker->getMilliseconds($microtime_start) - ($timeTracker->getMilliseconds($microtime_BE_USER_end) - $timeTracker->getMilliseconds($microtime_BE_USER_start));
-    }
-
-    /**
      * Outputs preview info.
      */
     public function previewInfo()
@@ -3811,31 +3677,6 @@ class TypoScriptFrontendController
     }
 
     /**
-     * Returns a link to the BE login screen with redirect to the front-end
-     *
-     * @return string HTML, a tag for a link to the backend.
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9
-     */
-    public function beLoginLinkIPList()
-    {
-        GeneralUtility::logDeprecatedFunction();
-        if (!empty($this->config['config']['beLoginLinkIPList'])) {
-            if (GeneralUtility::cmpIP(GeneralUtility::getIndpEnv('REMOTE_ADDR'), $this->config['config']['beLoginLinkIPList'])) {
-                $label = !$this->beUserLogin ? $this->config['config']['beLoginLinkIPList_login'] : $this->config['config']['beLoginLinkIPList_logout'];
-                if ($label) {
-                    if (!$this->beUserLogin) {
-                        $link = '<a href="' . htmlspecialchars((TYPO3_mainDir . 'index.php?redirect_url=' . rawurlencode(GeneralUtility::getIndpEnv('REQUEST_URI')))) . '">' . $label . '</a>';
-                    } else {
-                        $link = '<a href="' . htmlspecialchars((TYPO3_mainDir . 'index.php?L=OUT&redirect_url=' . rawurlencode(GeneralUtility::getIndpEnv('REQUEST_URI')))) . '">' . $label . '</a>';
-                    }
-                    return $link;
-                }
-            }
-        }
-        return '';
-    }
-
-    /**
      * Sends HTTP headers for temporary content. These headers prevent search engines from caching temporary content and asks them to revisit this page again.
      */
     public function addTempContentHttpHeaders()
@@ -3852,69 +3693,6 @@ class TypoScriptFrontendController
      * Various internal API functions
      *
      *******************************************/
-    /**
-     * Encryption (or decryption) of a single character.
-     * Within the given range the character is shifted with the supplied offset.
-     *
-     * @param int $n Ordinal of input character
-     * @param int $start Start of range
-     * @param int $end End of range
-     * @param int $offset Offset
-     * @return string encoded/decoded version of character
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, this functionality has been moved to ContentObjectRenderer
-     */
-    public function encryptCharcode($n, $start, $end, $offset)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        $n = $n + $offset;
-        if ($offset > 0 && $n > $end) {
-            $n = $start + ($n - $end - 1);
-        } elseif ($offset < 0 && $n < $start) {
-            $n = $end - ($start - $n - 1);
-        }
-        return chr($n);
-    }
-
-    /**
-     * Encryption of email addresses for <A>-tags See the spam protection setup in TS 'config.'
-     *
-     * @param string $string Input string to en/decode: "mailto:blabla@bla.com
-     * @param bool $back If set, the process is reversed, effectively decoding, not encoding.
-     * @return string encoded/decoded version of $string
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, this functionality has been moved to ContentObjectRenderer
-     */
-    public function encryptEmail($string, $back = false)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        $out = '';
-        // obfuscates using the decimal HTML entity references for each character
-        if ($this->spamProtectEmailAddresses === 'ascii') {
-            $stringLength = strlen($string);
-            for ($a = 0; $a < $stringLength; $a++) {
-                $out .= '&#' . ord(substr($string, $a, 1)) . ';';
-            }
-        } else {
-            // like str_rot13() but with a variable offset and a wider character range
-            $len = strlen($string);
-            $offset = (int)$this->spamProtectEmailAddresses * ($back ? -1 : 1);
-            for ($i = 0; $i < $len; $i++) {
-                $charValue = ord($string[$i]);
-                // 0-9 . , - + / :
-                if ($charValue >= 43 && $charValue <= 58) {
-                    $out .= $this->encryptCharcode($charValue, 43, 58, $offset);
-                } elseif ($charValue >= 64 && $charValue <= 90) {
-                    // A-Z @
-                    $out .= $this->encryptCharcode($charValue, 64, 90, $offset);
-                } elseif ($charValue >= 97 && $charValue <= 122) {
-                    // a-z
-                    $out .= $this->encryptCharcode($charValue, 97, 122, $offset);
-                } else {
-                    $out .= $string[$i];
-                }
-            }
-        }
-        return $out;
-    }
 
     /**
      * Creates an instance of ContentObjectRenderer in $this->cObj
@@ -4043,12 +3821,11 @@ class TypoScriptFrontendController
     }
 
     /**
-     * Returns the name of the workspace
+     * Returns the uid of the current workspace
      *
-     * @param bool $returnTitle If set, returns title of current workspace being previewed, please be aware that this parameter is deprecated as of TYPO3 v8, and will be removed in TYPO3 v9
-     * @return string|int|NULL If $returnTitle is set, returns string (title), otherwise workspace integer for which workspace is being preview. NULL if none.
+     * @return int|NULL returns workspace integer for which workspace is being preview. NULL if none.
      */
-    public function whichWorkspace($returnTitle = false)
+    public function whichWorkspace()
     {
         $ws = null;
         if ($this->doWorkspacePreview()) {
@@ -4056,57 +3833,9 @@ class TypoScriptFrontendController
         } elseif ($this->beUserLogin) {
             $ws = $this->getBackendUser()->workspace;
         }
-        if ($ws && $returnTitle) {
-            GeneralUtility::deprecationLog('The parameter $returnTitle of $TSFE->whichWorkspace() is marked as deprecated and has no effect anymore. It will be removed in TYPO3 v9.');
-            if (ExtensionManagementUtility::isLoaded('workspaces')) {
-                $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
-                    ->getQueryBuilderForTable('sys_workspace');
-
-                $queryBuilder->getRestrictions()->removeAll();
-
-                $row = $queryBuilder
-                    ->select('title')
-                    ->from('sys_workspace')
-                    ->where(
-                        $queryBuilder->expr()->eq(
-                            'uid',
-                            $queryBuilder->createNamedParameter($ws, \PDO::PARAM_INT)
-                        )
-                    )
-                    ->execute()
-                    ->fetch();
-
-                if ($row) {
-                    return $row['title'];
-                }
-            }
-        }
         return $ws;
     }
 
-    /**
-     * Includes a comma-separated list of library files by PHP function include_once.
-     *
-     * @param array $libraries The libraries to be included.
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, use proper class loading instead.
-     */
-    public function includeLibraries(array $libraries)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        $timeTracker = $this->getTimeTracker();
-        $timeTracker->push('Include libraries');
-        $timeTracker->setTSlogMessage('Files for inclusion: "' . implode(', ', $libraries) . '"');
-        foreach ($libraries as $library) {
-            $file = $this->tmpl->getFileName($library);
-            if ($file) {
-                include_once './' . $file;
-            } else {
-                $timeTracker->setTSlogMessage('Include file "' . $file . '" did not exist!', 2);
-            }
-        }
-        $timeTracker->pull();
-    }
-
     /********************************************
      *
      * Various external API functions - for use in plugins etc.
@@ -4461,31 +4190,6 @@ class TypoScriptFrontendController
     }
 
     /**
-     * Converts the charset of the input string if applicable.
-     * The "to" charset is determined by the currently used charset for the page which is "utf-8" by default
-     * Only if there is a difference between the two charsets will a conversion be made
-     * The conversion is done real-time - no caching for performance at this point!
-     *
-     * @param string $str String to convert charset for
-     * @param string $from Optional "from" charset.
-     * @return string Output string, converted if needed.
-     * @see CharsetConverter
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9
-     */
-    public function csConv($str, $from = '')
-    {
-        GeneralUtility::logDeprecatedFunction();
-        if ($from) {
-            /** @var CharsetConverter $charsetConverter */
-            $charsetConverter = GeneralUtility::makeInstance(CharsetConverter::class);
-            $output = $charsetConverter->conv($str, $charsetConverter->parse_charset($from), 'utf-8');
-            return $output ?: $str;
-        } else {
-            return $str;
-        }
-    }
-
-    /**
      * Converts input string from utf-8 to metaCharset IF the two charsets are different.
      *
      * @param string $content Content to be converted.
index ecc129e..569aee7 100644 (file)
@@ -200,16 +200,11 @@ class RequestHandler implements RequestHandlerInterface
         $this->timeTracker->push('Page generation', '');
         if ($this->controller->isGeneratePage()) {
             $this->controller->generatePage_preProcessing();
-            $temp_theScript = $this->controller->generatePage_whichScript();
-            if ($temp_theScript) {
-                include $temp_theScript;
-            } else {
-                $this->controller->preparePageContentGeneration();
-                // Content generation
-                if (!$this->controller->isINTincScript()) {
-                    PageGenerator::renderContent();
-                    $this->controller->setAbsRefPrefix();
-                }
+            $this->controller->preparePageContentGeneration();
+            // Content generation
+            if (!$this->controller->isINTincScript()) {
+                PageGenerator::renderContent();
+                $this->controller->setAbsRefPrefix();
             }
             $this->controller->generatePage_postProcessing();
         } elseif ($this->controller->isINTincScript()) {
diff --git a/typo3/sysext/frontend/Classes/Page/FramesetRenderer.php b/typo3/sysext/frontend/Classes/Page/FramesetRenderer.php
deleted file mode 100644 (file)
index 3e57103..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-<?php
-namespace TYPO3\CMS\Frontend\Page;
-
-/*
- * 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\Core\Utility\ArrayUtility;
-use TYPO3\CMS\Core\Utility\GeneralUtility;
-
-/**
- * Rendering of framesets
- *
- * @deprecated since TYPO3 v8, will be removed in TYPO3 v9
- */
-class FramesetRenderer
-{
-    /**
-     * Generates a frameset based on input configuration in a TypoScript array.
-     *
-     * @param array $setup The TypoScript properties of the PAGE object property "frameSet.". See link.
-     * @return string A <frameset> tag.
-     * @see \TYPO3\CMS\Frontend\Page\PageGenerator::renderContentWithHeader()
-     */
-    public function make($setup)
-    {
-        $content = '';
-        if (is_array($setup)) {
-            $sKeyArray = ArrayUtility::filterAndSortByNumericKeys($setup);
-            foreach ($sKeyArray as $theKey) {
-                $theValue = $setup[$theKey];
-                if ((int)$theKey && ($conf = $setup[$theKey . '.'])) {
-                    switch ($theValue) {
-                        case 'FRAME':
-                            $typeNum = (int)$GLOBALS['TSFE']->tmpl->setup[$conf['obj'] . '.']['typeNum'];
-                            if (!$conf['src'] && !$typeNum) {
-                                $typeNum = -1;
-                            }
-                            $content .= '<frame' . $this->frameParams($conf, $typeNum) . ' />' . LF;
-                            break;
-                        case 'FRAMESET':
-                            $frameset = GeneralUtility::makeInstance(__CLASS__);
-                            $content .= $frameset->make($conf) . LF;
-                            break;
-                    }
-                }
-            }
-            return '<frameset' . $this->framesetParams($setup) . '>' . LF . $content . '</frameset>';
-        }
-        return '';
-    }
-
-    /**
-     * Creates the attributes for a <frame> tag based on a $conf array and the type number
-     *
-     * @param array $setup Configuration for the parameter generation for the FRAME set. See link
-     * @param int $typeNum The typenumber to use for the link.
-     * @return string String with attributes for the frame-tag. With a prefixed space character.
-     * @access private
-     * @link https://docs.typo3.org/typo3cms/TyposcriptReference/Setup/Frameset/
-     */
-    public function frameParams($setup, $typeNum)
-    {
-        $paramStr = '';
-        $name = $setup['obj'];
-        if ($setup['src'] || $setup['src.']) {
-            $src = $setup['src'];
-            if (is_array($setup['src.'])) {
-                $src = $GLOBALS['TSFE']->cObj->stdWrap($src, $setup['src.']);
-            }
-            $paramStr .= ' src="' . htmlspecialchars($src) . '"';
-        } else {
-            $LD = $GLOBALS['TSFE']->tmpl->linkData($GLOBALS['TSFE']->page, '', $GLOBALS['TSFE']->no_cache, '', '', ($setup['options'] ? '&' . $setup['options'] : '') . $GLOBALS['TSFE']->cObj->getClosestMPvalueForPage($GLOBALS['TSFE']->page['uid']), (int)$typeNum);
-            $finalURL = $LD['totalURL'];
-            $paramStr .= ' src="' . htmlspecialchars($finalURL) . '"';
-        }
-        if ($setup['name']) {
-            $paramStr .= ' name="' . $setup['name'] . '"';
-        } else {
-            $paramStr .= ' name="' . $name . '"';
-        }
-        if ($setup['params']) {
-            $paramStr .= ' ' . $setup['params'];
-        }
-        return $paramStr;
-    }
-
-    /**
-     * Creates the attributes for a <frameset> tag based on a conf array($setup)
-     *
-     * @param array $setup The setup array(TypoScript properties)
-     * @return string Attributes with preceding space.
-     * @access private
-     * @see make()
-     */
-    public function framesetParams($setup)
-    {
-        $paramStr = '';
-        if ($setup['cols']) {
-            $paramStr .= ' cols="' . $setup['cols'] . '"';
-        }
-        if ($setup['rows']) {
-            $paramStr .= ' rows="' . $setup['rows'] . '"';
-        }
-        if ($setup['params']) {
-            $paramStr .= ' ' . $setup['params'];
-        }
-        return $paramStr;
-    }
-}
index 51d530b..d6cfe57 100644 (file)
@@ -28,7 +28,6 @@ use TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController;
  * Class for starting TypoScript page generation
  *
  * The class is not instantiated as an objects but called directly with the "::" operator.
- * eg: \TYPO3\CMS\Frontend\Page\PageGenerator::pagegenInit()
  */
 class PageGenerator
 {
@@ -39,145 +38,6 @@ class PageGenerator
     const NO_PAGE_TITLE = 2;
 
     /**
-     * Setting some vars in TSFE, primarily based on TypoScript config settings.
-     *
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9
-     */
-    public static function pagegenInit()
-    {
-        GeneralUtility::logDeprecatedFunction();
-        /** @var TypoScriptFrontendController $tsfe */
-        $tsfe = $GLOBALS['TSFE'];
-        if ($tsfe->page['content_from_pid'] > 0) {
-            // make REAL copy of TSFE object - not reference!
-            $temp_copy_TSFE = clone $tsfe;
-            // Set ->id to the content_from_pid value - we are going to evaluate this pid as was it a given id for a page-display!
-            $temp_copy_TSFE->id = $tsfe->page['content_from_pid'];
-            $temp_copy_TSFE->MP = '';
-            $temp_copy_TSFE->getPageAndRootlineWithDomain($tsfe->config['config']['content_from_pid_allowOutsideDomain'] ? 0 : $tsfe->domainStartPage);
-            $tsfe->contentPid = (int)$temp_copy_TSFE->id;
-            unset($temp_copy_TSFE);
-        }
-        if ($tsfe->config['config']['MP_defaults']) {
-            $temp_parts = GeneralUtility::trimExplode('|', $tsfe->config['config']['MP_defaults'], true);
-            foreach ($temp_parts as $temp_p) {
-                list($temp_idP, $temp_MPp) = explode(':', $temp_p, 2);
-                $temp_ids = GeneralUtility::intExplode(',', $temp_idP);
-                foreach ($temp_ids as $temp_id) {
-                    $tsfe->MP_defaults[$temp_id] = $temp_MPp;
-                }
-            }
-        }
-        // Global vars...
-        $tsfe->indexedDocTitle = $tsfe->page['title'];
-        $tsfe->debug = !empty($tsfe->config['config']['debug']);
-        // Base url:
-        if (isset($tsfe->config['config']['baseURL'])) {
-            $tsfe->baseUrl = $tsfe->config['config']['baseURL'];
-        }
-        // Internal and External target defaults
-        $tsfe->intTarget = '' . $tsfe->config['config']['intTarget'];
-        $tsfe->extTarget = '' . $tsfe->config['config']['extTarget'];
-        $tsfe->fileTarget = '' . $tsfe->config['config']['fileTarget'];
-        if ($tsfe->config['config']['spamProtectEmailAddresses'] === 'ascii') {
-            $tsfe->spamProtectEmailAddresses = 'ascii';
-        } else {
-            $tsfe->spamProtectEmailAddresses = MathUtility::forceIntegerInRange($tsfe->config['config']['spamProtectEmailAddresses'], -10, 10, 0);
-        }
-        // calculate the absolute path prefix
-        if (!empty($tsfe->config['config']['absRefPrefix'])) {
-            $absRefPrefix = trim($tsfe->config['config']['absRefPrefix']);
-            if ($absRefPrefix === 'auto') {
-                $tsfe->absRefPrefix = GeneralUtility::getIndpEnv('TYPO3_SITE_PATH');
-            } else {
-                $tsfe->absRefPrefix = $absRefPrefix;
-            }
-        } else {
-            $tsfe->absRefPrefix = '';
-        }
-        if ($tsfe->type && $tsfe->config['config']['frameReloadIfNotInFrameset']) {
-            GeneralUtility::deprecationLog(
-                'frameReloadIfNotInFrameset has been marked as deprecated since TYPO3 v8, ' .
-                'and will be removed in TYPO3 v9.'
-            );
-            $tdlLD = $tsfe->tmpl->linkData($tsfe->page, '_top', $tsfe->no_cache, '');
-            $tsfe->additionalJavaScript['JSCode'] .= 'if(!parent.' . trim($tsfe->sPre) . ' && !parent.view_frame) top.location.href="' . $tsfe->baseUrlWrap($tdlLD['totalURL']) . '"';
-        }
-        $tsfe->compensateFieldWidth = '' . $tsfe->config['config']['compensateFieldWidth'];
-        $tsfe->lockFilePath = '' . $tsfe->config['config']['lockFilePath'];
-        $tsfe->lockFilePath = $tsfe->lockFilePath ?: $GLOBALS['TYPO3_CONF_VARS']['BE']['fileadminDir'];
-        if (isset($tsfe->config['config']['noScaleUp'])) {
-            GeneralUtility::deprecationLog('The TypoScript property "config.noScaleUp" is deprecated since TYPO3 v8 and will be removed in TYPO3 v9. Please use the global TYPO3 configuration setting "GFX/processor_allowUpscaling" instead.');
-        }
-        $GLOBALS['TYPO3_CONF_VARS']['GFX']['processor_allowUpscaling'] = (bool)(isset($tsfe->config['config']['noScaleUp']) ? !$tsfe->config['config']['noScaleUp'] : $GLOBALS['TYPO3_CONF_VARS']['GFX']['processor_allowUpscaling']);
-        $tsfe->ATagParams = trim($tsfe->config['config']['ATagParams']) ? ' ' . trim($tsfe->config['config']['ATagParams']) : '';
-        if ($tsfe->config['config']['setJS_mouseOver']) {
-            $tsfe->logDeprecatedTyposcript(
-                'config.setJS_mouseOver',
-                'The TypoScript property "config.setJS_mouseOver" is deprecated since TYPO3 v8 and will be removed in TYPO3 v9. Please include the JavaScript snippet directly via TypoScript page.jsInline.'
-            );
-            $tsfe->setJS('mouseOver');
-        }
-        if ($tsfe->config['config']['setJS_openPic']) {
-            $tsfe->logDeprecatedTyposcript(
-                'config.setJS_openPic',
-                'The TypoScript property "config.setJS_openPic" is deprecated since TYPO3 v8 and will be removed in TYPO3 v9. Please include the JavaScript snippet directly via TypoScript page.jsInline.'
-            );
-            $tsfe->setJS('openPic');
-        }
-        static::initializeSearchWordDataInTsfe();
-        // linkVars
-        $tsfe->calculateLinkVars();
-        // dtdAllowsFrames indicates whether to use the target attribute in links
-        $tsfe->dtdAllowsFrames = false;
-        if ($tsfe->config['config']['doctype']) {
-            if (in_array(
-                (string)$tsfe->config['config']['doctype'],
-                ['xhtml_trans', 'xhtml_frames', 'xhtml_basic', 'html5'],
-                true)
-            ) {
-                $tsfe->dtdAllowsFrames = true;
-            }
-        } else {
-            $tsfe->dtdAllowsFrames = true;
-        }
-        // Setting XHTML-doctype from doctype
-        if (!$tsfe->config['config']['xhtmlDoctype']) {
-            $tsfe->config['config']['xhtmlDoctype'] = $tsfe->config['config']['doctype'];
-        }
-        if ($tsfe->config['config']['xhtmlDoctype']) {
-            $tsfe->xhtmlDoctype = $tsfe->config['config']['xhtmlDoctype'];
-            // Checking XHTML-docytpe
-            switch ((string)$tsfe->config['config']['xhtmlDoctype']) {
-                case 'xhtml_trans':
-                case 'xhtml_strict':
-                    $tsfe->xhtmlVersion = 100;
-                    break;
-                case 'xhtml_frames':
-                    GeneralUtility::deprecationLog(
-                        'xhtmlDoctype = xhtml_frames  and doctype = xhtml_frames have been marked as deprecated since TYPO3 v8, ' .
-                        'and will be removed in TYPO3 v9.'
-                    );
-                    $tsfe->xhtmlVersion = 100;
-                    break;
-                case 'xhtml_basic':
-                    $tsfe->xhtmlVersion = 105;
-                    break;
-                case 'xhtml_11':
-                case 'xhtml+rdfa_10':
-                    $tsfe->xhtmlVersion = 110;
-                    break;
-                default:
-                    static::getPageRenderer()->setRenderXhtml(false);
-                    $tsfe->xhtmlDoctype = '';
-                    $tsfe->xhtmlVersion = 0;
-            }
-        } else {
-            static::getPageRenderer()->setRenderXhtml(false);
-        }
-    }
-
-    /**
      * Rendering the page content
      */
     public static function renderContent()
@@ -284,11 +144,6 @@ class PageGenerator
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">';
                     break;
-                case 'xhtml_frames':
-                    $docTypeParts[] = '<!DOCTYPE html
-    PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">';
-                    break;
                 case 'xhtml_basic':
                     $docTypeParts[] = '<!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
@@ -493,34 +348,6 @@ class PageGenerator
 
         // Stylesheets
         $style = '';
-        if ($tsfe->pSetup['insertClassesFromRTE']) {
-            $tsfe->logDeprecatedTyposcript(
-                'page.insertClassesFromRTE',
-                'Loading CSS classes from the RTE directly is discouraged in TYPO3 v8, as CSS classes should be '
-                . 'defined in CSS/LESS/SASS files instead, ensuring to load only what is necessary for a page, and '
-                . 'speeding up page rendering ("above the fold"). Additionally CSS should be defined in CSS files or '
-                . 'TypoScript and not via magic of pageTSconfig, overlaid by userTSconfig.'
-            );
-            $pageTSConfig = $tsfe->getPagesTSconfig();
-            $RTEclasses = $pageTSConfig['RTE.']['classes.'];
-            if (is_array($RTEclasses)) {
-                foreach ($RTEclasses as $RTEclassName => $RTEvalueArray) {
-                    if ($RTEvalueArray['value']) {
-                        $style .= '
-.' . substr($RTEclassName, 0, -1) . ' {' . $RTEvalueArray['value'] . '}';
-                    }
-                }
-            }
-            if ($tsfe->pSetup['insertClassesFromRTE.']['add_mainStyleOverrideDefs'] && is_array($pageTSConfig['RTE.']['default.']['mainStyleOverride_add.'])) {
-                $mSOa_tList = GeneralUtility::trimExplode(',', strtoupper($tsfe->pSetup['insertClassesFromRTE.']['add_mainStyleOverrideDefs']), true);
-                foreach ($pageTSConfig['RTE.']['default.']['mainStyleOverride_add.'] as $mSOa_key => $mSOa_value) {
-                    if (!is_array($mSOa_value) && (in_array('*', $mSOa_tList) || in_array($mSOa_key, $mSOa_tList))) {
-                        $style .= '
-' . $mSOa_key . ' {' . $mSOa_value . '}';
-                    }
-                }
-            }
-        }
         // Setting body tag margins in CSS:
         if (isset($tsfe->pSetup['bodyTagMargins']) && $tsfe->pSetup['bodyTagMargins.']['useCSS']) {
             $margins = (int)$tsfe->pSetup['bodyTagMargins'];
@@ -885,15 +712,6 @@ class PageGenerator
             $pageRenderer->addFooterData(implode(LF, $tsfe->additionalFooterData));
         }
         // Header complete, now add content
-        if ($tsfe->pSetup['frameSet.']) {
-            GeneralUtility::deprecationLog(
-                'frameSet, FRAME and FRAMESET have been marked as deprecated since TYPO3 v8 ' .
-                'and will be removed in TYPO3 v9.'
-            );
-            $fs = GeneralUtility::makeInstance(FramesetRenderer::class);
-            $pageRenderer->addBodyContent($fs->make($tsfe->pSetup['frameSet.']));
-            $pageRenderer->addBodyContent(LF . '<noframes>' . LF);
-        }
         // Bodytag:
         if ($tsfe->config['config']['disableBodyTag']) {
             $bodyTag = '';
@@ -927,10 +745,6 @@ class PageGenerator
             // Render complete page
             $tsfe->content = $pageRenderer->render();
         }
-        // Ending page
-        if ($tsfe->pSetup['frameSet.']) {
-            $tsfe->content .= LF . '</noframes>';
-        }
     }
 
     /*************************
@@ -1122,31 +936,6 @@ class PageGenerator
     }
 
     /**
-     * Fills the sWordList property and builds the regular expression in TSFE that can be used to split
-     * strings by the submitted search words.
-     *
-     * @see \TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController::sWordList
-     * @see \TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController::sWordRegEx
-     */
-    protected static function initializeSearchWordDataInTsfe()
-    {
-        /** @var TypoScriptFrontendController $tsfe */
-        $tsfe = $GLOBALS['TSFE'];
-
-        $tsfe->sWordRegEx = '';
-        $tsfe->sWordList = GeneralUtility::_GP('sword_list');
-        if (is_array($tsfe->sWordList)) {
-            $space = !empty($tsfe->config['config']['sword_standAlone']) ? '[[:space:]]' : '';
-            foreach ($tsfe->sWordList as $val) {
-                if (trim($val) !== '') {
-                    $tsfe->sWordRegEx .= $space . preg_quote($val, '/') . $space . '|';
-                }
-            }
-            $tsfe->sWordRegEx = rtrim($tsfe->sWordRegEx, '|');
-        }
-    }
-
-    /**
      * @return PageRenderer
      */
     protected static function getPageRenderer()
index 0be3678..3258273 100644 (file)
@@ -14,7 +14,6 @@ namespace TYPO3\CMS\Frontend\Page;
  * The TYPO3 project - inspiring people to share!
  */
 
-use TYPO3\CMS\Core\Cache\CacheManager;
 use TYPO3\CMS\Core\Database\Connection;
 use TYPO3\CMS\Core\Database\ConnectionPool;
 use TYPO3\CMS\Core\Database\Query\QueryHelper;
@@ -947,31 +946,6 @@ class PageRepository
     }
 
     /**
-     * Creates a "path" string for the input root line array titles.
-     * Used for writing statistics.
-     *
-     * @param array $rl A rootline array!
-     * @param int $len The max length of each title from the rootline.
-     * @return string The path in the form "/page title/This is another pageti.../Another page
-     * @see \TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController::getConfigArray()
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9
-     */
-    public function getPathFromRootline($rl, $len = 20)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        $path = '';
-        if (is_array($rl)) {
-            $c = count($rl);
-            for ($a = 0; $a < $c; $a++) {
-                if ($rl[$a]['uid']) {
-                    $path .= '/' . GeneralUtility::fixed_lgd_cs(strip_tags($rl[$a]['title']), $len);
-                }
-            }
-        }
-        return $path;
-    }
-
-    /**
      * Returns the URL type for the input page row IF the doktype is set to 3.
      *
      * @param array $pagerow The page row to return URL type for
@@ -1244,56 +1218,11 @@ class PageRepository
 
     /********************************
      *
-     * Caching and standard clauses
+     * Standard clauses
      *
      ********************************/
 
     /**
-     * Returns data stored for the hash string in the cache "cache_hash"
-     * Can be used to retrieved a cached value, array or object
-     * Can be used from your frontend plugins if you like. It is also used to
-     * store the parsed TypoScript template structures. You can call it directly
-     * like PageRepository::getHash()
-     *
-     * @param string $hash The hash-string which was used to store the data value
-     * @return mixed The "data" from the cache
-     * @see tslib_TStemplate::start(), storeHash()
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, please use the Cache Manager directly to fetch cache entries
-     */
-    public static function getHash($hash)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        $hashContent = null;
-        /** @var \TYPO3\CMS\Core\Cache\Frontend\FrontendInterface $contentHashCache */
-        $contentHashCache = GeneralUtility::makeInstance(CacheManager::class)->getCache('cache_hash');
-        $cacheEntry = $contentHashCache->get($hash);
-        if ($cacheEntry) {
-            $hashContent = $cacheEntry;
-        }
-        return $hashContent;
-    }
-
-    /**
-     * Stores $data in the 'cache_hash' cache with the hash key, $hash
-     * and visual/symbolic identification, $ident
-     *
-     * Can be used from your frontend plugins if you like. You can call it
-     * directly like PageRepository::storeHash()
-     *
-     * @param string $hash 32 bit hash string (eg. a md5 hash of a serialized array identifying the data being stored)
-     * @param mixed $data The data to store
-     * @param string $ident Is just a textual identification in order to inform about the content!
-     * @param int $lifetime The lifetime for the cache entry in seconds
-     * @see tslib_TStemplate::start(), getHash()
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, please use the Cache Manager directly to store cache entries
-     */
-    public static function storeHash($hash, $data, $ident, $lifetime = 0)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        GeneralUtility::makeInstance(CacheManager::class)->getCache('cache_hash')->set($hash, $data, ['ident_' . $ident], (int)$lifetime);
-    }
-
-    /**
      * Returns the "AND NOT deleted" clause for the tablename given IF
      * $GLOBALS['TCA'] configuration points to such a field.
      *
@@ -1899,21 +1828,6 @@ class PageRepository
     }
 
     /**
-     * Determine if a field needs an overlay
-     *
-     * @param string $table TCA tablename
-     * @param string $field TCA fieldname
-     * @param mixed $value Current value of the field
-     * @return bool Returns TRUE if a given record field needs to be overlaid
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9
-     */
-    protected function shouldFieldBeOverlaid($table, $field, $value)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return true;
-    }
-
-    /**
      * @return \TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController
      */
     protected function getTypoScriptFrontendController()
index d5e1c0f..cd20fd8 100644 (file)
@@ -17,7 +17,6 @@ namespace TYPO3\CMS\Frontend\Plugin;
 use Doctrine\DBAL\Driver\Statement;
 use TYPO3\CMS\Core\Database\Connection;
 use TYPO3\CMS\Core\Database\ConnectionPool;
-use TYPO3\CMS\Core\Database\DatabaseConnection;
 use TYPO3\CMS\Core\Database\Query\QueryHelper;
 use TYPO3\CMS\Core\Database\Query\Restriction\FrontendRestrictionContainer;
 use TYPO3\CMS\Core\Localization\Locales;
@@ -228,14 +227,6 @@ class AbstractPlugin
     protected $frontendController;
 
     /**
-     * Property for accessing DatabaseConnection centrally
-     *
-     * @var DatabaseConnection
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, use the Doctrine DBAL layer via the ConnectionPool class
-     */
-    protected $databaseConnection;
-
-    /**
      * @var MarkerBasedTemplateService
      */
     protected $templateService;
@@ -245,12 +236,11 @@ class AbstractPlugin
      * Initializes $this->piVars if $this->prefixId is set to any value
      * Will also set $this->LLkey based on the config.language setting.
      *
-     * @param DatabaseConnection $databaseConnection, deprecated in TYPO3 v8, will be removed in TYPO3 v9
+     * @param $_ unused, previously used for the TYPO3_DB database connection
      * @param TypoScriptFrontendController $frontendController
      */
-    public function __construct(DatabaseConnection $databaseConnection = null, TypoScriptFrontendController $frontendController = null)
+    public function __construct($_ = null, TypoScriptFrontendController $frontendController = null)
     {
-        $this->databaseConnection = $databaseConnection ?: $GLOBALS['TYPO3_DB'];
         $this->frontendController = $frontendController ?: $GLOBALS['TSFE'];
         $this->templateService = GeneralUtility::makeInstance(MarkerBasedTemplateService::class);
         // Setting piVars:
@@ -941,10 +931,9 @@ class AbstractPlugin
      *
      * @param string $key The key from the LOCAL_LANG array for which to return the value.
      * @param string $alternativeLabel Alternative string to return IF no value is found set for the key, neither for the local language nor the default.
-     * @param bool $hsc If TRUE, the output label is passed through htmlspecialchars()
      * @return string The value from LOCAL_LANG.
      */
-    public function pi_getLL($key, $alternativeLabel = '', $hsc = false)
+    public function pi_getLL($key, $alternativeLabel = '')
     {
         $word = null;
         if (!empty($this->LOCAL_LANG[$this->LLkey][$key][0]['target'])
@@ -975,14 +964,7 @@ class AbstractPlugin
                 $word = isset($this->LLtestPrefixAlt) ? $this->LLtestPrefixAlt . $alternativeLabel : $alternativeLabel;
             }
         }
-        $output = isset($this->LLtestPrefix) ? $this->LLtestPrefix . $word : $word;
-        if ($hsc) {
-            GeneralUtility::deprecationLog(
-                'Calling pi_getLL() with argument \'hsc\' has been deprecated.'
-            );
-            $output = htmlspecialchars($output);
-        }
-        return $output;
+        return isset($this->LLtestPrefix) ? $this->LLtestPrefix . $word : $word;
     }
 
     /**
index 3deae1b..48ec05c 100644 (file)
@@ -131,7 +131,7 @@ abstract class AbstractTypolinkBuilder
     {
         $tsfe = $this->getTypoScriptFrontendController();
         $targetAttributeAllowed = (!$respectFrameSetOption || !$tsfe->config['config']['doctype'] ||
-            in_array((string)$tsfe->config['config']['doctype'], ['xhtml_trans', 'xhtml_frames', 'xhtml_basic', 'html5'], true));
+            in_array((string)$tsfe->config['config']['doctype'], ['xhtml_trans', 'xhtml_basic', 'html5'], true));
 
         $target = '';
         if (isset($conf[$name])) {
index 7e5b058..e9add21 100644 (file)
@@ -765,7 +765,16 @@ class AdminPanelView
                 $tableArr[] = [$this->extGetLL('info_feuserName'), htmlspecialchars($tsfe->fe_user->user['username'])];
                 $tableArr[] = [$this->extGetLL('info_feuserId'), htmlspecialchars($tsfe->fe_user->user['uid'])];
             }
-            $tableArr[] = [$this->extGetLL('info_totalParsetime'), $tsfe->scriptParseTime . ' ms', true];
+
+            // Compensates for the time consumed with Back end user initialization.
+            $microtime_start = isset($GLOBALS['TYPO3_MISC']['microtime_start']) ? $GLOBALS['TYPO3_MISC']['microtime_start'] : null;
+            $microtime_end = isset($GLOBALS['TYPO3_MISC']['microtime_end']) ? $GLOBALS['TYPO3_MISC']['microtime_end'] : null;
+            $microtime_BE_USER_start = isset($GLOBALS['TYPO3_MISC']['microtime_BE_USER_start']) ? $GLOBALS['TYPO3_MISC']['microtime_BE_USER_start'] : null;
+            $microtime_BE_USER_end = isset($GLOBALS['TYPO3_MISC']['microtime_BE_USER_end']) ? $GLOBALS['TYPO3_MISC']['microtime_BE_USER_end'] : null;
+            $timeTracker = $this->getTimeTracker();
+            $scriptParseTime = $timeTracker->getMilliseconds($microtime_end) - $timeTracker->getMilliseconds($microtime_start) - ($timeTracker->getMilliseconds($microtime_BE_USER_end) - $timeTracker->getMilliseconds($microtime_BE_USER_start));
+
+            $tableArr[] = [$this->extGetLL('info_totalParsetime'), $scriptParseTime . ' ms', true];
             $table = '';
             foreach ($tableArr as $key => $arr) {
                 $label = (isset($arr[2]) ? '<strong>' . $arr[0] . '</strong>' : $arr[0]);
index 295bb3c..026ff9d 100644 (file)
@@ -323,37 +323,6 @@ class ContentObjectRendererTest extends \TYPO3\TestingFramework\Core\Functional\
     }
 
     /**
-     * @test
-     * @param array $tca
-     * @param string $table
-     * @param array $configuration
-     * @param string $expectedResult
-     * @dataProvider getWhereReturnCorrectQueryDataProvider
-     */
-    public function getWhereReturnCorrectQuery(array $tca, string $table, array $configuration, string $expectedResult)
-    {
-        $GLOBALS['TCA'] = $tca;
-        $GLOBALS['SIM_ACCESS_TIME'] = '4242';
-        $GLOBALS['TSFE']->sys_language_content = 13;
-        /** @var \PHPUnit_Framework_MockObject_MockObject|ContentObjectRenderer $contentObjectRenderer */
-        $contentObjectRenderer = $this->getMockBuilder(ContentObjectRenderer::class)
-            ->setMethods(['checkPidArray'])
-            ->getMock();
-        $contentObjectRenderer->expects($this->any())
-            ->method('checkPidArray')
-            ->willReturn(explode(',', $configuration['pidInList']));
-
-        // Replace the MySQL backtick quote character with the actual quote character for the DBMS
-        $expectedResult = str_replace('`', $this->quoteChar, $expectedResult);
-
-        // Embed the enable fields string into the expected result as the database
-        // connection is still unconfigured when the data provider is being run.
-        $expectedResult = sprintf($expectedResult, $GLOBALS['TSFE']->sys_page->enableFields($table));
-
-        $this->assertSame($expectedResult, $contentObjectRenderer->getWhere($table, $configuration));
-    }
-
-    /**
      * @return array
      */
     public function typolinkReturnsCorrectLinksForPagesDataProvider()
@@ -454,7 +423,6 @@ class ContentObjectRendererTest extends \TYPO3\TestingFramework\Core\Functional\
         );
         $typoScriptFrontendController->config = [
             'config' => [],
-            'mainScript' => 'index.php',
         ];
         $typoScriptFrontendController->sys_page = $pageRepositoryMockObject;
         $typoScriptFrontendController->tmpl = GeneralUtility::makeInstance(TemplateService::class);
@@ -509,7 +477,6 @@ class ContentObjectRendererTest extends \TYPO3\TestingFramework\Core\Functional\
         );
         $typoScriptFrontendController->config = [
             'config' => [],
-            'mainScript' => 'index.php',
         ];
         $typoScriptFrontendController->sys_page = $pageRepositoryMockObject;
         $typoScriptFrontendController->tmpl = $templateServiceMockObject;
index f49683f..e9eb0c3 100644 (file)
@@ -2614,7 +2614,6 @@ class ContentObjectRendererTest extends \TYPO3\TestingFramework\Core\Unit\UnitTe
         $typoScriptFrontendControllerMockObject = $this->createMock(TypoScriptFrontendController::class);
         $typoScriptFrontendControllerMockObject->config = [
             'config' => [],
-            'mainScript' => 'index.php',
         ];
         $typoScriptFrontendControllerMockObject->tmpl = $templateServiceObjectMock;
         $GLOBALS['TSFE'] = $typoScriptFrontendControllerMockObject;
@@ -2856,7 +2855,6 @@ class ContentObjectRendererTest extends \TYPO3\TestingFramework\Core\Unit\UnitTe
         $typoScriptFrontendControllerMockObject = $this->createMock(TypoScriptFrontendController::class);
         $typoScriptFrontendControllerMockObject->config = [
             'config' => [],
-            'mainScript' => 'index.php',
         ];
         $typoScriptFrontendControllerMockObject->tmpl = $templateServiceObjectMock;
         $GLOBALS['TSFE'] = $typoScriptFrontendControllerMockObject;
@@ -3007,7 +3005,6 @@ class ContentObjectRendererTest extends \TYPO3\TestingFramework\Core\Unit\UnitTe
         $typoScriptFrontendControllerMockObject = $this->createMock(TypoScriptFrontendController::class);
         $typoScriptFrontendControllerMockObject->config = [
             'config' => [],
-            'mainScript' => 'index.php',
         ];
         $typoScriptFrontendControllerMockObject->tmpl = $templateServiceObjectMock;
         $GLOBALS['TSFE'] = $typoScriptFrontendControllerMockObject;
@@ -3421,7 +3418,7 @@ class ContentObjectRendererTest extends \TYPO3\TestingFramework\Core\Unit\UnitTe
             }
         }
         $this->assertSame(1, $notCallable);
-        $this->assertSame(91, $callable);
+        $this->assertSame(89, $callable);
     }
 
     /**
@@ -3468,7 +3465,7 @@ class ContentObjectRendererTest extends \TYPO3\TestingFramework\Core\Unit\UnitTe
             }
         }
         $this->assertSame($expectExceptions, $exceptions);
-        $this->assertSame(91, $count);
+        $this->assertSame(89, $count);
     }
 
     /***************************************************************************
index bbef171..9c5b356 100644 (file)
@@ -14,6 +14,7 @@ namespace TYPO3\CMS\Frontend\Tests\Unit\Controller;
  * The TYPO3 project - inspiring people to share!
  */
 
+use TYPO3\CMS\Core\Page\PageRenderer;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController;
 use TYPO3\CMS\Frontend\Page\PageRepository;
@@ -36,6 +37,9 @@ class TypoScriptFrontendControllerTest extends \TYPO3\TestingFramework\Core\Unit
 
         $pageRepository = $this->getMockBuilder(PageRepository::class)->getMock();
         $this->subject->sys_page = $pageRepository;
+
+        $pageRenderer = $this->getMockBuilder(PageRenderer::class)->getMock();
+        $this->subject->_set('pageRenderer', $pageRenderer);
     }
 
     /**
@@ -228,4 +232,59 @@ class TypoScriptFrontendControllerTest extends \TYPO3\TestingFramework\Core\Unit
         $this->subject->baseUrl = $baseUrl;
         $this->assertSame($expected, $this->subject->baseUrlWrap($url));
     }
+
+    /**
+     * @return array
+     */
+    public function initializeSearchWordDataInTsfeBuildsCorrectRegexDataProvider()
+    {
+        return [
+            'one simple search word' => [
+                ['test'],
+                false,
+                'test',
+            ],
+            'one simple search word with standalone words' => [
+                ['test'],
+                true,
+                '[[:space:]]test[[:space:]]',
+            ],
+            'two simple search words' => [
+                ['test', 'test2'],
+                false,
+                'test|test2',
+            ],
+            'two simple search words with standalone words' => [
+                ['test', 'test2'],
+                true,
+                '[[:space:]]test[[:space:]]|[[:space:]]test2[[:space:]]',
+            ],
+            'word with regex chars' => [
+                ['A \\ word with / a bunch of [] regex () chars .*'],
+                false,
+                'A \\\\ word with \\/ a bunch of \\[\\] regex \\(\\) chars \\.\\*',
+            ],
+        ];
+    }
+
+    /**
+     * @test
+     * @dataProvider initializeSearchWordDataInTsfeBuildsCorrectRegexDataProvider
+     *
+     * @param array $searchWordGetParameters The values that should be loaded in the sword_list GET parameter.
+     * @param bool $enableStandaloneSearchWords If TRUE the sword_standAlone option will be enabled.
+     * @param string $expectedRegex The expected regex after processing the search words.
+     */
+    public function initializeSearchWordDataInTsfeBuildsCorrectRegex(array $searchWordGetParameters, $enableStandaloneSearchWords, $expectedRegex)
+    {
+        $_GET['sword_list'] = $searchWordGetParameters;
+
+        $this->subject->page = [];
+        if ($enableStandaloneSearchWords) {
+            $this->subject->config = ['config' => ['sword_standAlone' => 1]];
+        }
+
+        $this->subject->preparePageContentGeneration();
+        $this->assertEquals($this->subject->sWordRegEx, $expectedRegex);
+    }
 }
index 78c275d..df37dad 100644 (file)
@@ -34,12 +34,4 @@ class PageGeneratorFixture extends PageGenerator
     {
         return self::generateMetaTagHtml($metaTagTypoScript, $xhtml, $cObj);
     }
-
-    /**
-     * Public accessor for the initializeSearchWordDataInTsfe() method.
-     */
-    public function callInitializeSearchWordDataInTsfe()
-    {
-        static::initializeSearchWordDataInTsfe();
-    }
 }
index 3ff86bf..a0434ff 100644 (file)
@@ -244,59 +244,4 @@ class PageGeneratorTest extends \TYPO3\TestingFramework\Core\Unit\UnitTestCase
         $result = $this->pageGeneratorFixture->callGenerateMetaTagHtml($typoScript, $xhtml, $this->contentObjectRenderer);
         $this->assertSame($expectedTags, $result);
     }
-
-    /**
-     * @return array
-     */
-    public function initializeSearchWordDataInTsfeBuildsCorrectRegexDataProvider()
-    {
-        return [
-            'one simple search word' => [
-                ['test'],
-                false,
-                'test',
-            ],
-            'one simple search word with standalone words' => [
-                ['test'],
-                true,
-                '[[:space:]]test[[:space:]]',
-            ],
-            'two simple search words' => [
-                ['test', 'test2'],
-                false,
-                'test|test2',
-            ],
-            'two simple search words with standalone words' => [
-                ['test', 'test2'],
-                true,
-                '[[:space:]]test[[:space:]]|[[:space:]]test2[[:space:]]',
-            ],
-            'word with regex chars' => [
-                ['A \\ word with / a bunch of [] regex () chars .*'],
-                false,
-                'A \\\\ word with \\/ a bunch of \\[\\] regex \\(\\) chars \\.\\*',
-            ],
-        ];
-    }
-
-    /**
-     * @test
-     * @dataProvider initializeSearchWordDataInTsfeBuildsCorrectRegexDataProvider
-     *
-     * @param array $searchWordGetParameters The values that should be loaded in the sword_list GET parameter.
-     * @param bool $enableStandaloneSearchWords If TRUE the sword_standAlone option will be enabled.
-     * @param string $expectedRegex The expected regex after processing the search words.
-     */
-    public function initializeSearchWordDataInTsfeBuildsCorrectRegex(array $searchWordGetParameters, $enableStandaloneSearchWords, $expectedRegex)
-    {
-        $_GET['sword_list'] = $searchWordGetParameters;
-
-        $GLOBALS['TSFE'] = new \stdClass();
-        if ($enableStandaloneSearchWords) {
-            $GLOBALS['TSFE']->config = ['config' => ['sword_standAlone' => 1]];
-        }
-
-        $this->pageGeneratorFixture->callInitializeSearchWordDataInTsfe();
-        $this->assertEquals($GLOBALS['TSFE']->sWordRegEx, $expectedRegex);
-    }
 }
index 6e27fdb..4dabb4b 100644 (file)
@@ -52,17 +52,6 @@ class PageRepositoryTest extends \TYPO3\TestingFramework\Core\Unit\UnitTestCase
         $this->pageSelectObject->expects($this->any())->method('getMultipleGroupsWhereClause')->will($this->returnValue(' AND 1=1'));
     }
 
-    /////////////////////////////////////////
-    // Tests concerning getPathFromRootline
-    /////////////////////////////////////////
-    /**
-     * @test
-     */
-    public function getPathFromRootLineForEmptyRootLineReturnsEmptyString()
-    {
-        $this->assertEquals('', $this->pageSelectObject->getPathFromRootline([]));
-    }
-
     ///////////////////////////////
     // Tests concerning getExtURL
     ///////////////////////////////
@@ -89,51 +78,4 @@ class PageRepositoryTest extends \TYPO3\TestingFramework\Core\Unit\UnitTestCase
             'url' => 'hello/world/'
         ]));
     }
-
-    /////////////////////////////////////////
-    // Tests concerning shouldFieldBeOverlaid
-    /////////////////////////////////////////
-    /**
-     * @test
-     * @dataProvider getShouldFieldBeOverlaidData
-     */
-    public function shouldFieldBeOverlaid($field, $table, $value, $expected, $comment = '')
-    {
-        $GLOBALS['TCA']['fake_table']['columns'] = [
-            'exclude' => [
-                'l10n_mode' => 'exclude',
-                'config' => ['type' => 'input'],
-            ],
-            'default' => [
-                // no l10n_mode set
-                'config' => ['type' => 'input'],
-            ],
-            'prefixLangTitle' => [
-                'l10n_mode' => 'prefixLangTitle',
-                'config' => ['type' => 'input'],
-            ],
-        ];
-
-        $result = $this->pageSelectObject->_call('shouldFieldBeOverlaid', $table, $field, $value);
-        unset($GLOBALS['TCA']['fake_table']);
-
-        $this->assertSame($expected, $result, $comment);
-    }
-
-    /**
-     * Data provider for shouldFieldBeOverlaid
-     */
-    public function getShouldFieldBeOverlaidData()
-    {
-        return [
-            ['default',               'fake_table', 'foobar', true,  'default is to overlay non-empty string'],
-            ['default',               'fake_table', '',       true,  'default is to overlay empty string'],
-
-            ['exclude',               'fake_table', '',       true, 'exclude field with empty string'],
-            ['exclude',               'fake_table', 'foobar', true, 'exclude field with non-empty string'],
-
-            ['prefixLangTitle',       'fake_table', 'foobar', true,  'prefixLangTitle is merged with non-empty string'],
-            ['prefixLangTitle',       'fake_table', '',       true,  'prefixLangTitle is merged with empty string'],
-        ];
-    }
 }
index 3ffe2f0..4880a65 100644 (file)
@@ -94,6 +94,9 @@ class SilentConfigurationUpgradeService
         'BE/lang',
         // #80050
         'FE/cHashIncludePageId',
+        // #80711
+        'FE/noPHPscriptInclude',
+        'FE/maxSessionDataSize',
     ];
 
     public function __construct(ConfigurationManager $configurationManager = null)
index 6fc1a26..26be888 100644 (file)
@@ -241,27 +241,6 @@ config.baseURL = https://typo3.org/sub_dir/]]></description>
                        <default><![CDATA[
 ]]></default>
                </property>
-               <property name="beLoginLinkIPList" type="string">
-                       <description><![CDATA[[IP-number]
-      If set and REMOTE_ADDR matches one of the listed IP-numbers (Wild-card, *, allowed) then a link to the typo3/ login scrip with redirect pointing back to the page is shown.
-
-NOTE: beLoginLinkIPList_login and/or beLoginLinkIPList_logout (see below) must be defined if the link should show up!]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
-               <property name="beLoginLinkIPList_login" type="string">
-                       <description><![CDATA[HTML code wrapped with the login link, see 'beLoginLinkIPList'
-
-Example:
-<HR><B>LOGING</B>]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
-               <property name="beLoginLinkIPList_logout" type="string">
-                       <description><![CDATA[HTML code wrapped with the logout link, see above]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
                <property name="cache" type="array">
                        <description><![CDATA[The maximum cache lifetime of a page can not only be determined the start and stop times of content elements on the page itself, but also by arbitrary records on any other page. However, the page has to be configured so that TYPO3 knows, which records' start and stop times to include. Otherwise, the cache entry will be used although a start/stop date already passed by.
 
@@ -288,19 +267,6 @@ config.cache.all = fe_users:2]]></description>
 This value is overridden by the value set in the page-record (field="cache_timeout") if this value is greater than zero.]]></description>
                        <default><![CDATA[86400 (=24H)]]></default>
                </property>
-               <property name="compensateFieldWidth" type="double">
-                       <description><![CDATA[this floating point value will be used by the FORMS cObject to compensate the length of the formfields text and input.
-Netscape renders formfields much longer than IE. If you want the two browsers to display the same size formfields, use a value of approx "0.6" for netscape-browsers.
-
-Example:
-[browser = netscape]
-  config.compensateFieldWidth = 0.6
-[global]
-
-This option may be overridden in the FORMS-cObject.]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
                <property name="content_from_pid_allowOutsideDomain" type="boolean">
                        <description><![CDATA[Using the "Show content from this page instead" feature allows you to insert content from the current domain only. Setting this option will allow content included from anywhere in the page tree!]]></description>
                        <default><![CDATA[
@@ -355,7 +321,6 @@ Use this feature in templates supplying other content-types than HTML. That coul
                        <description><![CDATA[If set, then a document type declaration (and an XML prologue) will be generated. The value can either be a complete doctype or one of the following keywords:
 
 "xhtml_trans" for XHTML 1.0 Transitional doctype.
-"xhtml_frames" for XHTML 1.0 Frameset doctype.
 "xhtml_strict" for XHTML 1.0 Strict doctype.
 "xhtml_basic" for XHTML basic doctype.
 "xhtml_11" for XHTML 1.1 doctype.
@@ -408,12 +373,6 @@ Useful if you run a template with special content at - say &type=95 - but still
                        <default><![CDATA[
 ]]></default>
                </property>
-               <property name="frameReloadIfNotInFrameset" type="boolean">
-                       <description><![CDATA[If set, then the current page will check if the page object name (eg. "page" or "frameset") exists as "parent.[name]" (eg. "parent.page") and if not the page will be reloaded in top frame. This secures that links from search engines to pages inside a frameset will load the frameset.
-Works only with type-values different from zero.]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
                <property name="ftu" type="boolean">
                        <description><![CDATA[If set, the "&ftu=...." GET-fallback identification is inserted.
 "&ftu=[hash]" is always inserted in the links on the first page a user hits. If it turns out in the next hit that the user has cookies enabled, this variable is not set anymore as the cookies does the job. If no cookies is accepted the "ftu" remains set for all links on the site and thereby we can still track the user.
@@ -556,10 +515,6 @@ locale_all = da_DK]]></description>
 Used by "filelist" in stdWrap]]></description>
                        <default><![CDATA[fileadmin/]]></default>
                </property>
-               <property name="mainScript" type="string">
-                       <description><![CDATA[This lets you specify an alternative "mainScript" which is the document that TYPO3 expects to be the default doc. This is used in form-tags and other places where TYPO3 needs to refer directly to the main-script of the application]]></description>
-                       <default><![CDATA[index.php]]></default>
-               </property>
                <property name="message_page_is_being_generated" type="string">
                        <description><![CDATA[Alternative HTML message that appears if a page is being generated.
 Normally when a page is being generated a temporary copy is stored in the cache-table with an expire-time of 30 seconds.
@@ -619,27 +574,10 @@ This is especially useful if you want to add RDFa or microformats to your html.
 Please take note that this tag is required for XHTML compliant output, so you should only disable this tag if you generate it manually already.]]></description>
                        <default><![CDATA[0]]></default>
                </property>
-               <property name="noScaleUp" type="boolean">
-                       <description><![CDATA[Normally images are scaled to the size specified via TypoScript. This also forces small images to be scaled to a larger size. This is not always a good thing.
-If this property is set, images are not allowed to be scaled up in size. This parameter clears the $this->mayScaleUp var of the class \TYPO3\CMS\Core\Imaging\GraphicalFunctions (often "gifbuilder"). Deprecated since TYPO3 CMS 8.4, will be removed in TYPO3 CMS 9.]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
                <property name="no_cache" type="boolean">
                        <description><![CDATA[If this is set to true, the page will not be cached. If set to false, it's ignored. Other parameters may have set it to true of other reasons.]]></description>
                        <default><![CDATA[-]]></default>
                </property>
-               <property name="pageGenScript" type="string">
-                       <description><![CDATA[Alternative page generation script for applications using \TYPO3\CMS\Frontend\Http\RequestHandler for initialization, caching, stating and so on. This script is included in the global scope of \TYPO3\CMS\Frontend\Http\RequestHandler and thus you may include libraries here. Always use include_once for libraries.
-Remember not to output anything from such an included script. All content must be set into $TSFE->content. Take a look at \TYPO3\CMS\Frontend\Page\PageGenerator
-
-NOTE: This option is ignored if
-
-$TYPO3_CONF_VARS["FE"]["noPHPscriptInclude"]=1;
-
-is set in localconf.php.]]></description>
-                       <default><![CDATA[typo3/sysext/frontend/Classes/Page/PageGenerator.php]]></default>
-               </property>
                <property name="pageRendererTemplateFile" type="string">
                        <description><![CDATA[
                        Sets the template for page renderer class (\TYPO3\CMS\Core\Page\PageRenderer).
@@ -904,7 +842,6 @@ Will create a link to page with id 29 and add GET parameters where the return UR
 If config.doctype is set to a string then config.xhtmlDoctype must be set to one of these keywords:
 
 "xhtml_trans" for XHTML 1.0 Transitional doctype.
-"xhtml_frames" for XHTML 1.0 Frameset doctype.
 "xhtml_strict" for XHTML 1.0 Strict doctype.
 "xhtml_basic" for XHTML basic doctype.
 "xhtml_11" for XHTML 1.1 doctype.
@@ -1284,11 +1221,6 @@ Notice: In TYPO3 4.0 and later, CSS Styled Content is configured to produce acce
                        <default><![CDATA[
 ]]></default>
                </property>
-               <property name="compensateFieldWidth" type="double">
-                       <description><![CDATA[Overriding option to the config-value of the same name. See "CONFIG" above.]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
                <property name="data" type="stdWrap">
                        <description><![CDATA[This is the data that sets up the form. See above.
 "||" can be used instead of linebreaks]]></description>
@@ -1552,87 +1484,6 @@ If value is tx_myextension[input][  |  ]  then the fieldname "email" would be
                        <default><![CDATA[the "layout"-property]]></default>
                </property>
        </type>
-       <type id="FRAMESET">
-               <property name="1" type="FRAME">
-                       <description><![CDATA[Configuration of frames and nested framesets.]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
-               <property name="2" type="FRAME">
-                       <description><![CDATA[Configuration of frames and nested framesets.]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
-               <property name="3" type="FRAME">
-                       <description><![CDATA[Configuration of frames and nested framesets.]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
-               <property name="4" type="FRAME">
-                       <description><![CDATA[Configuration of frames and nested framesets.]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
-               <property name="cols" type="string">
-                       <description><![CDATA[<frameset>-data:cols
-                       Cols]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
-               <property name="params" type="string">
-                       <description><![CDATA[<frameset>-params
-                       Example:
-border="0" framespacing="0" frameborder="NO"]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
-               <property name="rows" type="string">
-                       <description><![CDATA[<frameset>-data:rows
-                       Rows]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
-       </type>
-       <type id="FRAME">
-               <property name="name" type="string">
-                       <description><![CDATA[<frame>-data:name
-                       Manually set name of frame
-
-NOTE: Is set automatically and should not be overridden under normal conditions!]]></description>
-                       <default><![CDATA[value of ".obj"]]></default>
-               </property>
-               <property name="obj" type="string">
-                       <description><![CDATA[pointer to toplevel object-name
-                       toplevel object-name of a PAGE / FRAMESET
-
-Example:
-"left", "page", "frameset"]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
-               <property name="options" type="string">
-                       <description><![CDATA[url-parameters
-                       Example:
-print=1&othervar=anotherthing
-would add '&print=1&othervar=anotherthing' to the ".src"-content (if not ".src" is set manually!!)]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
-               <property name="params" type="string">
-                       <description><![CDATA[<frame>-params
-                       Example:
-scrolling="AUTO" noresize frameborder="NO"]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
-               <property name="src" type="string">
-                       <description><![CDATA[<frame>-data:src
-                       Manually set the src of the frame
-
-NOTE: Is set automatically and should not be overridden under normal conditions!]]></description>
-                       <default><![CDATA[could be index.php?$id&$type ]]></default>
-               </property>
-       </type>
        <type id="GifBuilderObj">
                <property name="if" type="if">
                        <description><![CDATA[.if (->if)  is a property of all gifbuilder-objects. If the property is present and NOT set, the object is NOT rendered! This corresponds to the functionallity of ".if" of the stdWrap-function.]]></description>
@@ -5143,11 +4994,6 @@ cssInline {
                        <default><![CDATA[
 ]]></default>
                </property>
-               <property name="frameSet" type="FRAMESET">
-                       <description><![CDATA[if any properties is set to this property, the page is made into a frameset.]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
                <property name="headTag" type="string">
                        <description><![CDATA[Head-tag if alternatives are wanted]]></description>
                        <default><![CDATA[<head>]]></default>
@@ -5280,15 +5126,6 @@ TYPO3.settings = {"TS":{"setting1":"Hello","setting2":"GoOnTop"}};
                        <default><![CDATA[
 ]]></default>
                </property>
-               <property name="insertClassesFromRTE" type="boolean">
-                       <description><![CDATA[If set, the classes for the Rich Text Editor configured in Page TSconfig is inserted in as the first thing in the Style-section right after the setting of the stylesheet.
-
-.add_mainStyleOverrideDefs = [* / list of tags ] - will add all the "RTE.default. mainStyleOverride_add" - tags configured as well.
-
-Might be deprecated soon. Most likely the RTE should be configured by the stylesheet instead. Stay tuned...]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
                <property name="javascriptLibs" type="array">
                        <description><![CDATA[array of Strings
        This allows to include the JavaScript libraries that are shipped with the TYPO3 Core.
@@ -6585,12 +6422,6 @@ The value is exploded by "|" into parameters:
                        <default><![CDATA[
 ]]></default>
                </property>
-               <property name="fontTag" type="wrap">
-                       <description><![CDATA[
-]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
                <property name="hash" type="stdWrap">
                        <description><![CDATA[Returns a hashed value of the current content. Use one of the alogrithms which are available in PHP. For a list of supported algorithms see http://www.php.net/manual/en/function.hash-algos.php
 
@@ -6869,11 +6700,6 @@ Examples:
                        <default><![CDATA[
 ]]></default>
                </property>
-               <property name="removeBadHTML" type="boolean">
-                       <description><![CDATA[Removes "bad" HTML code based on a pattern that filters away HTML that is considered dangerous for XSS bugs.]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
                <property name="replacement" type="boolean">
                        <description><![CDATA[Allows to execute search/replace-functionality. Optionally PCRE-regex are supported (see: http://www.php.net/manual/en/function.preg-replace.php) A numeric index allows multiple replacements at once.
 
index 4a99b8d..a0bab18 100644 (file)
@@ -105,9 +105,6 @@ var typoscriptWords = {
        'beforeROImg': 'reserved',
        'beforeWrap': 'reserved',
        'begin': 'reserved',
-       'beLoginLinkIPList': 'reserved',
-       'beLoginLinkIPList_login': 'reserved',
-       'beLoginLinkIPList_logout': 'reserved',
        'bgCol': 'reserved',
        'bgImg': 'reserved',
        'blur': 'reserved',
@@ -190,7 +187,6 @@ var typoscriptWords = {
        'COMMENT': 'keyword2',
        'comment_auto': 'reserved',
        'commentWrap': 'reserved',
-       'compensateFieldWidth': 'reserved',
        'compX': 'reserved',
        'compY': 'reserved',
        'conf': 'reserved',
@@ -371,18 +367,12 @@ var typoscriptWords = {
        'fontOffset': 'reserved',
        'fontSize': 'reserved',
        'fontSizeMultiplicator': 'reserved',
-       'fontTag': 'reserved',
        'forceDisplayFieldIcons': 'reserved',
        'forceDisplayIcons': 'reserved',
        'forceTemplateParsing': 'reserved',
        'forceTypeValue': 'reserved',
        'FORM': 'keyword',
        'format': 'reserved',
-       'FRAME': 'keyword',
-       'frame': 'reserved',
-       'frameReloadIfNotInFrameset': 'reserved',
-       'FRAMESET': 'keyword',
-       'frameSet': 'reserved',
        'ftu': 'reserved',
        'function': 'reserved',
        'Functions': 'keyword2',
@@ -486,7 +476,6 @@ var typoscriptWords = {
        'innerWrap2': 'reserved',
        'input': 'reserved',
        'inputLevels': 'reserved',
-       'insertClassesFromRTE': 'reserved',
        'insertData': 'reserved',
        'intensity': 'reserved',
        'intTarget': 'reserved',
@@ -560,7 +549,6 @@ var typoscriptWords = {
        'mailform': 'keyword3',
        'mailto': 'reserved',
        'main': 'reserved',
-       'mainScript': 'reserved',
        'makelinks': 'reserved',
        'markerWrap': 'reserved',
        'marks': 'keyword2',
@@ -659,7 +647,6 @@ var typoscriptWords = {
        'PAGE_TSCONFIG_IDLIST': 'keyword',
        'PAGE_TSCONFIG_STR': 'keyword',
        'pageFrameObj': 'reserved',
-       'pageGenScript': 'reserved',
        'pages': 'keyword3',
        'pages_language_overlay': 'keyword3',
        'pageTitleFirst': 'reserved',
@@ -734,7 +721,6 @@ var typoscriptWords = {
        'remap': 'reserved',
        'remapTag': 'reserved',
        'REMOTE_ADDR': 'keyword',
-       'removeBadHTML': 'reserved',
        'removeDefaultJS': 'reserved',
        'removeIfEquals': 'reserved',
        'removeIfFalse': 'reserved',