aIncludingExtensionsByModuleName) === 0) { foreach ($this->ReadItopExtensions() as $oExtension) { $aModuleNames = $oExtension->aModules; if (is_array($aModuleNames) && count($aModuleNames) > 0) { foreach ($aModuleNames as $sModule) { $aExtensions = $this->aIncludingExtensionsByModuleName[$sModule] ?? []; $aExtensions[] = $oExtension->sLabel.'/'.$oExtension->sVersion; $this->aIncludingExtensionsByModuleName[$sModule] = $aExtensions; } } } } return $this->aIncludingExtensionsByModuleName[$sModuleName] ?? []; } /** * @return iTopExtension[] */ public function ReadItopExtensions(): array { if (count($this->aItopExtensions) === 0) { $oExtensionsMap = new iTopExtensionsMap(); $oExtensionsMap->LoadInstalledExtensionsFromDatabase(MetaModel::GetConfig()); $this->aItopExtensions = $oExtensionsMap->GetAllExtensionsToDisplayInSetup(true); uasort($this->aItopExtensions, function (iTopExtension $oiTopExtension1, iTopExtension $oiTopExtension2) { return strcmp($oiTopExtension1->sLabel, $oiTopExtension2->sLabel); }); } return $this->aItopExtensions; } }