diff --git a/typo3/sysext/core/Classes/TypoScript/ConfigurationForm.php b/typo3/sysext/core/Classes/TypoScript/ConfigurationForm.php index cb75f2f3ad9c894214d7ebc3bf806be9e929aa7f..23ae47558f2651faeb106f25311c32858da2dd7f 100644 --- a/typo3/sysext/core/Classes/TypoScript/ConfigurationForm.php +++ b/typo3/sysext/core/Classes/TypoScript/ConfigurationForm.php @@ -52,6 +52,14 @@ class ConfigurationForm extends ExtendedTemplateService */ protected $ext_realValues = []; + /** + * Deprecate this class + */ + public function __construct() + { + trigger_error('Class ConfigurationForm has been deprecated with v9 and will be removed in v10', E_USER_DEPRECATED); + } + /** * @param string $configTemplate * @return array diff --git a/typo3/sysext/core/Documentation/Changelog/master/Deprecation-82725-DeprecateConfigurationForm.rst b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-82725-DeprecateConfigurationForm.rst new file mode 100644 index 0000000000000000000000000000000000000000..2dd905a5dfae66709fc8a4adde5043eedc861031 --- /dev/null +++ b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-82725-DeprecateConfigurationForm.rst @@ -0,0 +1,36 @@ +.. include:: ../../Includes.txt + +================================================= +Deprecation: #82725 - Deprecate ConfigurationForm +================================================= + +See :issue:`82725` + +Description +=========== + +Class :php:`TYPO3\CMS\Core\TypoScript\ConfigurationForm` has been deprecated and should +not be used any longer. + + +Impact +====== + +Extending or instantiating this class will throw a deprecation warning. + + +Affected Installations +====================== + +Instance with extensions using this class. + + +Migration +========= + +Class :php:`ConfigurationForm` was used to parse the ext_conf_template.txt file of extensions. +The parser has been integrated at a different place in the core. The +class is mostly core internal and extensions should not have needed to parse that syntax directly. +There is no direct substitution for this functionality usable by extensions in the core. + +.. index:: Backend, PHP-API, FullyScanned \ No newline at end of file diff --git a/typo3/sysext/extensionmanager/Classes/Utility/ConfigurationUtility.php b/typo3/sysext/extensionmanager/Classes/Utility/ConfigurationUtility.php index 63beddafb669de5b0d57b2f61d816e4fa039b4a8..7c8081d0a4a330d72200bbd714fb44adab90b16a 100644 --- a/typo3/sysext/extensionmanager/Classes/Utility/ConfigurationUtility.php +++ b/typo3/sysext/extensionmanager/Classes/Utility/ConfigurationUtility.php @@ -14,14 +14,90 @@ namespace TYPO3\CMS\Extensionmanager\Utility; * The TYPO3 project - inspiring people to share! */ -use TYPO3\CMS\Core\TypoScript\ConfigurationForm; use TYPO3\CMS\Core\Utility\ArrayUtility; +use TYPO3\CMS\Lang\LanguageService; /** * Utility for dealing with ext_emconf and ext_conf_template settings */ class ConfigurationUtility implements \TYPO3\CMS\Core\SingletonInterface { + /** + * TypoScript hierarchy being build during parsing. + * + * @var array + */ + protected $setup = []; + + /** + * Raw data, the input string exploded by LF + * + * @var array + */ + protected $raw; + + /** + * Pointer to entry in raw data array + * + * @var int + */ + protected $rawP = 0; + + /** + * Holding the value of the last comment + * + * @var string + */ + protected $lastComment = ''; + + /** + * Internally set, used as internal flag to create a multi-line comment (one of those like /* ... * / + * + * @var bool + */ + protected $commentSet = false; + + /** + * Internally set, when in brace. Counter. + * + * @var int + */ + protected $inBrace = 0; + + /** + * This will be filled with the available categories of the current template. + * + * @var array + */ + protected $subCategories = [ + // Standard categories: + 'enable' => ['Enable features', 'a'], + 'dims' => ['Dimensions, widths, heights, pixels', 'b'], + 'file' => ['Files', 'c'], + 'typo' => ['Typography', 'd'], + 'color' => ['Colors', 'e'], + 'links' => ['Links and targets', 'f'], + 'language' => ['Language specific constants', 'g'], + // subcategories based on the default content elements + 'cheader' => ['Content: \'Header\'', 'ma'], + 'cheader_g' => ['Content: \'Header\', Graphical', 'ma'], + 'ctext' => ['Content: \'Text\'', 'mb'], + 'cimage' => ['Content: \'Image\'', 'md'], + 'ctextmedia' => ['Content: \'Textmedia\'', 'ml'], + 'cbullets' => ['Content: \'Bullet list\'', 'me'], + 'ctable' => ['Content: \'Table\'', 'mf'], + 'cuploads' => ['Content: \'Filelinks\'', 'mg'], + 'cmultimedia' => ['Content: \'Multimedia\'', 'mh'], + 'cmedia' => ['Content: \'Media\'', 'mr'], + 'cmailform' => ['Content: \'Form\'', 'mi'], + 'csearch' => ['Content: \'Search\'', 'mj'], + 'clogin' => ['Content: \'Login\'', 'mk'], + 'cmenu' => ['Content: \'Menu/Sitemap\'', 'mm'], + 'cshortcut' => ['Content: \'Insert records\'', 'mn'], + 'clist' => ['Content: \'List of records\'', 'mo'], + 'chtml' => ['Content: \'HTML\'', 'mq'] + ]; + /** * @var \TYPO3\CMS\Extbase\Object\ObjectManager */ @@ -121,25 +197,29 @@ class ConfigurationUtility implements \TYPO3\CMS\Core\SingletonInterface public function getDefaultConfigurationFromExtConfTemplateAsValuedArray($extensionKey) { $rawConfigurationString = $this->getDefaultConfigurationRawString($extensionKey); - $theConstants = []; - if ((string)$rawConfigurationString !== '') { - /** @var ConfigurationForm $tsStyleConfig */ - $tsStyleConfig = $this->objectManager->get(ConfigurationForm::class); - $tsStyleConfig->doNotSortCategoriesBeforeMakingForm = true; - - $theConstants = $tsStyleConfig->ext_initTSstyleConfig($rawConfigurationString); + $this->raw = explode(LF, $rawConfigurationString); + $this->parseSub($this->setup); + if ($this->inBrace) { + throw new \RuntimeException( + 'Line ' . ($this->rawP - 1) . ': The script is short of ' . $this->inBrace . ' end brace(s)', + 1507645348 + ); + } + $parsedConstants = $this->setup; + $flatSetup = $this->flattenSetup($parsedConstants); + $theConstants = $this->parseComments($flatSetup); // Loop through configuration items, see if it is assigned to a sub category // and add the sub category label to the item property if so. foreach ($theConstants as $configurationOptionName => $configurationOption) { if ( array_key_exists('subcat_name', $configurationOption) - && isset($tsStyleConfig->subCategories[$configurationOption['subcat_name']]) - && isset($tsStyleConfig->subCategories[$configurationOption['subcat_name']][0]) + && isset($this->subCategories[$configurationOption['subcat_name']]) + && isset($this->subCategories[$configurationOption['subcat_name']][0]) ) { - $theConstants[$configurationOptionName]['subcat_label'] = $tsStyleConfig->subCategories[$configurationOption['subcat_name']][0]; + $theConstants[$configurationOptionName]['subcat_label'] = $this->subCategories[$configurationOption['subcat_name']][0]; } } } @@ -228,4 +308,325 @@ class ConfigurationUtility implements \TYPO3\CMS\Core\SingletonInterface ); return $configuration; } + + /** + * This flattens a hierarchical TypoScript array to $this->flatSetup + * + * @param array $setupArray TypoScript array + * @param string $prefix Prefix to the object path. Used for recursive calls to this function. + * @return array + */ + protected function flattenSetup($setupArray, $prefix = '') + { + $flatSetup = []; + if (is_array($setupArray)) { + foreach ($setupArray as $key => $val) { + if (is_array($val)) { + $flatSetup = array_merge($flatSetup, $this->flattenSetup($val, $prefix . $key)); + } else { + $flatSetup[$prefix . $key] = $val; + } + } + } + return $flatSetup; + } + + /** + * This function compares the flattened constants (default and all). + * Returns an array with the constants from the whole template which may be edited by the module. + * + * @param array $flatSetup + * @return array + */ + protected function parseComments($flatSetup) + { + $categoryLabels = []; + $editableComments = []; + $counter = 0; + foreach ($flatSetup as $const => $value) { + if (substr($const, -2) === '..' || !isset($flatSetup[$const . '..'])) { + continue; + } + $counter++; + $comment = trim($flatSetup[$const . '..']); + $c_arr = explode(LF, $comment); + foreach ($c_arr as $k => $v) { + $line = trim(preg_replace('/^[#\\/]*/', '', $v)); + if (!$line) { + continue; + } + $parts = explode(';', $line); + foreach ($parts as $par) { + if (strstr($par, '=')) { + $keyValPair = explode('=', $par, 2); + switch (trim(strtolower($keyValPair[0]))) { + case 'type': + // Type: + $editableComments[$const]['type'] = trim($keyValPair[1]); + break; + case 'cat': + // List of categories. + $catSplit = explode('/', strtolower($keyValPair[1])); + $catSplit[0] = trim($catSplit[0]); + if (isset($categoryLabels[$catSplit[0]])) { + $catSplit[0] = $categoryLabels[$catSplit[0]]; + } + $editableComments[$const]['cat'] = $catSplit[0]; + // This is the subcategory. Must be a key in $this->subCategories[]. + // catSplit[2] represents the search-order within the subcat. + $catSplit[1] = trim($catSplit[1]); + if ($catSplit[1] && isset($this->subCategories[$catSplit[1]])) { + $editableComments[$const]['subcat_name'] = $catSplit[1]; + $orderIdentifier = isset($catSplit[2]) ? trim($catSplit[2]) : $counter; + $editableComments[$const]['subcat'] = $this->subCategories[$catSplit[1]][1] + . '/' . $catSplit[1] . '/' . $orderIdentifier . 'z'; + } elseif (isset($catSplit[2])) { + $editableComments[$const]['subcat'] = 'x' . '/' . trim($catSplit[2]) . 'z'; + } else { + $editableComments[$const]['subcat'] = 'x' . '/' . $counter . 'z'; + } + break; + case 'label': + // Label + $editableComments[$const]['label'] = trim($keyValPair[1]); + break; + case 'customcategory': + // Custom category label + $customCategory = explode('=', $keyValPair[1], 2); + if (trim($customCategory[0])) { + $categoryKey = strtolower($customCategory[0]); + $categoryLabels[$categoryKey] = $this->getLanguageService()->sL($customCategory[1]); + } + break; + case 'customsubcategory': + // Custom subCategory label + $customSubcategory = explode('=', $keyValPair[1], 2); + if (trim($customSubcategory[0])) { + $subCategoryKey = strtolower($customSubcategory[0]); + $this->subCategories[$subCategoryKey][0] = $this->getLanguageService()->sL($customSubcategory[1]); + } + break; + } + } + } + } + if (isset($editableComments[$const])) { + $editableComments[$const]['name'] = $const; + $editableComments[$const]['value'] = trim($value); + $editableComments[$const]['default_value'] = trim($value); + } + } + return $editableComments; + } + + /** + * Parsing the $this->raw TypoScript lines from pointer, $this->rawP + * + * @param array $setup Reference to the setup array in which to accumulate the values. + */ + protected function parseSub(array &$setup) + { + while (isset($this->raw[$this->rawP])) { + $line = ltrim($this->raw[$this->rawP]); + $this->rawP++; + // Set comment flag? + if (strpos($line, '/*') === 0) { + $this->commentSet = 1; + } + if (!$this->commentSet && ($line)) { + if ($line[0] !== '}' && $line[0] !== '#' && $line[0] !== '/') { + // If not brace-end or comment + // Find object name string until we meet an operator + $varL = strcspn($line, TAB . ' {=<>('); + // check for special ":=" operator + if ($varL > 0 && substr($line, $varL-1, 2) === ':=') { + --$varL; + } + // also remove tabs after the object string name + $objStrName = substr($line, 0, $varL); + if ($objStrName !== '') { + $r = []; + if (preg_match('/[^[:alnum:]_\\\\\\.:-]/i', $objStrName, $r)) { + throw new \RuntimeException( + 'Line ' . ($this->rawP - 1) . ': Object Name String, "' . htmlspecialchars($objStrName) . '" contains invalid character "' . $r[0] . '". Must be alphanumeric or one of: "_:-\\."', + 1507645381 + ); + } + $line = ltrim(substr($line, $varL)); + if ($line === '') { + throw new \RuntimeException( + 'Line ' . ($this->rawP - 1) . ': Object Name String, "' . htmlspecialchars($objStrName) . '" was not followed by any operator, =<>({', + 1507645417 + ); + } + switch ($line[0]) { + case '=': + if (strpos($objStrName, '.') !== false) { + $value = []; + $value[0] = trim(substr($line, 1)); + $this->setVal($objStrName, $setup, $value); + } else { + $setup[$objStrName] = trim(substr($line, 1)); + if ($this->lastComment) { + // Setting comment.. + $setup[$objStrName . '..'] .= $this->lastComment; + } + } + break; + case '{': + $this->inBrace++; + if (strpos($objStrName, '.') !== false) { + $this->rollParseSub($objStrName, $setup); + } else { + if (!isset($setup[$objStrName . '.'])) { + $setup[$objStrName . '.'] = []; + } + $this->parseSub($setup[$objStrName . '.']); + } + break; + default: + throw new \RuntimeException( + 'Line ' . ($this->rawP - 1) . ': Object Name String, "' . htmlspecialchars($objStrName) . '" was not followed by any operator, =<>({', + 1507645445 + ); + } + + $this->lastComment = ''; + } + } elseif ($line[0] === '}') { + $this->inBrace--; + $this->lastComment = ''; + if ($this->inBrace < 0) { + throw new \RuntimeException( + 'Line ' . ($this->rawP - 1) . ': An end brace is in excess.', + 1507645489 + ); + } + break; + } else { + $this->lastComment .= rtrim($line) . LF; + } + } + // Unset comment + if ($this->commentSet) { + if (strpos($line, '*/') === 0) { + $this->commentSet = 0; + } + } + } + } + + /** + * Parsing of TypoScript keys inside a curly brace where the key is composite of at least two keys, + * thus having to recursively call itself to get the value + * + * @param string $string The object sub-path, eg "thisprop.another_prot + * @param array $setup The local setup array from the function calling this function + */ + protected function rollParseSub($string, array &$setup) + { + if ((string)$string === '') { + return; + } + list($key, $remainingKey) = $this->parseNextKeySegment($string); + $key .= '.'; + if (!isset($setup[$key])) { + $setup[$key] = []; + } + $remainingKey === '' + ? $this->parseSub($setup[$key]) + : $this->rollParseSub($remainingKey, $setup[$key]); + } + + /** + * Setting a value/property of an object string in the setup array. + * + * @param string $string The object sub-path, eg "thisprop.another_prot + * @param array $setup The local setup array from the function calling this function. + * @param void + */ + protected function setVal($string, array &$setup, $value) + { + if ((string)$string === '') { + return; + } + + list($key, $remainingKey) = $this->parseNextKeySegment($string); + $subKey = $key . '.'; + if ($remainingKey === '') { + if (isset($value[0])) { + $setup[$key] = $value[0]; + } + if (isset($value[1])) { + $setup[$subKey] = $value[1]; + } + if ($this->lastComment) { + $setup[$key . '..'] .= $this->lastComment; + } + } else { + if (!isset($setup[$subKey])) { + $setup[$subKey] = []; + } + $this->setVal($remainingKey, $setup[$subKey], $value); + } + } + + /** + * Determines the first key segment of a TypoScript key by searching for the first + * unescaped dot in the given key string. + * + * Since the escape characters are only needed to correctly determine the key + * segment any escape characters before the first unescaped dot are + * stripped from the key. + * + * @param string $key The key, possibly consisting of multiple key segments separated by unescaped dots + * @return array Array with key segment and remaining part of $key + */ + protected function parseNextKeySegment($key) + { + // if no dot is in the key, nothing to do + $dotPosition = strpos($key, '.'); + if ($dotPosition === false) { + return [$key, '']; + } + + if (strpos($key, '\\') !== false) { + // backslashes are in the key, so we do further parsing + while ($dotPosition !== false) { + if ($dotPosition > 0 && $key[$dotPosition - 1] !== '\\' || $dotPosition > 1 && $key[$dotPosition - 2] === '\\') { + break; + } + // escaped dot found, continue + $dotPosition = strpos($key, '.', $dotPosition + 1); + } + + if ($dotPosition === false) { + // no regular dot found + $keySegment = $key; + $remainingKey = ''; + } else { + if ($dotPosition > 1 && $key[$dotPosition - 2] === '\\' && $key[$dotPosition - 1] === '\\') { + $keySegment = substr($key, 0, $dotPosition - 1); + } else { + $keySegment = substr($key, 0, $dotPosition); + } + $remainingKey = substr($key, $dotPosition + 1); + } + + // fix key segment by removing escape sequences + $keySegment = str_replace('\\.', '.', $keySegment); + } else { + // no backslash in the key, we're fine off + list($keySegment, $remainingKey) = explode('.', $key, 2); + } + return [$keySegment, $remainingKey]; + } + + /** + * @return LanguageService + */ + protected function getLanguageService() + { + return $GLOBALS['LANG']; + } } diff --git a/typo3/sysext/extensionmanager/Tests/Unit/Utility/ConfigurationUtilityTest.php b/typo3/sysext/extensionmanager/Tests/Unit/Utility/ConfigurationUtilityTest.php index e9949c7bede4154ad43950ac54e1ff8b86a63437..c838ed6544dfec0b7d6aad4da2f84b5dfd943249 100644 --- a/typo3/sysext/extensionmanager/Tests/Unit/Utility/ConfigurationUtilityTest.php +++ b/typo3/sysext/extensionmanager/Tests/Unit/Utility/ConfigurationUtilityTest.php @@ -123,49 +123,16 @@ class ConfigurationUtilityTest extends \TYPO3\TestingFramework\Core\Unit\UnitTes $configurationUtility ->expects($this->once()) ->method('getDefaultConfigurationRawString') - ->will($this->returnValue('foo')); - - $tsStyleConfig = $this->getMockBuilder(\TYPO3\CMS\Core\TypoScript\ConfigurationForm::class)->getMock(); + ->will($this->returnValue(file_get_contents(__DIR__ . '/Fixtures/ext_conf_template.txt'))); $objectManagerMock = $this->getMockBuilder(\TYPO3\CMS\Extbase\Object\ObjectManagerInterface::class)->getMock(); $configurationUtility->_set('objectManager', $objectManagerMock); - $objectManagerMock - ->expects($this->once()) - ->method('get') - ->with(\TYPO3\CMS\Core\TypoScript\ConfigurationForm::class) - ->will($this->returnValue($tsStyleConfig)); - - $constants = [ - 'checkConfigurationFE' => [ - 'cat' => 'basic', - 'subcat_name' => 'enable', - 'subcat' => 'a/enable/z', - 'type' => 'user[TYPO3\\CMS\\Saltedpasswords\\Utility\\ExtensionManagerConfigurationUtility->checkConfigurationFrontend]', - 'label' => 'Frontend configuration check', - 'name' => 'checkConfigurationFE', - 'value' => '0', - 'default_value' => '0' - ], - 'BE.forceSalted' => [ - 'cat' => 'advancedbackend', - 'subcat' => 'x/z', - 'type' => 'boolean', - 'label' => 'Force salted passwords: Enforce usage of SaltedPasswords. Old MD5 hashed passwords will stop working.', - 'name' => 'BE.forceSalted', - 'value' => '0', - 'default_value' => '0' - ] - ]; - $tsStyleConfig - ->expects($this->once()) - ->method('ext_initTSstyleConfig') - ->will($this->returnValue($constants)); $expected = [ 'checkConfigurationFE' => [ 'cat' => 'basic', 'subcat_name' => 'enable', - 'subcat' => 'a/enable/z', + 'subcat' => 'a/enable/1z', 'type' => 'user[TYPO3\\CMS\\Saltedpasswords\\Utility\\ExtensionManagerConfigurationUtility->checkConfigurationFrontend]', 'label' => 'Frontend configuration check', 'name' => 'checkConfigurationFE', @@ -174,8 +141,8 @@ class ConfigurationUtilityTest extends \TYPO3\TestingFramework\Core\Unit\UnitTes 'subcat_label' => 'Enable features', ], 'BE.forceSalted' => [ - 'cat' => 'advancedbackend', - 'subcat' => 'x/z', + 'cat' => 'backend', + 'subcat' => 'x/2z', 'type' => 'boolean', 'label' => 'Force salted passwords: Enforce usage of SaltedPasswords. Old MD5 hashed passwords will stop working.', 'name' => 'BE.forceSalted', diff --git a/typo3/sysext/extensionmanager/Tests/Unit/Utility/Fixtures/ext_conf_template.txt b/typo3/sysext/extensionmanager/Tests/Unit/Utility/Fixtures/ext_conf_template.txt new file mode 100644 index 0000000000000000000000000000000000000000..1d8ab7160d789aab155726398d97cfc1008551ea --- /dev/null +++ b/typo3/sysext/extensionmanager/Tests/Unit/Utility/Fixtures/ext_conf_template.txt @@ -0,0 +1,5 @@ +# cat=Basic/enable; type=user[TYPO3\CMS\Saltedpasswords\Utility\ExtensionManagerConfigurationUtility->checkConfigurationFrontend]; label=Frontend configuration check +checkConfigurationFE=0 + +# cat=Backend; type=boolean; label=Force salted passwords: Enforce usage of SaltedPasswords. Old MD5 hashed passwords will stop working. +BE.forceSalted = 0 diff --git a/typo3/sysext/install/Configuration/ExtensionScanner/Php/ClassNameMatcher.php b/typo3/sysext/install/Configuration/ExtensionScanner/Php/ClassNameMatcher.php index 63b7b6937cf4613a7315cc7936e1175aaa16bc97..db71de87bc801087466b5432e9ac0eadee134145 100644 --- a/typo3/sysext/install/Configuration/ExtensionScanner/Php/ClassNameMatcher.php +++ b/typo3/sysext/install/Configuration/ExtensionScanner/Php/ClassNameMatcher.php @@ -389,6 +389,11 @@ return [ 'Breaking-82689-BackendAbstractWizardControllerNotExtendsAbstractModule.rst', ], ], + 'TYPO3\CMS\Core\TypoScript\ConfigurationForm' => [ + 'restFiles' => [ + 'Deprecation-82725-DeprecateConfigurationForm.rst', + ], + ], // Removed interfaces 'TYPO3\CMS\Backend\Form\DatabaseFileIconsHookInterface' => [ diff --git a/typo3/sysext/reports/Classes/Report/Status/SecurityStatus.php b/typo3/sysext/reports/Classes/Report/Status/SecurityStatus.php index d48b5ab8031e8fa4bb7ee3cedcbe1a49b331c958..2beb0f053e583a1b13223060d6ba4a6af608184e 100644 --- a/typo3/sysext/reports/Classes/Report/Status/SecurityStatus.php +++ b/typo3/sysext/reports/Classes/Report/Status/SecurityStatus.php @@ -19,7 +19,6 @@ use TYPO3\CMS\Core\Database\ConnectionPool; use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction; use TYPO3\CMS\Core\Localization\LanguageService; use TYPO3\CMS\Core\Messaging\FlashMessage; -use TYPO3\CMS\Core\TypoScript\ConfigurationForm; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Reports\Status as ReportStatus; use TYPO3\CMS\Reports\StatusProviderInterface; @@ -185,7 +184,7 @@ class SecurityStatus implements StatusProviderInterface $configCheck = GeneralUtility::makeInstance(ExtensionManagerConfigurationUtility::class); $message = '<p>' . $this->getLanguageService()->getLL('status_saltedPasswords_infoText') . '</p>'; $messageDetail = ''; - $resultCheck = $configCheck->checkConfigurationBackend([], new ConfigurationForm()); + $resultCheck = $configCheck->checkConfigurationBackend([]); switch ($resultCheck['errorType']) { case FlashMessage::INFO: $messageDetail .= $resultCheck['html']; diff --git a/typo3/sysext/saltedpasswords/Classes/Utility/ExtensionManagerConfigurationUtility.php b/typo3/sysext/saltedpasswords/Classes/Utility/ExtensionManagerConfigurationUtility.php index 91e3000d34a839701c26979295aaaada3045521d..38af2cbeab4f9274af0dfb5702e2911a2bd2b933 100644 --- a/typo3/sysext/saltedpasswords/Classes/Utility/ExtensionManagerConfigurationUtility.php +++ b/typo3/sysext/saltedpasswords/Classes/Utility/ExtensionManagerConfigurationUtility.php @@ -158,10 +158,9 @@ class ExtensionManagerConfigurationUtility * $params['propertyName'] is set or not. * * @param array $params Field information to be rendered - * @param \TYPO3\CMS\Core\TypoScript\ConfigurationForm $pObj The calling parent object. * @return array|string array with errorType and HTML or only the HTML as string */ - public function checkConfigurationBackend(array $params, $pObj) + public function checkConfigurationBackend(array $params) { $this->init(); $extConf = $this->extConf['BE']; @@ -267,10 +266,9 @@ class ExtensionManagerConfigurationUtility * $params['propertyName'] is set or not. * * @param array $params Field information to be rendered - * @param \TYPO3\CMS\Core\TypoScript\ConfigurationForm $pObj The calling parent object. * @return array|string array with errorType and HTML or only the HTML as string */ - public function checkConfigurationFrontend(array $params, $pObj) + public function checkConfigurationFrontend(array $params) { $this->init(); $extConf = $this->extConf['FE']; @@ -356,11 +354,10 @@ class ExtensionManagerConfigurationUtility * Renders a selector element that allows to select the hash method to be used. * * @param array $params Field information to be rendered - * @param \TYPO3\CMS\Core\TypoScript\ConfigurationForm $pObj The calling parent object. * @param string $disposal The configuration disposal ('FE' or 'BE') * @return string The HTML selector */ - protected function buildHashMethodSelector(array $params, $pObj, $disposal) + protected function buildHashMethodSelector(array $params, $disposal) { $this->init(); $propertyName = $params['propertyName']; @@ -385,12 +382,11 @@ class ExtensionManagerConfigurationUtility * used (frontend disposal). * * @param array $params Field information to be rendered - * @param \TYPO3\CMS\Core\TypoScript\ConfigurationForm $pObj The calling parent object. * @return string The HTML selector */ - public function buildHashMethodSelectorFE(array $params, $pObj) + public function buildHashMethodSelectorFE(array $params) { - return $this->buildHashMethodSelector($params, $pObj, 'FE'); + return $this->buildHashMethodSelector($params, 'FE'); } /** @@ -398,12 +394,11 @@ class ExtensionManagerConfigurationUtility * be used (backend disposal) * * @param array $params Field information to be rendered - * @param \TYPO3\CMS\Core\TypoScript\ConfigurationForm $pObj The calling parent object. * @return string The HTML selector */ - public function buildHashMethodSelectorBE(array $params, $pObj) + public function buildHashMethodSelectorBE(array $params) { - return $this->buildHashMethodSelector($params, $pObj, 'BE'); + return $this->buildHashMethodSelector($params, 'BE'); } /**