FEATURE: Add removed functions for TYPO3 7.x.

* Adjust structure of deprecated functions yaml.
* Add version of removal to message for removed functions.

Relates: #33
This commit is contained in:
Daniel Siepmann 2017-03-30 11:03:30 +02:00
parent 4c162af3d4
commit 21b7c09416
Signed by: Daniel Siepmann
GPG key ID: 33D6629915560EF4
7 changed files with 395 additions and 230 deletions

View file

@ -1,4 +1,5 @@
# Deprecated in 7.0: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.0/Index.html#breaking-changes
# Breaking changes in 7.0: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.0/Index.html#breaking-changes
'7.0':
\TYPO3\CMS\Core\Utility\GeneralUtility::loadTCA:
newFunctionCall: null
docsUrl: 'https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.0/Breaking-61785-LoadTcaFunctionRemoved.html'
@ -107,7 +108,7 @@
\TYPO3\CMS\Core\Utility\GeneralUtility::htmlspecialchars_decode:
newFunctionCall: 'Use native PHP htmlspecialchars_decode() function'
docsUrl: 'https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.0/Breaking-62416-DeprecatedCodeRemovalInCoreSysext.html'
# TODO: This is useless, adding a warning to all "get" methods is crazy.
# NOTE: This is useless, adding a warning to all "get" methods is crazy.
# Also this is already handeled by: Typo3Update_Sniffs_LegacyClassnames_InstantiationWithObjectManagerSniff
# \TYPO3\CMS\Core\Category\CategoryRegistry->get:
# newFunctionCall: 'Use isRegistered() instead'
@ -115,9 +116,11 @@
\TYPO3\CMS\Core\Category\CategoryRegistry->applyTca:
newFunctionCall: null
docsUrl: 'https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.0/Breaking-62416-DeprecatedCodeRemovalInCoreSysext.html'
\TYPO3\CMS\Core\Resource\FileRepository->findByUid:
newFunctionCall: null
docsUrl: 'https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.0/Breaking-62416-DeprecatedCodeRemovalInCoreSysext.html'
# NOTE: This is useless, adding a warning to all "findByUid" methods is crazy.
# Many calls to repositories will be marked as warning
# \TYPO3\CMS\Core\Resource\FileRepository->findByUid:
# newFunctionCall: null
# docsUrl: 'https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.0/Breaking-62416-DeprecatedCodeRemovalInCoreSysext.html'
\TYPO3\CMS\Core\Resource\FileRepository->addToIndex:
newFunctionCall: null
docsUrl: 'https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.0/Breaking-62416-DeprecatedCodeRemovalInCoreSysext.html'
@ -130,9 +133,11 @@
\TYPO3\CMS\Core\Resource\FileRepository->findBySha1Hash:
newFunctionCall: 'Use FileIndexRepository::findByContentHash() instead'
docsUrl: 'https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.0/Breaking-62416-DeprecatedCodeRemovalInCoreSysext.html'
\TYPO3\CMS\Core\Resource\FileRepository->update:
newFunctionCall: 'Use FileIndexRepository::update() instead'
docsUrl: 'https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.0/Breaking-62416-DeprecatedCodeRemovalInCoreSysext.html'
# NOTE: This is useless, adding a warning to all "update" methods is crazy.
# All repository updates will be marked as warning
# \TYPO3\CMS\Core\Resource\FileRepository->update:
# newFunctionCall: 'Use FileIndexRepository::update() instead'
# docsUrl: 'https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.0/Breaking-62416-DeprecatedCodeRemovalInCoreSysext.html'
\TYPO3\CMS\Core\Resource\ResourceStorage->getFolderByIdentifier:
newFunctionCall: 'Use getFolder() instead'
docsUrl: 'https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.0/Breaking-62416-DeprecatedCodeRemovalInCoreSysext.html'

View file

@ -0,0 +1,4 @@
# Breaking changes in 7.1: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.1/Index.html
# Nothing in here? Right, there were no breaking changes to functions in this version.
# We keep this file to let you know we didn't forget anything.
'7.1': []

View file

