[!!!][TASK] Remove deprecated methods from BackendUtility 97/52497/6
authorWouter Wolters <typo3@wouterwolters.nl>
Tue, 18 Apr 2017 22:08:59 +0000 (00:08 +0200)
committerChristian Kuhn <lolli@schwarzbu.ch>
Wed, 19 Apr 2017 20:10:54 +0000 (22:10 +0200)
Update styleguide along the way, it used one of the
removed methods.

Resolves: #80706
Releases: master
Change-Id: Iff8e36597ca2cb9ecd1e52580724eb9c41322e71
Reviewed-on: https://review.typo3.org/52497
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
composer.lock
typo3/sysext/backend/Classes/Utility/BackendUtility.php
typo3/sysext/backend/Tests/Unit/Utility/BackendUtilityTest.php
typo3/sysext/core/Classes/Html/RteHtmlParser.php
typo3/sysext/core/Documentation/Changelog/master/Breaking-80700-DeprecatedFunctionalityRemoved.rst
typo3/sysext/lang/Resources/Private/Language/locallang_core.xlf

index a411d2a..da8364b 100644 (file)
         },
         {
             "name": "typo3/cms-styleguide",
-            "version": "8.0.10",
+            "version": "8.0.11",
             "source": {
                 "type": "git",
                 "url": "https://github.com/TYPO3/styleguide.git",
-                "reference": "82a4cbcd8c97d37ae0b72f9450eb842af0eb7d67"
+                "reference": "4e5ae0014a7a3903386ba7071eed383077d2b1a8"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/TYPO3/styleguide/zipball/82a4cbcd8c97d37ae0b72f9450eb842af0eb7d67",
-                "reference": "82a4cbcd8c97d37ae0b72f9450eb842af0eb7d67",
+                "url": "https://api.github.com/repos/TYPO3/styleguide/zipball/4e5ae0014a7a3903386ba7071eed383077d2b1a8",
+                "reference": "4e5ae0014a7a3903386ba7071eed383077d2b1a8",
                 "shasum": ""
             },
             "replace": {
                 "typo3",
                 "typo3 backend"
             ],
-            "time": "2017-04-19T18:47:01+00:00"
+            "time": "2017-04-19T19:55:33+00:00"
         },
         {
             "name": "typo3/testing-framework",
index b376255..392f4d1 100644 (file)
@@ -181,120 +181,6 @@ class BackendUtility
     }
 
     /**
-     * Returns the first record found from $table with $where as WHERE clause
-     * This function does NOT check if a record has the deleted flag set.
-     * $table does NOT need to be configured in $GLOBALS['TCA']
-     * The query used is simply this:
-     * $query = 'SELECT ' . $fields . ' FROM ' . $table . ' WHERE ' . $where;
-     *
-     * @param string $table Table name (not necessarily in TCA)
-     * @param string $where WHERE clause
-     * @param string $fields $fields is a list of fields to select, default is '*'
-     * @return array|bool First row found, if any, FALSE otherwise
-     * @deprecated since TYPO3 CMS 8, will be removed in TYPO3 CMS 9.
-     */
-    public static function getRecordRaw($table, $where = '', $fields = '*')
-    {
-        GeneralUtility::logDeprecatedFunction();
-        $queryBuilder = static::getQueryBuilderForTable($table);
-        $queryBuilder->getRestrictions()->removeAll();
-
-        $row = $queryBuilder
-            ->select(...GeneralUtility::trimExplode(',', $fields, true))
-            ->from($table)
-            ->where(QueryHelper::stripLogicalOperatorPrefix($where))
-            ->execute()
-            ->fetch();
-
-        return $row ?: false;
-    }
-
-    /**
-     * Returns records from table, $theTable, where a field ($theField) equals the value, $theValue
-     * The records are returned in an array
-     * If no records were selected, the function returns nothing
-     *
-     * @param string $theTable Table name present in $GLOBALS['TCA']
-     * @param string $theField Field to select on
-     * @param string $theValue Value that $theField must match
-     * @param string $whereClause Optional additional WHERE clauses put in the end of the query. DO NOT PUT IN GROUP BY, ORDER BY or LIMIT!
-     * @param string $groupBy Optional GROUP BY field(s), if none, supply blank string.
-     * @param string $orderBy Optional ORDER BY field(s), if none, supply blank string.
-     * @param string $limit Optional LIMIT value ([begin,]max), if none, supply blank string.
-     * @param bool $useDeleteClause Use the deleteClause to check if a record is deleted (default TRUE)
-     * @param null|QueryBuilder $queryBuilder The queryBuilder must be provided, if the parameter $whereClause is given and the concept of prepared statement was used. Example within self::firstDomainRecord()
-     * @return mixed Multidimensional array with selected records (if any is selected)
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9
-     */
-    public static function getRecordsByField(
-        $theTable,
-        $theField,
-        $theValue,
-        $whereClause = '',
-        $groupBy = '',
-        $orderBy = '',
-        $limit = '',
-        $useDeleteClause = true,
-        $queryBuilder = null
-    ) {
-        GeneralUtility::logDeprecatedFunction();
-        if (is_array($GLOBALS['TCA'][$theTable])) {
-            if (null === $queryBuilder) {
-                $queryBuilder = static::getQueryBuilderForTable($theTable);
-            }
-
-            // Show all records except versioning placeholders
-            $queryBuilder->getRestrictions()
-                ->removeAll()
-                ->add(GeneralUtility::makeInstance(BackendWorkspaceRestriction::class));
-
-            // Remove deleted records from the query result
-            if ($useDeleteClause) {
-                $queryBuilder->getRestrictions()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
-            }
-
-            // build fields to select
-            $queryBuilder
-                ->select('*')
-                ->from($theTable)
-                ->where($queryBuilder->expr()->eq($theField, $queryBuilder->createNamedParameter($theValue)));
-
-            // additional where
-            if ($whereClause) {
-                $queryBuilder->andWhere(QueryHelper::stripLogicalOperatorPrefix($whereClause));
-            }
-
-            // group by
-            if ($groupBy !== '') {
-                $queryBuilder->groupBy(QueryHelper::parseGroupBy($groupBy));
-            }
-
-            // order by
-            if ($orderBy !== '') {
-                foreach (QueryHelper::parseOrderBy($orderBy) as $orderPair) {
-                    list($fieldName, $order) = $orderPair;
-                    $queryBuilder->addOrderBy($fieldName, $order);
-                }
-            }
-
-            // limit
-            if ($limit !== '') {
-                if (strpos($limit, ',')) {
-                    $limitOffsetAndMax = GeneralUtility::intExplode(',', $limit);
-                    $queryBuilder->setFirstResult((int)$limitOffsetAndMax[0]);
-                    $queryBuilder->setMaxResults((int)$limitOffsetAndMax[1]);
-                } else {
-                    $queryBuilder->setMaxResults((int)$limit);
-                }
-            }
-
-            $rows = $queryBuilder->execute()->fetchAll();
-            return $rows;
-        }
-        return null;
-    }
-
-    /**
      * Makes an backwards explode on the $str and returns an array with ($table, $uid).
      * Example: tt_content_45 => array('tt_content', 45)
      *
@@ -308,37 +194,6 @@ class BackendUtility
     }
 
     /**
-     * Returns a list of pure ints based on $in_list being a list of records with table-names prepended.
-     * Ex: $in_list = "pages_4,tt_content_12,45" would result in a return value of "4,45" if $tablename is "pages" and $default_tablename is 'pages' as well.
-     *
-     * @param string $in_list Input list
-     * @param string $tablename Table name from which ids is returned
-     * @param string $default_tablename $default_tablename denotes what table the number '45' is from (if nothing is prepended on the value)
-     * @return string List of ids
-     * @deprecated since TYPO3 CMS 8, will be removed in TYPO3 CMS 9.
-     */
-    public static function getSQLselectableList($in_list, $tablename, $default_tablename)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        $list = [];
-        if ((string)trim($in_list) != '') {
-            $tempItemArray = explode(',', trim($in_list));
-            foreach ($tempItemArray as $key => $val) {
-                $val = strrev($val);
-                $parts = explode('_', $val, 2);
-                if ((string)trim($parts[0]) != '') {
-                    $theID = (int)strrev($parts[0]);
-                    $theTable = trim($parts[1]) ? strrev(trim($parts[1])) : $default_tablename;
-                    if ($theTable == $tablename) {
-                        $list[] = $theID;
-                    }
-                }
-            }
-        }
-        return implode(',', $list);
-    }
-
-    /**
      * Backend implementation of enableFields()
      * Notice that "fe_groups" is not selected for - only disabled, starttime and endtime.
      * Notice that deleted-fields are NOT filtered - you must ALSO call deleteClause in addition.
@@ -899,251 +754,6 @@ class BackendUtility
         return $typeNum;
     }
 
-    /**
-     * Parses "defaultExtras" of $GLOBALS['TCA'] columns config section to an array.
-     * Elements are split by ":" and within those parts, parameters are split by "|".
-     *
-     * See unit tests for details.
-     *
-     * @param string $defaultExtrasString "defaultExtras" string from columns config
-     * @return array
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9
-     */
-    public static function getSpecConfParts($defaultExtrasString)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        $specConfParts = GeneralUtility::trimExplode(':', $defaultExtrasString, true);
-        $reg = [];
-        if (!empty($specConfParts)) {
-            foreach ($specConfParts as $k2 => $v2) {
-                unset($specConfParts[$k2]);
-                if (preg_match('/(.*)\\[(.*)\\]/', $v2, $reg)) {
-                    $specConfParts[trim($reg[1])] = [
-                        'parameters' => GeneralUtility::trimExplode('|', $reg[2], true)
-                    ];
-                } else {
-                    $specConfParts[trim($v2)] = 1;
-                }
-            }
-        } else {
-            $specConfParts = [];
-        }
-        return $specConfParts;
-    }
-
-    /**
-     * Takes an array of "[key] = [value]" strings and returns an array with the keys set as keys pointing to the value.
-     * Better see it in action! Find example in Inside TYPO3
-     *
-     * @param array $pArr Array of "[key] = [value]" strings to convert.
-     * @return array
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9
-     */
-    public static function getSpecConfParametersFromArray($pArr)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        $out = [];
-        if (is_array($pArr)) {
-            foreach ($pArr as $k => $v) {
-                $parts = explode('=', $v, 2);
-                if (count($parts) === 2) {
-                    $out[trim($parts[0])] = trim($parts[1]);
-                } else {
-                    $out[$k] = $v;
-                }
-            }
-        }
-        return $out;
-    }
-
-    /**
-     * Finds the Data Structure for a FlexForm field
-     *
-     * NOTE ON data structures for deleted records: This function may fail to deliver the data structure
-     * for a record for a few reasons:
-     *  a) The data structure could be deleted (either with deleted-flagged or hard-deleted),
-     *  b) the data structure is fetched using the ds_pointerField_searchParent in which case any
-     *     deleted record on the route to the final location of the DS will make it fail.
-     * In theory, we can solve the problem in the case where records that are deleted-flagged keeps us
-     * from finding the DS - this is done at the markers ###NOTE_A### where we make sure to also select deleted records.
-     * However, we generally want the DS lookup to fail for deleted records since for the working website we expect a
-     * deleted-flagged record to be as inaccessible as one that is completely deleted from the DB. Any way we look
-     * at it, this may lead to integrity problems of the reference index and even lost files if attached.
-     * However, that is not really important considering that a single change to a data structure can instantly
-     * invalidate large amounts of the reference index which we do accept as a cost for the flexform features.
-     * Other than requiring a reference index update, deletion of/changes in data structure or the failure to look
-     * them up when completely deleting records may lead to lost files in the uploads/ folders since those are now
-     * without a proper reference.
-     *
-     * @param array $conf Field config array
-     * @param array $row Record data
-     * @param string $table The table name
-     * @param string $fieldName Optional fieldname passed to hook object
-     * @param bool $WSOL If set, workspace overlay is applied to records. This is correct behaviour for all presentation and export, but NOT if you want a TRUE reflection of how things are in the live workspace.
-     * @param int $newRecordPidValue SPECIAL CASES: Use this, if the DataStructure may come from a parent record and the INPUT row doesn't have a uid yet (hence, the pid cannot be looked up). Then it is necessary to supply a PID value to search recursively in for the DS (used from DataHandler)
-     * @return mixed If array, the data structure was found and returned as an array. Otherwise (string) it is an error message.
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9. This is now integrated as FlexFormTools->getDataStructureIdentifier()
-     */
-    public static function getFlexFormDS($conf, $row, $table, $fieldName = '', $WSOL = true, $newRecordPidValue = 0)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        // Get pointer field etc from TCA-config:
-        $ds_pointerField = $conf['ds_pointerField'];
-        $ds_array = $conf['ds'];
-        $ds_tableField = $conf['ds_tableField'];
-        $ds_searchParentField = $conf['ds_pointerField_searchParent'];
-        // If there is a data source array, that takes precedence
-        if (is_array($ds_array)) {
-            // If a pointer field is set, take the value from that field in the $row array and use as key.
-            if ($ds_pointerField) {
-                // Up to two pointer fields can be specified in a comma separated list.
-                $pointerFields = GeneralUtility::trimExplode(',', $ds_pointerField);
-                // If we have two pointer fields, the array keys should contain both field values separated by comma.
-                // The asterisk "*" catches all values. For backwards compatibility, it's also possible to specify only
-                // the value of the first defined ds_pointerField.
-                if (count($pointerFields) === 2) {
-                    if ($ds_array[$row[$pointerFields[0]] . ',' . $row[$pointerFields[1]]]) {
-                        // Check if we have a DS for the combination of both pointer fields values
-                        $srcPointer = $row[$pointerFields[0]] . ',' . $row[$pointerFields[1]];
-                    } elseif ($ds_array[$row[$pointerFields[1]] . ',*']) {
-                        // Check if we have a DS for the value of the first pointer field suffixed with ",*"
-                        $srcPointer = $row[$pointerFields[1]] . ',*';
-                    } elseif ($ds_array['*,' . $row[$pointerFields[1]]]) {
-                        // Check if we have a DS for the value of the second pointer field prefixed with "*,"
-                        $srcPointer = '*,' . $row[$pointerFields[1]];
-                    } elseif ($ds_array[$row[$pointerFields[0]]]) {
-                        // Check if we have a DS for just the value of the first pointer field (mainly for backwards compatibility)
-                        $srcPointer = $row[$pointerFields[0]];
-                    } else {
-                        $srcPointer = null;
-                    }
-                } else {
-                    $srcPointer = $row[$pointerFields[0]];
-                }
-                $srcPointer = $srcPointer !== null && isset($ds_array[$srcPointer]) ? $srcPointer : 'default';
-            } else {
-                $srcPointer = 'default';
-            }
-            // Get Data Source: Detect if it's a file reference and in that case read the file and parse as XML. Otherwise the value is expected to be XML.
-            if (substr($ds_array[$srcPointer], 0, 5) === 'FILE:') {
-                $file = GeneralUtility::getFileAbsFileName(substr($ds_array[$srcPointer], 5));
-                if ($file && @is_file($file)) {
-                    $dataStructArray = GeneralUtility::xml2array(file_get_contents($file));
-                } else {
-                    $dataStructArray = 'The file "' . substr($ds_array[$srcPointer], 5) . '" in ds-array key "' . $srcPointer . '" was not found ("' . $file . '")';
-                }
-            } else {
-                $dataStructArray = GeneralUtility::xml2array($ds_array[$srcPointer]);
-            }
-        } elseif ($ds_pointerField) {
-            // If pointer field AND possibly a table/field is set:
-            // Value of field pointed to:
-            $srcPointer = $row[$ds_pointerField];
-            // Searching recursively back if 'ds_pointerField_searchParent' is defined (typ. a page rootline, or maybe a tree-table):
-            if ($ds_searchParentField && !$srcPointer) {
-                $rr = self::getRecord($table, $row['uid'], 'uid,' . $ds_searchParentField);
-                // Get the "pid" field - we cannot know that it is in the input record! ###NOTE_A###
-                if ($WSOL) {
-                    self::workspaceOL($table, $rr);
-                    self::fixVersioningPid($table, $rr, true);
-                }
-
-                $queryBuilder = static::getQueryBuilderForTable($table);
-                $queryBuilder->getRestrictions()
-                    ->removeAll()
-                    ->add(GeneralUtility::makeInstance(DeletedRestriction::class));
-
-                $uidAcc = [];
-                // Used to avoid looping, if any should happen.
-                $subFieldPointer = $conf['ds_pointerField_searchParent_subField'];
-                while (!$srcPointer) {
-                    // select fields
-                    $queryBuilder
-                        ->select('uid', $ds_pointerField, $ds_searchParentField)
-                        ->from($table)
-                        ->where(
-                            $queryBuilder->expr()->eq(
-                                'uid',
-                                $queryBuilder->createNamedParameter(
-                                    ($newRecordPidValue ?: $rr[$ds_searchParentField]),
-                                    \PDO::PARAM_INT
-                                )
-                            )
-                        );
-                    if ($subFieldPointer) {
-                        $queryBuilder->addSelect($subFieldPointer);
-                    }
-
-                    $rr = $queryBuilder->execute()->fetch();
-
-                    $newRecordPidValue = 0;
-                    // Break if no result from SQL db or if looping...
-                    if (!is_array($rr) || isset($uidAcc[$rr['uid']])) {
-                        break;
-                    }
-                    $uidAcc[$rr['uid']] = 1;
-                    if ($WSOL) {
-                        self::workspaceOL($table, $rr);
-                        self::fixVersioningPid($table, $rr, true);
-                    }
-                    $srcPointer = $subFieldPointer && $rr[$subFieldPointer] ? $rr[$subFieldPointer] : $rr[$ds_pointerField];
-                }
-            }
-            // If there is a srcPointer value:
-            if ($srcPointer) {
-                if (MathUtility::canBeInterpretedAsInteger($srcPointer)) {
-                    // If integer, then its a record we will look up:
-                    list($tName, $fName) = explode(':', $ds_tableField, 2);
-                    if ($tName && $fName && is_array($GLOBALS['TCA'][$tName])) {
-                        $dataStructRec = self::getRecord($tName, $srcPointer);
-                        if ($WSOL) {
-                            self::workspaceOL($tName, $dataStructRec);
-                        }
-                        if (strpos($dataStructRec[$fName], '<') === false) {
-                            if (is_file(PATH_site . $dataStructRec[$fName])) {
-                                // The value is a pointer to a file
-                                $dataStructArray = GeneralUtility::xml2array(file_get_contents(PATH_site . $dataStructRec[$fName]));
-                            } else {
-                                $dataStructArray = sprintf('File \'%s\' was not found', $dataStructRec[$fName]);
-                            }
-                        } else {
-                            // No file pointer, handle as being XML (default behaviour)
-                            $dataStructArray = GeneralUtility::xml2array($dataStructRec[$fName]);
-                        }
-                    } else {
-                        $dataStructArray = 'No tablename (' . $tName . ') or fieldname (' . $fName . ') was found an valid!';
-                    }
-                } else {
-                    // Otherwise expect it to be a file:
-                    $file = GeneralUtility::getFileAbsFileName($srcPointer);
-                    if ($file && @is_file($file)) {
-                        $dataStructArray = GeneralUtility::xml2array(file_get_contents($file));
-                    } else {
-                        // Error message.
-                        $dataStructArray = 'The file "' . $srcPointer . '" was not found ("' . $file . '")';
-                    }
-                }
-            } else {
-                // Error message.
-                $dataStructArray = 'No source value in fieldname "' . $ds_pointerField . '"';
-            }
-        } else {
-            $dataStructArray = 'No proper configuration!';
-        }
-        // Hook for post-processing the Flexform DS. Introduces the possibility to configure Flexforms via TSConfig
-        // This hook isn't called anymore from within the core, the whole method is deprecated.
-        // There are alternative hooks, see FlexFormTools->getDataStructureIdentifier() and ->parseDataStructureByIdentifier()
-        if (is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_befunc.php']['getFlexFormDSClass'])) {
-            foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_befunc.php']['getFlexFormDSClass'] as $classRef) {
-                $hookObj = GeneralUtility::getUserObj($classRef);
-                if (method_exists($hookObj, 'getFlexFormDS_postProcessDS')) {
-                    $hookObj->getFlexFormDS_postProcessDS($dataStructArray, $conf, $row, $table, $fieldName);
-                }
-            }
-        }
-        return $dataStructArray;
-    }
-
     /*******************************************
      *
      * Caching related
@@ -1557,22 +1167,6 @@ class BackendUtility
     }
 
     /**
-     * Returns alt="" and title="" attributes with the value of $content.
-     *
-     * @param string $content Value for 'alt' and 'title' attributes (will be htmlspecialchars()'ed before output)
-     * @return string
-     * @deprecated since TYPO3 CMS 8, will be removed in TYPO3 CMS 9.
-     */
-    public static function titleAltAttrib($content)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        $out = '';
-        $out .= ' alt="' . htmlspecialchars($content) . '"';
-        $out .= ' title="' . htmlspecialchars($content) . '"';
-        return $out;
-    }
-
-    /**
      * Resolves file references for a given record.
      *
      * @param string $tableName Name of the table of the record
@@ -2100,38 +1694,6 @@ class BackendUtility
     }
 
     /**
-     * Replace field values in given row with values from the original language
-     * if l10n_mode TCA settings require to do so.
-     *
-     * @param string $table Table name
-     * @param array $row Row to fill with original language values
-     * @return array Row with values from the original language
-     * @deprecated since TYPO3 CMS 8, will be removed in TYPO3 CMS 9
-     */
-    protected static function replaceL10nModeFields($table, array $row)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        $originalUidField = isset($GLOBALS['TCA'][$table]['ctrl']['transOrigPointerField'])
-            ? $GLOBALS['TCA'][$table]['ctrl']['transOrigPointerField']
-            : '';
-        if (empty($row[$originalUidField])) {
-            return $row;
-        }
-
-        $originalTable = self::getOriginalTranslationTable($table);
-        $originalRow = self::getRecord($originalTable, $row[$originalUidField]);
-        foreach ($row as $field => $_) {
-            $l10n_mode = isset($GLOBALS['TCA'][$originalTable]['columns'][$field]['l10n_mode'])
-                ? $GLOBALS['TCA'][$originalTable]['columns'][$field]['l10n_mode']
-                : '';
-            if ($l10n_mode === 'exclude') {
-                $row[$field] = $originalRow[$field];
-            }
-        }
-        return $row;
-    }
-
-    /**
      * Returns the "title"-value in record, $row, from table, $table
      * The field(s) from which the value is taken is determined by the "ctrl"-entries 'label', 'label_alt' and 'label_alt_force'
      *
@@ -2747,70 +2309,6 @@ class BackendUtility
         return implode(',', array_unique($fields));
     }
 
-    /**
-     * Makes a form for configuration of some values based on configuration found in the array $configArray,
-     * with default values from $defaults and a data-prefix $dataPrefix
-     * <form>-tags must be supplied separately
-     * Needs more documentation and examples, in particular syntax for configuration array. See Inside TYPO3.
-     * That's were you can expect to find example, if anywhere.
-     *
-     * @param array $configArray Field configuration code.
-     * @param array $defaults Defaults
-     * @param string $dataPrefix Prefix for formfields
-     * @return string HTML for a form.
-     * @deprecated since TYPO3 CMS 8, will be removed in TYPO3 CMS 9.
-     */
-    public static function makeConfigForm($configArray, $defaults, $dataPrefix)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        $params = $defaults;
-        $lines = [];
-        if (is_array($configArray)) {
-            foreach ($configArray as $fname => $config) {
-                if (is_array($config)) {
-                    $lines[$fname] = '<strong>' . htmlspecialchars($config[1]) . '</strong><br />';
-                    $lines[$fname] .= $config[2] . '<br />';
-                    switch ($config[0]) {
-                        case 'string':
-
-                        case 'short':
-                            $formEl = '<input type="text" name="' . $dataPrefix . '[' . $fname . ']" value="' . $params[$fname] . '"' . static::getDocumentTemplate()->formWidth(($config[0] === 'short' ? 24 : 48)) . ' />';
-                            break;
-                        case 'check':
-                            $formEl = '<input type="hidden" name="' . $dataPrefix . '[' . $fname . ']" value="0" /><input type="checkbox" name="' . $dataPrefix . '[' . $fname . ']" value="1"' . ($params[$fname] ? ' checked="checked"' : '') . ' />';
-                            break;
-                        case 'comment':
-                            $formEl = '';
-                            break;
-                        case 'select':
-                            $opt = [];
-                            foreach ($config[3] as $k => $v) {
-                                $opt[] = '<option value="' . htmlspecialchars($k) . '"' . ($params[$fname] == $k ? ' selected="selected"' : '') . '>' . htmlspecialchars($v) . '</option>';
-                            }
-                            $formEl = '<select name="' . $dataPrefix . '[' . $fname . ']">'
-                                . implode('', $opt) . '</select>';
-                            break;
-                        default:
-                            $formEl = '<strong>Should not happen. Bug in config.</strong>';
-                    }
-                    $lines[$fname] .= $formEl;
-                    $lines[$fname] .= '<br /><br />';
-                } else {
-                    $lines[$fname] = '<hr />';
-                    if ($config) {
-                        $lines[$fname] .= '<strong>' . strtoupper(htmlspecialchars($config)) . '</strong><br />';
-                    }
-                    if ($config) {
-                        $lines[$fname] .= '<br />';
-                    }
-                }
-            }
-        }
-        $out = implode('', $lines);
-        $out .= '<input class="btn btn-default" type="submit" name="submit" value="Update configuration" />';
-        return $out;
-    }
-
     /*******************************************
      *
      * Backend Modules API functions
@@ -3661,27 +3159,6 @@ class BackendUtility
         return (string)$uri;
     }
 
-    /**
-     * Return a link to the list view
-     *
-     * @param array $urlParameters URL parameters that should be added as key value pairs
-     * @param string $linkTitle title for the link tag
-     * @param string $linkText optional link text after the icon
-     * @return string A complete <a href=""> tag
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, use getModuleUrl and IconFactory methods directly
-     */
-    public static function getListViewLink($urlParameters = [], $linkTitle = '', $linkText = '')
-    {
-        GeneralUtility::logDeprecatedFunction();
-        /** @var IconFactory $iconFactory */
-        $iconFactory = GeneralUtility::makeInstance(IconFactory::class);
-        return '<a href="'
-        . htmlspecialchars(self::getModuleUrl('web_list', $urlParameters)) . '" title="'
-        . htmlspecialchars($linkTitle) . '">'
-        . $iconFactory->getIcon('actions-system-list-open', Icon::SIZE_SMALL)->render()
-        . htmlspecialchars($linkText) . '</a>';
-    }
-
     /*******************************************
      *
      * Core
@@ -4060,36 +3537,6 @@ class BackendUtility
     }
 
     /**
-     * Returns processed RTE setup from an array with TSconfig.
-     * Merges table and type specific RTE configuration into 'default.'
-     *
-     * @param array $RTEprop The properties of Page TSconfig in the key "RTE.
-     * @param string $table Table name
-     * @param string $field Field name
-     * @param string $type Type value of the current record (like from CType of tt_content)
-     * @return array Array with the configuration for the RTE
-     * @internal
-     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9.
-     */
-    public static function RTEsetup($RTEprop, $table, $field, $type = '')
-    {
-        GeneralUtility::logDeprecatedFunction();
-        $thisConfig = is_array($RTEprop['default.']) ? $RTEprop['default.'] : [];
-        $thisFieldConf = $RTEprop['config.'][$table . '.'][$field . '.'];
-        if (is_array($thisFieldConf)) {
-            unset($thisFieldConf['types.']);
-            ArrayUtility::mergeRecursiveWithOverrule($thisConfig, $thisFieldConf);
-        }
-        if ($type && is_array($RTEprop['config.'][$table . '.'][$field . '.']['types.'][$type . '.'])) {
-            ArrayUtility::mergeRecursiveWithOverrule(
-                $thisConfig,
-                $RTEprop['config.'][$table . '.'][$field . '.']['types.'][$type . '.']
-            );
-        }
-        return $thisConfig;
-    }
-
-    /**
      * Returns soft-reference parser for the softRef processing type
      * Usage: $softRefObj = &BackendUtility::softRefParserObj('[parser key]');
      *
@@ -4854,30 +4301,6 @@ class BackendUtility
     }
 
     /**
-     * Returns an array with key=>values based on input text $params
-     * $params is exploded by line-breaks and each line is supposed to be on the syntax [key] = [some value]
-     * These pairs will be parsed into an array an returned.
-     *
-     * @param string $params String of parameters on multiple lines to parse into key-value pairs (see function description)
-     * @return array
-     * @deprecated since TYPO3 CMS 8, will be removed in TYPO3 CMS 9.
-     */
-    public static function processParams($params)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        $paramArr = [];
-        $lines = explode(LF, $params);
-        foreach ($lines as $val) {
-            $val = trim($val);
-            if ($val) {
-                $pair = explode('=', $val, 2);
-                $paramArr[trim($pair[0])] = trim($pair[1]);
-            }
-        }
-        return $paramArr;
-    }
-
-    /**
      * Returns the name of the backend script relative to the TYPO3 main directory.
      *
      * @param string $interface Name of the backend interface  (backend, frontend) to look up the script name for. If no interface is given, the interface for the current backend user is used.
index cadd2d0..8b0d790 100644 (file)
@@ -907,33 +907,6 @@ class BackendUtilityTest extends \TYPO3\TestingFramework\Core\Unit\UnitTestCase
     /**
      * @test
      */
