[TASK] Deprecate some functions not in use anymore in the core
[Packages/TYPO3.CMS.git] / typo3 / sysext / frontend / Classes / ContentObject / ContentObjectRenderer.php
index 7ede0ea..98bdea5 100644 (file)
@@ -190,8 +190,6 @@ class ContentObjectRenderer
         'fontTag' => 'wrap',
         'fontTag.' => 'array',
         'addParams.' => 'array',
-        'textStyle.' => 'array',
-        'tableStyle.' => 'array',
         'filelink.' => 'array',
         'preCObject' => 'cObject',
         'preCObject.' => 'array',
@@ -227,8 +225,6 @@ class ContentObjectRenderer
         'outerWrap.' => 'array',
         'insertData' => 'boolean',
         'insertData.' => 'array',
-        'offsetWrap' => 'space',
-        'offsetWrap.' => 'array',
         'postUserFunc' => 'functionName',
         'postUserFuncInt' => 'functionName',
         'prefixComment' => 'string',
@@ -1040,80 +1036,6 @@ class ContentObjectRenderer
 
         return $exceptionHandlerConfiguration;
     }
-    /**
-     * Rendering the cObject, FLOWPLAYER
-     *
-     * @param array $conf Array of TypoScript properties
-     * @return string Output
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use $cObj->cObjGetSingle('FLOWPLAYER', $conf) instead
-     */
-    public function FLOWPLAYER($conf)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->render($this->getContentObject('FLOWPLAYER'), $conf);
-    }
-
-    /**
-     * Rendering the cObject, TEXT
-     *
-     * @param array $conf Array of TypoScript properties
-     * @return string Output
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use $cObj->cObjGetSingle('TEXT', $conf) instead
-     */
-    public function TEXT($conf)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->render($this->getContentObject('TEXT'), $conf);
-    }
-
-    /**
-     * Rendering the cObject, CLEARGIF
-     *
-     * @param array $conf Array of TypoScript properties
-     * @return string Output
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use $cObj->cObjGetSingle('CLEARGIF', $conf) instead
-     */
-    public function CLEARGIF($conf)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->render($this->getContentObject('CLEARGIF'), $conf);
-    }
-
-    /**
-     * Rendering the cObject, COBJ_ARRAY / COA and COBJ_ARRAY_INT
-     *
-     * @param array $conf Array of TypoScript properties
-     * @param string $ext If "INT" then the cObject is a "COBJ_ARRAY_INT" (non-cached), otherwise just "COBJ_ARRAY" (cached)
-     * @return string Output
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use $cObj->cObjGetSingle('COA', $conf) or $cObj->cObjGetSingle('COA_INT', $conf) instead
-     */
-    public function COBJ_ARRAY($conf, $ext = '')
-    {
-        GeneralUtility::logDeprecatedFunction();
-        if ($ext === 'INT') {
-            return $this->render($this->getContentObject('COA_INT'), $conf);
-        } else {
-            return $this->render($this->getContentObject('COA'), $conf);
-        }
-    }
-
-    /**
-     * Rendering the cObject, USER and USER_INT
-     *
-     * @param array $conf Array of TypoScript properties
-     * @param string $ext If "INT" then the cObject is a "USER_INT" (non-cached), otherwise just "USER" (cached)
-     * @return string Output
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use $cObj->cObjGetSingle('USER', $conf) or $cObj->cObjGetSingle('USER_INT', $conf) instead
-     */
-    public function USER($conf, $ext = '')
-    {
-        GeneralUtility::logDeprecatedFunction();
-        if ($ext === 'INT') {
-            return $this->render($this->getContentObject('USER_INT'), $conf);
-        } else {
-            return $this->render($this->getContentObject('USER'), $conf);
-        }
-    }
 
     /**
      * Retrieves a type of object called as USER or USER_INT. Object can detect their
@@ -1153,317 +1075,6 @@ class ContentObjectRenderer
         }
     }
 
-    /**
-     * Rendering the cObject, FILE
-     *
-     * @param array $conf Array of TypoScript properties
-     * @return string Output
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use $cObj->cObjGetSingle('FILE', $conf) instead
-     */
-    public function FILE($conf)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->render($this->getContentObject('FILE'), $conf);
-    }
-
-    /**
-     * Rendering the cObject, FILES
-     *
-     * @param array $conf Array of TypoScript properties
-     * @return string Output
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use $cObj->cObjGetSingle('FILES', $conf) instead
-     */
-    public function FILES($conf)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->render($this->getContentObject('FILES'), $conf);
-    }
-
-    /**
-     * Rendering the cObject, IMAGE
-     *
-     * @param array $conf Array of TypoScript properties
-     * @return string Output
-     * @see cImage()
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use $cObj->cObjGetSingle('IMAGE', $conf) instead
-     */
-    public function IMAGE($conf)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->render($this->getContentObject('IMAGE'), $conf);
-    }
-
-    /**
-     * Rendering the cObject, IMG_RESOURCE
-     *
-     * @param array $conf Array of TypoScript properties
-     * @return string Output
-     * @see getImgResource()
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use $cObj->cObjGetSingle('IMG_RESOURCE', $conf) instead
-     */
-    public function IMG_RESOURCE($conf)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->render($this->getContentObject('IMG_RESOURCE'), $conf);
-    }
-
-    /**
-     * Rendering the cObject, IMGTEXT
-     *
-     * @param array $conf Array of TypoScript properties
-     * @return string Output
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use $cObj->cObjGetSingle('IMGTEXT', $conf) instead
-     */
-    public function IMGTEXT($conf)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->render($this->getContentObject('IMGTEXT'), $conf);
-    }
-
-    /**
-     * Rendering the cObject, CONTENT
-     *
-     * @param array $conf Array of TypoScript properties
-     * @return string Output
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use $cObj->cObjGetSingle('CONTENT', $conf) instead
-     */
-    public function CONTENT($conf)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->render($this->getContentObject('CONTENT'), $conf);
-    }
-
-    /**
-     * Rendering the cObject, RECORDS
-     *
-     * @param array $conf Array of TypoScript properties
-     * @return string Output
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use $cObj->cObjGetSingle('RECORDS', $conf) instead
-     */
-    public function RECORDS($conf)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->render($this->getContentObject('RECORDS'), $conf);
-    }
-
-    /**
-     * Rendering the cObject, HMENU
-     *
-     * @param array $conf Array of TypoScript properties
-     * @return string Output
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use $cObj->cObjGetSingle('HMENU', $conf) instead
-     */
-    public function HMENU($conf)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->render($this->getContentObject('HMENU'), $conf);
-    }
-
-    /**
-     * Rendering the cObject, CTABLE
-     *
-     * @param array $conf Array of TypoScript properties
-     * @return string Output
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use $cObj->cObjGetSingle('CTABLE', $conf) instead
-     */
-    public function CTABLE($conf)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->render($this->getContentObject('CTABLE'), $conf);
-    }
-
-    /**
-     * Rendering the cObject, OTABLE
-     *
-     * @param array $conf Array of TypoScript properties
-     * @return string Output
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use $cObj->cObjGetSingle('OTABLE', $conf) instead
-     */
-    public function OTABLE($conf)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->render($this->getContentObject('OTABLE'), $conf);
-    }
-
-    /**
-     * Rendering the cObject, COLUMNS
-     *
-     * @param array $conf Array of TypoScript properties
-     * @return string Output
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use $cObj->cObjGetSingle('COLUMNS', $conf) instead
-     */
-    public function COLUMNS($conf)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->render($this->getContentObject('COLUMNS'), $conf);
-    }
-
-    /**
-     * Rendering the cObject, HRULER
-     *
-     * @param array $conf Array of TypoScript properties
-     * @return string Output
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use $cObj->cObjGetSingle('HRULER', $conf) instead
-     */
-    public function HRULER($conf)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->render($this->getContentObject('HRULER'), $conf);
-    }
-
-    /**
-     * Rendering the cObject, CASE
-     *
-     * @param array $conf Array of TypoScript properties
-     * @return string Output
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use $cObj->cObjGetSingle('CASE', $conf) instead
-     */
-    public function CASEFUNC($conf)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->render($this->getContentObject('CASE'), $conf);
-    }
-
-    /**
-     * Rendering the cObject, LOAD_REGISTER and RESTORE_REGISTER
-     * NOTICE: This cObject does NOT return any content since it just sets internal data based on the TypoScript properties.
-     *
-     * @param array $conf Array of TypoScript properties
-     * @param string $name If "RESTORE_REGISTER" then the cObject rendered is "RESTORE_REGISTER", otherwise "LOAD_REGISTER"
-     * @return string Empty string (the cObject only sets internal data!)
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use $cObj->cObjGetSingle('LOAD_REGISTER', $conf) and $cObj->cObjGetSingle('RESTORE_REGISTER', $conf) instead
-     */
-    public function LOAD_REGISTER($conf, $name)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        if ($name === 'RESTORE_REGISTER') {
-            return $this->render($this->getContentObject('RESTORE_REGISTER'), $conf);
-        } else {
-            return $this->render($this->getContentObject('LOAD_REGISTER'), $conf);
-        }
-    }
-
-    /**
-     * Rendering the cObject, FORM
-     *
-     * @param array $conf Array of TypoScript properties
-     * @param array|string $formData Alternative formdata overriding whatever comes from TypoScript
-     * @return string Output
-     * @throws ContentRenderingException
-     * @throws \Exception
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use $cObj->cObjGetSingle('FORM', $conf) instead
-     */
-    public function FORM($conf, $formData = '')
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->render($this->getContentObject('FORM'), $conf);
-    }
-
-    /**
-     * Rendering the cObject, SEARCHRESULT
-     *
-     * @param array $conf Array of TypoScript properties
-     * @return string Output
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use $cObj->cObjGetSingle('SEARCHRESULT', $conf) instead
-     */
-    public function SEARCHRESULT($conf)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->render($this->getContentObject('SEARCHRESULT'), $conf);
-    }
-
-    /**
-     * Rendering the cObject, TEMPLATE
-     *
-     * @param array $conf Array of TypoScript properties
-     * @return string Output
-     * @see substituteMarkerArrayCached()
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use $cObj->cObjGetSingle('TEMPLATE', $conf) instead
-     */
-    public function TEMPLATE($conf)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->render($this->getContentObject('TEMPLATE'), $conf);
-    }
-
-    /**
-     * Rendering the cObject, FLUIDTEMPLATE
-     *
-     * @param array $conf Array of TypoScript properties
-     * @return string the HTML output
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use $cObj->cObjGetSingle('FLUIDTEMPLATE', $conf) instead
-     */
-    protected function FLUIDTEMPLATE(array $conf)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->render($this->getContentObject('FLUIDTEMPLATE'), $conf);
-    }
-
-    /**
-     * Rendering the cObject, MULTIMEDIA
-     *
-     * @param array $conf Array of TypoScript properties
-     * @return string Output
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use $cObj->cObjGetSingle('MULTIMEDIA', $conf) instead
-     */
-    public function MULTIMEDIA($conf)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->render($this->getContentObject('MULTIMEDIA'), $conf);
-    }
-
-    /**
-     * Rendering the cObject, MEDIA
-     *
-     * @param array $conf Array of TypoScript properties
-     * @return string Output
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use $cObj->cObjGetSingle('MEDIA', $conf) instead
-     */
-    public function MEDIA($conf)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->render($this->getContentObject('MEDIA'), $conf);
-    }
-
-    /**
-     * Rendering the cObject, SWFOBJECT
-     *
-     * @param array $conf Array of TypoScript properties
-     * @return string Output
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use $cObj->cObjGetSingle('SWFOBJECT', $conf) instead
-     */
-    public function SWFOBJECT($conf)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->render($this->getContentObject('SWFOBJECT'), $conf);
-    }
-
-    /**
-     * Rendering the cObject, QTOBJECT
-     *
-     * @param array $conf Array of TypoScript properties
-     * @return string Output
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use $cObj->cObjGetSingle('QTOBJECT', $conf) instead
-     */
-    public function QTOBJECT($conf)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->render($this->getContentObject('QTOBJECT'), $conf);
-    }
-
-    /**
-     * Rendering the cObject, SVG
-     *
-     * @param array $conf Array of TypoScript properties
-     * @return string Output
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use $cObj->cObjGetSingle('SVG', $conf) instead
-     */
-    public function SVG($conf)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return $this->render($this->getContentObject('SVG'), $conf);
-    }
-
     /************************************
      *
      * Various helper functions for content objects:
@@ -1612,7 +1223,7 @@ class ContentObjectRenderer
     }
 
     /**
-     * Returns the 'border' attribute for an <img> tag only if the doctype is not xhtml_strict, xhtml_11, xhtml_2 or html5
+     * Returns the 'border' attribute for an <img> tag only if the doctype is not xhtml_strict, xhtml_11 or html5
      * or if the config parameter 'disableImgBorderAttr' is not set.
      *
      * @param string $borderAttr The border attribute
@@ -1623,7 +1234,7 @@ class ContentObjectRenderer
         $tsfe = $this->getTypoScriptFrontendController();
         $docType = $tsfe->xhtmlDoctype;
         if (
-            $docType !== 'xhtml_strict' && $docType !== 'xhtml_11' && $docType !== 'xhtml_2'
+            $docType !== 'xhtml_strict' && $docType !== 'xhtml_11'
             && $tsfe->config['config']['doctype'] !== 'html5'
             && !$tsfe->config['config']['disableImgBorderAttr']
         ) {
@@ -1827,7 +1438,7 @@ class ContentObjectRenderer
             // Create TARGET-attribute only if the right doctype is used
             $target = '';
             $xhtmlDocType = $this->getTypoScriptFrontendController()->xhtmlDoctype;
-            if ($xhtmlDocType !== 'xhtml_strict' && $xhtmlDocType !== 'xhtml_11' && $xhtmlDocType !== 'xhtml_2') {
+            if ($xhtmlDocType !== 'xhtml_strict' && $xhtmlDocType !== 'xhtml_11') {
                 $target = isset($conf['target.'])
                     ? (string)$this->stdWrap($conf['target'], $conf['target.'])
                     : (string)$conf['target'];
@@ -1976,23 +1587,6 @@ class ContentObjectRenderer
     }
 
     /**
-     * Removes forbidden characters and spaces from name/id attributes in the form tag and formfields
-     *
-     * @param string $name Input string
-     * @return string the cleaned string
-     * @see FORM()
-     * @deprecated since TYPO3 CMS 7, will be removed in TYPO3 CMS 8, the method is moved to FormContentObject
-     */
-    public function cleanFormName($name)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        // Turn data[x][y] into data:x:y:
-        $name = preg_replace('/\\[|\\]\\[?/', ':', trim($name));
-        // Remove illegal chars like _
-        return preg_replace('#[^:a-zA-Z0-9]#', '', $name);
-    }
-
-    /**
      * An abstraction method to add parameters to an A tag.
      * Uses the ATagParams property.
      *
@@ -2136,7 +1730,7 @@ class ContentObjectRenderer
      * but only the splitting of the template in various parts. So if you
      * want only one cache-entry per template, make sure you always pass the
      * exact same set of marker/subpart keys. Else you will be flooding the
-     * users cache table.
+     * user's cache table.
      *
      * This function takes three kinds of substitutions in one:
      * $markContentArray is a regular marker-array where the 'keys' are
@@ -2176,16 +1770,13 @@ class ContentObjectRenderer
         // Finding keys and check hash:
         $sPkeys = array_keys($subpartContentArray);
         $wPkeys = array_keys($wrappedSubpartContentArray);
-        $aKeys = array_merge(array_keys($markContentArray), $sPkeys, $wPkeys);
-        if (empty($aKeys)) {
+        $keysToReplace = array_merge(array_keys($markContentArray), $sPkeys, $wPkeys);
+        if (empty($keysToReplace)) {
             $timeTracker->pull();
             return $content;
         }
-        asort($aKeys);
-        $storeKey = md5('substituteMarkerArrayCached_storeKey:' . serialize(array(
-            $content,
-            $aKeys
-        )));
+        asort($keysToReplace);
+        $storeKey = md5('substituteMarkerArrayCached_storeKey:' . serialize(array($content, $keysToReplace)));
         if ($this->substMarkerCache[$storeKey]) {
             $storeArr = $this->substMarkerCache[$storeKey];
             $timeTracker->setTSlogMessage('Cached', 0);
@@ -2210,31 +1801,26 @@ class ContentObjectRenderer
                 }
 
                 $storeArr = array();
-                $result = preg_match_all('/###([\w:-]+)###/', $content, $usedMarkers);
-                if ($result !== false && !empty($usedMarkers[1])) {
-                    $tagArray = array_flip($usedMarkers[1]);
-
-                    $aKeys = array_flip($aKeys);
-                    $bKeys = array();
+                // search all markers in the content
+                $result = preg_match_all('/###([^#](?:[^#]*+|#{1,2}[^#])+)###/', $content, $markersInContent);
+                if ($result !== false && !empty($markersInContent[1])) {
+                    $keysToReplaceFlipped = array_flip($keysToReplace);
+                    $regexKeys = array();
+                    $wrappedKeys = array();
                     // Traverse keys and quote them for reg ex.
-                    foreach ($tagArray as $tV => $tK) {
-                        $tV = '###' . $tV . '###';
-                        if (isset($aKeys[$tV])) {
-                            $bKeys[$tK] = preg_quote($tV, '/');
+                    foreach ($markersInContent[1] as $key) {
+                        if (isset($keysToReplaceFlipped['###' . $key . '###'])) {
+                            $regexKeys[] = preg_quote($key, '/');
+                            $wrappedKeys[] = '###' . $key . '###';
                         }
                     }
-                    $regex = '/' . implode('|', $bKeys) . '/';
-                    // Doing regex's
-                    if (preg_match_all($regex, $content, $keyList) !== false) {
-                        $storeArr['c'] = preg_split($regex, $content);
-                        $storeArr['k'] = $keyList[0];
-                    }
-                    if (!empty($storeArr)) {
-                        // Setting cache:
-                        $this->substMarkerCache[$storeKey] = $storeArr;
-                        // Storing the cached data:
-                        $this->getTypoScriptFrontendController()->sys_page->storeHash($storeKey, $storeArr, 'substMarkArrayCached');
-                    }
+                    $regex = '/###(?:' . implode('|', $regexKeys) . ')###/';
+                    $storeArr['c'] = preg_split($regex, $content); // contains all content parts around markers
+                    $storeArr['k'] = $wrappedKeys; // contains all markers incl. ###
+                    // Setting cache:
+                    $this->substMarkerCache[$storeKey] = $storeArr;
+                    // Storing the cached data:
+                    $this->getTypoScriptFrontendController()->sys_page->storeHash($storeKey, $storeArr, 'substMarkArrayCached');
                 }
                 $timeTracker->setTSlogMessage('Parsing', 0);
             }
@@ -2247,14 +1833,21 @@ class ContentObjectRenderer
             $content = '';
             // Traversing the keyList array and merging the static and dynamic content
             foreach ($storeArr['k'] as $n => $keyN) {
+                // add content before marker
                 $content .= $storeArr['c'][$n];
                 if (!is_array($valueArr[$keyN])) {
+                    // fetch marker replacement from $markContentArray or $subpartContentArray
                     $content .= $valueArr[$keyN];
                 } else {
-                    $content .= $valueArr[$keyN][(int)$wSCA_reg[$keyN] % 2];
+                    if (!isset($wSCA_reg[$keyN])) {
+                        $wSCA_reg[$keyN] = 0;
+                    }
+                    // fetch marker replacement from $wrappedSubpartContentArray
+                    $content .= $valueArr[$keyN][$wSCA_reg[$keyN] % 2];
                     $wSCA_reg[$keyN]++;
                 }
             }
+            // add remaining content
             $content .= $storeArr['c'][count($storeArr['k'])];
         }
         $timeTracker->pull();
@@ -2393,6 +1986,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) {
@@ -3134,10 +2728,8 @@ class ContentObjectRenderer
         // Check for zero length string to mimic default case of strtime/gmstrftime
         $content = (string)$content === '' ? $GLOBALS['EXEC_TIME'] : (int)$content;
         $content = $conf['strftime.']['GMT'] ? gmstrftime($conf['strftime'], $content) : strftime($conf['strftime'], $content);
-        $tsfe = $this->getTypoScriptFrontendController();
-        $tmp_charset = $conf['strftime.']['charset'] ? $conf['strftime.']['charset'] : $tsfe->localeCharset;
-        if ($tmp_charset) {
-            $content = $tsfe->csConv($content, $tmp_charset);
+        if (!empty($conf['strftime.']['charset'])) {
+            $content = $this->getTypoScriptFrontendController()->csConv($content, $conf['strftime.']['charset']);
         }
         return $content;
     }
@@ -3432,34 +3024,6 @@ class ContentObjectRenderer
     }
 
     /**
-     * textStyle
-     * Wraps content in font tags
-     * See wrap
-     *
-     * @param string $content Input value undergoing processing in this function.
-     * @param array $conf stdWrap properties for textStyle.
-     * @return string The processed input value
-     */
-    public function stdWrap_textStyle($content = '', $conf = array())
-    {
-        return $this->textStyle($content, $conf['textStyle.']);
-    }
-
-    /**
-     * tableStyle
-     * Wraps content with table tags
-     * See wrap
-     *
-     * @param string $content Input value undergoing processing in this function.
-     * @param array $conf stdWrap properties for tableStyle.
-     * @return string The processed input value
-     */
-    public function stdWrap_tableStyle($content = '', $conf = array())
-    {
-        return $this->tableStyle($content, $conf['tableStyle.']);
-    }
-
-    /**
      * filelink
      * Used to make lists of links to files
      * See wrap
@@ -3744,41 +3308,6 @@ class ContentObjectRenderer
     }
 
     /**
-     * offsetWrap
-     * Creates a so called offset table around the content
-     * Still here for historical reasons even not used too much nowadays
-     *
-     * @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())
-    {
-        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;
-    }
-
-    /**
      * postUserFunc
      * Will execute a user function after the content has been modified by any other stdWrap function
      *
@@ -4414,7 +3943,7 @@ class ContentObjectRenderer
         $countSplittedContent = count($splittedContent);
         for ($offset = 0; $offset < $countSplittedContent; $offset++) {
             if ($offset % 2 === 0) {
-                $tempContent = $tsfe->csConvObj->utf8_encode($splittedContent[$offset], $tsfe->renderCharset);
+                $tempContent = $tsfe->csConvObj->conv($splittedContent[$offset], $tsfe->renderCharset, 'utf-8');
                 $thisStrLen = $tsfe->csConvObj->strlen('utf-8', html_entity_decode($tempContent, ENT_COMPAT, 'UTF-8'));
                 if ($strLen + $thisStrLen > $absChars) {
                     $croppedOffset = $offset;
@@ -4437,7 +3966,7 @@ class ContentObjectRenderer
                             }
                         }
                     }
-                    $splittedContent[$offset] = $tsfe->csConvObj->utf8_decode($tempContent, $tsfe->renderCharset);
+                    $splittedContent[$offset] = $tsfe->csConvObj->conv($tempContent, 'utf-8', $tsfe->renderCharset);
                     break;
                 } else {
                     $strLen += $thisStrLen;
@@ -4526,134 +4055,6 @@ class ContentObjectRenderer
     }
 
     /**
-     * Implements the stdWrap property "textStyle"; This generates a <font>-tag (and a <div>-tag for align-attributes) which is wrapped around the input value.
-     *
-     * @param string $theValue The input value
-     * @param array $conf TypoScript properties for the "TypoScript function" '->textStyle'
-     * @return string The processed output value
-     * @access private
-     * @see stdWrap()
-     * @deprecated since TYPO3 CMS 7, will be removed in TYPO3 CMS 8
-     */
-    public function textStyle($theValue, $conf)
-    {
-        $this->getTypoScriptFrontendController()->logDeprecatedTyposcript('textStyle', 'Deprecated since 7.1 and will be removed with CMS 8. Use CSS instead');
-        $conf['face.'][1] = 'Times New Roman';
-        $conf['face.'][2] = 'Verdana,Arial,Helvetica,Sans serif';
-        $conf['face.'][3] = 'Arial,Helvetica,Sans serif';
-        $conf['size.'][1] = 1;
-        $conf['size.'][2] = 2;
-        $conf['size.'][3] = 3;
-        $conf['size.'][4] = 4;
-        $conf['size.'][5] = 5;
-        $conf['size.'][10] = '+1';
-        $conf['size.'][11] = '-1';
-        $conf['color.'][240] = 'black';
-        $conf['color.'][241] = 'white';
-        $conf['color.'][242] = '#333333';
-        $conf['color.'][243] = 'gray';
-        $conf['color.'][244] = 'silver';
-        $conf['color.'][245] = 'red';
-        $conf['color.'][246] = 'navy';
-        $conf['color.'][247] = 'yellow';
-        $conf['color.'][248] = 'green';
-        $conf['color.'][249] = 'olive';
-        $conf['color.'][250] = 'maroon';
-        $face = $this->data[$conf['face.']['field']];
-        $size = $this->data[$conf['size.']['field']];
-        $color = $this->data[$conf['color.']['field']];
-        $align = $this->data[$conf['align.']['field']];
-        $properties = $this->data[$conf['properties.']['field']];
-        if (!$properties) {
-            $properties = isset($conf['properties.']['default.']) ? $this->stdWrap($conf['properties.']['default'], $conf['properties.']['default.']) : $conf['properties.']['default'];
-        }
-        // Properties
-        if ($properties & 8) {
-            $theValue = $this->HTMLcaseshift($theValue, 'upper');
-        }
-        if ($properties & 1) {
-            $theValue = '<strong>' . $theValue . '</strong>';
-        }
-        if ($properties & 2) {
-            $theValue = '<i>' . $theValue . '</i>';
-        }
-        if ($properties & 4) {
-            $theValue = '<u>' . $theValue . '</u>';
-        }
-        // Fonttag
-        $theFace = $conf['face.'][$face];
-        if (!$theFace) {
-            $theFace = isset($conf['face.']['default.']) ? $this->stdWrap($conf['face.']['default'], $conf['face.']['default.']) : $conf['face.']['default'];
-        }
-        $theSize = $conf['size.'][$size];
-        if (!$theSize) {
-            $theSize = isset($conf['size.']['default.']) ? $this->stdWrap($conf['size.']['default'], $conf['size.']['default.']) : $conf['size.']['default'];
-        }
-        $theColor = $conf['color.'][$color];
-        if (!$theColor) {
-            $theColor = isset($conf['color.']['default.']) ? $this->stdWrap($conf['color.']['default'], $conf['color.']['default.']) : $conf['color.']['default.'];
-        }
-        if ($conf['altWrap']) {
-            $theValue = $this->wrap($theValue, $conf['altWrap']);
-        } elseif ($theFace || $theSize || $theColor) {
-            $fontWrap = '<font' . ($theFace ? ' face="' . $theFace . '"' : '') . ($theSize ? ' size="' . $theSize . '"' : '') . ($theColor ? ' color="' . $theColor . '"' : '') . '>|</font>';
-            $theValue = $this->wrap($theValue, $fontWrap);
-        }
-        // Align
-        if ($align) {
-            $theValue = $this->wrap($theValue, '<div style="text-align:' . $align . ';">|</div>');
-        }
-        // Return
-        return $theValue;
-    }
-
-    /**
-     * Implements the stdWrap property "tableStyle"; Basically this generates a <table>-tag with properties which is wrapped around the input value.
-     *
-     * @param string $theValue The input value
-     * @param array $conf TypoScript properties for the "TypoScript function" '->textStyle'
-     * @return string The processed output value
-     * @access private
-     * @see stdWrap()
-     * @deprecated since TYPO3 CMS 7, will be removed in TYPO3 CMS 8
-     */
-    public function tableStyle($theValue, $conf)
-    {
-        $this->getTypoScriptFrontendController()->logDeprecatedTyposcript('tableStyle', 'Deprecated since 7.1 and will be removed with CMS 8. Use CSS instead');
-        $conf['color.'][240] = 'black';
-        $conf['color.'][241] = 'white';
-        $conf['color.'][242] = '#333333';
-        $conf['color.'][243] = 'gray';
-        $conf['color.'][244] = 'silver';
-        $align = isset($conf['align.']) ? $this->stdWrap($conf['align'], $conf['align.']) : $conf['align'];
-        $border = isset($conf['border.']) ? (int)$this->stdWrap($conf['border'], $conf['border.']) : (int)$conf['border'];
-        $cellspacing = isset($conf['cellspacing.']) ? (int)$this->stdWrap($conf['cellspacing'], $conf['cellspacing.']) : (int)$conf['cellspacing'];
-        $cellpadding = isset($conf['cellpadding.']) ? (int)$this->stdWrap($conf['cellpadding'], $conf['cellpadding.']) : (int)$conf['cellpadding'];
-        $color = $this->data[$conf['color.']['field']];
-        $theColor = $conf['color.'][$color] ? $conf['color.'][$color] : $conf['color.']['default'];
-        // Assembling the table tag
-        $tableTagArray = array(
-            '<table'
-        );
-        $tableTagArray[] = 'border="' . $border . '"';
-        $tableTagArray[] = 'cellspacing="' . $cellspacing . '"';
-        $tableTagArray[] = 'cellpadding="' . $cellpadding . '"';
-        if ($align) {
-            $tableTagArray[] = 'align="' . $align . '"';
-        }
-        if ($theColor) {
-            $tableTagArray[] = 'bgcolor="' . $theColor . '"';
-        }
-        if ($conf['params']) {
-            $tableTagArray[] = $conf['params'];
-        }
-        $tableWrap = implode(' ', $tableTagArray) . '> | </table>';
-        $theValue = $this->wrap($theValue, $tableWrap);
-        // return
-        return $theValue;
-    }
-
-    /**
      * Implements the TypoScript function "addParams"
      *
      * @param string $content The string with the HTML tag.
@@ -4740,16 +4141,6 @@ class ContentObjectRenderer
             $typoLinkConf = $additionalTypoLinkConfiguration;
         }
 
-        if (isset($conf['jumpurl']) || isset($conf['jumpurl.'])) {
-            GeneralUtility::deprecationLog('The TypoScript jumpurl configuration is deprecated for file links since TYPO3 CMS 7 and will be removed in TYPO3 CMS 8. Pass this configuration in the typolinkConfiguration property instead.');
-            if (isset($conf['jumpurl'])) {
-                $typoLinkConf['jumpurl'] = $conf['jumpurl'];
-            }
-            if (isset($conf['jumpurl.'])) {
-                $typoLinkConf['jumpurl.'] = $conf['jumpurl.'];
-            }
-        }
-
         $theLinkWrap = $this->typoLink('|', $typoLinkConf);
         $theSize = filesize($theFile);
         $fI = GeneralUtility::split_fileref($theFile);
@@ -4775,7 +4166,7 @@ class ContentObjectRenderer
                 if ($conf['iconCObject']) {
                     $icon = $this->cObjGetSingle($conf['iconCObject'], $conf['iconCObject.'], 'iconCObject');
                 } else {
-                    $notFoundThumb = TYPO3_mainDir . 'sysext/core/Resources/Public/Images/NotFound.gif';
+                    $notFoundThumb = ExtensionManagementUtility::siteRelPath('core') . 'Resources/Public/Images/NotFound.gif';
                     $sizeParts = array(64, 64);
                     if ($GLOBALS['TYPO3_CONF_VARS']['GFX']['thumbnails']) {
                         // using the File Abstraction Layer to generate a preview image
@@ -4808,7 +4199,7 @@ class ContentObjectRenderer
                         $urlPrefix = $tsfe->absRefPrefix;
                     }
                     $icon = '<img src="' . htmlspecialchars($urlPrefix . $icon) . '"' .
-                            'width="' . (int)$sizeParts[0] . '" height="' . (int)$sizeParts[1] . '" ' .
+                            ' width="' . (int)$sizeParts[0] . '" height="' . (int)$sizeParts[1] . '" ' .
                             $this->getBorderAttr(' border="0"') . '' . $this->getAltParam($conf) . ' />';
                 }
             } else {
@@ -5799,7 +5190,7 @@ class ContentObjectRenderer
                     ? $this->stdWrap($fileArray['crop'], $fileArray['crop.'])
                     : (isset($fileArray['crop']) ? $fileArray['crop'] : null);
                 // Possibility to cancel/force profile extraction
-                // see $GLOBALS['TYPO3_CONF_VARS']['GFX']['im_stripProfileCommand']
+                // see $GLOBALS['TYPO3_CONF_VARS']['GFX']['processor_stripColorProfileCommand']
                 if (isset($fileArray['stripProfile'])) {
                     $processingConfiguration['stripProfile'] = $fileArray['stripProfile'];
                 }
@@ -6369,7 +5760,7 @@ class ContentObjectRenderer
             $containsSlash = strpos($rootFileDat, '/') !== false;
             $rFD_fI = pathinfo($rootFileDat);
             $fileExtension = strtolower($rFD_fI['extension']);
-            if ($fileExtension === 'php' || $fileExtension === 'html' || $fileExtension === 'htm' || trim($rootFileDat) && !$containsSlash && (@is_file((PATH_site . $rootFileDat)))) {
+            if (!$containsSlash && trim($rootFileDat) && (@is_file(PATH_site . $rootFileDat) || $fileExtension === 'php' || $fileExtension === 'html' || $fileExtension === 'htm')) {
                 $isLocalFile = 1;
             } elseif ($containsSlash) {
                 // Adding this so realurl directories are linked right (non-existing).
@@ -6407,6 +5798,7 @@ class ContentObjectRenderer
      */
     public function typoLink($linktxt, $conf)
     {
+        $linktxt = (string)$linktxt;
         $tsfe = $this->getTypoScriptFrontendController();
 
         $LD = array();
@@ -6793,7 +6185,7 @@ class ContentObjectRenderer
         if ($JSwindowParams) {
             // Create TARGET-attribute only if the right doctype is used
             $xhtmlDocType = $tsfe->xhtmlDoctype;
-            if ($xhtmlDocType !== 'xhtml_strict' && $xhtmlDocType !== 'xhtml_11' && $xhtmlDocType !== 'xhtml_2') {
+            if ($xhtmlDocType !== 'xhtml_strict' && $xhtmlDocType !== 'xhtml_11') {
                 $target = ' target="FEopenLink"';
             } else {
                 $target = '';
@@ -7125,6 +6517,7 @@ class ContentObjectRenderer
      */
     public function getMailTo($mailAddress, $linktxt)
     {
+        $mailAddress = (string)$mailAddress;
         if ((string)$linktxt === '') {
             $linktxt = $mailAddress;
         }
@@ -7298,9 +6691,8 @@ class ContentObjectRenderer
         // Split parts
         $parts = explode('->', $funcName);
         if (count($parts) === 2) {
-            // Class
-            // Check whether class is available and try to reload includeLibs if possible:
-            if ($this->isClassAvailable($parts[0], $conf)) {
+            // Check whether PHP class is available
+            if (class_exists($parts[0])) {
                 $classObj = GeneralUtility::makeInstance($parts[0]);
                 if (is_object($classObj) && method_exists($classObj, $parts[1])) {
                     $classObj->cObj = $this;
@@ -7331,9 +6723,11 @@ class ContentObjectRenderer
      *
      * @param string $params Text which the parameters
      * @return array array with the parameters as key/value pairs
+     * @deprecated since TYPO3 CMS 8, will be removed in TYPO3 CMS 9.
      */
     public function processParams($params)
     {
+        GeneralUtility::logDeprecatedFunction();
         $paramArr = array();
         $lines = GeneralUtility::trimExplode(LF, $params, true);
         foreach ($lines as $val) {
@@ -7678,40 +7072,6 @@ class ContentObjectRenderer
         return $librariesIncluded;
     }
 
-    /**
-     * Checks whether a PHP class is available. If the check fails, the method tries to
-     * determine the correct includeLibs to make the class available automatically.
-     *
-     * TypoScript example that can cause this:
-     * | plugin.tx_myext_pi1 = USER
-     * | plugin.tx_myext_pi1 {
-     * |   includeLibs = EXT:myext/pi1/class.tx_myext_pi1.php
-     * |   userFunc = tx_myext_pi1->main
-     * | }
-     * | 10 = USER
-     * | 10.userFunc = tx_myext_pi1->renderHeader
-     *
-     * @param string $className The name of the PHP class to be checked
-     * @param array $config TypoScript configuration (naturally of a USER or COA cObject)
-     * @return bool Whether the class is available
-     * @link http://forge.typo3.org/issues/19510
-     * @todo This method was introduced in TYPO3 4.3 and can be removed if the autoload was integrated
-     */
-    protected function isClassAvailable($className, array $config = null)
-    {
-        if (class_exists($className)) {
-            return true;
-        }
-        if ($config) {
-            $pluginConfiguration = &$this->getTypoScriptFrontendController()->tmpl->setup['plugin.'][$className . '.'];
-            if (isset($pluginConfiguration['includeLibs']) && $pluginConfiguration['includeLibs']) {
-                $config['includeLibs'] = $pluginConfiguration['includeLibs'];
-                return $this->includeLibs($config);
-            }
-        }
-        return false;
-    }
-
     /***********************************************
      *
      * Database functions, making of queries
@@ -8592,11 +7952,7 @@ class ContentObjectRenderer
             }
             $query .= ' AND (' . $languageQuery . ')';
         }
-        $andWhere = isset($conf['andWhere.']) ? trim($this->stdWrap($conf['andWhere'], $conf['andWhere.'])) : trim($conf['andWhere']);
-        if ($andWhere) {
-            GeneralUtility::deprecationLog('Usage of TypoScript property "andWhere" is deprecated since 7.1 in favor of "where". It has been used to query the table "' . $table . '".');
-            $query .= ' AND ' . $andWhere;
-        }
+
         // Enablefields
         if ($table === 'pages') {
             $query .= ' ' . $tsfe->sys_page->where_hid_del . $tsfe->sys_page->where_groupAccess;