[!!!][TASK] Remove deprecated code from RteHtmlParser 42/59342/3
authorChristian Kuhn <lolli@schwarzbu.ch>
Sat, 5 Jan 2019 16:15:16 +0000 (17:15 +0100)
committerWouter Wolters <typo3@wouterwolters.nl>
Sun, 6 Jan 2019 13:52:33 +0000 (14:52 +0100)
Resolves: #87336
Releases: master
Change-Id: I7835c2e328aac7bc154b9460abaec56a29fe8216
Reviewed-on: https://review.typo3.org/59342
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
typo3/sysext/core/Classes/Html/RteHtmlParser.php
typo3/sysext/core/Documentation/Changelog/master/Breaking-87193-DeprecatedFunctionalityRemoved.rst
typo3/sysext/core/Tests/UnitDeprecated/Html/RteHtmlParserTest.php [deleted file]
typo3/sysext/install/Configuration/ExtensionScanner/Php/ArrayDimensionMatcher.php
typo3/sysext/install/Configuration/ExtensionScanner/Php/MethodArgumentUnusedMatcher.php
typo3/sysext/install/Configuration/ExtensionScanner/Php/MethodCallMatcher.php
typo3/sysext/install/Configuration/ExtensionScanner/Php/PropertyProtectedMatcher.php

index d853a7f..4619820 100644 (file)
@@ -17,14 +17,11 @@ namespace TYPO3\CMS\Core\Html;
 use Psr\Log\LoggerAwareInterface;
 use Psr\Log\LoggerAwareTrait;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
-use TYPO3\CMS\Core\Compatibility\PublicMethodDeprecationTrait;
-use TYPO3\CMS\Core\Compatibility\PublicPropertyDeprecationTrait;
 use TYPO3\CMS\Core\LinkHandling\Exception\UnknownLinkHandlerException;
 use TYPO3\CMS\Core\LinkHandling\LinkService;
 use TYPO3\CMS\Core\Resource;
 use TYPO3\CMS\Core\Type\File\ImageInfo;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
