From 2bca5aa2cb4a2156be59c2df1f2d5b0f8ebcbdeb Mon Sep 17 00:00:00 2001 From: Pranav Kant Date: Mon, 24 Oct 2016 15:45:17 +0530 Subject: [PATCH] Handle cache for test server options --- controller/documentcontroller.php | 47 ++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/controller/documentcontroller.php b/controller/documentcontroller.php index 35c3aef1..5fbbb2d6 100644 --- a/controller/documentcontroller.php +++ b/controller/documentcontroller.php @@ -137,12 +137,25 @@ class DocumentController extends Controller { /** * Return the original wopi url or test wopi url + */ + private function getWopiUrl($tester) { + $wopiurl = ''; + if ($tester) { + $wopiurl = $this->appConfig->getAppValue('test_wopi_url'); + } else { + $wopiurl = $this->appConfig->getAppValue('wopi_url'); + } + + return $wopiurl; + } + + /** + * Return true if the currently logged in user is a tester. * This depends on whether current user is the member of one of the groups - * mentioned in settings in which case different wopi url (aka - * test_wopi_url) is used + * mentioned in settings (test_server_groups) */ - private function getWopiUrl() { - $wopiurl = $this->appConfig->getAppValue('wopi_url'); + private function isTester() { + $tester = false; $user = \OC::$server->getUserSession()->getUser()->getUID(); $testgroups = array_filter(explode('|', $this->appConfig->getAppValue('test_server_groups'))); @@ -158,11 +171,13 @@ class DocumentController extends Controller { 'user' => $user, 'group' => $testgroup ]); - return $this->appConfig->getAppValue('test_wopi_url'); + + $tester = true; + break; } } - return $wopiurl; + return $tester; } /** Return the content of discovery.xml - either from cache, or download it. @@ -170,14 +185,18 @@ class DocumentController extends Controller { private function getDiscovery(){ \OC::$server->getLogger()->debug('getDiscovery(): Getting discovery.xml from the cache.'); - $wopiRemote = $this->getWopiUrl(); - + $tester = $this->isTester(); + $wopiRemote = $this->getWopiUrl($tester); + $discoveryKey = 'discovery.xml'; + if ($tester) { + $discoveryKey = 'discovery.xml_test'; + } // Provides access to information about the capabilities of a WOPI client // and the mechanisms for invoking those abilities through URIs. $wopiDiscovery = $wopiRemote . '/hosting/discovery'; // Read the memcached value (if the memcache is installed) - $discovery = $this->cache->get('discovery.xml'); + $discovery = $this->cache->get($discoveryKey); if (is_null($discovery)) { $contact_admin = $this->l10n->t('Please contact the "%s" administrator.', array($wopiRemote)); @@ -212,8 +231,8 @@ class DocumentController extends Controller { throw new ResponseException($this->l10n->t('Collabora Online: Unable to read discovery.xml from "%s".', array($wopiRemote)), $contact_admin); } - \OC::$server->getLogger()->debug('Storing the discovery.xml to the cache.'); - $this->cache->set('discovery.xml', $discovery, 3600); + \OC::$server->getLogger()->debug('Storing the discovery.xml under key ' . $discoveryKey . ' to the cache.'); + $this->cache->set($discoveryKey, $discovery, 3600); } return $discovery; @@ -232,7 +251,7 @@ class DocumentController extends Controller { if ($discovery_parsed === false) { $this->cache->remove('discovery.xml'); - $wopiRemote = $this->getWopiUrl(); + $wopiRemote = $this->getWopiUrl($this->isTester()); return array( 'status' => 'error', @@ -290,7 +309,7 @@ class DocumentController extends Controller { * @NoCSRFRequired */ public function index(){ - $wopiRemote = $this->getWopiUrl(); + $wopiRemote = $this->getWopiUrl($this->isTester()); if (($parts = parse_url($wopiRemote)) && isset($parts['scheme']) && isset($parts['host'])) { $webSocketProtocol = "ws://"; if ($parts['scheme'] == "https") { @@ -398,7 +417,7 @@ class DocumentController extends Controller { if ($discovery_parsed === false) { $this->cache->remove('discovery.xml'); - $wopiRemote = $this->getWopiUrl(); + $wopiRemote = $this->getWopiUrl($this->isTester()); return array( 'status' => 'error',