@ -0,0 +1,36 @@
# Breaking changes in 7.2: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.2/Index.html
'7.2':
\TYPO3\CMS\Core\Page\PageRenderer->setSvgPath:
newFunctionCall: 'Use 3rd party library instead, which is already loaded by TYPO3'
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.2/Breaking-65962-WebSVGLibraryAndAPIRemoved.html
\TYPO3\CMS\Core\Page\PageRenderer->loadSvg:
newFunctionCall: 'Use 3rd party library instead, which is already loaded by TYPO3'
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.2/Breaking-65962-WebSVGLibraryAndAPIRemoved.html
\TYPO3\CMS\Core\Page\PageRenderer->enableSvgDebug:
newFunctionCall: 'Use 3rd party library instead, which is already loaded by TYPO3'
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.2/Breaking-65962-WebSVGLibraryAndAPIRemoved.html
\TYPO3\CMS\Core\Page\PageRenderer->svgForceFlash:
newFunctionCall: 'Use 3rd party library instead, which is already loaded by TYPO3'
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.2/Breaking-65962-WebSVGLibraryAndAPIRemoved.html
\TYPO3\CMS\Backend\Controller\LoginController->makeLoginForm:
newFunctionCall: 'Use the new Fluid View to adjust the login screen instead'
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.2/Breaking-65939-BackendLoginRefactoring.html
\TYPO3\CMS\Backend\Controller\LoginController->makeLogoutForm:
newFunctionCall: 'Use the new Fluid View to adjust the login screen instead'
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.2/Breaking-65939-BackendLoginRefactoring.html
\TYPO3\CMS\Backend\Controller\LoginController->wrapLoginForm:
newFunctionCall: 'Use the new Fluid View to adjust the login screen instead'
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.2/Breaking-65939-BackendLoginRefactoring.html
\TYPO3\CMS\Backend\Controller\LoginController->makeLoginBoxImage:
newFunctionCall: 'Use the new Fluid View to adjust the login screen instead'
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.2/Breaking-65939-BackendLoginRefactoring.html
\TYPO3\CMS\Backend\Controller\LoginController->makeLoginNews:
newFunctionCall: 'Use the new Fluid View to adjust the login screen instead'
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.2/Breaking-65939-BackendLoginRefactoring.html
\TYPO3\CMS\Backend\Controller\LoginController->emitRenderLoginFormSignal:
newFunctionCall: 'Use the new Fluid View to adjust the login screen instead'
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.2/Breaking-65939-BackendLoginRefactoring.html
# NOTE: This is useless, adding a warning to all "getSignalSlotDispatcher" methods is crazy, many developers implement such a method.
# \TYPO3\CMS\Backend\Controller\LoginController->getSignalSlotDispatcher:
# newFunctionCall: 'Use the new Fluid View to adjust the login screen instead'
# docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.2/Breaking-65939-BackendLoginRefactoring.html

View file

@ -0,0 +1,13 @@
# Breaking changes in 7.3: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.3/Index.html#breaking-changes
'7.3':
# NOTE: If this is making you crazy, just disable via ruleset.xml or phpcs.xml
parent::initializeObject:
newFunctionCall: 'Remove call, if this is inside a child of \TYPO3\CMS\Extbase\DomainObject\AbstractDomainObject, there is no initializeObject in the parent anymore.'
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.3/Breaking-67402-ExtbaseAbstractDomainObjectInitializeObject.html
\TYPO3\CMS\Extbase\Persistence\Repository::replace:
newFunctionCall: null
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.3/Breaking-63835-RemoveDeprecatedExtbasePersistenceParts.html
\TYPO3\CMS\Extbase\Persistence\Generic\Backend::setDeletedObjects:
newFunctionCall: null
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.3/Breaking-63835-RemoveDeprecatedExtbasePersistenceParts.html

View file