-use TYPO3\CMS\Frontend\Service\TypoLinkCodecService;
 
 /**
  * Class for parsing HTML for the Rich Text Editor. (also called transformations)
@@ -37,33 +34,6 @@ use TYPO3\CMS\Frontend\Service\TypoLinkCodecService;
 class RteHtmlParser extends HtmlParser implements LoggerAwareInterface
 {
     use LoggerAwareTrait;
-    use PublicPropertyDeprecationTrait;
-    use PublicMethodDeprecationTrait;
-
-    protected $deprecatedPublicProperties = [
-        'blockElementList' => 'Using $blockElementList of class RteHtmlParser from the outside is discouraged, as this property is only used for internal storage.',
-        'recPid' => 'Using $recPid of class RteHtmlParser from the outside is discouraged, as this property is only used for internal storage.',
-        'elRef' => 'Using $elRef of class RteHtmlParser from the outside is discouraged, as this property is only used for internal storage.',
-        'tsConfig' => 'Using $tsConfig of class RteHtmlParser from the outside is discouraged, as this property is only used for internal storage.',
-        'procOptions' => 'Using $procOptions of class RteHtmlParser from the outside is discouraged, as this property is only used for internal storage.',
-        'TS_transform_db_safecounter' => 'Using $TS_transform_db_safecounter of class RteHtmlParser from the outside is discouraged, as this property is only used for internal storage.',
-        'getKeepTags_cache' => 'Using $getKeepTags_cache of class RteHtmlParser from the outside is discouraged, as this property is only used for internal storage.',
-        'allowedClasses' => 'Using $allowedClasses of class RteHtmlParser from the outside is discouraged, as this property is only used for internal storage.',
-    ];
-
-    protected $deprecatedPublicMethods = [
-        'TS_images_db' => 'Using TS_images_db() of class RteHtmlParser from the outside is discouraged, as this method is only available for internal purposes.',
-        'TS_links_db' => 'Using TS_links_db() of class RteHtmlParser from the outside is discouraged, as this method is only available for internal purposes.',
-        'TS_transform_db' => 'Using TS_transform_db() of class RteHtmlParser from the outside is discouraged, as this method is only available for internal purposes.',
-        'TS_transform_rte' => 'Using TS_transform_rte() of class RteHtmlParser from the outside is discouraged, as this method is only available for internal purposes.',
-        'HTMLcleaner_db' => 'Using HTMLcleaner_db() of class RteHtmlParser from the outside is discouraged, as this method is only available for internal purposes.',
-        'getKeepTags' => 'Using getKeepTags() of class RteHtmlParser from the outside is discouraged, as this method is only available for internal purposes.',
-        'divideIntoLines' => 'Using divideIntoLines() of class RteHtmlParser from the outside is discouraged, as this method is only available for internal purposes.',
-        'setDivTags' => 'Using setDivTags() of class RteHtmlParser from the outside is discouraged, as this method is only available for internal purposes.',
-        'getWHFromAttribs' => 'Using getWHFromAttribs() of class RteHtmlParser from the outside is discouraged, as this method is only available for internal purposes.',
-        'urlInfoForLinkTags' => 'Using urlInfoForLinkTags() of class RteHtmlParser from the outside is discouraged, as this method is not in use anymore and will be removed.',
-        'TS_AtagToAbs' => 'Using TS_AtagToAbs() of class RteHtmlParser from the outside is discouraged, as this method is only available for internal purposes.',
-    ];
 
     /**
      * List of elements that are not wrapped into a "p" tag while doing the transformation.
@@ -210,9 +180,6 @@ class RteHtmlParser extends HtmlParser implements LoggerAwareInterface
         // Define which attributes are allowed on <p> tags
         if (isset($this->procOptions['allowAttributes.'])) {
             $this->allowedAttributesForParagraphTags = $this->procOptions['allowAttributes.'];
-        } elseif (isset($this->procOptions['keepPDIVattribs'])) {
-            trigger_error('HTML parsing option "keepPDIVattribs" will not be evaluated anymore in TYPO3 v10.0. Use "allowedAttributes" instead.', E_USER_DEPRECATED);
-            $this->allowedAttributesForParagraphTags = GeneralUtility::trimExplode(',', strtolower($this->procOptions['keepPDIVattribs']), true);
         }
         // Override tags which are allowed outside of <p> tags
         if (isset($this->procOptions['allowTagsOutside'])) {
@@ -283,9 +250,6 @@ class RteHtmlParser extends HtmlParser implements LoggerAwareInterface
                         case 'ts_images':
                             $value = $this->TS_images_rte($value);
                             break;
-                        case 'ts_links':
-                            $value = $this->TS_links_rte($value, true);
-                            break;
                         case 'css_transform':
                             $value = $this->TS_transform_rte($value);
                             break;
@@ -570,7 +534,6 @@ class RteHtmlParser extends HtmlParser implements LoggerAwareInterface
      *
      * @param string $value Content input
      * @return string Content output
-     * @see TS_links_rte()
      */
     protected function TS_links_db($value)
     {
@@ -581,115 +544,17 @@ class RteHtmlParser extends HtmlParser implements LoggerAwareInterface
                 $linkService = GeneralUtility::makeInstance(LinkService::class);
                 $linkInformation = $linkService->resolve($tagAttributes['href'] ?? '');
 
-                // Modify parameters, this hook should be deprecated
-                if (isset($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_parsehtml_proc.php']['modifyParams_LinksDb_PostProc'])) {
-                    trigger_error('The hook "t3lib/class.t3lib_parsehtml_proc.php->modifyParams_LinksDb_PostProc" will be removed in TYPO3 v10.0, use LinkService syntax to modify links to be stored in the database.', E_USER_DEPRECATED);
-                    $parameters = [
-                        'currentBlock' => $v,
-                        'linkInformation' => $linkInformation,
-                        'url' => $linkInformation['href'],
-                        'attributes' => $tagAttributes
-                    ];
-                    foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_parsehtml_proc.php']['modifyParams_LinksDb_PostProc'] ?? [] as $className) {
-                        $processor = GeneralUtility::makeInstance($className);
-                        $blockSplit[$k] = $processor->modifyParamsLinksDb($parameters, $this);
-                    }
-                } else {
-                    // Otherwise store the link as <a> tag as default by TYPO3, with the new link service syntax
-                    try {
-                        $tagAttributes['href'] = $linkService->asString($linkInformation);
-                    } catch (UnknownLinkHandlerException $e) {
-                        $tagAttributes['href'] = $linkInformation['href'] ?? $tagAttributes['href'];
-                    }
-
-                    $blockSplit[$k] = '<a ' . GeneralUtility::implodeAttributes($tagAttributes, true) . '>'
-                        . $this->TS_links_db($this->removeFirstAndLastTag($blockSplit[$k])) . '</a>';
-                }
-            }
-        }
-        return implode('', $blockSplit);
-    }
-
-    /**
-     * Transformation handler: 'ts_links' / direction: "rte"
-     * Converting TYPO3-specific <link> tags to <a> tags
-     *
-     * This functionality is only used to convert legacy <link> tags to the new linking syntax using <a> tags, and will
-     * not be converted back to <link> tags anymore.
-     *
-     * @param string $value Content input
-     * @param bool $internallyCalledFromCore internal option for calls where the Core is still using this function, to supress method deprecations
-     * @return string Content output
-     * @deprecated will be removed in TYPO3 v10.0, only ->TS_AtagToAbs() should be called directly, <link> syntax is deprecated
-     */
-    public function TS_links_rte($value, $internallyCalledFromCore = null)
-    {
-        if ($internallyCalledFromCore === null) {
-            trigger_error('RteHtmlParser->TS_links_rte() will be removed in TYPO3 v10.0, use TS_AtagToAbs() directly and do not use <link> syntax anymore.', E_USER_DEPRECATED);
-        }
-        $hasLinkTags = false;
-        $value = $this->TS_AtagToAbs($value);
-        // Split content by the TYPO3 pseudo tag "<link>"
-        $blockSplit = $this->splitIntoBlock('link', $value, true);
-        foreach ($blockSplit as $k => $v) {
-            // Block
-            if ($k % 2) {
-                $hasLinkTags = true;
-                // Split away the first "<link " part
-                $typoLinkData = explode(' ', substr($this->getFirstTag($v), 0, -1), 2)[1];
-                $tagCode = GeneralUtility::makeInstance(TypoLinkCodecService::class)->decode($typoLinkData);
-
-                // Parsing the TypoLink data. This parsing is done like in \TYPO3\CMS\Frontend\ContentObject->typoLink()
-                $linkService = GeneralUtility::makeInstance(LinkService::class);
-                $linkInformation = $linkService->resolve($tagCode['url']);
-
+                // Store the link as <a> tag as default by TYPO3, with the link service syntax
                 try {
-                    $href = $linkService->asString($linkInformation);
+                    $tagAttributes['href'] = $linkService->asString($linkInformation);
                 } catch (UnknownLinkHandlerException $e) {
-                    $href = '';
+                    $tagAttributes['href'] = $linkInformation['href'] ?? $tagAttributes['href'];
                 }
 
-                // Modify parameters by a hook
-                if (is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_parsehtml_proc.php']['modifyParams_LinksRte_PostProc'] ?? false)) {
-                    trigger_error('The hook "t3lib/class.t3lib_parsehtml_proc.php->modifyParams_LinksRte_PostProc" will be removed in TYPO3 v10.0, use the link service to properly use .', E_USER_DEPRECATED);
-                    // backwards-compatibility: show an error message if the page is not found
-                    $error = '';
-                    if ($linkInformation['type'] === LinkService::TYPE_PAGE) {
-                        $pageRecord = BackendUtility::getRecord('pages', $linkInformation['pageuid']);
-                        // Page does not exist
-                        if (!is_array($pageRecord)) {
-                            $error = 'Page with ID ' . $linkInformation['pageuid'] . ' not found';
-                        }
-                    }
-                    $parameters = [
-                        'currentBlock' => $v,
-                        'url' => $href,
-                        'tagCode' => $tagCode,
-                        'external' => $linkInformation['type'] === LinkService::TYPE_URL,
-                        'error' => $error
-                    ];
-                    foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_parsehtml_proc.php']['modifyParams_LinksRte_PostProc'] as $className) {
-                        $processor = GeneralUtility::makeInstance($className);
-                        $blockSplit[$k] = $processor->modifyParamsLinksRte($parameters, $this);
-                    }
-                } else {
-                    $anchorAttributes = [
-                        'href'   => $href,
-                        'target' => $tagCode['target'],
-                        'class'  => $tagCode['class'],
-                        'title'  => $tagCode['title']
-                    ];
-
-                    // Setting the <a> tag
-                    $blockSplit[$k] = '<a ' . GeneralUtility::implodeAttributes($anchorAttributes, true) . '>'
-                        . $this->TS_links_rte($this->removeFirstAndLastTag($blockSplit[$k]), $internallyCalledFromCore)
-                        . '</a>';
-                }
+                $blockSplit[$k] = '<a ' . GeneralUtility::implodeAttributes($tagAttributes, true) . '>'
+                    . $this->TS_links_db($this->removeFirstAndLastTag($blockSplit[$k])) . '</a>';
             }
         }
