[TASK] Remove TypoScript option config.typolinkCheckRootline 45/54545/3
authorBenni Mack <benni@typo3.org>
Fri, 3 Nov 2017 14:52:51 +0000 (15:52 +0100)
committerSusanne Moog <susanne.moog@typo3.org>
Fri, 3 Nov 2017 16:37:29 +0000 (17:37 +0100)
The TypoScript option 'config.typolinkCheckRootline' was introduced
back in TYPO3 v4.x when there was no proper rootline cache or sys_domain
cache in place, in order to resolve the proper domain.

This now has changed, and this option can be removed in order to simplify
page link generation.

When in a multi-site setup, this option MUST be active otherwise it will
result in ugly and hard-to-debug side-effects.

For a single-site setup having this option disabled will result in a marginal
performance decrease (one SQL query more) when linking to a page with a
sys_domain record available.

A deprecation notice is thrown if your TypoScript setup still includes this option.

Resolves: #82909
Releases: master
Change-Id: I36abcdd1e2eabe2da66d8edd720a5a27ec306ede
Reviewed-on: https://review.typo3.org/54545
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
Tested-by: TYPO3com <no-reply@typo3.com>
Tested-by: Oliver Hader <oliver.hader@typo3.org>
Reviewed-by: Frans Saris <franssaris@gmail.com>
Reviewed-by: Susanne Moog <susanne.moog@typo3.org>
Tested-by: Susanne Moog <susanne.moog@typo3.org>
typo3/sysext/core/Documentation/Changelog/master/Deprecation-82909-TypoScriptOptionConfigtypolinkCheckRootline.rst [new file with mode: 0644]

diff --git a/typo3/sysext/core/Documentation/Changelog/master/Deprecation-82909-TypoScriptOptionConfigtypolinkCheckRootline.rst b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-82909-TypoScriptOptionConfigtypolinkCheckRootline.rst
new file mode 100644 (file)
index 0000000..99eefe6
--- /dev/null
@@ -0,0 +1,32 @@
+.. include:: ../../Includes.txt
+Deprecation: #82909 - TypoScript option config.typolinkCheckRootline
+See :issue:`82909`
+The TypoScript option `config.typolinkCheckRootline` is now always active.
+Setting this option in TypoScript setup will trigger a deprecation warning.
+Affected Installations
+Any installation having this option set.
+Just remove the TypoScript instruction, as it is not needed anymore.
+.. index:: TypoScript, NotScanned
\ No newline at end of file
index 5254dd8..08d6d03 100644 (file)
@@ -2460,8 +2460,9 @@ class TypoScriptFrontendController implements LoggerAwareInterface
                     if (is_array($this->pSetup['config.'])) {
                         ArrayUtility::mergeRecursiveWithOverrule($this->config['config'], $this->pSetup['config.']);
-                    if ($this->config['config']['typolinkEnableLinksAcrossDomains']) {
-                        $this->config['config']['typolinkCheckRootline'] = true;
+                    // @deprecated since TYPO3 v9, can be removed in TYPO3 v10
+                    if ($this->config['config']['typolinkCheckRootline']) {
+                        $this->logDeprecatedTyposcript('config.typolinkCheckRootline', 'The functionality is always enabled since TYPO3 v9 and can be removed from your TypoScript code');
                     // Set default values for removeDefaultJS and inlineStyle2TempFile so CSS and JS are externalized if compatversion is higher than 4.0
                     if (!isset($this->config['config']['removeDefaultJS'])) {
index d3ac05b..fe40f61 100644 (file)
@@ -113,7 +113,7 @@ class PageLinkBuilder extends AbstractTypolinkBuilder
         if (!empty($MPvarAcc)) {
             // Add "&MP" var:
             $addQueryParams .= '&MP=' . rawurlencode(implode(',', $MPvarAcc));
-        } elseif (strpos($addQueryParams, '&MP=') === false && $tsfe->config['config']['typolinkCheckRootline']) {
+        } elseif (strpos($addQueryParams, '&MP=') === false) {
             // We do not come here if additionalParams had '&MP='. This happens when typoLink is called from
             // menu. Mount points always work in the content of the current domain and we must not change
             // domain if MP variables exist.
index 69ecad8..bbf1a28 100644 (file)
@@ -817,13 +817,6 @@ Internally, the value is depending on whether a Alternative Page Language record
                        Passes the default <title>-tag content to this function. No typoScript parameters are passed though.]]></description>
-               </property>
-               <property name="typolinkCheckRootline" type="boolean">
-                       <description><![CDATA[If set, then every "typolink" is checked whether it's linking to a page within the current rootline of the site.
-If not, then TYPO3 searches for the first found domain record (without redirect) in that rootline from out to in.
-If found (another domain), then that domain is prepended the link, the external target is used instead and thus the link jumps to the page in the correct domain.]]></description>
-                       <default><![CDATA[
                <property name="typolinkEnableLinksAcrossDomains" type="boolean">
@@ -837,8 +830,6 @@ If this option is not set, then all cross-domain links will be generated as
 - all domains have identical localization settings (config.sys_language_XXX directives)
 - all domains have the same set of languages defined
-This option implies "config.typolinkCheckRootline=1", which will be activated automatically. Setting value of "config. typolinkCheckRootline" inside TS template will have no effect.
 Disclaimer: it must be understood that while link is generated to another domain, it is still generated in the context of current domain. No side effects are known at the time of writing of this documentation but they may exist. If any side effects are found, this documentation will be updated to include them.]]></description>
index b61f929..8d585a7 100644 (file)
                                'typeNum': kw('typeNum'),
                                'types': kw('types'),
                                'typolink': A,
-                               'typolinkCheckRootline': kw('typolinkCheckRootline'),
                                'uid': B,
                                'uidInList': kw('uidInList'),
                                'uniqueGlobal': B,