浏览代码

Merge pull request #15869 from nextcloud/multiple-version-backends

fix loading multiple version backends from one app
tags/v17.0.0beta1
Robin Appelman 4 年前
父节点
当前提交
817bdc47c8
没有帐户链接到提交者的电子邮件
共有 1 个文件被更改,包括 21 次插入10 次删除
  1. 21
    10
      apps/files_versions/lib/AppInfo/Application.php

+ 21
- 10
apps/files_versions/lib/AppInfo/Application.php 查看文件

@@ -65,25 +65,36 @@ class Application extends App {

public function registerVersionBackends() {
$server = $this->getContainer()->getServer();
$logger = $server->getLogger();
$appManager = $server->getAppManager();
/** @var IVersionManager $versionManager */
$versionManager = $this->getContainer()->getServer()->query(IVersionManager::class);
foreach($appManager->getInstalledApps() as $app) {
$appInfo = $appManager->getAppInfo($app);
if (isset($appInfo['versions'])) {
$backends = $appInfo['versions'];
foreach($backends as $backend) {
$class = $backend['@value'];
$for = $backend['@attributes']['for'];
try {
$backendObject = $server->query($class);
$versionManager->registerBackend($for, $backendObject);
} catch (\Exception $e) {
$logger->logException($e);
if (isset($backend['@value'])) {
$this->loadBackend($backend);
} else {
foreach ($backend as $singleBackend) {
$this->loadBackend($singleBackend);
}
}
}
}
}
}

private function loadBackend(array $backend) {
$server = $this->getContainer()->getServer();
$logger = $server->getLogger();
/** @var IVersionManager $versionManager */
$versionManager = $this->getContainer()->getServer()->query(IVersionManager::class);
$class = $backend['@value'];
$for = $backend['@attributes']['for'];
try {
$backendObject = $server->query($class);
$versionManager->registerBackend($for, $backendObject);
} catch (\Exception $e) {
$logger->logException($e);
}
}
}

正在加载...
取消
保存