-        if ($hasLinkTags) {
-            trigger_error('Content with <link> syntax was found, update your content to use the t3:// syntax, and migrate your content via the upgrade wizard in the install tool.', E_USER_DEPRECATED);
-        }
         return implode('', $blockSplit);
     }
 
@@ -764,38 +629,6 @@ class RteHtmlParser extends HtmlParser implements LoggerAwareInterface
     }
 
     /**
-     * Wraps a-tags that contain a style attribute with a span-tag
-     * This is not in use anymore, but was necessary before because <a> tags are transformed into <link> tags
-     * in the database, but <link> tags cannot handle style attributes. However, this is considered a
-     * bad approach as it leaves an ugly <span> tag in the database, if allowedTags=span with style attributes are
-     * allowed.
-     *
-     * @param string $value Content input
-     * @return string Content output
-     * @deprecated since TYPO3 v9.0, will be removed in TYPO3 v10.0, see comment above, adding attribuet "rteerror" is not necessary anymore.
-     */
-    public function transformStyledATags($value)
-    {
-        trigger_error('RteHtmlParser->transformStyledATags() will be removed in TYPO3 v10.0. TYPO3 can handle style attribute in anchor tags properly since TYPO3 v8 LTS.', E_USER_DEPRECATED);
-        $blockSplit = $this->splitIntoBlock('A', $value);
-        foreach ($blockSplit as $k => $v) {
-            // If an A-tag was found
-            if ($k % 2) {
-                list($attribArray) = $this->get_tag_attributes($this->getFirstTag($v), true);
-                // If "style" attribute is set and rteerror is not set!
-                if ($attribArray['style'] && !$attribArray['rteerror']) {
-                    $attribArray_copy['style'] = $attribArray['style'];
-                    unset($attribArray['style']);
-                    $bTag = '<span ' . GeneralUtility::implodeAttributes($attribArray_copy, true) . '><a ' . GeneralUtility::implodeAttributes($attribArray, true) . '>';
-                    $eTag = '</a></span>';
-                    $blockSplit[$k] = $bTag . $this->removeFirstAndLastTag($blockSplit[$k]) . $eTag;
-                }
-            }
-        }
-        return implode('', $blockSplit);
-    }
-
-    /**
      * Transformation handler: css_transform / direction: "rte"
      * Set (->rte) for standard content elements (ts)
      *
@@ -872,12 +705,7 @@ class RteHtmlParser extends HtmlParser implements LoggerAwareInterface
     protected function HTMLcleaner_db($content)
     {
         $keepTags = $this->getKeepTags('db');
-        // Default: remove unknown tags.
-        if (isset($this->procOptions['dontRemoveUnknownTags_db'])) {
-            trigger_error('HTMLParser option "dontRemoveUnknownTags_db" will not be evaluted anymore in TYPO3 v10.0. Remove its usages.', E_USER_DEPRECATED);
-        }
-        $keepUnknownTags = (bool)($this->procOptions['dontRemoveUnknownTags_db'] ?? false);
-        return $this->HTMLcleaner($content, $keepTags, $keepUnknownTags);
+        return $this->HTMLcleaner($content, $keepTags, false);
     }
 
     /**
@@ -1135,72 +963,6 @@ class RteHtmlParser extends HtmlParser implements LoggerAwareInterface
     }
 
     /**
-     * Parse <A>-tag href and return status of email,external,file or page
-     * This functionality is not in use anymore
-     *
-     * @param string $url URL to analyze.
-     * @return array Information in an array about the URL
-     * @deprecated will be removed in TYPO3 v10.0. Not in use anymore.
-     */
-    protected function urlInfoForLinkTags($url)
-    {
-        $info = [];
-        $url = trim($url);
-        if (strpos(strtolower($url), 'mailto:') === 0) {
-            $info['url'] = trim(substr($url, 7));
-            $info['type'] = 'email';
-        } elseif (strpos($url, '?file:') !== false) {
-            $info['type'] = 'file';
-            $info['url'] = rawurldecode(substr($url, strpos($url, '?file:') + 1));
-        } else {
-            $curURL = GeneralUtility::getIndpEnv('TYPO3_SITE_URL');
-            $urlLength = strlen($url);
-            $a = 0;
-            for (; $a < $urlLength; $a++) {
-                if ($url[$a] != $curURL[$a]) {
-                    break;
-                }
-            }
-            $info['relScriptPath'] = substr($curURL, $a);
-            $info['relUrl'] = substr($url, $a);
-            $info['url'] = $url;
-            $info['type'] = 'ext';
-            $siteUrl_parts = parse_url($url);
-            $curUrl_parts = parse_url($curURL);
-            // Hosts should match
-            if ($siteUrl_parts['host'] == $curUrl_parts['host'] && (!$info['relScriptPath'] || defined('TYPO3_mainDir') && strpos($info['relScriptPath'], TYPO3_mainDir) === 0)) {
-                // If the script path seems to match or is empty (FE-EDIT)
-                // New processing order 100502
-                $uP = parse_url($info['relUrl']);
-                if ($info['relUrl'] === '#' . $siteUrl_parts['fragment']) {
-                    $info['url'] = $info['relUrl'];
-                    $info['type'] = 'anchor';
-                } elseif (!trim($uP['path']) || $uP['path'] === 'index.php') {
-                    // URL is a page (id parameter)
-                    $pp = preg_split('/^id=/', $uP['query']);
-                    $pp[1] = preg_replace('/&id=[^&]*/', '', $pp[1]);
-                    $parameters = explode('&', $pp[1]);
-                    $id = array_shift($parameters);
-                    if ($id) {
-                        $info['pageid'] = $id;
-                        $info['cElement'] = $uP['fragment'];
-                        $info['url'] = $id . ($info['cElement'] ? '#' . $info['cElement'] : '');
-                        $info['type'] = 'page';
-                        $info['query'] = $parameters[0] ? '&' . implode('&', $parameters) : '';
-                    }
-                } else {
-                    $info['url'] = $info['relUrl'];
-                    $info['type'] = 'file';
-                }
-            } else {
-                unset($info['relScriptPath']);
-                unset($info['relUrl']);
-            }
-        }
-        return $info;
-    }
-
-    /**
      * Converting <A>-tags to absolute URLs (+ setting rtekeep attribute)
      *
      * @param string $value Content input
@@ -1208,9 +970,6 @@ class RteHtmlParser extends HtmlParser implements LoggerAwareInterface
      */
     protected function TS_AtagToAbs($value)
     {
-        if (func_num_args() > 1) {
-            trigger_error('Second argument of RteHtmlParser->TS_AtagToAbs() is not in use and will be removed in TYPO3 v10.0, however the argument in the callers code can be removed without side-effects.', E_USER_DEPRECATED);
-        }
         $blockSplit = $this->splitIntoBlock('A', $value);
         foreach ($blockSplit as $k => $v) {
             // Block
index 9e361bf..74ba190 100644 (file)
@@ -279,6 +279,9 @@ The following PHP class methods that have been previously deprecated for v9 have
 * :php:`TYPO3\CMS\Core\Crypto\PasswordHashing\PhpassPasswordHash->setHashCount()`
 * :php:`TYPO3\CMS\Core\Crypto\PasswordHashing\PhpassPasswordHash->setMaxHashCount()`
 * :php:`TYPO3\CMS\Core\Crypto\PasswordHashing\PhpassPasswordHash->setMinHashCount()`
+* :php:`TYPO3\CMS\Core\Html\RteHtmlParser->transformStyledATags()`
+* :php:`TYPO3\CMS\Core\Html\RteHtmlParser->TS_links_rte()`
+* :php:`TYPO3\CMS\Core\Html\RteHtmlParser->urlInfoForLinkTags()`
 * :php:`TYPO3\CMS\Core\Package\PackageManager->injectDependencyResolver()`
 * :php:`TYPO3\CMS\Core\Page\PageRenderer::addMetaTag()`
 * :php:`TYPO3\CMS\Core\Page\PageRenderer::disableConcatenateFiles()`
@@ -422,6 +425,7 @@ The following methods changed signature according to previous deprecations in v9
 * :php:`TYPO3\CMS\Core\Crypto\PasswordHashing\PhpassPasswordHash->getHashedPassword()` - Second argument dropped
 * :php:`TYPO3\CMS\Core\Http\Dispatcher->dispatch()` - Second argument dropped
 * :php:`TYPO3\CMS\Core\Package\PackageManager->__construct()` - First argument mandatory
+* :php:`TYPO3\CMS\Core\Html\RteHtmlParser->TS_AtagToAbs()` - Second argument dropped and protected
 * :php:`TYPO3\CMS\Core\Page\PageRenderer::addInlineLanguageLabelArray()` - Second argument dropped
 * :php:`TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded()` - Second argument dropped
 * :php:`TYPO3\CMS\Core\Utility\GeneralUtility->explodeUrl2Array()` - Second argument dropped
@@ -571,6 +575,16 @@ The following class methods have changed visibility:
 * :php:`TYPO3\CMS\Core\Crypto\PasswordHashing\Pbkdf2PasswordHash->isValidSalt()` changed from public to protected
 * :php:`TYPO3\CMS\Core\Crypto\PasswordHashing\PhpassPasswordHash->base64Encode()` changed from public to protected
 * :php:`TYPO3\CMS\Core\Crypto\PasswordHashing\PhpassPasswordHash->isValidSalt()` changed from public to protected
+* :php:`TYPO3\CMS\Core\Html\RteHtmlParser->TS_images_db()` changed from public to protected
+* :php:`TYPO3\CMS\Core\Html\RteHtmlParser->TS_links_db()` changed from public to protected
+* :php:`TYPO3\CMS\Core\Html\RteHtmlParser->TS_transform_db()` changed from public to protected
+* :php:`TYPO3\CMS\Core\Html\RteHtmlParser->TS_transform_rte()` changed from public to protected
+* :php:`TYPO3\CMS\Core\Html\RteHtmlParser->HTMLcleaner_db()` changed from public to protected
+* :php:`TYPO3\CMS\Core\Html\RteHtmlParser->getKeepTags()` changed from public to protected
+* :php:`TYPO3\CMS\Core\Html\RteHtmlParser->divideIntoLines()` changed from public to protected
+* :php:`TYPO3\CMS\Core\Html\RteHtmlParser->setDivTags()` changed from public to protected
+* :php:`TYPO3\CMS\Core\Html\RteHtmlParser->getWHFromAttribs()` changed from public to protected
+* :php:`TYPO3\CMS\Core\Html\RteHtmlParser->TS_AtagToAbs()` changed from public to protected
 * :php:`TYPO3\CMS\Core\TypoScript\TemplateService->flattenSetup()` changed from public to protected
 * :php:`TYPO3\CMS\Core\TypoScript\TemplateService->mergeConstantsFromPageTSconfig()` changed from public to protected
 * :php:`TYPO3\CMS\Core\TypoScript\TemplateService->prependStaticExtra()` changed from public to protected
@@ -757,6 +771,14 @@ The following class properties have changed visibility:
 * :php:`TYPO3\CMS\Core\Charset\CharsetConverter->parsedCharsets` changed from public to protected
 * :php:`TYPO3\CMS\Core\Charset\CharsetConverter->toASCII` changed from public to protected
 * :php:`TYPO3\CMS\Core\Charset\CharsetConverter->twoByteSets` changed from public to protected
+* :php:`TYPO3\CMS\Core\Html\RteHtmlParser->allowedClasses` changed from public to protected
+* :php:`TYPO3\CMS\Core\Html\RteHtmlParser->blockElementList` changed from public to protected
+* :php:`TYPO3\CMS\Core\Html\RteHtmlParser->elRef` changed from public to protected
+* :php:`TYPO3\CMS\Core\Html\RteHtmlParser->getKeepTags_cache` changed from public to protected
+* :php:`TYPO3\CMS\Core\Html\RteHtmlParser->procOptions` changed from public to protected
+* :php:`TYPO3\CMS\Core\Html\RteHtmlParser->recPid` changed from public to protected
+* :php:`TYPO3\CMS\Core\Html\RteHtmlParser->TS_transform_db_safecounter` changed from public to protected
+* :php:`TYPO3\CMS\Core\Html\RteHtmlParser->tsConfig` changed from public to protected
 * :php:`TYPO3\CMS\Core\TypoScript\TemplateService->absoluteRootLine` changed from public to protected
 * :php:`TYPO3\CMS\Core\TypoScript\TemplateService->matchAll` changed from public to protected
 * :php:`TYPO3\CMS\Core\TypoScript\TemplateService->nextLevel` changed from public to protected
@@ -884,6 +906,8 @@ The following user TSconfig options have been dropped:
 
 * Prefix `mod.` to override page TSconfig is ignored
 * `TSFE.frontendEditingController` to override the frontend editing controller in EXT:feedit
+* `RTE.proc.keepPDIVattribs`
+* `RTE.proc.dontRemoveUnknownTags_db`
 
 
 The following TypoScript options have been dropped:
@@ -993,6 +1017,8 @@ The following hooks have been removed:
 * :php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_fe.php']['connectToDB']`
 * :php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_fe.php']['hook_previewInfo']`
 * :php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_fe.php']['tslib_fe-PostProc']`
+* :php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_parsehtml_proc.php']['modifyParams_LinksDb_PostProc']`
+* :php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_parsehtml_proc.php']['modifyParams_LinksRte_PostProc']`
 
 
 The following feature is now always enabled:
diff --git a/typo3/sysext/core/Tests/UnitDeprecated/Html/RteHtmlParserTest.php b/typo3/sysext/core/Tests/UnitDeprecated/Html/RteHtmlParserTest.php
deleted file mode 100644 (file)
index 30de239..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-declare(strict_types = 1);
-namespace TYPO3\CMS\Core\Tests\UnitDeprecated\Html;
-
-/*
- * 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\Html\RteHtmlParser;
-use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
-
-/**
- * Test case
- */
-class RteHtmlParserTest extends UnitTestCase
-{
-    /**
-     * @var bool Reset singletons created by subject
-     */
-    protected $resetSingletonInstances = true;
-
-    /**
-     * @var RteHtmlParser
-     */
-    protected $subject;
-
-    protected function setUp(): void
-    {
-        $this->subject = new RteHtmlParser();
-        $this->subject->procOptions = [
-            'allowTagsOutside' => 'hr, address',
-            'overruleMode' => 'default'
-        ];
-    }
-
-    /**
-     * Data provider for linkWithAtSignCorrectlyTransformedOnWayToRTE
-     */
-    public static function linkWithAtSignCorrectlyTransformedOnWayToRTEProvider(): array
-    {
-        return [
-            'external url with @ sign' => [
-                '<link http://www.example.org/at@sign>link text</link>',
-                '<p><a href="http://www.example.org/at@sign">link text</a></p>'
-            ],
-            'email address with @ sign' => [
-                '<link name@example.org - mail "Opens window for sending email">link text</link>',
-                '<p><a href="mailto:name@example.org" class="mail" title="Opens window for sending email">link text</a></p>'
-            ]
-        ];
-    }
-
-    /**
-     * @test
-     * @dataProvider linkWithAtSignCorrectlyTransformedOnWayToRTEProvider
-     * @param $content
-     * @param $expectedResult
-     */
-    public function linkWithAtSignCorrectlyTransformedOnWayToRTE(string $content, string $expectedResult): void
-    {
-        $thisConfig = ['proc.' => $this->subject->procOptions];
-        $this->assertEquals($expectedResult, $this->subject->RTE_transform($content, [], 'rte', $thisConfig));
-    }
-}
index da8669f..be48f98 100644 (file)
@@ -144,11 +144,13 @@ return [
     '$GLOBALS[\'TYPO3_CONF_VARS\'][\'SC_OPTIONS\'][\'t3lib/class.t3lib_parsehtml_proc.php\'][\'modifyParams_LinksRte_PostProc\']' => [
         'restFiles' => [
             'Deprecation-83252-Link-tagSyntaxProcesssing.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     '$GLOBALS[\'TYPO3_CONF_VARS\'][\'SC_OPTIONS\'][\'t3lib/class.t3lib_parsehtml_proc.php\'][\'modifyParams_LinksDb_PostProc\']' => [
         'restFiles' => [
             'Deprecation-83252-Link-tagSyntaxProcesssing.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     '$GLOBALS[\'TYPO3_CONF_VARS\'][\'SC_OPTIONS\'][\'TYPO3\CMS\Recordlist\RecordList\DatabaseRecordList\'][\'buildQueryParameters\']' => [
index c856d78..651ee74 100644 (file)
@@ -31,6 +31,7 @@ return [
         'unusedArgumentNumbers' => [ 2 ],
         'restFiles' => [
             'Deprecation-83252-Link-tagSyntaxProcesssing.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     'TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->__construct' => [
index 2f2ffad..59c9a52 100644 (file)
@@ -1792,6 +1792,7 @@ return [
         'maximumNumberOfArguments' => 0,
         'restFiles' => [
             'Deprecation-83252-Link-tagSyntaxProcesssing.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     'TYPO3\CMS\Core\Html\RteHtmlParser->TS_links_rte' => [
@@ -1799,6 +1800,7 @@ return [
         'maximumNumberOfArguments' => 0,
         'restFiles' => [
             'Deprecation-83252-Link-tagSyntaxProcesssing.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     'TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->pageUnavailableAndExit' => [
@@ -3902,77 +3904,88 @@ return [
         'numberOfMandatoryArguments' => 1,
         'maximumNumberOfArguments' => 1,
         'restFiles' => [
-            'Deprecation-86441-VariousMethodsAndPropertiesInsideBackendUserAuthentication.rst'
+            'Deprecation-86441-VariousMethodsAndPropertiesInsideBackendUserAuthentication.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     'TYPO3\CMS\Core\Html\RteHtmlParser->TS_links_db' => [
         'numberOfMandatoryArguments' => 1,
         'maximumNumberOfArguments' => 1,
         'restFiles' => [
-            'Deprecation-86441-VariousMethodsAndPropertiesInsideBackendUserAuthentication.rst'
+            'Deprecation-86441-VariousMethodsAndPropertiesInsideBackendUserAuthentication.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     'TYPO3\CMS\Core\Html\RteHtmlParser->TS_transform_db' => [
         'numberOfMandatoryArguments' => 1,
         'maximumNumberOfArguments' => 1,
         'restFiles' => [
-            'Deprecation-86441-VariousMethodsAndPropertiesInsideBackendUserAuthentication.rst'
+            'Deprecation-86441-VariousMethodsAndPropertiesInsideBackendUserAuthentication.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     'TYPO3\CMS\Core\Html\RteHtmlParser->TS_transform_rte' => [
         'numberOfMandatoryArguments' => 1,
         'maximumNumberOfArguments' => 1,
         'restFiles' => [
-            'Deprecation-86441-VariousMethodsAndPropertiesInsideBackendUserAuthentication.rst'
+            'Deprecation-86441-VariousMethodsAndPropertiesInsideBackendUserAuthentication.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     'TYPO3\CMS\Core\Html\RteHtmlParser->HTMLcleaner_db' => [
         'numberOfMandatoryArguments' => 1,
         'maximumNumberOfArguments' => 1,
         'restFiles' => [
-            'Deprecation-86441-VariousMethodsAndPropertiesInsideBackendUserAuthentication.rst'
+            'Deprecation-86441-VariousMethodsAndPropertiesInsideBackendUserAuthentication.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     'TYPO3\CMS\Core\Html\RteHtmlParser->getKeepTags' => [
         'numberOfMandatoryArguments' => 0,
         'maximumNumberOfArguments' => 1,
         'restFiles' => [
-            'Deprecation-86441-VariousMethodsAndPropertiesInsideBackendUserAuthentication.rst'
+            'Deprecation-86441-VariousMethodsAndPropertiesInsideBackendUserAuthentication.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     'TYPO3\CMS\Core\Html\RteHtmlParser->divideIntoLines' => [
         'numberOfMandatoryArguments' => 1,
         'maximumNumberOfArguments' => 3,
         'restFiles' => [
-            'Deprecation-86441-VariousMethodsAndPropertiesInsideBackendUserAuthentication.rst'
+            'Deprecation-86441-VariousMethodsAndPropertiesInsideBackendUserAuthentication.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     'TYPO3\CMS\Core\Html\RteHtmlParser->setDivTags' => [
         'numberOfMandatoryArguments' => 1,
         'maximumNumberOfArguments' => 1,
         'restFiles' => [
-            'Deprecation-86441-VariousMethodsAndPropertiesInsideBackendUserAuthentication.rst'
+            'Deprecation-86441-VariousMethodsAndPropertiesInsideBackendUserAuthentication.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     'TYPO3\CMS\Core\Html\RteHtmlParser->getWHFromAttribs' => [
         'numberOfMandatoryArguments' => 1,
         'maximumNumberOfArguments' => 1,
         'restFiles' => [
-            'Deprecation-86441-VariousMethodsAndPropertiesInsideBackendUserAuthentication.rst'
+            'Deprecation-86441-VariousMethodsAndPropertiesInsideBackendUserAuthentication.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     'TYPO3\CMS\Core\Html\RteHtmlParser->urlInfoForLinkTags' => [
         'numberOfMandatoryArguments' => 1,
         'maximumNumberOfArguments' => 1,
         'restFiles' => [
-            'Deprecation-86441-VariousMethodsAndPropertiesInsideBackendUserAuthentication.rst'
+            'Deprecation-86441-VariousMethodsAndPropertiesInsideBackendUserAuthentication.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     'TYPO3\CMS\Core\Html\RteHtmlParser->TS_AtagToAbs' => [
         'numberOfMandatoryArguments' => 1,
         'maximumNumberOfArguments' => 1,
         'restFiles' => [
-            'Deprecation-86441-VariousMethodsAndPropertiesInsideBackendUserAuthentication.rst'
+            'Deprecation-86441-VariousMethodsAndPropertiesInsideBackendUserAuthentication.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     'TYPO3\CMS\Core\Page\PageRenderer->loadJquery' => [
index d3b352f..dc7b258 100644 (file)
@@ -1061,41 +1061,49 @@ return [
     'TYPO3\CMS\Core\Html\RteHtmlParser->blockElementList' => [
         'restFiles' => [
             'Deprecation-86440-InternalMethodsAndPropertiesWithinRteHtmlParser.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     'TYPO3\CMS\Core\Html\RteHtmlParser->recPid' => [
         'restFiles' => [
             'Deprecation-86440-InternalMethodsAndPropertiesWithinRteHtmlParser.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     'TYPO3\CMS\Core\Html\RteHtmlParser->elRef' => [
         'restFiles' => [
             'Deprecation-86440-InternalMethodsAndPropertiesWithinRteHtmlParser.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     'TYPO3\CMS\Core\Html\RteHtmlParser->tsConfig' => [
         'restFiles' => [
             'Deprecation-86440-InternalMethodsAndPropertiesWithinRteHtmlParser.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     'TYPO3\CMS\Core\Html\RteHtmlParser->procOptions' => [
         'restFiles' => [
             'Deprecation-86440-InternalMethodsAndPropertiesWithinRteHtmlParser.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     'TYPO3\CMS\Core\Html\RteHtmlParser->TS_transform_db_safecounter' => [
         'restFiles' => [
             'Deprecation-86440-InternalMethodsAndPropertiesWithinRteHtmlParser.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     'TYPO3\CMS\Core\Html\RteHtmlParser->getKeepTags_cache' => [
         'restFiles' => [
             'Deprecation-86440-InternalMethodsAndPropertiesWithinRteHtmlParser.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     'TYPO3\CMS\Core\Html\RteHtmlParser->allowedClasses' => [
         'restFiles' => [
             'Deprecation-86440-InternalMethodsAndPropertiesWithinRteHtmlParser.rst',
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     'TYPO3\CMS\Core\Authentication\BackendUserAuthentication->checkWorkspaceCurrent_cache' => [