From 9833a138195b9c0e52220ddca474720bb97a9f8d Mon Sep 17 00:00:00 2001 From: Markus Gerdes Date: Thu, 20 Mar 2025 13:40:31 +0100 Subject: [PATCH] feat: issue 42 remove Extensionmanager\Utility\ListUtility The used Class is an internal API and should not be used. Problems occured during usage of ExtBase while retrieving TER informations of an extension without an existing TSFE. --- Classes/Details/ExtensionDetails.php | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/Classes/Details/ExtensionDetails.php b/Classes/Details/ExtensionDetails.php index db48df0..51ca3f9 100644 --- a/Classes/Details/ExtensionDetails.php +++ b/Classes/Details/ExtensionDetails.php @@ -18,11 +18,10 @@ * The TYPO3 project - inspiring people to share! */ -use TYPO3\CMS\Core\Utility\GeneralUtility; +use SchamsNet\Nagios\Controller\NagiosController; +use TYPO3\CMS\Core\Package\PackageManager; use TYPO3\CMS\Core\Utility\ExtensionManagementUtility; use TYPO3\CMS\Extbase\Object\ObjectManager; -use TYPO3\CMS\Extensionmanager\Utility\ListUtility; -use SchamsNet\Nagios\Controller\NagiosController; /** * Class contains methods for extension-related details, such as extension versions. @@ -35,16 +34,16 @@ class ExtensionDetails private $availableExtensions = []; /** - * Extensionmanager ListUtility + * PackageManager */ - private ListUtility $extensionListUtility; + private PackageManager $packageManager; /** * Constructor */ - public function __construct(ListUtility $extensionListUtility) + public function __construct(PackageManager $packageManager) { - $this->extensionListUtility = $extensionListUtility; + $this->packageManager = $packageManager; } /** @@ -53,16 +52,14 @@ public function __construct(ListUtility $extensionListUtility) public function getAvailableExtensions(bool $loadedExtensionsOnly = false): array { $installedExtensions = []; - $this->availableExtensions = $this->extensionListUtility - ->getAvailableAndInstalledExtensionsWithAdditionalInformation(); + $this->availableExtensions = $this->packageManager->getAvailablePackages(); foreach ($this->availableExtensions as $extensionKey => $extensionDetails) { - if (array_key_exists('type', $extensionDetails) - && array_key_exists('version', $extensionDetails) - && $this->isValidExtensionKey($extensionKey) - && strtolower($extensionDetails['type']) == 'local') { + if ($extensionDetails->getPackageMetaData()->isExtensionType() && + !$extensionDetails->getPackageMetaData()->isFrameworkType() && + $this->isValidExtensionKey($extensionKey)) { if (!$loadedExtensionsOnly - || ($loadedExtensionsOnly && ExtensionManagementUtility::isLoaded($extensionKey)) + || ($loadedExtensionsOnly && $this->packageManager->isPackageActive($extensionKey)) ) { $extensionVersion = $this->getExtensionVersion($extensionKey); if ($extensionVersion) {