From be989bc244f9f7a63b0de0dff22996ad9f984f08 Mon Sep 17 00:00:00 2001
From: Markus Klein <markus.klein@typo3.org>
Date: Thu, 19 Nov 2015 18:48:56 +0100
Subject: [PATCH] [BUGFIX] Prevent fatal error in stdWrap when compatibility6
 is not loaded

When extracting compatibility6 it was forgotten to tackle stdWrap offsetWrap,
which uses a class of compatibility6.

We add a check for the extension and a deprecation notice to not use this
(really outdated) stdWrap anymore.

Resolves: #71704
Releases: master
Change-Id: I83d2ede014efd32a0241372df32f333d55f091ce
Reviewed-on: https://review.typo3.org/44805
Reviewed-by: Stefan Neufeind <typo3.neufeind@speedpartner.de>
Tested-by: Stefan Neufeind <typo3.neufeind@speedpartner.de>
Reviewed-by: Georg Ringer <georg.ringer@gmail.com>
Tested-by: Georg Ringer <georg.ringer@gmail.com>
---
 .../ContentObject/ContentObjectRenderer.php   | 35 +++++++++++--------
 1 file changed, 20 insertions(+), 15 deletions(-)

diff --git a/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php b/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php
index af1ea71f9435..7b9c8126b5f4 100644
--- a/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php
+++ b/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php
@@ -14,7 +14,6 @@ namespace TYPO3\CMS\Frontend\ContentObject;
  * The TYPO3 project - inspiring people to share!
  */
 
-use TYPO3\CMS\Compatibility6\ContentObject\OffsetTableContentObject;
 use TYPO3\CMS\Core\Cache\CacheManager;
 use TYPO3\CMS\Core\FrontendEditing\FrontendEditingController;
 use TYPO3\CMS\Core\Html\HtmlParser;
@@ -3730,24 +3729,30 @@ class ContentObjectRenderer
      * @param string $content Input value undergoing processing in this function.
      * @param array $conf stdWrap properties for offsetWrap.
      * @return string The processed input value
+     * @deprecated since CMS 7, will be removed with CMS 8 without replacement
      */
     public function stdWrap_offsetWrap($content = '', $conf = array())
     {
-        $controlTable = GeneralUtility::makeInstance(OffsetTableContentObject::class);
-        if ($conf['offsetWrap.']['tableParams'] || $conf['offsetWrap.']['tableParams.']) {
-            $controlTable->tableParams = isset($conf['offsetWrap.']['tableParams.'])
-                ? $this->stdWrap($conf['offsetWrap.']['tableParams'], $conf['offsetWrap.']['tableParams.'])
-                : $conf['offsetWrap.']['tableParams'];
-        }
-        if ($conf['offsetWrap.']['tdParams'] || $conf['offsetWrap.']['tdParams.']) {
-            $controlTable->tdParams = ' ' . (isset($conf['offsetWrap.']['tdParams.'])
-                ? $this->stdWrap($conf['offsetWrap.']['tdParams'], $conf['offsetWrap.']['tdParams.'])
-                : $conf['offsetWrap.']['tdParams']);
-        }
-        $content = $controlTable->start($content, $conf['offsetWrap']);
-        if ($conf['offsetWrap.']['stdWrap.']) {
-            $content = $this->stdWrap($content, $conf['offsetWrap.']['stdWrap.']);
+        GeneralUtility::logDeprecatedFunction();
+
+        if (ExtensionManagementUtility::isLoaded('compatibility6')) {
+            $controlTable = GeneralUtility::makeInstance(TYPO3\CMS\Compatibility6\ContentObject\OffsetTableContentObject::class);
+            if ($conf['offsetWrap.']['tableParams'] || $conf['offsetWrap.']['tableParams.']) {
+                $controlTable->tableParams = isset($conf['offsetWrap.']['tableParams.'])
+                    ? $this->stdWrap($conf['offsetWrap.']['tableParams'], $conf['offsetWrap.']['tableParams.'])
+                    : $conf['offsetWrap.']['tableParams'];
+            }
+            if ($conf['offsetWrap.']['tdParams'] || $conf['offsetWrap.']['tdParams.']) {
+                $controlTable->tdParams = ' ' . (isset($conf['offsetWrap.']['tdParams.'])
+                        ? $this->stdWrap($conf['offsetWrap.']['tdParams'], $conf['offsetWrap.']['tdParams.'])
+                        : $conf['offsetWrap.']['tdParams']);
+            }
+            $content = $controlTable->start($content, $conf['offsetWrap']);
+            if ($conf['offsetWrap.']['stdWrap.']) {
+                $content = $this->stdWrap($content, $conf['offsetWrap.']['stdWrap.']);
+            }
         }
+
         return $content;
     }
 
-- 
GitLab