@ -0,0 +1,81 @@
# Breaking changes in 7.4: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.4/Index.html#breaking-changes
'7.4':
\TYPO3\CMS\Core\Page\PageRenderer::setExtCorePath:
newFunctionCall: null
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.4/Breaking-68001-RemovedExtJSCoreAndExtJSAdapters.html
\TYPO3\CMS\Core\Page\PageRenderer::getExtCorePath:
newFunctionCall: null
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.4/Breaking-68001-RemovedExtJSCoreAndExtJSAdapters.html
\TYPO3\CMS\Core\Page\PageRenderer::loadExtCore:
newFunctionCall: null
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.4/Breaking-68001-RemovedExtJSCoreAndExtJSAdapters.html
\TYPO3\CMS\Core\Page\PageRenderer::enableExtCoreDebug:
newFunctionCall: null
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.4/Breaking-68001-RemovedExtJSCoreAndExtJSAdapters.html
\TYPO3\CMS\Core\Page\PageRenderer::setExtCorePath:
newFunctionCall: null
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.4/Breaking-68001-RemovedExtJSCoreAndExtJSAdapters.html
\TYPO3\CMS\Backend\Controller\EditDocumentController->functionMenus:
newFunctionCall: null
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.4/Breaking-67753-DropSecondaryOptions.html
\TYPO3\CMS\Backend\Utility\BackendUtility::getFileIcon:
newFunctionCall: 'Use \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIconForFile() insteadenableExtCoreDebug'
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.4/Breaking-67654-RemoveGLOBALSFILEICONSFunctionality.html
\TYPO3\CMS\Frontend\Page\PageGenerator::getIncFiles:
newFunctionCall: 'Use hooks during the Frontend set up to execute custom PHP code'
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.4/Breaking-67646-LibraryInclusionInFrontend.html
\TYPO3\CMS\Backend\Template\DocumentTemplate\DocumentTemplate->formWidthText:
newFunctionCall: null
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.4/Breaking-67565-DeprecatedBackendRelatedMethodsRemoved.html
\TYPO3\CMS\Backend\View\PageLayoutView->getBackendLayoutConfiguration:
newFunctionCall: null
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.4/Breaking-67565-DeprecatedBackendRelatedMethodsRemoved.html
\TYPO3\CMS\Backend\View\PageLayoutView->wordWrapper:
newFunctionCall: null
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.4/Breaking-67565-DeprecatedBackendRelatedMethodsRemoved.html
\TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->checkJumpUrlReferer:
newFunctionCall: null
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.4/Breaking-66602-RemoveRefererCheckWhileHandlingJumpUrl.html
\TYPO3\CMS\Core\Utility\OpcodeCacheUtility::initialize:
newFunctionCall: 'Use new service class instead \TYPO3\CMS\Core\Service\OpcodeCacheService'
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.4/Breaking-63838-ChangedOpcodeCacheUtilityBeingAServiceClass.html
\TYPO3\CMS\Core\Utility\OpcodeCacheUtility::clearAllActive:
newFunctionCall: 'Use new service class instead \TYPO3\CMS\Core\Service\OpcodeCacheService'
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.4/Breaking-63838-ChangedOpcodeCacheUtilityBeingAServiceClass.html
\TYPO3\CMS\Core\Utility\OpcodeCacheUtility::getAllActive:
newFunctionCall: 'Use new service class instead \TYPO3\CMS\Core\Service\OpcodeCacheService'
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.4/Breaking-63838-ChangedOpcodeCacheUtilityBeingAServiceClass.html
\TYPO3\CMS\Backend\Tree\View\PagePositionMap->JSimgFunc:
newFunctionCall: 'Use proper styling for a tree list'
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.4/Breaking-56951-RemoveUnusedMethodsInPagePositionMap.html
\TYPO3\CMS\Backend\Tree\View\PagePositionMap->insertQuadLines:
newFunctionCall: 'Use proper styling for a tree list'
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.4/Breaking-56951-RemoveUnusedMethodsInPagePositionMap.html
\TYPO3\CMS\Core\Page\PageRenderer->enableExtJSQuickTips:
newFunctionCall: 'Use bootstrap tooltips, which work out of the box as alternative. Simple add data-toggle="tooltip" and data-title="your tooltip" to any element you want'
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.4/Breaking-68276-RemoveExtJSQuicktipsIfPossible.html
\TYPO3\CMS\IndexedSearch\Indexer->removeLoginpagesWithContentHash:
newFunctionCall: null
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.4/Breaking-68193-DropRemoveLoginpagesWithContentHashFromIndexerphp.html
\TYPO3\CMS\Frontend\Controller\ExtDirectEidController->actionIsAllowed:
newFunctionCall: 'Migrate your eID scripts to the new PSR-7 compliant model'
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.4/Breaking-68186-AdjustedAndRemovedMethodsInEIDArea.html
# NOTE: It does not make sense to warn about all render methods
# \TYPO3\CMS\Frontend\Controller\ExtDirectEidController->render:
# newFunctionCall: 'Migrate your eID scripts to the new PSR-7 compliant model'
# docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.4/Breaking-68186-AdjustedAndRemovedMethodsInEIDArea.html
\TYPO3\CMS\Frontend\Utility\EidUtility::isEidRequest:
newFunctionCall: 'Migrate your eID scripts to the new PSR-7 compliant model'
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.4/Breaking-68186-AdjustedAndRemovedMethodsInEIDArea.html
\TYPO3\CMS\Frontend\Utility\EidUtility::getEidScriptPath:
newFunctionCall: 'Migrate your eID scripts to the new PSR-7 compliant model'
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.4/Breaking-68186-AdjustedAndRemovedMethodsInEIDArea.html
\TYPO3\CMS\Backend\View\PageLayoutView->linkRTEbutton:
newFunctionCall: null
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.4/Breaking-68020-DroppedDisableBigButtons.html
\TYPO3\CMS\Backend\View\PageLayoutView->isRTEforField:
newFunctionCall: null
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.4/Breaking-68020-DroppedDisableBigButtons.html
\TYPO3\CMS\Backend\View\PageLayoutView->getSpecConfForField:
newFunctionCall: null
docsUrl: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.4/Breaking-68020-DroppedDisableBigButtons.html