-    public function getSpecConfPartsSplitsDefaultExtras()
-    {
-        $defaultExtras = 'nowrap:wizards[foo|bar]:anotherDefaultExtras:some[other|setting|with|parameters]';
-        $expected = [
-            'nowrap' => 1,
-            'wizards' => [
-                'parameters' => [
-                    0 => 'foo',
-                    1 => 'bar',
-                ],
-            ],
-            'anotherDefaultExtras' => 1,
-            'some' => [
-                'parameters' => [
-                    0 => 'other',
-                    1 => 'setting',
-                    2 => 'with',
-                    3 => 'parameters',
-                ],
-            ],
-        ];
-        $this->assertEquals($expected, BackendUtility::getSpecConfParts($defaultExtras));
-    }
-
-    /**
-     * @test
-     */
     public function dateTimeAgeReturnsCorrectValues()
     {
         /** @var ObjectProphecy|LanguageService $languageServiceProphecy */
index 38dea74..38b932c 100644 (file)
@@ -154,12 +154,12 @@ class RteHtmlParser extends HtmlParser
      * This is the main function called from DataHandler and transfer data classes
      *
      * @param string $value Input value
-     * @param array $specConf deprecated old "defaultExtras" parsed as array
+     * @param null $_ unused
      * @param string $direction Direction of the transformation. Two keywords are allowed; "db" or "rte". If "db" it means the transformation will clean up content coming from the Rich Text Editor and goes into the database. The other direction, "rte", is of course when content is coming from database and must be transformed to fit the RTE.
      * @param array $thisConfig Parsed TypoScript content configuring the RTE, probably coming from Page TSconfig.
      * @return string Output value
      */
-    public function RTE_transform($value, $specConf = [], $direction = 'rte', $thisConfig = [])
+    public function RTE_transform($value, $_ = null, $direction = 'rte', $thisConfig = [])
     {
         $this->tsConfig = $thisConfig;
         $this->procOptions = (array)$thisConfig['proc.'];
@@ -192,16 +192,8 @@ class RteHtmlParser extends HtmlParser
         // Setting modes / transformations to be called
         if ((string)$this->procOptions['overruleMode'] !== '') {
             $modes = GeneralUtility::trimExplode(',', $this->procOptions['overruleMode']);
-        } elseif (!empty($this->procOptions['mode'])) {
-            $modes = [$this->procOptions['mode']];
         } else {
-            // Get parameters for rte_transformation:
-            // @deprecated since TYPO3 v8, will be removed in TYPO3 v9 - the else{} part can be removed in v9
-            GeneralUtility::deprecationLog(
-                'Argument 2 of RteHtmlParser::RTE_transform() is deprecated. Transformations should be given in $thisConfig[\'proc.\'][\'overruleMode\']'
-            );
-            $specialFieldConfiguration = BackendUtility::getSpecConfParametersFromArray($specConf['rte_transform']['parameters']);
-            $modes = GeneralUtility::trimExplode('-', $specialFieldConfiguration['mode']);
+            $modes = [$this->procOptions['mode']];
         }
         $modes = $this->resolveAppliedTransformationModes($direction, $modes);
 
index 72ac05f..9453ab5 100644 (file)
@@ -20,6 +20,18 @@ The following PHP classes that have been previously deprecated for v8 have been
 The following PHP class methods that have been previously deprecated for v8 have been removed:
 * TYPO3\CMS\Backend\Routing\UriBuilder->buildUriFromAjaxId()
 * TYPO3\CMS\Backend\Utility\BackendUtility::getAjaxUrl()
+* TYPO3\CMS\Backend\Utility\BackendUtility::getFlexFormDS()
+* TYPO3\CMS\Backend\Utility\BackendUtility::getListViewLink()
+* TYPO3\CMS\Backend\Utility\BackendUtility::getRecordRaw()
+* TYPO3\CMS\Backend\Utility\BackendUtility::getRecordsByField()
+* TYPO3\CMS\Backend\Utility\BackendUtility::getSpecConfParametersFromArray()
+* TYPO3\CMS\Backend\Utility\BackendUtility::getSpecConfParts()
+* TYPO3\CMS\Backend\Utility\BackendUtility::getSQLselectableList()
+* TYPO3\CMS\Backend\Utility\BackendUtility::titleAltAttrib()
+* TYPO3\CMS\Backend\Utility\BackendUtility::makeConfigForm()
+* TYPO3\CMS\Backend\Utility\BackendUtility::processParams()
+* TYPO3\CMS\Backend\Utility\BackendUtility::replaceL10nModeFields()
+* TYPO3\CMS\Backend\Utility\BackendUtility::RTEsetup()
 * TYPO3\CMS\Core\Charset\CharsetConverter->convCapitalize()
 * TYPO3\CMS\Core\Charset\CharsetConverter->conv_case()
 * TYPO3\CMS\Core\Charset\CharsetConverter->euc_char2byte_pos()
@@ -73,6 +85,7 @@ The following methods changed signature according to previous deprecations in v8
 * TYPO3\CMS\Core\Charset\CharsetConverter->euc_char_mapping() - Third and fourth argument dropped
 * TYPO3\CMS\Core\Charset\CharsetConverter->sb_char_mapping() - Third and fourth argument dropped
 * TYPO3\CMS\Core\Charset\CharsetConverter->utf8_char_mapping() - Second and third argument dropped
+* TYPO3\CMS\Core\Html\HtmlParser->RTE_transform() - Second argument unused
 * TYPO3\CMS\Core\Localization\LanguageStore->setConfiguration() - Third argument dropped
 * TYPO3\CMS\Core\Localization\LocalizationFactory->getParsedData() - Third and fourth argument unused
 * TYPO3\CMS\Core\Localization\Parser\AbstractXmlParser->getParsedData() - Third argument dropped
@@ -102,6 +115,9 @@ The following configuration options are not evaluated anymore:
 The following entry points have been removed:
 * typo3/cli_dispatch.phpsh
 
+The following hooks have been removed:
+* $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_befunc.php']['getFlexFormDSClass']
+
 
 Impact
 ======
index 3c36e01..333ecb8 100644 (file)
@@ -1280,9 +1280,6 @@ Check also the following points:\n
                        <trans-unit id="extension.not.installed">
                                <source>Extension "%s" is not installed.</source>
                        </trans-unit>
-                       <trans-unit id="link.to.dblist.correctly">
-                               <source>Please, do not link to this page. Use \TYPO3\CMS\Backend\Utility\BackendUtility::getListViewLink() for link generation.</source>
-                       </trans-unit>
                        <trans-unit id="link.to.filefile.correctly">
                                <source>Please, do not link to this page.</source>
                        </trans-unit>