diff --git a/appinfo/application.php b/appinfo/application.php index 465d4361..a37351f6 100644 --- a/appinfo/application.php +++ b/appinfo/application.php @@ -22,21 +22,21 @@ use \OCA\Richdocuments\AppConfig; class Application extends App { public function __construct (array $urlParams = array()) { parent::__construct('richdocuments', $urlParams); - + $container = $this->getContainer(); - + /** * Controllers */ $container->registerService('UserController', function($c) { return new UserController( - $c->query('AppName'), + $c->query('AppName'), $c->query('Request') ); }); $container->registerService('SessionController', function($c) { return new SessionController( - $c->query('AppName'), + $c->query('AppName'), $c->query('Request'), $c->query('Logger'), $c->query('UserId') @@ -44,29 +44,30 @@ class Application extends App { }); $container->registerService('DocumentController', function($c) { return new DocumentController( - $c->query('AppName'), + $c->query('AppName'), $c->query('Request'), $c->query('CoreConfig'), $c->query('L10N'), - $c->query('UserId') + $c->query('UserId'), + $c->query('ICacheFactory') ); }); $container->registerService('SettingsController', function($c) { return new SettingsController( - $c->query('AppName'), + $c->query('AppName'), $c->query('Request'), $c->query('L10N'), $c->query('AppConfig'), $c->query('UserId') ); }); - + $container->registerService('AppConfig', function($c) { return new AppConfig( $c->query('CoreConfig') ); }); - + /** * Core */ @@ -84,5 +85,8 @@ class Application extends App { $uid = is_null($user) ? '' : $user->getUID(); return $uid; }); + $container->registerService('ICacheFactory', function($c) { + return $c->query('ServerContainer')->getMemCacheFactory(); + }); } } diff --git a/controller/documentcontroller.php b/controller/documentcontroller.php index 80ee5219..f22cacb0 100644 --- a/controller/documentcontroller.php +++ b/controller/documentcontroller.php @@ -25,23 +25,26 @@ use \OCA\Richdocuments\Storage; use \OCA\Richdocuments\Download; use \OCA\Richdocuments\DownloadResponse; use \OCA\Richdocuments\File; -use OCA\Richdocuments\Genesis; +use \OCA\Richdocuments\Genesis; use \OC\Files\View; +use \OCP\ICacheFactory; class DocumentController extends Controller{ private $uid; private $l10n; private $settings; + private $cache; const ODT_TEMPLATE_PATH = '/assets/odttemplate.odt'; const CLOUDSUITE_TMP_PATH = '/documents-tmp/'; - public function __construct($appName, IRequest $request, IConfig $settings, IL10N $l10n, $uid){ + public function __construct($appName, IRequest $request, IConfig $settings, IL10N $l10n, $uid, ICacheFactory $cache){ parent::__construct($appName, $request); $this->uid = $uid; $this->l10n = $l10n; $this->settings = $settings; + $this->cache = $cache->create($appName); } /** @@ -62,14 +65,18 @@ class DocumentController extends Controller{ ]); $policy = new ContentSecurityPolicy(); -+ $policy->addAllowedScriptDomain('\'self\' http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js http://cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.12/jquery.mousewheel.min.js \'unsafe-eval\' ' . $this->settings->getAppValue('richdocuments', 'wopi_url')); -+ $policy->addAllowedFrameDomain('\'self\' http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js http://cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.12/jquery.mousewheel.min.js \'unsafe-eval\' ' . $this->settings->getAppValue('richdocuments', 'wopi_url')); + $policy->addAllowedScriptDomain('\'self\' http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js http://cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.12/jquery.mousewheel.min.js \'unsafe-eval\' ' . $this->settings->getAppValue('richdocuments', 'wopi_url')); + $policy->addAllowedFrameDomain('\'self\' http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js http://cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.12/jquery.mousewheel.min.js \'unsafe-eval\' ' . $this->settings->getAppValue('richdocuments', 'wopi_url')); $policy->addAllowedConnectDomain('ws://' . $_SERVER['SERVER_NAME'] . ':9980'); $policy->addAllowedImageDomain('*'); $policy->allowInlineScript(true); $policy->addAllowedFontDomain('data:'); $response->setContentSecurityPolicy($policy); + if(is_null($this->cache->get('discovery.xml'))) { + // TODO GET http://domain/hosting/discovery + } + return $response; } diff --git a/tests/controller/documentcontrollertest.php b/tests/controller/documentcontrollertest.php index 88a654ac..42cbcf74 100644 --- a/tests/controller/documentcontrollertest.php +++ b/tests/controller/documentcontrollertest.php @@ -16,10 +16,11 @@ class DocumentControllerTest extends \PHPUnit_Framework_TestCase { private $request; private $l10n; private $settings; + private $cache; private $uid = 'jack_the_documents_tester'; private $password = 'password'; private $controller; - + public function setUp(){ $this->request = $this->getMockBuilder('\OCP\IRequest') ->disableOriginalConstructor() @@ -33,14 +34,19 @@ class DocumentControllerTest extends \PHPUnit_Framework_TestCase { ->disableOriginalConstructor() ->getMock() ; + $this->cache = $this->getMockBuilder('\OCP\ICacheFactory') + ->disableOriginalConstructor() + ->getMock() + ; $this->controller = new DocumentController( $this->appName, $this->request, $this->settings, $this->l10n, - $this->uid + $this->uid, + $this->cache ); - + $userManager = \OC::$server->getUserManager(); $userSession = \OC::$server->getUserSession(); if (!$userManager->userExists($this->uid)){