summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorJohn Molakvoæ <skjnldsv@users.noreply.github.com>2019-11-04 18:18:32 +0100
committerGitHub <noreply@github.com>2019-11-04 18:18:32 +0100
commit13960b69da2593dcfb0cbaef222ee8b9a33142c0 (patch)
treeca43ed0f4daa75e6b03b137b3ad650c8b721efa7 /apps
parent64bfd4bbeb10e07bd2133a97c50175a156d43d61 (diff)
parent964dc0a95520efbf876e0113bfafc294f4f4b322 (diff)
downloadnextcloud-server-13960b69da2593dcfb0cbaef222ee8b9a33142c0.tar.gz
nextcloud-server-13960b69da2593dcfb0cbaef222ee8b9a33142c0.zip
Merge pull request #17509 from nextcloud/fix/application-singleton
Fix Application instances created multiple times
Diffstat (limited to 'apps')
-rw-r--r--apps/dav/appinfo/app.php3
-rw-r--r--apps/encryption/appinfo/app.php3
-rw-r--r--apps/encryption/appinfo/routes.php71
-rw-r--r--apps/federation/appinfo/app.php3
-rw-r--r--apps/files/appinfo/routes.php3
-rw-r--r--apps/files_trashbin/appinfo/routes.php8
-rw-r--r--apps/files_trashbin/lib/AppInfo/Application.php7
-rw-r--r--apps/files_trashbin/lib/BackgroundJob/ExpireTrash.php3
-rw-r--r--apps/files_trashbin/lib/Expiration.php6
-rw-r--r--apps/files_trashbin/lib/Trashbin.php10
-rw-r--r--apps/files_trashbin/tests/TrashbinTest.php18
-rw-r--r--apps/files_versions/appinfo/routes.php3
-rw-r--r--apps/files_versions/lib/Storage.php4
-rw-r--r--apps/provisioning_api/lib/FederatedFileSharingFactory.php12
-rw-r--r--apps/settings/appinfo/routes.php3
-rw-r--r--apps/settings/lib/Settings/Personal/PersonalInfo.php2
16 files changed, 89 insertions, 70 deletions
diff --git a/apps/dav/appinfo/app.php b/apps/dav/appinfo/app.php
index dd9e0e9c096..a1a2377fb3b 100644
--- a/apps/dav/appinfo/app.php
+++ b/apps/dav/appinfo/app.php
@@ -29,7 +29,8 @@ use Symfony\Component\EventDispatcher\GenericEvent;
\OC_App::loadApps(['dav']);
-$app = new Application();
+/** @var Application $app */
+$app = \OC::$server->query(Application::class);
$app->registerHooks();
\OC::$server->registerService('CardDAVSyncService', function() use ($app) {
diff --git a/apps/encryption/appinfo/app.php b/apps/encryption/appinfo/app.php
index a39464e21f8..97d7e8f7488 100644
--- a/apps/encryption/appinfo/app.php
+++ b/apps/encryption/appinfo/app.php
@@ -28,7 +28,8 @@ namespace OCA\Encryption\AppInfo;
$encryptionSystemReady = \OC::$server->getEncryptionManager()->isReady();
-$app = new Application();
+/** @var Application $app */
+$app = \OC::$server->query(Application::class);
if ($encryptionSystemReady) {
$app->registerEncryptionModule();
$app->registerHooks();
diff --git a/apps/encryption/appinfo/routes.php b/apps/encryption/appinfo/routes.php
index 22f3af7fbfb..f7eb7ff5775 100644
--- a/apps/encryption/appinfo/routes.php
+++ b/apps/encryption/appinfo/routes.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -21,41 +22,37 @@
*
*/
-
-namespace OCA\Encryption\AppInfo;
-
-(new Application())->registerRoutes($this, array('routes' => array(
-
- [
- 'name' => 'Recovery#adminRecovery',
- 'url' => '/ajax/adminRecovery',
- 'verb' => 'POST'
- ],
- [
- 'name' => 'Settings#updatePrivateKeyPassword',
- 'url' => '/ajax/updatePrivateKeyPassword',
- 'verb' => 'POST'
- ],
- [
- 'name' => 'Settings#setEncryptHomeStorage',
- 'url' => '/ajax/setEncryptHomeStorage',
- 'verb' => 'POST'
- ],
- [
- 'name' => 'Recovery#changeRecoveryPassword',
- 'url' => '/ajax/changeRecoveryPassword',
- 'verb' => 'POST'
- ],
- [
- 'name' => 'Recovery#userSetRecovery',
- 'url' => '/ajax/userSetRecovery',
- 'verb' => 'POST'
- ],
- [
- 'name' => 'Status#getStatus',
- 'url' => '/ajax/getStatus',
- 'verb' => 'GET'
+return [
+ 'routes' => [
+ [
+ 'name' => 'Recovery#adminRecovery',
+ 'url' => '/ajax/adminRecovery',
+ 'verb' => 'POST'
+ ],
+ [
+ 'name' => 'Settings#updatePrivateKeyPassword',
+ 'url' => '/ajax/updatePrivateKeyPassword',
+ 'verb' => 'POST'
+ ],
+ [
+ 'name' => 'Settings#setEncryptHomeStorage',
+ 'url' => '/ajax/setEncryptHomeStorage',
+ 'verb' => 'POST'
+ ],
+ [
+ 'name' => 'Recovery#changeRecoveryPassword',
+ 'url' => '/ajax/changeRecoveryPassword',
+ 'verb' => 'POST'
+ ],
+ [
+ 'name' => 'Recovery#userSetRecovery',
+ 'url' => '/ajax/userSetRecovery',
+ 'verb' => 'POST'
+ ],
+ [
+ 'name' => 'Status#getStatus',
+ 'url' => '/ajax/getStatus',
+ 'verb' => 'GET'
+ ],
]
-
-
-)));
+];
diff --git a/apps/federation/appinfo/app.php b/apps/federation/appinfo/app.php
index 6c53810dd2c..23be2dd2124 100644
--- a/apps/federation/appinfo/app.php
+++ b/apps/federation/appinfo/app.php
@@ -22,5 +22,6 @@
namespace OCA\Federation\AppInfo;
-$app = new Application();
+/** @var Application $app */
+$app = \OC::$server->query(Application::class);
$app->registerHooks();
diff --git a/apps/files/appinfo/routes.php b/apps/files/appinfo/routes.php
index b085d79b8c8..26fce8d1713 100644
--- a/apps/files/appinfo/routes.php
+++ b/apps/files/appinfo/routes.php
@@ -29,7 +29,8 @@ declare(strict_types=1);
*/
namespace OCA\Files\AppInfo;
-$application = new Application();
+/** @var Application $application */
+$application = \OC::$server->query(Application::class);
$application->registerRoutes(
$this,
[
diff --git a/apps/files_trashbin/appinfo/routes.php b/apps/files_trashbin/appinfo/routes.php
index 20d52adf3f0..9f85e27bedc 100644
--- a/apps/files_trashbin/appinfo/routes.php
+++ b/apps/files_trashbin/appinfo/routes.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @copyright Copyright (c) 2016, Roeland Jago Douma <roeland@famdouma.nl>
@@ -22,10 +23,7 @@
*
*/
-namespace OCA\Files_Trashbin\AppInfo;
-
-$application = new Application();
-$application->registerRoutes($this, [
+return [
'routes' => [
[
'name' => 'Preview#getPreview',
@@ -33,4 +31,4 @@ $application->registerRoutes($this, [
'verb' => 'GET',
],
],
-]);
+];
diff --git a/apps/files_trashbin/lib/AppInfo/Application.php b/apps/files_trashbin/lib/AppInfo/Application.php
index 4baa82a6b4b..a2613a13b41 100644
--- a/apps/files_trashbin/lib/AppInfo/Application.php
+++ b/apps/files_trashbin/lib/AppInfo/Application.php
@@ -46,12 +46,7 @@ class Application extends App {
/*
* Register expiration
*/
- $container->registerService('Expiration', function($c) {
- return new Expiration(
- $c->query('ServerContainer')->getConfig(),
- $c->query(ITimeFactory::class)
- );
- });
+ $container->registerAlias('Expiration', Expiration::class);
/*
* Register $principalBackend for the DAV collection
diff --git a/apps/files_trashbin/lib/BackgroundJob/ExpireTrash.php b/apps/files_trashbin/lib/BackgroundJob/ExpireTrash.php
index e19b7ce604f..919317a7b7a 100644
--- a/apps/files_trashbin/lib/BackgroundJob/ExpireTrash.php
+++ b/apps/files_trashbin/lib/BackgroundJob/ExpireTrash.php
@@ -62,7 +62,8 @@ class ExpireTrash extends \OC\BackgroundJob\TimedJob {
}
protected function fixDIForJobs() {
- $application = new Application();
+ /** @var Application $application */
+ $application = \OC::$server->query(Application::class);
$this->userManager = \OC::$server->getUserManager();
$this->expiration = $application->getContainer()->query('Expiration');
}
diff --git a/apps/files_trashbin/lib/Expiration.php b/apps/files_trashbin/lib/Expiration.php
index c7ad4e29f18..933375c9537 100644
--- a/apps/files_trashbin/lib/Expiration.php
+++ b/apps/files_trashbin/lib/Expiration.php
@@ -49,7 +49,11 @@ class Expiration {
public function __construct(IConfig $config,ITimeFactory $timeFactory){
$this->timeFactory = $timeFactory;
- $this->retentionObligation = $config->getSystemValue('trashbin_retention_obligation', 'auto');
+ $this->setRetentionObligation($config->getSystemValue('trashbin_retention_obligation', 'auto'));
+ }
+
+ public function setRetentionObligation(string $obligation) {
+ $this->retentionObligation = $obligation;
if ($this->retentionObligation !== 'disabled') {
$this->parseRetentionObligation();
diff --git a/apps/files_trashbin/lib/Trashbin.php b/apps/files_trashbin/lib/Trashbin.php
index a06a5145d99..34138c21705 100644
--- a/apps/files_trashbin/lib/Trashbin.php
+++ b/apps/files_trashbin/lib/Trashbin.php
@@ -747,7 +747,8 @@ class Trashbin {
*/
private static function scheduleExpire($user) {
// let the admin disable auto expire
- $application = new Application();
+ /** @var Application $application */
+ $application = \OC::$server->query(Application::class);
$expiration = $application->getContainer()->query('Expiration');
if ($expiration->isEnabled()) {
\OC::$server->getCommandBus()->push(new Expire($user));
@@ -764,7 +765,8 @@ class Trashbin {
* @return int size of deleted files
*/
protected static function deleteFiles($files, $user, $availableSpace) {
- $application = new Application();
+ /** @var Application $application */
+ $application = \OC::$server->query(Application::class);
$expiration = $application->getContainer()->query('Expiration');
$size = 0;
@@ -791,8 +793,8 @@ class Trashbin {
* @return integer[] size of deleted files and number of deleted files
*/
public static function deleteExpiredFiles($files, $user) {
- $application = new Application();
- $expiration = $application->getContainer()->query('Expiration');
+ /** @var Expiration $expiration */
+ $expiration = \OC::$server->query(Expiration::class);
$size = 0;
$count = 0;
foreach ($files as $file) {
diff --git a/apps/files_trashbin/tests/TrashbinTest.php b/apps/files_trashbin/tests/TrashbinTest.php
index ae10e273075..22b6e87317c 100644
--- a/apps/files_trashbin/tests/TrashbinTest.php
+++ b/apps/files_trashbin/tests/TrashbinTest.php
@@ -67,7 +67,7 @@ class TrashbinTest extends \Test\TestCase {
// clear share hooks
\OC_Hook::clear('OCP\\Share');
\OC::registerShareHooks();
- $application = new \OCA\Files_Sharing\AppInfo\Application();
+ $application = \OC::$server->query(\OCA\Files_Sharing\AppInfo\Application::class);
$application->registerMountProviders();
//disable encryption
@@ -76,7 +76,9 @@ class TrashbinTest extends \Test\TestCase {
$config = \OC::$server->getConfig();
//configure trashbin
self::$rememberRetentionObligation = $config->getSystemValue('trashbin_retention_obligation', \OCA\Files_Trashbin\Expiration::DEFAULT_RETENTION_OBLIGATION);
- $config->setSystemValue('trashbin_retention_obligation', 'auto, 2');
+ /** @var \OCA\Files_Trashbin\Expiration $expiration */
+ $expiration = \OC::$server->query(\OCA\Files_Trashbin\Expiration::class);
+ $expiration->setRetentionObligation('auto, 2');
// register hooks
\OCA\Files_Trashbin\Trashbin::registerHooks();
@@ -94,7 +96,9 @@ class TrashbinTest extends \Test\TestCase {
$user->delete();
}
- \OC::$server->getConfig()->setSystemValue('trashbin_retention_obligation', self::$rememberRetentionObligation);
+ /** @var \OCA\Files_Trashbin\Expiration $expiration */
+ $expiration = \OC::$server->query(\OCA\Files_Trashbin\Expiration::class);
+ $expiration->setRetentionObligation(self::$rememberRetentionObligation);
\OC_Hook::clear();
@@ -152,7 +156,9 @@ class TrashbinTest extends \Test\TestCase {
*/
public function testExpireOldFiles() {
- $currentTime = time();
+ /** @var \OCP\AppFramework\Utility\ITimeFactory $time */
+ $time = \OC::$server->query(\OCP\AppFramework\Utility\ITimeFactory::class);
+ $currentTime = $time->getTime();
$expireAt = $currentTime - 2 * 24 * 60 * 60;
$expiredDate = $currentTime - 3 * 24 * 60 * 60;
@@ -684,9 +690,9 @@ class TrashbinForTesting extends \OCA\Files_Trashbin\Trashbin {
* @param OCP\Files\FileInfo[] $files
* @param integer $limit
*/
- public function dummyDeleteExpiredFiles($files, $limit) {
+ public function dummyDeleteExpiredFiles($files) {
// dummy value for $retention_obligation because it is not needed here
- return parent::deleteExpiredFiles($files, TrashbinTest::TEST_TRASHBIN_USER1, $limit, 0);
+ return parent::deleteExpiredFiles($files, TrashbinTest::TEST_TRASHBIN_USER1);
}
/**
diff --git a/apps/files_versions/appinfo/routes.php b/apps/files_versions/appinfo/routes.php
index 5fe6eaaee14..95722dd7780 100644
--- a/apps/files_versions/appinfo/routes.php
+++ b/apps/files_versions/appinfo/routes.php
@@ -26,7 +26,8 @@
namespace OCA\Files_Versions\AppInfo;
-$application = new Application();
+/** @var Application $application */
+$application = \OC::$server->query(Application::class);
$application->registerRoutes($this, [
'routes' => [
[
diff --git a/apps/files_versions/lib/Storage.php b/apps/files_versions/lib/Storage.php
index c42083ff352..168145ffec1 100644
--- a/apps/files_versions/lib/Storage.php
+++ b/apps/files_versions/lib/Storage.php
@@ -850,8 +850,8 @@ class Storage {
* @return Expiration
*/
protected static function getExpiration(){
- if (is_null(self::$application)) {
- self::$application = new Application();
+ if (self::$application === null) {
+ self::$application = \OC::$server->query(Application::class);
}
return self::$application->getContainer()->query(Expiration::class);
}
diff --git a/apps/provisioning_api/lib/FederatedFileSharingFactory.php b/apps/provisioning_api/lib/FederatedFileSharingFactory.php
index e856b2a9bed..0c7bb7068dd 100644
--- a/apps/provisioning_api/lib/FederatedFileSharingFactory.php
+++ b/apps/provisioning_api/lib/FederatedFileSharingFactory.php
@@ -25,9 +25,19 @@ declare(strict_types=1);
namespace OCA\Provisioning_API;
use OCA\FederatedFileSharing\AppInfo\Application;
+use OCP\IServerContainer;
class FederatedFileSharingFactory {
+
+ /** @var IServerContainer */
+ private $serverContainer;
+
+ public function __construct(IServerContainer $serverContainer) {
+ $this->serverContainer = $serverContainer;
+ }
+
public function get(): Application {
- return new Application();
+ return $this->serverContainer->query(Application::class);
}
+
}
diff --git a/apps/settings/appinfo/routes.php b/apps/settings/appinfo/routes.php
index 3c80cc05386..f4f29a5085b 100644
--- a/apps/settings/appinfo/routes.php
+++ b/apps/settings/appinfo/routes.php
@@ -38,7 +38,8 @@ namespace OCA\Settings;
use OCA\Settings\AppInfo\Application;
-$application = new Application();
+/** @var Application $application */
+$application = \OC::$server->query(Application::class);
$this->useCollection('root');
$application->registerRoutes($this, [
'resources' => [
diff --git a/apps/settings/lib/Settings/Personal/PersonalInfo.php b/apps/settings/lib/Settings/Personal/PersonalInfo.php
index b0c4d6faf48..1cf81ec9659 100644
--- a/apps/settings/lib/Settings/Personal/PersonalInfo.php
+++ b/apps/settings/lib/Settings/Personal/PersonalInfo.php
@@ -90,7 +90,7 @@ class PersonalInfo implements ISettings {
$federatedFileSharingEnabled = $this->appManager->isEnabledForUser('federatedfilesharing');
$lookupServerUploadEnabled = false;
if($federatedFileSharingEnabled) {
- $federatedFileSharing = new Application();
+ $federatedFileSharing = \OC::$server->query(Application::class);
$shareProvider = $federatedFileSharing->getFederatedShareProvider();
$lookupServerUploadEnabled = $shareProvider->isLookupServerUploadEnabled();
}