Merge pull request #2144 from nextcloud/fix_1303

Do not cache version info in the session
This commit is contained in:
Morris Jobke 2016-11-15 23:13:53 +01:00 committed by GitHub
commit cb97cf559b
2 changed files with 29 additions and 33 deletions

View File

@ -66,6 +66,9 @@ class OC_Util {
private static $rootMounted = false;
private static $fsSetup = false;
/** @var array Local cache of version.php */
private static $versionCache = null;
protected static function getAppManager() {
return \OC::$server->getAppManager();
}
@ -397,7 +400,7 @@ class OC_Util {
*/
public static function getVersion() {
OC_Util::loadVersion();
return \OC::$server->getSession()->get('OC_Version');
return self::$versionCache['OC_Version'];
}
/**
@ -407,7 +410,7 @@ class OC_Util {
*/
public static function getVersionString() {
OC_Util::loadVersion();
return \OC::$server->getSession()->get('OC_VersionString');
return self::$versionCache['OC_VersionString'];
}
/**
@ -424,7 +427,13 @@ class OC_Util {
*/
public static function getChannel() {
OC_Util::loadVersion();
return \OC::$server->getSession()->get('OC_Channel');
// Allow overriding update channel
if (\OC::$server->getSystemConfig()->getValue('installed', false)) {
self::$versionCache['OC_Channel'] = \OC::$server->getAppConfig()->getValue('core', 'OC_Channel');
}
return self::$versionCache['OC_Channel'];
}
/**
@ -433,42 +442,30 @@ class OC_Util {
*/
public static function getBuild() {
OC_Util::loadVersion();
return \OC::$server->getSession()->get('OC_Build');
return self::$versionCache['OC_Build'];
}
/**
* @description load the version.php into the session as cache
*/
private static function loadVersion() {
$timestamp = filemtime(OC::$SERVERROOT . '/version.php');
if (!\OC::$server->getSession()->exists('OC_Version') or OC::$server->getSession()->get('OC_Version_Timestamp') != $timestamp) {
require OC::$SERVERROOT . '/version.php';
$session = \OC::$server->getSession();
/** @var $timestamp int */
$session->set('OC_Version_Timestamp', $timestamp);
/** @var $OC_Version string */
$session->set('OC_Version', $OC_Version);
/** @var $OC_VersionString string */
$session->set('OC_VersionString', $OC_VersionString);
/** @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 {
/** @var $OC_Channel string */
$channel = $OC_Channel;
}
if (!is_null($channel)) {
$session->set('OC_Channel', $channel);
} else {
/** @var $OC_Channel string */
$session->set('OC_Channel', $OC_Channel);
}
if (self::$versionCache !== null) {
return;
}
$timestamp = filemtime(OC::$SERVERROOT . '/version.php');
require OC::$SERVERROOT . '/version.php';
/** @var $timestamp int */
self::$versionCache['OC_Version_Timestamp'] = $timestamp;
/** @var $OC_Version string */
self::$versionCache['OC_Version'] = $OC_Version;
/** @var $OC_VersionString string */
self::$versionCache['OC_VersionString'] = $OC_VersionString;
/** @var $OC_Build string */
self::$versionCache['OC_Build'] = $OC_Build;
/** @var $OC_Channel string */
self::$versionCache['OC_Channel'] = $OC_Channel;
}
/**

View File

@ -83,7 +83,6 @@ class Util {
*/
public static function setChannel($channel) {
//Flush timestamp to reload version.php
\OC::$server->getSession()->set('OC_Version_Timestamp', 0);
\OC::$server->getAppConfig()->setValue('core', 'OC_Channel', $channel);
\OC::$server->getConfig()->setSystemValue('updater.release.channel', $channel);
}