diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2015-05-26 11:42:41 +0200 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2015-05-26 11:42:41 +0200 |
commit | 3babcd034438476aa87c1b970d6cfa98f2ded625 (patch) | |
tree | 13699851f383e649a9db40f5e4244c3f97918b28 | |
parent | 6198fb20cb20af2c9192a470f6cb2be4c43721ad (diff) | |
parent | 4c9734f6307b0773f7d92e19c62a58ad4e6ef7f1 (diff) | |
download | nextcloud-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.php | 17 | ||||
-rw-r--r-- | lib/public/util.php | 18 | ||||
-rw-r--r-- | tests/lib/public/util.php | 47 |
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'] + ]; + } +} |