[BUGFIX] Do not link l18n_cfg restricted pages 45/57345/2
authorNicole Cordes <typo3@cordes.co>
Sat, 23 Jun 2018 16:08:35 +0000 (18:08 +0200)
committerStefan Neufeind <typo3.neufeind@speedpartner.de>
Sun, 24 Jun 2018 21:54:24 +0000 (23:54 +0200)
Prevent linking a page that is either restricted for the default
language or where any fallback is forbidden.

Resolves: #85063
Releases: master, 8.7
Change-Id: I9dd1f7b5b357c60114f72898ddffa9ecf7305bf2
Reviewed-on: https://review.typo3.org/57345
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Peter Kraume <peter.kraume@gmx.de>
Tested-by: Peter Kraume <peter.kraume@gmx.de>
Reviewed-by: Stefan Neufeind <typo3.neufeind@speedpartner.de>
Tested-by: Stefan Neufeind <typo3.neufeind@speedpartner.de>
typo3/sysext/frontend/Classes/Typolink/PageLinkBuilder.php

index 4fd92ad..a740052 100644 (file)
@@ -53,6 +53,13 @@ class PageLinkBuilder extends AbstractTypolinkBuilder
         if (empty($page)) {
             throw new UnableToLinkException('Page id "' . $linkDetails['typoLinkParameter'] . '" was not found, so "' . $linkText . '" was not linked.', 1490987336, null, $linkText);
         }
+        $language = empty($page['_PAGES_OVERLAY']) ? 0 : $page['_PAGES_OVERLAY_LANGUAGE'];
+        if ($language === 0 && GeneralUtility::hideIfDefaultLanguage($page['l18n_cfg'])) {
+            throw new UnableToLinkException('Default language of page  "' . $linkDetails['typoLinkParameter'] . '" is hidden, so "' . $linkText . '" was not linked.', 1529527301, null, $linkText);
+        }
+        if ($language > 0 && !isset($page['_PAGES_OVERLAY']) && GeneralUtility::hideIfNotTranslated($page['l18n_cfg'])) {
+            throw new UnableToLinkException('Fallback to default language of page "' . $linkDetails['typoLinkParameter'] . '" is disabled, so "' . $linkText . '" was not linked.', 1529527488, null, $linkText);
+        }
 
         if (is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typolinkProcessing']['typolinkModifyParameterForPageLinks'])) {
             foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typolinkProcessing']['typolinkModifyParameterForPageLinks'] as $classData) {