diff --git a/typo3/sysext/linkvalidator/Classes/LinkAnalyzer.php b/typo3/sysext/linkvalidator/Classes/LinkAnalyzer.php index 548e786bd34b869e05e31146ab6466dfb5341286..6378c1a6c849f1d915e52884be5553b0cb65d9e6 100644 --- a/typo3/sysext/linkvalidator/Classes/LinkAnalyzer.php +++ b/typo3/sysext/linkvalidator/Classes/LinkAnalyzer.php @@ -244,7 +244,7 @@ class LinkAnalyzer // Broken link found if (!$checkUrl) { - $this->brokenLinkRepository->addBrokenLink($record, false, $hookObj->getErrorParams()); + $this->brokenLinkRepository->addBrokenLink($record, false, $hookObj->getErrorParams() ?: []); $this->brokenLinkCounts[$table]++; } } diff --git a/typo3/sysext/linkvalidator/Classes/Linktype/AbstractLinktype.php b/typo3/sysext/linkvalidator/Classes/Linktype/AbstractLinktype.php index 845222860d83dd2d75ae7c8765ab603b7b4ae350..78f4d945b6d205dbb9eaf27327e3d9c45f1c2a14 100644 --- a/typo3/sysext/linkvalidator/Classes/Linktype/AbstractLinktype.php +++ b/typo3/sysext/linkvalidator/Classes/Linktype/AbstractLinktype.php @@ -70,6 +70,7 @@ abstract class AbstractLinktype implements LinktypeInterface * Get the value of the private property errorParams * * @return array All parameters needed for the rendering of the error message + * @todo change return type to array in TYPO3 v13 */ public function getErrorParams() { diff --git a/typo3/sysext/linkvalidator/Classes/Linktype/ExternalLinktype.php b/typo3/sysext/linkvalidator/Classes/Linktype/ExternalLinktype.php index dba7457613f1b585d8bdf05f1c10bbfcc85abb85..a6b02614e10a11b9d956a3bcf392428246ee5fb4 100644 --- a/typo3/sysext/linkvalidator/Classes/Linktype/ExternalLinktype.php +++ b/typo3/sysext/linkvalidator/Classes/Linktype/ExternalLinktype.php @@ -252,11 +252,15 @@ class ExternalLinktype extends AbstractLinktype * * @param array $errorParams All parameters needed for the rendering of the error message * @return string Validation error message + * @todo change input parameter type to array in TYPO3 v13 */ public function getErrorMessage($errorParams) { $lang = $this->getLanguageService(); $errorType = $errorParams['errorType'] ?? ''; + if ($errorType === '') { + return $lang->getLL('list.report.noinformation'); + } switch ($errorType) { case self::ERROR_TYPE_HTTP_STATUS_CODE: switch ($errorParams['errno'] ?? 0) { diff --git a/typo3/sysext/linkvalidator/Classes/Linktype/FileLinktype.php b/typo3/sysext/linkvalidator/Classes/Linktype/FileLinktype.php index cbeb51bd5cc90c164c5d48a2c6c782f7b75635f8..aeb3760249371bda620380e25a07e7211de8eecc 100644 --- a/typo3/sysext/linkvalidator/Classes/Linktype/FileLinktype.php +++ b/typo3/sysext/linkvalidator/Classes/Linktype/FileLinktype.php @@ -66,6 +66,7 @@ class FileLinktype extends AbstractLinktype * * @param array $errorParams All parameters needed for the rendering of the error message * @return string Validation error message + * @todo change input parameter type to array in TYPO3 v13 */ public function getErrorMessage($errorParams) { diff --git a/typo3/sysext/linkvalidator/Classes/Linktype/InternalLinktype.php b/typo3/sysext/linkvalidator/Classes/Linktype/InternalLinktype.php index c2df790ddde694529ecc25a10e52a0bd7f06ed19..90423e81ae860f5d4607b797a3a69d708ebc3804 100644 --- a/typo3/sysext/linkvalidator/Classes/Linktype/InternalLinktype.php +++ b/typo3/sysext/linkvalidator/Classes/Linktype/InternalLinktype.php @@ -229,13 +229,18 @@ class InternalLinktype extends AbstractLinktype * * @param array $errorParams All parameters needed for the rendering of the error message * @return string Validation error message + * @todo change input parameter type to array in TYPO3 v13 */ public function getErrorMessage($errorParams) { + $lang = $this->getLanguageService(); + $errorType = $errorParams['errorType'] ?? ''; + if ($errorType === '') { + return $lang->sL('LLL:EXT:linkvalidator/Resources/Private/Language/Module/locallang.xlf:list.report.noinformation'); + } + $errorPage = null; $errorContent = null; - $lang = $this->getLanguageService(); - $errorType = $errorParams['errorType']; if (is_array($errorParams['page'] ?? false)) { switch ($errorType['page']) { case self::DELETED: diff --git a/typo3/sysext/linkvalidator/Classes/Linktype/LinktypeInterface.php b/typo3/sysext/linkvalidator/Classes/Linktype/LinktypeInterface.php index 3c3a322d2d56e4184644b7258da00a7d76930084..fe3b77c1fc1e383834b927e962fee506ff01717b 100644 --- a/typo3/sysext/linkvalidator/Classes/Linktype/LinktypeInterface.php +++ b/typo3/sysext/linkvalidator/Classes/Linktype/LinktypeInterface.php @@ -52,6 +52,7 @@ interface LinktypeInterface * Get the value of the private property errorParams. * * @return array All parameters needed for the rendering of the error message + * @todo change return type to array in TYPO3 v13 */ public function getErrorParams(); @@ -60,6 +61,7 @@ interface LinktypeInterface * * @param array $row Broken link record * @return string Parsed broken url + * @todo change input parameter type to array in TYPO3 v13 */ public function getBrokenUrl($row); diff --git a/typo3/sysext/linkvalidator/Classes/Repository/BrokenLinkRepository.php b/typo3/sysext/linkvalidator/Classes/Repository/BrokenLinkRepository.php index 7507303c394865be7d8d05496ae9e28de541b9b5..e1dcdb929ec731dfef93b48b191f55f13de22fdd 100644 --- a/typo3/sysext/linkvalidator/Classes/Repository/BrokenLinkRepository.php +++ b/typo3/sysext/linkvalidator/Classes/Repository/BrokenLinkRepository.php @@ -317,12 +317,20 @@ class BrokenLinkRepository return $results; } + /** + * Add broken link to table tx_linkvalidator_link + * + * @param array $record + * @param bool $isValid + * @param array|null $errorParams + * @throws \InvalidArgumentException + * @throws \UnexpectedValueException + * @todo Make default value of $errorParams [] instead of null and add strict typing in v13 + */ public function addBrokenLink($record, bool $isValid, array $errorParams = null): void { $response = ['valid' => $isValid]; - if ($errorParams) { - $response['errorParams'] = $errorParams; - } + $response['errorParams'] = $errorParams ?? []; $record['url_response'] = json_encode($response); GeneralUtility::makeInstance(ConnectionPool::class) ->getConnectionForTable(self::TABLE)