Commit 081ce36b authored by Christian Kuhn's avatar Christian Kuhn
Browse files

[FEATURE] Install tool: Extension scanner

The patch adds a new feature - the "extension scanner" - to the
install tool. It is meant as a helper script for extension
and project developers to quickly spot places in extension code
that may need adaptions if upgrading to younger core versions.

The scanner could later work with different languages, for now
only scanning PHP files is supported. This is based on the great
library nikic/php-parser which creates an AST from php source files
and allows simple traversing.
A series of matchers hooks into the traverser and scans for
configured core deprecation or removals. Some additional matchers
could be added if a core example evolves (for instance usage of
dropped core constants).

From now on, whenever the core deprecates or breaks existing core
PHP API, an entry in one of the matcher configurations in
ext:install/Configuration/ExtensionScanner/Php should be done.
Since these API changes are documented via ReST files already, the
configuration links to according ReST files. A bamboo integrity
test script verifies those can be found.
Furthermore, all Breaking-* and Deprecation-* ReST files since
core version 9.x / master now need an additional Tag "FullyScanned",
"PartiallyScanned" or "NotScanned". This is also checked by an
integration test script in bamboo.

The matcher configuration files are pretty straight forward and
should be obvious if looking at
ext:install/Configuration/ExtensionScanner/Php.

This patch contains:
* Add nikic/php-parser as dependency
* New install tool gui to scan extensions in typo3conf/ext
* Scanner infrastructure for PHP
* Preparation and configuration for all current "master" / v9
  ReST files
* Mark ReST files which are tagged with "FullyScanned" as "not affected"
  in install tool "Upgrade analysis" if no match was found
* Integration script testing referenced ReST files are found
* Integration script verifying Breaking- and Deprecation- ReST file
  contain "FullyScanned", "PartiallyScanned" or "NotSCanned" keyword.

More information on this feature can be found at
https://docs.typo3.org/typo3cms/CoreApiReference/ExtensionScanner/Index.html

Change-Id: I760e88f9d929fdd710655fa0d25cb26291a7ed2b
Resolves: #82014
Releases: master
Reviewed-on: https://review.typo3.org/53450


