summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2015-05-26 11:42:41 +0200
committerThomas Müller <thomas.mueller@tmit.eu>2015-05-26 11:42:41 +0200
commit3babcd034438476aa87c1b970d6cfa98f2ded625 (patch)
tree13699851f383e649a9db40f5e4244c3f97918b28
parent6198fb20cb20af2c9192a470f6cb2be4c43721ad (diff)
parent4c9734f6307b0773f7d92e19c62a58ad4e6ef7f1 (diff)
downloadnextcloud-server-3babcd034438476aa87c1b970d6cfa98f2ded625.tar.gz
nextcloud-server-3babcd034438476aa87c1b970d6cfa98f2ded625.zip
Merge pull request #16339 from owncloud/master-override-channel
Allow change update channel via public API
-rw-r--r--lib/private/util.php17
-rw-r--r--lib/public/util.php18
-rw-r--r--tests/lib/public/util.php47
3 files changed, 80 insertions, 2 deletions
diff --git a/lib/private/util.php b/lib/private/util.php
index 4470006b90c..c2f7d0d1a87 100644
--- a/lib/private/util.php
+++ b/lib/private/util.php
@@ -385,10 +385,23 @@ class OC_Util {
$session->set('OC_Version', $OC_Version);
/** @var $OC_VersionString string */
$session->set('OC_VersionString', $OC_VersionString);
- /** @var $OC_Channel string */
- $session->set('OC_Channel', $OC_Channel);
/** @var $OC_Build string */
$session->set('OC_Build', $OC_Build);
+
+ // Allow overriding update channel
+
+ if (\OC::$server->getSystemConfig()->getValue('installed', false)) {
+ $channel = \OC::$server->getAppConfig()->getValue('core', 'OC_Channel');
+ } else {
+ $channel = $OC_Channel;
+ }
+
+ if (!is_null($channel)) {
+ $session->set('OC_Channel', $channel);
+ } else {
+ /** @var $OC_Channel string */
+ $session->set('OC_Channel', $OC_Channel);
+ }
}
}
diff --git a/lib/public/util.php b/lib/public/util.php
index 6eb5c6034c1..f032d0a5431 100644
--- a/lib/public/util.php
+++ b/lib/public/util.php
@@ -69,6 +69,24 @@ class Util {
public static function getVersion() {
return(\OC_Util::getVersion());
}
+
+ /**
+ * Set current update channel
+ * @param string $channel
+ */
+ public static function setChannel($channel) {
+ //Flush timestamp to reload version.php
+ \OC::$server->getSession()->set('OC_Version_Timestamp', 0);
+ return \OC::$server->getAppConfig()->setValue('core', 'OC_Channel', $channel);
+ }
+
+ /**
+ * Get current update channel
+ * @return string
+ */
+ public static function getChannel() {
+ return \OC_Util::getChannel();
+ }
/**
* send an email
diff --git a/tests/lib/public/util.php b/tests/lib/public/util.php
new file mode 100644
index 00000000000..ebc4f70079b
--- /dev/null
+++ b/tests/lib/public/util.php
@@ -0,0 +1,47 @@
+<?php
+/**
+ * ownCloud
+ *
+ * @author Victor Dubiniuk
+ * @copyright 2015 Victor Dubiniuk victor.dubiniuk@owncloud.com
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+class Test_Public_Util extends \Test\TestCase {
+ protected function setUp() {
+ parent::setUp();
+ OCP\Contacts::clear();
+ }
+
+ /**
+ * @dataProvider channelProvider
+ *
+ * @param string $channel
+ */
+ public function testOverrideChannel($channel) {
+ \OCP\Util::setChannel($channel);
+ $actual = \OCP\Util::getChannel($channel);
+ $this->assertEquals($channel, $actual);
+ }
+
+ public function channelProvider() {
+ return [
+ ['daily'],
+ ['beta'],
+ ['stable'],
+ ['production']
+ ];
+ }
+}