[TYPO3-dev] how to iterate over LoadedExtensionArrayElement
Alexander Stehlik
alexander.stehlik at gmail.com
Wed Nov 6 09:50:47 CET 2013
Hi Franz,
is there a reason why you do not use
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded()
for that?
The code in this method is pretty simple:
$isLoaded = static::$packageManager->isPackageActive($key);
if ($exitOnError && !$isLoaded) {
throw new \BadFunctionCallException('TYPO3 Fatal Error: Extension "' .
$key . '" is not loaded!', 1270853910);
}
return $isLoaded;
Of course you could also directly use the isPackageActive() in the
PackageManager.
I hope I got the point of your question right ;)
Cheers,
Alex
Am 04.11.2013 14:40, schrieb Franz Holzinger:
> Hello,
>
> since TYPO3 6.2 the TYPO3_LOADED_EXT envirnoment variable gives an
> object of the class TYPO3\CMS\Core\Compatibility\LoadedExtensionsArray.
> If I iterate over its elements in a foreach:
>
> foreach ($loadedExt as $k => $v) {
> ..
> }
>
> then I get element objects of the class
> TYPO3\CMS\Core\Compatibility\LoadedExtensionArrayElement.
>
> But how must the PHP code iterate over this element in order to retrieve
> the information if an extension key is installed or not? When I debug
> the object, then it is very big. I do not find the solution.
>
>
> In TYPO3 4.x this code could discover if an extension $rawKey has been
> installed.
>
> ----------------
> class tx_div2007 {
>
> ...
>
> /**
> * Check if the given extension key is within the loaded extensions
> *
> * The key can be given in the regular format or with underscores
> stripped.
> *
> * @param string extension key to check
> * @return boolean is the key valid?
> */
> public function getValidKey ($rawKey) {
>
> $loadedExt = self::getGlobal('TYPO3_LOADED_EXT');
> $uKeys = array_keys($loadedExt);
> foreach((array)$uKeys as $uKey) {
> if( str_replace('_', '', $uKey) == str_replace('_', '', $rawKey) ){
> $result = $uKey;
> }
> }
>
> return $result ? $result : FALSE;
>
>
> }
> ...
>
> }
> --------------
> This does not work any more under TYPO3 6.x.
>
>
> How must I change this code for TYPO3 6.x in order to use the iterator
> LoadedExtensionArrayElement?
>
> ./typo3/sysext/core/Classes/Compatibility/LoadedExtensionArrayElement.php
>
>
> - Franz
>
More information about the TYPO3-dev
mailing list