aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/updatenotification/js/admin.js5
-rw-r--r--apps/updatenotification/lib/Controller/AdminController.php6
-rw-r--r--apps/updatenotification/lib/UpdateChecker.php4
-rw-r--r--apps/updatenotification/templates/admin.php13
-rw-r--r--apps/updatenotification/tests/Controller/AdminControllerTest.php13
-rw-r--r--apps/updatenotification/tests/UpdateCheckerTest.php5
-rw-r--r--config/config.sample.php2
-rw-r--r--lib/private/Updater/VersionCheck.php3
-rw-r--r--tests/lib/Updater/VersionCheckTest.php20
9 files changed, 53 insertions, 18 deletions
diff --git a/apps/updatenotification/js/admin.js b/apps/updatenotification/js/admin.js
index 3ca45a191d4..91d9f80b605 100644
--- a/apps/updatenotification/js/admin.js
+++ b/apps/updatenotification/js/admin.js
@@ -35,6 +35,11 @@ $(document).ready(function(){
body.removeAttr('id');
body.attr('id', 'body-settings');
}
+ },
+ error: function(){
+ OC.Notification.showTemporary(t('updatenotification', 'Could not start updater, please try the manual update'));
+ $('#oca_updatenotification_button').addClass('hidden');
+ $('#oca_updatenotification_section .button').removeClass('hidden');
}
});
});
diff --git a/apps/updatenotification/lib/Controller/AdminController.php b/apps/updatenotification/lib/Controller/AdminController.php
index 9f10f1b32f2..56f41ebf3ee 100644
--- a/apps/updatenotification/lib/Controller/AdminController.php
+++ b/apps/updatenotification/lib/Controller/AdminController.php
@@ -107,11 +107,13 @@ class AdminController extends Controller implements ISettings {
$notifyGroups = json_decode($this->config->getAppValue('updatenotification', 'notify_groups', '["admin"]'), true);
$params = [
- 'isNewVersionAvailable' => ($updateState === []) ? false : true,
+ 'isNewVersionAvailable' => !empty($updateState['updateAvailable']),
'lastChecked' => $lastUpdateCheck,
'currentChannel' => $currentChannel,
'channels' => $channels,
- 'newVersionString' => ($updateState === []) ? '' : $updateState['updateVersion'],
+ 'newVersionString' => (empty($updateState['updateVersion'])) ? '' : $updateState['updateVersion'],
+ 'downloadLink' => (empty($updateState['downloadLink'])) ? '' : $updateState['downloadLink'],
+ 'updaterEnabled' => $updateState['updaterEnabled'],
'notify_groups' => implode('|', $notifyGroups),
];
diff --git a/apps/updatenotification/lib/UpdateChecker.php b/apps/updatenotification/lib/UpdateChecker.php
index dd51831007c..040a6c3a6ac 100644
--- a/apps/updatenotification/lib/UpdateChecker.php
+++ b/apps/updatenotification/lib/UpdateChecker.php
@@ -46,9 +46,13 @@ class UpdateChecker {
if(isset($data['version']) && $data['version'] !== '' && $data['version'] !== []) {
$result['updateAvailable'] = true;
$result['updateVersion'] = $data['versionstring'];
+ $result['updaterEnabled'] = $data['autoupdater'] === '1';
if(substr($data['web'], 0, 8) === 'https://') {
$result['updateLink'] = $data['web'];
}
+ if(substr($data['url'], 0, 8) === 'https://') {
+ $result['downloadLink'] = $data['url'];
+ }
return $result;
}
diff --git a/apps/updatenotification/templates/admin.php b/apps/updatenotification/templates/admin.php
index 68ef1d423b4..78337eb313b 100644
--- a/apps/updatenotification/templates/admin.php
+++ b/apps/updatenotification/templates/admin.php
@@ -14,13 +14,18 @@
$currentChannel = $_['currentChannel'];
?>
<form id="oca_updatenotification_section" class="followupsection">
- <?php if($isNewVersionAvailable === true): ?>
+ <?php if($isNewVersionAvailable === true) { ?>
<strong><?php p($l->t('A new version is available: %s', [$newVersionString])); ?></strong>
- <input type="button" id="oca_updatenotification_button" value="<?php p($l->t('Open updater')) ?>">
- <?php else: ?>
+ <?php if ($_['updaterEnabled']) { ?>
+ <input type="button" id="oca_updatenotification_button" value="<?php p($l->t('Open updater')) ?>">
+ <?php } ?>
+ <?php if (!empty($_['downloadLink'])) { ?>
+ <a href="<?php p($_['downloadLink']); ?>" class="button<?php if ($_['updaterEnabled']) { p(' hidden'); } ?>"><?php p($l->t('Download now')) ?></a>
+ <?php } ?>
+ <?php } else { ?>
<strong><?php print_unescaped($l->t('Your version is up to date.')); ?></strong>
<span class="icon-info svg" title="<?php p($l->t('Checked on %s', [$lastCheckedDate])) ?>"></span>
- <?php endif; ?>
+ <?php } ?>
<p>
<label for="release-channel"><?php p($l->t('Update channel:')) ?></label>
diff --git a/apps/updatenotification/tests/Controller/AdminControllerTest.php b/apps/updatenotification/tests/Controller/AdminControllerTest.php
index 336edffc957..2360663e1c5 100644
--- a/apps/updatenotification/tests/Controller/AdminControllerTest.php
+++ b/apps/updatenotification/tests/Controller/AdminControllerTest.php
@@ -111,7 +111,12 @@ class AdminControllerTest extends TestCase {
$this->updateChecker
->expects($this->once())
->method('getUpdateState')
- ->willReturn(['updateVersion' => '8.1.2']);
+ ->willReturn([
+ 'updateAvailable' => true,
+ 'updateVersion' => '8.1.2',
+ 'downloadLink' => 'https://downloads.nextcloud.org/server',
+ 'updaterEnabled' => true,
+ ]);
$params = [
'isNewVersionAvailable' => true,
@@ -119,6 +124,8 @@ class AdminControllerTest extends TestCase {
'currentChannel' => \OCP\Util::getChannel(),
'channels' => $channels,
'newVersionString' => '8.1.2',
+ 'downloadLink' => 'https://downloads.nextcloud.org/server',
+ 'updaterEnabled' => true,
'notify_groups' => 'admin',
];
@@ -155,7 +162,7 @@ class AdminControllerTest extends TestCase {
$this->updateChecker
->expects($this->once())
->method('getUpdateState')
- ->willReturn([]);
+ ->willReturn(['updaterEnabled' => false]);
$params = [
'isNewVersionAvailable' => false,
@@ -163,6 +170,8 @@ class AdminControllerTest extends TestCase {
'currentChannel' => \OCP\Util::getChannel(),
'channels' => $channels,
'newVersionString' => '',
+ 'downloadLink' => '',
+ 'updaterEnabled' => 0,
'notify_groups' => 'admin',
];
diff --git a/apps/updatenotification/tests/UpdateCheckerTest.php b/apps/updatenotification/tests/UpdateCheckerTest.php
index ce19cc60f2c..c5c3034dd72 100644
--- a/apps/updatenotification/tests/UpdateCheckerTest.php
+++ b/apps/updatenotification/tests/UpdateCheckerTest.php
@@ -50,11 +50,13 @@ class UpdateCheckerTest extends TestCase {
'versionstring' => 'Nextcloud 123',
'web'=> 'javascript:alert(1)',
'url'=> 'javascript:alert(2)',
+ 'autoupdater'=> '0',
]);
$expected = [
'updateAvailable' => true,
'updateVersion' => 'Nextcloud 123',
+ 'updaterEnabled' => false,
];
$this->assertSame($expected, $this->updateChecker->getUpdateState());
}
@@ -68,12 +70,15 @@ class UpdateCheckerTest extends TestCase {
'versionstring' => 'Nextcloud 123',
'web'=> 'https://docs.nextcloud.com/myUrl',
'url'=> 'https://downloads.nextcloud.org/server',
+ 'autoupdater'=> '1',
]);
$expected = [
'updateAvailable' => true,
'updateVersion' => 'Nextcloud 123',
+ 'updaterEnabled' => true,
'updateLink' => 'https://docs.nextcloud.com/myUrl',
+ 'downloadLink' => 'https://downloads.nextcloud.org/server',
];
$this->assertSame($expected, $this->updateChecker->getUpdateState());
}
diff --git a/config/config.sample.php b/config/config.sample.php
index d6680caac18..3aa0f353c59 100644
--- a/config/config.sample.php
+++ b/config/config.sample.php
@@ -519,7 +519,7 @@ $CONFIG = array(
/**
* URL that Nextcloud should use to look for updates
*/
-'updater.server.url' => 'https://updates.nextcloud.com/update-server/',
+'updater.server.url' => 'https://updates.nextcloud.com/updater_server/',
/**
* Is Nextcloud connected to the Internet or running in a closed network?
diff --git a/lib/private/Updater/VersionCheck.php b/lib/private/Updater/VersionCheck.php
index e846052a300..f66e109fd26 100644
--- a/lib/private/Updater/VersionCheck.php
+++ b/lib/private/Updater/VersionCheck.php
@@ -59,7 +59,7 @@ class VersionCheck {
return json_decode($this->config->getAppValue('core', 'lastupdateResult'), true);
}
- $updaterUrl = $this->config->getSystemValue('updater.server.url', 'https://updates.nextcloud.com/update-server/');
+ $updaterUrl = $this->config->getSystemValue('updater.server.url', 'https://updates.nextcloud.com/updater_server/');
$this->config->setAppValue('core', 'lastupdatedat', time());
@@ -89,6 +89,7 @@ class VersionCheck {
$tmp['versionstring'] = (string)$data->versionstring;
$tmp['url'] = (string)$data->url;
$tmp['web'] = (string)$data->web;
+ $tmp['autoupdater'] = (string)$data->autoupdater;
} else {
libxml_clear_errors();
}
diff --git a/tests/lib/Updater/VersionCheckTest.php b/tests/lib/Updater/VersionCheckTest.php
index d6b457da8a2..c85516c320e 100644
--- a/tests/lib/Updater/VersionCheckTest.php
+++ b/tests/lib/Updater/VersionCheckTest.php
@@ -83,6 +83,7 @@ class VersionCheckTest extends \Test\TestCase {
'versionstring' => 'ownCloud 8.0.4',
'url' => 'https://download.owncloud.org/community/owncloud-8.0.4.zip',
'web' => 'http://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html',
+ 'autoupdater' => '0',
];
$this->config
@@ -93,7 +94,7 @@ class VersionCheckTest extends \Test\TestCase {
$this->config
->expects($this->at(1))
->method('getSystemValue')
- ->with('updater.server.url', 'https://updates.nextcloud.com/update-server/')
+ ->with('updater.server.url', 'https://updates.nextcloud.com/updater_server/')
->willReturnArgument(1);
$this->config
->expects($this->at(2))
@@ -120,11 +121,12 @@ class VersionCheckTest extends \Test\TestCase {
<versionstring>ownCloud 8.0.4</versionstring>
<url>https://download.owncloud.org/community/owncloud-8.0.4.zip</url>
<web>http://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html</web>
+ <autoupdater>0</autoupdater>
</owncloud>';
$this->updater
->expects($this->once())
->method('getUrlContent')
- ->with($this->buildUpdateUrl('https://updates.nextcloud.com/update-server/'))
+ ->with($this->buildUpdateUrl('https://updates.nextcloud.com/updater_server/'))
->will($this->returnValue($updateXml));
$this->assertSame($expectedResult, $this->updater->check());
@@ -139,7 +141,7 @@ class VersionCheckTest extends \Test\TestCase {
$this->config
->expects($this->at(1))
->method('getSystemValue')
- ->with('updater.server.url', 'https://updates.nextcloud.com/update-server/')
+ ->with('updater.server.url', 'https://updates.nextcloud.com/updater_server/')
->willReturnArgument(1);
$this->config
->expects($this->at(2))
@@ -164,7 +166,7 @@ class VersionCheckTest extends \Test\TestCase {
$this->updater
->expects($this->once())
->method('getUrlContent')
- ->with($this->buildUpdateUrl('https://updates.nextcloud.com/update-server/'))
+ ->with($this->buildUpdateUrl('https://updates.nextcloud.com/updater_server/'))
->will($this->returnValue($updateXml));
$this->assertSame([], $this->updater->check());
@@ -176,6 +178,7 @@ class VersionCheckTest extends \Test\TestCase {
'versionstring' => '',
'url' => '',
'web' => '',
+ 'autoupdater' => '',
];
$this->config
@@ -186,7 +189,7 @@ class VersionCheckTest extends \Test\TestCase {
$this->config
->expects($this->at(1))
->method('getSystemValue')
- ->with('updater.server.url', 'https://updates.nextcloud.com/update-server/')
+ ->with('updater.server.url', 'https://updates.nextcloud.com/updater_server/')
->willReturnArgument(1);
$this->config
->expects($this->at(2))
@@ -209,11 +212,12 @@ class VersionCheckTest extends \Test\TestCase {
<versionstring></versionstring>
<url></url>
<web></web>
+ <autoupdater></autoupdater>
</owncloud>';
$this->updater
->expects($this->once())
->method('getUrlContent')
- ->with($this->buildUpdateUrl('https://updates.nextcloud.com/update-server/'))
+ ->with($this->buildUpdateUrl('https://updates.nextcloud.com/updater_server/'))
->will($this->returnValue($updateXml));
$this->assertSame($expectedResult, $this->updater->check());
@@ -230,7 +234,7 @@ class VersionCheckTest extends \Test\TestCase {
$this->config
->expects($this->at(1))
->method('getSystemValue')
- ->with('updater.server.url', 'https://updates.nextcloud.com/update-server/')
+ ->with('updater.server.url', 'https://updates.nextcloud.com/updater_server/')
->willReturnArgument(1);
$this->config
->expects($this->at(2))
@@ -255,7 +259,7 @@ class VersionCheckTest extends \Test\TestCase {
$this->updater
->expects($this->once())
->method('getUrlContent')
- ->with($this->buildUpdateUrl('https://updates.nextcloud.com/update-server/'))
+ ->with($this->buildUpdateUrl('https://updates.nextcloud.com/updater_server/'))
->will($this->returnValue($updateXml));
$this->assertSame($expectedResult, $this->updater->check());