public function getInstalledExtensions(Context
$context, bool
$loadCloudExtensions = true, ?Criteria
$searchCriteria = null
): ExtensionCollection
{ $criteria =
$searchCriteria ?:
new Criteria();
$criteria->
addAssociation('translations'
);
/** @var AppCollection $installedApps */
$installedApps =
$this->appRepository->
search($criteria,
$context)->
getEntities();
/** @var PluginCollection $installedPlugins */
$installedPlugins =
$this->pluginRepository->
search($criteria,
$context)->
getEntities();
$pluginCollection =
$this->extensionLoader->
loadFromPluginCollection($context,
$installedPlugins);
$localExtensions =
$this->extensionLoader->
loadFromAppCollection($context,
$installedApps)->
merge($pluginCollection);
if ($loadCloudExtensions) { return $this->extensionListingLoader->
load($localExtensions,
$context);
} return $localExtensions;
} public function getAppEntityFromTechnicalName(string
$technicalName, Context
$context): AppEntity
{