Tested-by: default avatarTYPO3com <no-reply@typo3.com>
Reviewed-by: Jan Helke's avatarJan Helke <typo3@helke.de>
Tested-by: Jan Helke's avatarJan Helke <typo3@helke.de>
Reviewed-by: Wouter Wolters's avatarWouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: Frank Nägler's avatarFrank Naegler <frank.naegler@typo3.org>
Tested-by: Frank Nägler's avatarFrank Naegler <frank.naegler@typo3.org>
Reviewed-by: Anja Leichsenring's avatarAnja Leichsenring <aleichsenring@ab-softlab.de>
Tested-by: Anja Leichsenring's avatarAnja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Christian Kuhn's avatarChristian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn's avatarChristian Kuhn <lolli@schwarzbu.ch>
parent 68228c73
......@@ -38,6 +38,8 @@
$panel-active-text: #fff;
$panel-active-border: #444;
$panel-active-heading-bg: #666;
$panel-progress-bg: #eee;
$panel-progress-bar: #444;
//
// Panel
......@@ -122,6 +124,22 @@ $panel-active-heading-bg: #666;
}
}
//
// Progress
//
.panel-progress {
background-color: $panel-progress-bg;
height: 3px;
position: relative;
width: 100%;
.panel-progress-bar {
display: block;
height: 100%;
background-color: $panel-progress-bar;
}
}
//
// Additional Variations
//
......
......@@ -150,6 +150,12 @@ h1:first-child {
.panel-checkbox + .panel-title {
padding-left: 18px;
}
.message {
display: block;
padding-left: 16px;
margin-top: 5px;
}
}
a[data-toggle="collapse"] {
......@@ -292,64 +298,86 @@ a[data-toggle="collapse"] {
text-decoration: none;
}
.panel-group-rst {
.panel-group-rst,
.panel-group-flat {
.panel-body {
padding-right: 0;
}
}
.panel-rst,
.panel-version {
border: 0;
border-left: 2px solid $gray-light;
border-radius: 0;
margin: 0;
.panel-rst,
.panel-flat,
.panel-version {
border: 0;
border-left: 2px solid $gray-light;
border-radius: 0;
margin: 0;
&.panel-default .panel-heading {
background: $gray-lighter;
}
&.panel-default .panel-heading {
background: $gray-lighter;
}
&.panel-breaking {
@include panel-variant($brand-danger, #fff, $brand-danger, $brand-danger);
@include panel-risk-levels($brand-danger, lighten($brand-danger, 40));
}
&.panel-breaking,
&.panel-danger {
@include panel-variant($brand-danger, #fff, $brand-danger, $brand-danger);
@include panel-risk-levels($brand-danger, lighten($brand-danger, 40));
&.panel-deprecation {
@include panel-variant($brand-warning, #fff, $brand-warning, $brand-warning);
@include panel-risk-levels($brand-warning, lighten($brand-warning, 30));
.panel-progress .panel-progress-bar {
background-color: $brand-danger;
}
}
&.panel-deprecation,
&.panel-warning {
@include panel-variant($brand-warning, #fff, $brand-warning, $brand-warning);
@include panel-risk-levels($brand-warning, lighten($brand-warning, 30));
&.panel-feature {
@include panel-variant($brand-success, #fff, $brand-success, $brand-success);
@include panel-risk-levels($brand-success, lighten($brand-success, 40));
.panel-progress .panel-progress-bar {
background-color: $brand-warning;
}
}
&.panel-important {
@include panel-variant($brand-info, #fff, $brand-info, $brand-info);
@include panel-risk-levels($brand-info, lighten($brand-info, 30));
&.panel-feature,
&.panel-success {
@include panel-variant($brand-success, #fff, $brand-success, $brand-success);
@include panel-risk-levels($brand-success, lighten($brand-success, 40));
.panel-progress .panel-progress-bar {
background-color: $brand-success;
}
}
.panel-heading {
position: relative;
&.panel-important,
&.panel-info {
@include panel-variant($brand-info, #fff, $brand-info, $brand-info);
@include panel-risk-levels($brand-info, lighten($brand-info, 30));
a.link-action {
cursor: pointer;
}
.panel-progress .panel-progress-bar {
background-color: $brand-info;
}
}
strong {
line-height: 1.5em;
}
.panel-heading {
position: relative;
a.link-action {
cursor: pointer;
}
pre {
margin: 0;
border-radius: 0;
border: 0;
border-top: 1px solid $gray-light;
white-space: pre-wrap;
word-break: normal;
word-wrap: normal;
strong {
line-height: 1.5em;
}
}
pre {
margin: 0;
border-radius: 0;
border: 0;
border-top: 1px solid $gray-light;
white-space: pre-wrap;
word-break: normal;
word-wrap: normal;
}
}
.upgrade_analysis_item_to_filter pre a {
......
#!/usr/bin/env php
<?php
/*
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/
/**
* Core integrity test script:
*
* Find all ReST files configured in EXT:install/Configuration/ExtensionScanner/Php
* and verify they exist in EXT:core/Documentation/Changelog
*/
call_user_func(function () {
if (php_sapi_name() !== 'cli') {
die('Script must be called from command line.' . chr(10));
}
require __DIR__ . '/../../vendor/autoload.php';
$finder = new Symfony\Component\Finder\Finder();
$matcherConfigurationFiles = $finder->files()
->in(__DIR__ . '/../../typo3/sysext/install/Configuration/ExtensionScanner/Php');
$invalidRestFiles = [];
foreach ($matcherConfigurationFiles as $matcherConfigurationFile) {
/** @var SplFileInfo $matcherConfigurationFile */
$matcherConfigurations = require $matcherConfigurationFile->getPathName();
foreach ($matcherConfigurations as $matcherConfiguration) {
foreach ($matcherConfiguration['restFiles'] as $restFile) {
$restFinder = new \Symfony\Component\Finder\Finder();
$restFileLocation = $restFinder->files()
->in(__DIR__ . '/../../typo3/sysext/core/Documentation/Changelog')
->name($restFile);
if ($restFileLocation->count() !== 1) {
$invalidRestFiles[] = [
'configurationFile' => $matcherConfigurationFile->getPathName(),
'invalidFile' => $restFile,
];
}
}
}
}
if (empty($invalidRestFiles)) {
exit(0);
}
foreach ($invalidRestFiles as $invalid) {
echo 'Referenced ReST file ' . $invalid['invalidFile']
. ' in extension scanner configuration file ' . $invalid['configurationFile']
. ' not found' . chr(10) . chr(10);
}
exit(1);
});
......@@ -15,12 +15,11 @@ COUNT=0
for i in `find typo3/sysext/core/Documentation/Changelog -name "*.rst" -type f`; do
if [[ "${i}" != "${i%.${EXT}}" && ! $i =~ 'Index.rst' && ! $i =~ 'Howto.rst' ]];then
fileContent=$(cat $i);
outputFileToStream=0;
# This regex needs to allow whitespace and/or newlines before the .. include:: ../../Includes.txt
# The regex itself is correct, bash doesn't like it
# This regex needs to allow whitespace and/or newlines before the .. include:: ../../Includes.txt
# The regex itself is correct, bash doesn't like it
if ! [[ "$fileContent" =~ ^[[:space:]]*'.. include:: ../../Includes.txt' ]]; then
INCLUDE="no include"
include_message="insert '.. include:: ../../Includes.txt' in first line of the file"
......@@ -29,8 +28,8 @@ for i in `find typo3/sysext/core/Documentation/Changelog -name "*.rst" -type f`;
INCLUDE=""
fi
# This regex seems to have problems with the backtick characters.
# Maybe this is because it somehow interprets them from the variable $fileContent
# This regex seems to have problems with the backtick characters.
# Maybe this is because it somehow interprets them from the variable $fileContent
if ! [[ "$fileContent" =~ 'See :issue:'\`([0-9]{4,6})\` ]]; then
REFERENCE="no reference"
reference_message="insert 'See :issue:\`<issuenumber>\`' after headline"
......@@ -39,15 +38,25 @@ for i in `find typo3/sysext/core/Documentation/Changelog -name "*.rst" -type f`;
REFERENCE=""
fi
# This regex needs to check that the ..index:: line a) holds valid content and b) is
# the last line in the checked file
if ! [[ "$fileContent" =~ '.. index:: '((TypoScript|TSConfig|TCA|FlexForm|LocalConfiguration|Fluid|FAL|Database|JavaScript|PHP-API|Frontend|Backend|CLI|RTE|ext:([a-z|A-Z|_|0-9]*))([,|[:space:]]{2})?)+$ ]]; then
# This regex needs to check that the ..index:: line a) holds valid content and b) is
# the last line in the checked file
INDEX=""
if ! [[ "$fileContent" =~ '.. index:: '((FullyScanned|PartiallyScanned|NotScanned|TypoScript|TSConfig|TCA|FlexForm|LocalConfiguration|Fluid|FAL|Database|JavaScript|PHP-API|Frontend|Backend|CLI|RTE|ext:([a-z|A-Z|_|0-9]*))([,|[:space:]]{2})?)+$ ]]; then
INDEX="no or wrong index"
index_message="insert '.. index:: <at least one valid keyword>' at last line of the file. See Build/Scripts/validateRstFiles.sh for allowed keywords"
outputFileToStream=1;
else
INDEX=""
fi
# All Deprecation- / Breaking- files since v9 must have one of the tags FullyScanned|PartiallyScanned|NotScanned
if ! [[ "$i" =~ (Changelog\/8\.[0-99]+\/|Changelog\/master\/Feature-|Changelog\/master\/Important-|Changelog\/[0-99]+\.[0-99]+\/Feature-|Changelog\/[0-99]+\.[0-99]+\/Important-) ]]; then
SCANMATCHES=0
if ! [[ "$fileContent" =~ ('.. index:: '.*(FullyScanned|PartiallyScanned|NotScanned)+.*) ]]; then
INDEX="missing FullyScanned / PartiallyScanned / NotScanned tag"
index_message="insert '.. index:: <at least one valid keyword and either FullyScanned, PartiallyScanned or NotScanned>' at last line of the file. See Build/Scripts/validateRstFiles.sh for allowed keywords"
outputFileToStream=1;
fi
fi
# Output filename in case any error was found
if [ $outputFileToStream == 1 ] ; then
FILE=${i/#typo3\/sysext\/core\/Documentation\/Changelog\//}
......
......@@ -332,6 +332,7 @@ abstract public class AbstractCoreSpec {
.tasks(
this.getTaskGitCloneRepository(),
this.getTaskGitCherryPick(),
this.getTaskComposerInstall(),
new ScriptTask()
.description("Run duplicate exception code check script")
.interpreter(ScriptTaskProperties.Interpreter.BINSH_OR_CMDEXE)
......@@ -376,7 +377,19 @@ abstract public class AbstractCoreSpec {
.inlineBody(
this.getScriptTaskBashInlineBody() +
"./Build/Scripts/maxFilePathLength.sh"
),
new ScriptTask()
.description("Run extension scanner ReST file reference tester")
.interpreter(ScriptTaskProperties.Interpreter.BINSH_OR_CMDEXE)
.inlineBody(
this.getScriptTaskBashInlineBody() +
"./Build/Scripts/extensionScannerRstFileReferences.php"
)
)
.requirements(
new Requirement("system.phpVersion")
.matchValue("7\\.0|7\\.1")
.matchType(Requirement.MatchType.MATCHES)
);
}
......
......@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"content-hash": "a9792165f18b82770f8f89cc20836590",
"content-hash": "1aaae55ba684f7dabde068ee55807a5d",
"packages": [
{
"name": "cogpowered/finediff",
......@@ -801,6 +801,57 @@
],
"time": "2016-06-19T18:08:43+00:00"
},
{
"name": "nikic/php-parser",
"version": "v3.0.6",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
"reference": "0808939f81c1347a3c8a82a5925385a08074b0f1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/0808939f81c1347a3c8a82a5925385a08074b0f1",
"reference": "0808939f81c1347a3c8a82a5925385a08074b0f1",
"shasum": ""
},
"require": {
"ext-tokenizer": "*",
"php": ">=5.5"
},
"require-dev": {
"phpunit/phpunit": "~4.0|~5.0"
},
"bin": [
"bin/php-parse"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.0-dev"
}
},
"autoload": {
"psr-4": {
"PhpParser\\": "lib/PhpParser"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Nikita Popov"
}
],
"description": "A PHP parser written in PHP",
"keywords": [
"parser",
"php"
],
"time": "2017-06-28T20:53:48+00:00"
},
{
"name": "psr/http-message",
"version": "1.0.1",
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -9,13 +9,18 @@ See :issue:`77987`
Description
===========
The usage of :php:`$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['cms']['db_layout']['addTables']` to render records in the page module has been marked as deprecated.
The usage of :php:`$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['cms']['db_layout']['addTables']` to render
records in the page module has been marked as deprecated.
Accessing property :php:`TYPO3\CMS\Backend\Controller\PageLayoutController->externalTables` has
been deprecated.
Affected Installations
======================
All installations using :php:`$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['cms']['db_layout']['addTables']`.
Instances using :php:`$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['cms']['db_layout']['addTables']`
or accessing property :php:`TYPO3\CMS\Backend\Controller\PageLayoutController->externalTables`.
Migration
......
.. include:: ../../Includes.txt
==========================================================================================
Deprecation: #57385 - Deprecate parameter $caseSensitive of Extbase Query::like comparison
Deprecation: #57385 - Deprecate parameter $caseSensitive of Extbase Query->like comparison
==========================================================================================
See :issue:`57385`
......@@ -9,7 +9,7 @@ See :issue:`57385`
Description
===========
The argument :php:`$caseSensitive` of the method :php:`Query::like` has been marked as deprecated.
The argument :php:`$caseSensitive` of the method :php:`Query->like` has been marked as deprecated.
Impact
......@@ -21,7 +21,7 @@ Using the argument will trigger a deprecation log entry.
Affected Installations
======================
Any TYPO3 installation using custom calls to :php:`Query::like` using the mentioned argument.
Any TYPO3 installation using custom calls to :php:`Query->like` using the mentioned argument.
Migration
......
......@@ -90,7 +90,7 @@ are in dearly need to introduce a new tag, you must also add it to the list (and
for everyone.
The tag list should be located at the end of a ReST file prefixed with the index keyword,
example:: ``.. index:: Backend, JavaScript``.
example:: ``.. index:: Backend, JavaScript, NotScanned``.
List of all possible tags:
......@@ -124,3 +124,13 @@ List of all possible tags:
- RTE - Changes to RTE functionality.
- ext:xyz - Changes on extension xyz. Please refer to this tag only when changing system extensions.
Furthermore, exactly one of the following tags *must* be added for all "Deprecation" and "Breaking" ReST files since core v9 and above:
- NotScanned - If this ReST file is not covered by the extension scanner at all.
- PartiallyScanned - If some parts of the deprecated / removed functionality can be found by the extension scanner.
- FullyScanned - If usages of all deprecated / removed functionality this ReST file is about can be found by the
extension scanner. This tag is used by the extension scanner to mark a ReST file as "You are not affected by this in your codebase"
if it does not find a match in extensions.
......@@ -9,8 +9,9 @@ See :issue:`74533`
Description
===========
:php:`GeneralUtility::callUserFunction()` does now always throw an exception if the passed user function does not
exist or is not callable. The parameter `$errorMode` has been removed, exceptions are now always thrown.
:php:`GeneralUtility::callUserFunction()` does now always throw an exception if the passed
user function does not exist or is not callable. The parameter `$errorMode` has been removed,
exceptions are now always thrown. The method should not be called with more than three arguments.
Impact
......@@ -31,4 +32,4 @@ Migration
Remove or fix invalid `userFunc` calls registered in TypoScript and/or `ext_localconf.php`. Catch exceptions properly
with try/catch.
.. index:: PHP-API
.. index:: PHP-API, PartiallyScanned
......@@ -32,13 +32,64 @@ The following PHP classes that have been previously deprecated for v8 have been
* TYPO3\CMS\Frontend\Page\FramesetRenderer
* TYPO3\CMS\Lowlevel\CleanerCommand
The following PHP interfaces have been dropped:
* TYPO3\CMS\Backend\Form\DatabaseFileIconsHookInterface
The following PHP interface signatures have been changed:
* TYPO3\CMS\Extbase\Persistence\Generic\QueryInterface->like() - Third argument dropped
The following PHP static class methods that have been previously deprecated for v8 have been removed:
* 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\DataHandling\DataHandler::rmComma()
* TYPO3\CMS\Core\DataHandling\DataHandler::destPathFromUploadFolder()
* TYPO3\CMS\Core\DataHandling\DataHandler::noRecordsFromUnallowedTables()
* TYPO3\CMS\Core\Utility\ArrayUtility::inArray()
* TYPO3\CMS\Core\Utility\ClientUtility::getDeviceType()
* TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addExtJSModule()
* TYPO3\CMS\Core\Utility\ExtensionManagementUtility::appendToTypoConfVars()
* TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath()
* TYPO3\CMS\Core\Utility\ExtensionManagementUtility::registerAjaxHandler()
* TYPO3\CMS\Core\Utility\ExtensionManagementUtility::registerExtDirectComponent()
* TYPO3\CMS\Core\Utility\File\ExtendedFileUtility::pushErrorMessagesToFlashMessageQueue()
* TYPO3\CMS\Core\Utility\GeneralUtility::array2xml_cs()
* TYPO3\CMS\Core\Utility\GeneralUtility::compat_version()
* TYPO3\CMS\Core\Utility\GeneralUtility::convertMicrotime()
* TYPO3\CMS\Core\Utility\GeneralUtility::csvValues()
* TYPO3\CMS\Core\Utility\GeneralUtility::deHSCentities()
* TYPO3\CMS\Core\Utility\GeneralUtility::flushOutputBuffers()
* TYPO3\CMS\Core\Utility\GeneralUtility::freetypeDpiComp()
* TYPO3\CMS\Core\Utility\GeneralUtility::generateRandomBytes()
* TYPO3\CMS\Core\Utility\GeneralUtility::getMaximumPathLength()
* TYPO3\CMS\Core\Utility\GeneralUtility::getRandomHexString()
* TYPO3\CMS\Core\Utility\GeneralUtility::imageMagickCommand()
* TYPO3\CMS\Core\Utility\GeneralUtility::lcfirst()
* TYPO3\CMS\Core\Utility\GeneralUtility::rawUrlEncodeFP()
* TYPO3\CMS\Core\Utility\GeneralUtility::rawUrlEncodeJS()
* TYPO3\CMS\Core\Utility\GeneralUtility::removeXSS()
* TYPO3\CMS\Core\Utility\GeneralUtility::requireFile()
* TYPO3\CMS\Core\Utility\GeneralUtility::requireOnce()
* TYPO3\CMS\Core\Utility\GeneralUtility::resolveAllSheetsInDS()
* TYPO3\CMS\Core\Utility\GeneralUtility::resolveSheetDefInDS()
* TYPO3\CMS\Core\Utility\GeneralUtility::slashJS()
* TYPO3\CMS\Core\Utility\GeneralUtility::strtolower()
* TYPO3\CMS\Core\Utility\GeneralUtility::strtoupper()
* TYPO3\CMS\Core\Utility\GeneralUtility::xmlGetHeaderAttribs()
* TYPO3\CMS\Frontend\Page\PageGenerator::pagegenInit()
* TYPO3\CMS\Frontend\Page\PageRepository::getHash()
* TYPO3\CMS\Frontend\Page\PageRepository::storeHash()
The following PHP class methods that have been previously deprecated for v8 have been removed:
* TYPO3\CMS\Backend\Clipboard\Clipboard->confirmMsg()
* TYPO3\CMS\Backend\Controller\BackendController->addCssFile()
......@@ -53,9 +104,9 @@ The following PHP class methods that have been previously deprecated for v8 have
* TYPO3\CMS\Backend\Domain\Repository\Localization\LocalizationRepository->getRecordLocalization()
* TYPO3\CMS\Backend\Form\FormDataProvider\AbstractItemProvider->sanitizeMaxItems()
* TYPO3\CMS\Backend\Module\AbstractFunctionModule->getBackPath()
* TYPO3\CMS\Backend\Module\AbstractFunctionModule->getDatabaseConnection()
* [NotScanned] TYPO3\CMS\Backend\Module\AbstractFunctionModule->getDatabaseConnection()
* TYPO3\CMS\Backend\Module\AbstractFunctionModule->incLocalLang()
* TYPO3\CMS\Backend\Module\BaseScriptClass->getDatabaseConnection()
* [NotScanned] TYPO3\CMS\Backend\Module\BaseScriptClass->getDatabaseConnection()
* TYPO3\CMS\Backend\Form\AbstractFormElement->isWizardsDisabled()
* TYPO3\CMS\Backend\Form\AbstractFormElement->renderWizards()
* TYPO3\CMS\Backend\Form\AbstractNode->getValidationDataAsDataAttribute()
......@@ -83,19 +134,6 @@ The following PHP class methods that have been previously deprecated for v8 have
* TYPO3\CMS\Backend\Template\DocumentTemplate->wrapScriptTags()
* TYPO3\CMS\Backend\Template\ModuleTemplate->getVersionSelector()
* TYPO3\CMS\Backend\View\PageLayoutView->pages_getTree()
* 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\Authentication\AbstractUserAuthentication->veriCode()
* TYPO3\CMS\Core\Charset\CharsetConverter->convCapitalize()
* TYPO3\CMS\Core\Charset\CharsetConverter->conv_case()
......@@ -116,51 +154,17 @@ The following PHP class methods that have been previously deprecated for v8 have
* TYPO3\CMS\Core\Core\Bootstrap->loadExtensionTables()
* TYPO3\CMS\Core\Database\RelationHandler->readyForInterface()
* TYPO3\CMS\Core\Database\QueryView->tableWrap()
* TYPO3\CMS\Core\DataHandling\DataHandler::rmComma()
* TYPO3\CMS\Core\DataHandling\DataHandler::destPathFromUploadFolder()
* TYPO3\CMS\Core\DataHandling\DataHandler::noRecordsFromUnallowedTables()
* TYPO3\CMS\Core\Imaging\GraphicalFunctions->createTempSubDir()
* TYPO3\C