[BUGFIX] Ensure that the content of stdWrap is always a string 16/45316/2
authorMarkus Klein <markus.klein@typo3.org>
Wed, 16 Dec 2015 14:26:25 +0000 (15:26 +0100)
committerFrans Saris <franssaris@gmail.com>
Fri, 18 Dec 2015 10:06:54 +0000 (11:06 +0100)
Additionally add explicit type conversions to all places, which
might influence the linktxt for typolink.

Resolves: #72132
Releases: master
Change-Id: I3774b41c6825d81f0d4510126e806dae2e7eaf50
Reviewed-on: https://review.typo3.org/45316
Reviewed-by: Andreas Fernandez <typo3@scripting-base.de>
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
Reviewed-by: Philipp Gampe <philipp.gampe@typo3.org>
Reviewed-by: Stefan Neufeind <typo3.neufeind@speedpartner.de>
Reviewed-by: Morton Jonuschat <m.jonuschat@mojocode.de>
Tested-by: Morton Jonuschat <m.jonuschat@mojocode.de>
Reviewed-by: Frans Saris <franssaris@gmail.com>
Tested-by: Frans Saris <franssaris@gmail.com>
typo3/sysext/fluid/Classes/ViewHelpers/Link/TypolinkViewHelper.php
typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php

index b2b8cd1..d4e77d5 100644 (file)
@@ -101,7 +101,7 @@ class TypolinkViewHelper extends AbstractViewHelper implements CompilableInterfa
         // Merge the $parameter with other arguments
         $typolinkParameter = self::createTypolinkParameterArrayFromArguments($parameter, $target, $class, $title, $additionalParams);
 
-        // array(param1 -> value1, param2 -> value2) --> "param1=value1 param2=>value2" for typolink.ATagParams
+        // array(param1 -> value1, param2 -> value2) --> param1="value1" param2="value2" for typolink.ATagParams
         $extraAttributes = array();
         foreach ($additionalAttributes as $attributeName => $attributeValue) {
             $extraAttributes[] = $attributeName . '="' . htmlspecialchars($attributeValue) . '"';
@@ -109,7 +109,7 @@ class TypolinkViewHelper extends AbstractViewHelper implements CompilableInterfa
         $aTagParams = implode(' ', $extraAttributes);
 
         // If no link has to be rendered, the inner content will be returned as such
-        $content = $renderChildrenClosure();
+        $content = (string)$renderChildrenClosure();
 
         if ($parameter) {
             /** @var ContentObjectRenderer $contentObject */
index f64531c..0a95e23 100644 (file)
@@ -2392,6 +2392,7 @@ class ContentObjectRenderer
      */
     public function stdWrap($content = '', $conf = array())
     {
+        $content = (string)$content;
         // If there is any hook object, activate all of the process and override functions.
         // The hook interface ContentObjectStdWrapHookInterface takes care that all 4 methods exist.
         if ($this->stdWrapHookObjects) {
@@ -6406,6 +6407,7 @@ class ContentObjectRenderer
      */
     public function typoLink($linktxt, $conf)
     {
+        $linktxt = (string)$linktxt;
         $tsfe = $this->getTypoScriptFrontendController();
 
         $LD = array();
@@ -7124,6 +7126,7 @@ class ContentObjectRenderer
      */
     public function getMailTo($mailAddress, $linktxt)
     {
+        $mailAddress = (string)$mailAddress;
         if ((string)$linktxt === '') {
             $linktxt = $mailAddress;
         }