diff --git a/Classes/Configuration/ExtensionConfigurationManager.php b/Classes/Configuration/ExtensionConfigurationManager.php index 9ed2963..f363d6d 100644 --- a/Classes/Configuration/ExtensionConfigurationManager.php +++ b/Classes/Configuration/ExtensionConfigurationManager.php @@ -149,7 +149,7 @@ public function configureForSite(Site $site, int $languageId = 0): void if ($language !== null) { $languageConfiguration = $language->toArray(); - if ($languageConfiguration['qbank_deploymentSites']) { + if ($languageConfiguration['qbank_deploymentSites'] ?? false) { $this->deploymentSites = GeneralUtility::intExplode( ',', $languageConfiguration['qbank_deploymentSites'], @@ -160,7 +160,7 @@ public function configureForSite(Site $site, int $languageId = 0): void } } - if ($site->getConfiguration()['qbank_deploymentSites']) { + if ($site->getConfiguration()['qbank_deploymentSites'] ?? false) { $this->deploymentSites = GeneralUtility::intExplode( ',', $site->getConfiguration()['qbank_deploymentSites'], diff --git a/Classes/FormEngine/Container/QbankSelectorButtonContainer.php b/Classes/FormEngine/Container/QbankSelectorButtonContainer.php index b2f666a..9169090 100644 --- a/Classes/FormEngine/Container/QbankSelectorButtonContainer.php +++ b/Classes/FormEngine/Container/QbankSelectorButtonContainer.php @@ -5,6 +5,7 @@ namespace Pixelant\Qbank\FormEngine\Container; use Pixelant\Qbank\Configuration\ExtensionConfigurationManager; +use Pixelant\Qbank\Utility\CompatibilityUtility; use Pixelant\Qbank\Utility\QbankUtility; use TYPO3\CMS\Backend\Form\Container\InlineControlContainer; use TYPO3\CMS\Core\Imaging\Icon; @@ -167,12 +168,16 @@ protected function getExtensionConfigurationManager(): ExtensionConfigurationMan $languageId = -1; if ($languageField) { - $languageId = (int)$this->data['databaseRow'][$languageField][0]; + if (CompatibilityUtility::typo3VersionIsLessThan('11')) { + $languageId = (int)$this->data['databaseRow'][$languageField][0]; + } else { + $languageId = (int)$this->data['databaseRow'][$languageField]; + } } - $pageId = $this->data['defaultLanguageRow']['pid']; + $pageId = $this->data['defaultLanguageRow']['pid'] ?? null; if ($this->data['tableName'] === 'pages') { - $pageId = $this->data['defaultLanguageRow']['uid']; + $pageId = $this->data['defaultLanguageRow']['uid'] ?? null; } if ($pageId === null) { diff --git a/Classes/Repository/MediaUsageRepository.php b/Classes/Repository/MediaUsageRepository.php index 016dacd..b348d54 100644 --- a/Classes/Repository/MediaUsageRepository.php +++ b/Classes/Repository/MediaUsageRepository.php @@ -59,7 +59,7 @@ public function add(MediaUsage $mediaUsage): void */ public function removeOneByQbankAndLocalId(int $qbankId, string $localId): void { - $usage = $this->findByQbankAndLocalId($qbankId, $localId)[0]; + $usage = $this->findByQbankAndLocalId($qbankId, $localId)[0] ?? false; if (!$usage) { return; diff --git a/Classes/Service/QbankService.php b/Classes/Service/QbankService.php index 1da26da..9bfd8ed 100644 --- a/Classes/Service/QbankService.php +++ b/Classes/Service/QbankService.php @@ -262,12 +262,13 @@ public function synchronizeMetadata(int $fileId): void /** @var MediaPropertyValue $qbankPropertyValue */ foreach ($qbankPropertyValues as $qbankPropertyValue) { $sourceProperty = $qbankPropertyValue->getProperty()->getKey(); - $targetProperty = $metaDataMappings[$sourceProperty]; - if (!isset($targetProperty)) { + if (!isset($metaDataMappings[$sourceProperty])) { continue; } + $targetProperty = $metaDataMappings[$sourceProperty]; + $this->eventDispatcher->dispatch(new FilePropertyChangeEvent( $file, $targetProperty, diff --git a/Classes/Utility/CompatibilityUtility.php b/Classes/Utility/CompatibilityUtility.php new file mode 100644 index 0000000..08674a6 --- /dev/null +++ b/Classes/Utility/CompatibilityUtility.php @@ -0,0 +1,80 @@ + VersionNumberUtility::convertVersionNumberToInteger($version); + } + + /** + * Returns true if the current TYPO3 version is greater than or equal to $version + * + * @param string $version + * @return bool + */ + public static function typo3VersionIsGreaterThanOrEqualTo(string $version) + { + return self::getTypo3VersionInteger() >= VersionNumberUtility::convertVersionNumberToInteger($version); + } + + /** + * Returns the TYPO3 version as an integer + * + * @return int + */ + public static function getTypo3VersionInteger() + { + return VersionNumberUtility::convertVersionNumberToInteger(VersionNumberUtility::getNumericTypo3Version()); + } +} diff --git a/Classes/Utility/QbankUtility.php b/Classes/Utility/QbankUtility.php index a83483c..c9a0566 100644 --- a/Classes/Utility/QbankUtility.php +++ b/Classes/Utility/QbankUtility.php @@ -104,7 +104,12 @@ public static function getApi(): QBankApi */ public static function getAccessToken(): string { - return self::getApi()->getTokens()['accessToken']->getToken(); + // qbnk/qbank3api-phpwrapper ^4.9 returns an object. In later versions the value is a string. + if (is_object(self::getApi()->getTokens()['accessToken'])) { + return self::getApi()->getTokens()['accessToken']->getToken(); + } + + return self::getApi()->getTokens()['accessToken']; } /** diff --git a/composer.json b/composer.json index a62dfb9..8fda134 100644 --- a/composer.json +++ b/composer.json @@ -19,9 +19,9 @@ } ], "require": { - "php": "^7.2", - "qbnk/qbank3api-phpwrapper": "^3.4", - "typo3/cms-core": "^10.4" + "php": "~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0", + "qbnk/qbank3api-phpwrapper": "^4.9 || ^5.1", + "typo3/cms-core": "^10.4 || ^11.5.2" }, "replace": { "typo3-ter/qbank": "self.version" @@ -30,9 +30,9 @@ "codeception/codeception": "^4.1.5", "helhum/typo3-composer-setup": "^0.5.7", "nimut/testing-framework": "^5.0.3", - "phpunit/phpunit": "^7.5.20", - "seld/jsonlint": "^1.8", - "typo3/cms-fluid-styled-content": "^9.5 || ^10.4" + "phpunit/phpunit": "^8.5.28", + "seld/jsonlint": "^1.9", + "typo3/cms-fluid-styled-content": "^10.4 || ^11.5.2" }, "suggest": { "typo3/cms-filemetadata": "For additional meta data fields." diff --git a/ext_emconf.php b/ext_emconf.php index 2d1c2cf..349f158 100644 --- a/ext_emconf.php +++ b/ext_emconf.php @@ -10,7 +10,7 @@ 'state' => 'stable', 'createDirs' => '', 'clearCacheOnLoad' => true, - 'version' => '1.1.1', + 'version' => '1.2.0', 'constraints' => [ 'depends' => [ 'typo3' => '10.4.0-10.4.99',