From af814ba2703b6ad63d567138fdba5d740d48496e Mon Sep 17 00:00:00 2001 From: Victor Dubiniuk Date: Wed, 13 May 2015 20:00:46 +0300 Subject: [PATCH 1/2] Allow change update channel via public API --- lib/private/util.php | 17 +++++++++++++++-- lib/public/util.php | 18 ++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/lib/private/util.php b/lib/private/util.php index 367199f773..46fb929a6b 100644 --- a/lib/private/util.php +++ b/lib/private/util.php @@ -388,10 +388,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 6eb5c6034c..f032d0a543 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 From 4c9734f6307b0773f7d92e19c62a58ad4e6ef7f1 Mon Sep 17 00:00:00 2001 From: Victor Dubiniuk Date: Fri, 15 May 2015 22:29:29 +0300 Subject: [PATCH 2/2] Test overriding channel --- tests/lib/public/util.php | 47 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 tests/lib/public/util.php diff --git a/tests/lib/public/util.php b/tests/lib/public/util.php new file mode 100644 index 0000000000..ebc4f70079 --- /dev/null +++ b/tests/lib/public/util.php @@ -0,0 +1,47 @@ +. + */ + +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'] + ]; + } +}