summaryrefslogtreecommitdiffstats
path: root/apps/files_trashbin
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/files_trashbin
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/files_trashbin')
-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
6 files changed, 29 insertions, 23 deletions
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);
}
/**