View file

@ -0,0 +1,2 @@
# Breaking changes in 7.5: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.5/Index.html#breaking-changes
'7.5': []

View file

@ -68,26 +68,35 @@ class Typo3Update_Sniffs_Deprecated_GenericFunctionCallSniff implements PhpCsSni
* @param array $deprecatedFunctions
* @return array
*/
protected function prepareStructure(array $deprecatedFunctions)
protected function prepareStructure(array $oldStructure)
{
array_walk($deprecatedFunctions, function (&$config, $function) {
$typo3Versions = array_keys($oldStructure);
$newStructure = [];
foreach ($typo3Versions as $typo3Version) {
foreach ($oldStructure[$typo3Version] as $function => $config) {
// Split static methods and methods.
$split = preg_split('/::|->/', $function);
$config['static'] = strpos($function, '::') !== false;
$config['fqcn'] = null;
$config['class'] = null;
$config['function'] = $split[0];
$newStructure[$function] = $config;
$newStructure[$function]['static'] = strpos($function, '::') !== false;
$newStructure[$function]['fqcn'] = null;
$newStructure[$function]['class'] = null;
$newStructure[$function]['function'] = $split[0];
// TODO: Add a way to check for removed or deprecated.
$newStructure[$function]['version_removed'] = $typo3Version;
// If split contains two parts, it's a class with method
if (isset($split[1])) {
$config['fqcn'] = $split[0];
$config['class'] = array_slice(explode('\\', $config['fqcn']), -1)[0];
$config['function'] = $split[1];
$newStructure[$function]['fqcn'] = $split[0];
$newStructure[$function]['class'] = array_slice(explode('\\', $newStructure[$function]['fqcn']), -1)[0];
$newStructure[$function]['function'] = $split[1];
}
};
}
});
return $deprecatedFunctions;
return $newStructure;
}
/**
@ -214,11 +223,14 @@ class Typo3Update_Sniffs_Deprecated_GenericFunctionCallSniff implements PhpCsSni
protected function addWarning(PhpCsFile $phpcsFile, $tokenPosition)
{
$phpcsFile->addWarning(
'Legacy function calls are not allowed; found %s. %s. See: %s',
// TODO: Add a way to check for removed or deprecated.
'Legacy function calls are not allowed; found %s. Removed in %s. %s. See: %s',
$tokenPosition,
$this->getFunctionIdentifier(),
[
$this->getOldfunctionCall(),
// TODO: Add a way to check for removed or deprecated.
$this->getRemovedVersion(),
$this->getNewFunctionCall(),
$this->getDocsUrl(),
]
@ -255,6 +267,18 @@ class Typo3Update_Sniffs_Deprecated_GenericFunctionCallSniff implements PhpCsSni
return $config['fqcn'] . $concat . $config['function'];
}
/**
* Returns TYPO3 version when the current function was removed.
*
* To let user decide whether this is important for him.
*
* @return string
*/
protected function getRemovedVersion()
{
return $this->getCurrentDeprecatedFunction()['version_removed'];
}
/**
* The new function call, or information how to migrate.
*