Completed
Pull Request — master (#5231)
by Morris
16:38
created
apps/files_trashbin/lib/Command/CleanUp.php 2 patches
Indentation   +76 added lines, -76 removed lines patch added patch discarded remove patch
@@ -34,87 +34,87 @@
 block discarded – undo
34 34
 
35 35
 class CleanUp extends Command {
36 36
 
37
-	/** @var IUserManager */
38
-	protected $userManager;
37
+    /** @var IUserManager */
38
+    protected $userManager;
39 39
 
40
-	/** @var IRootFolder */
41
-	protected $rootFolder;
40
+    /** @var IRootFolder */
41
+    protected $rootFolder;
42 42
 
43
-	/** @var \OCP\IDBConnection */
44
-	protected $dbConnection;
43
+    /** @var \OCP\IDBConnection */
44
+    protected $dbConnection;
45 45
 
46
-	/**
47
-	 * @param IRootFolder $rootFolder
48
-	 * @param IUserManager $userManager
49
-	 * @param IDBConnection $dbConnection
50
-	 */
51
-	function __construct(IRootFolder $rootFolder, IUserManager $userManager, IDBConnection $dbConnection) {
52
-		parent::__construct();
53
-		$this->userManager = $userManager;
54
-		$this->rootFolder = $rootFolder;
55
-		$this->dbConnection = $dbConnection;
56
-	}
46
+    /**
47
+     * @param IRootFolder $rootFolder
48
+     * @param IUserManager $userManager
49
+     * @param IDBConnection $dbConnection
50
+     */
51
+    function __construct(IRootFolder $rootFolder, IUserManager $userManager, IDBConnection $dbConnection) {
52
+        parent::__construct();
53
+        $this->userManager = $userManager;
54
+        $this->rootFolder = $rootFolder;
55
+        $this->dbConnection = $dbConnection;
56
+    }
57 57
 
58
-	protected function configure() {
59
-		$this
60
-			->setName('trashbin:cleanup')
61
-			->setDescription('Remove deleted files')
62
-			->addArgument(
63
-				'user_id',
64
-				InputArgument::OPTIONAL | InputArgument::IS_ARRAY,
65
-				'remove deleted files of the given user(s), if no user is given all deleted files will be removed'
66
-			);
67
-	}
58
+    protected function configure() {
59
+        $this
60
+            ->setName('trashbin:cleanup')
61
+            ->setDescription('Remove deleted files')
62
+            ->addArgument(
63
+                'user_id',
64
+                InputArgument::OPTIONAL | InputArgument::IS_ARRAY,
65
+                'remove deleted files of the given user(s), if no user is given all deleted files will be removed'
66
+            );
67
+    }
68 68
 
69
-	protected function execute(InputInterface $input, OutputInterface $output) {
70
-		$users = $input->getArgument('user_id');
71
-		if (!empty($users)) {
72
-			foreach ($users as $user) {
73
-				if ($this->userManager->userExists($user)) {
74
-					$output->writeln("Remove deleted files of   <info>$user</info>");
75
-					$this->removeDeletedFiles($user);
76
-				} else {
77
-					$output->writeln("<error>Unknown user $user</error>");
78
-				}
79
-			}
80
-		} else {
81
-			$output->writeln('Remove all deleted files');
82
-			foreach ($this->userManager->getBackends() as $backend) {
83
-				$name = get_class($backend);
84
-				if ($backend instanceof IUserBackend) {
85
-					$name = $backend->getBackendName();
86
-				}
87
-				$output->writeln("Remove deleted files for users on backend <info>$name</info>");
88
-				$limit = 500;
89
-				$offset = 0;
90
-				do {
91
-					$users = $backend->getUsers('', $limit, $offset);
92
-					foreach ($users as $user) {
93
-						$output->writeln("   <info>$user</info>");
94
-						$this->removeDeletedFiles($user);
95
-					}
96
-					$offset += $limit;
97
-				} while (count($users) >= $limit);
98
-			}
99
-		}
100
-	}
69
+    protected function execute(InputInterface $input, OutputInterface $output) {
70
+        $users = $input->getArgument('user_id');
71
+        if (!empty($users)) {
72
+            foreach ($users as $user) {
73
+                if ($this->userManager->userExists($user)) {
74
+                    $output->writeln("Remove deleted files of   <info>$user</info>");
75
+                    $this->removeDeletedFiles($user);
76
+                } else {
77
+                    $output->writeln("<error>Unknown user $user</error>");
78
+                }
79
+            }
80
+        } else {
81
+            $output->writeln('Remove all deleted files');
82
+            foreach ($this->userManager->getBackends() as $backend) {
83
+                $name = get_class($backend);
84
+                if ($backend instanceof IUserBackend) {
85
+                    $name = $backend->getBackendName();
86
+                }
87
+                $output->writeln("Remove deleted files for users on backend <info>$name</info>");
88
+                $limit = 500;
89
+                $offset = 0;
90
+                do {
91
+                    $users = $backend->getUsers('', $limit, $offset);
92
+                    foreach ($users as $user) {
93
+                        $output->writeln("   <info>$user</info>");
94
+                        $this->removeDeletedFiles($user);
95
+                    }
96
+                    $offset += $limit;
97
+                } while (count($users) >= $limit);
98
+            }
99
+        }
100
+    }
101 101
 
102
-	/**
103
-	 * remove deleted files for the given user
104
-	 *
105
-	 * @param string $uid
106
-	 */
107
-	protected function removeDeletedFiles($uid) {
108
-		\OC_Util::tearDownFS();
109
-		\OC_Util::setupFS($uid);
110
-		if ($this->rootFolder->nodeExists('/' . $uid . '/files_trashbin')) {
111
-			$this->rootFolder->get('/' . $uid . '/files_trashbin')->delete();
112
-			$query = $this->dbConnection->getQueryBuilder();
113
-			$query->delete('files_trash')
114
-				->where($query->expr()->eq('user', $query->createParameter('uid')))
115
-				->setParameter('uid', $uid);
116
-			$query->execute();
117
-		}
118
-	}
102
+    /**
103
+     * remove deleted files for the given user
104
+     *
105
+     * @param string $uid
106
+     */
107
+    protected function removeDeletedFiles($uid) {
108
+        \OC_Util::tearDownFS();
109
+        \OC_Util::setupFS($uid);
110
+        if ($this->rootFolder->nodeExists('/' . $uid . '/files_trashbin')) {
111
+            $this->rootFolder->get('/' . $uid . '/files_trashbin')->delete();
112
+            $query = $this->dbConnection->getQueryBuilder();
113
+            $query->delete('files_trash')
114
+                ->where($query->expr()->eq('user', $query->createParameter('uid')))
115
+                ->setParameter('uid', $uid);
116
+            $query->execute();
117
+        }
118
+    }
119 119
 
120 120
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -107,8 +107,8 @@
 block discarded – undo
107 107
 	protected function removeDeletedFiles($uid) {
108 108
 		\OC_Util::tearDownFS();
109 109
 		\OC_Util::setupFS($uid);
110
-		if ($this->rootFolder->nodeExists('/' . $uid . '/files_trashbin')) {
111
-			$this->rootFolder->get('/' . $uid . '/files_trashbin')->delete();
110
+		if ($this->rootFolder->nodeExists('/'.$uid.'/files_trashbin')) {
111
+			$this->rootFolder->get('/'.$uid.'/files_trashbin')->delete();
112 112
 			$query = $this->dbConnection->getQueryBuilder();
113 113
 			$query->delete('files_trash')
114 114
 				->where($query->expr()->eq('user', $query->createParameter('uid')))
Please login to merge, or discard this patch.
apps/files_trashbin/lib/Capabilities.php 1 patch
Indentation   +12 added lines, -12 removed lines patch added patch discarded remove patch
@@ -33,17 +33,17 @@
 block discarded – undo
33 33
  */
34 34
 class Capabilities implements ICapability {
35 35
 
36
-	/**
37
-	 * Return this classes capabilities
38
-	 *
39
-	 * @return array
40
-	 */
41
-	public function getCapabilities() {
42
-		return [
43
-			'files' => [
44
-				'undelete' => true
45
-			]
46
-		];
47
-	}
36
+    /**
37
+     * Return this classes capabilities
38
+     *
39
+     * @return array
40
+     */
41
+    public function getCapabilities() {
42
+        return [
43
+            'files' => [
44
+                'undelete' => true
45
+            ]
46
+        ];
47
+    }
48 48
 	
49 49
 }
Please login to merge, or discard this patch.
apps/files_trashbin/lib/BackgroundJob/ExpireTrash.php 2 patches
Indentation   +62 added lines, -62 removed lines patch added patch discarded remove patch
@@ -34,76 +34,76 @@
 block discarded – undo
34 34
 
35 35
 class ExpireTrash extends \OC\BackgroundJob\TimedJob {
36 36
 
37
-	/**
38
-	 * @var Expiration
39
-	 */
40
-	private $expiration;
37
+    /**
38
+     * @var Expiration
39
+     */
40
+    private $expiration;
41 41
 	
42
-	/**
43
-	 * @var IUserManager
44
-	 */
45
-	private $userManager;
42
+    /**
43
+     * @var IUserManager
44
+     */
45
+    private $userManager;
46 46
 
47
-	/**
48
-	 * @param IUserManager|null $userManager
49
-	 * @param Expiration|null $expiration
50
-	 */
51
-	public function __construct(IUserManager $userManager = null,
52
-								Expiration $expiration = null) {
53
-		// Run once per 30 minutes
54
-		$this->setInterval(60 * 30);
47
+    /**
48
+     * @param IUserManager|null $userManager
49
+     * @param Expiration|null $expiration
50
+     */
51
+    public function __construct(IUserManager $userManager = null,
52
+                                Expiration $expiration = null) {
53
+        // Run once per 30 minutes
54
+        $this->setInterval(60 * 30);
55 55
 
56
-		if (is_null($expiration) || is_null($userManager)) {
57
-			$this->fixDIForJobs();
58
-		} else {
59
-			$this->userManager = $userManager;
60
-			$this->expiration = $expiration;
61
-		}
62
-	}
56
+        if (is_null($expiration) || is_null($userManager)) {
57
+            $this->fixDIForJobs();
58
+        } else {
59
+            $this->userManager = $userManager;
60
+            $this->expiration = $expiration;
61
+        }
62
+    }
63 63
 
64
-	protected function fixDIForJobs() {
65
-		$application = new Application();
66
-		$this->userManager = \OC::$server->getUserManager();
67
-		$this->expiration = $application->getContainer()->query('Expiration');
68
-	}
64
+    protected function fixDIForJobs() {
65
+        $application = new Application();
66
+        $this->userManager = \OC::$server->getUserManager();
67
+        $this->expiration = $application->getContainer()->query('Expiration');
68
+    }
69 69
 
70
-	/**
71
-	 * @param $argument
72
-	 * @throws \Exception
73
-	 */
74
-	protected function run($argument) {
75
-		$maxAge = $this->expiration->getMaxAgeAsTimestamp();
76
-		if (!$maxAge) {
77
-			return;
78
-		}
70
+    /**
71
+     * @param $argument
72
+     * @throws \Exception
73
+     */
74
+    protected function run($argument) {
75
+        $maxAge = $this->expiration->getMaxAgeAsTimestamp();
76
+        if (!$maxAge) {
77
+            return;
78
+        }
79 79
 
80
-		$this->userManager->callForSeenUsers(function(IUser $user) {
81
-			$uid = $user->getUID();
82
-			if (!$this->setupFS($uid)) {
83
-				return;
84
-			}
85
-			$dirContent = Helper::getTrashFiles('/', $uid, 'mtime');
86
-			Trashbin::deleteExpiredFiles($dirContent, $uid);
87
-		});
80
+        $this->userManager->callForSeenUsers(function(IUser $user) {
81
+            $uid = $user->getUID();
82
+            if (!$this->setupFS($uid)) {
83
+                return;
84
+            }
85
+            $dirContent = Helper::getTrashFiles('/', $uid, 'mtime');
86
+            Trashbin::deleteExpiredFiles($dirContent, $uid);
87
+        });
88 88
 		
89
-		\OC_Util::tearDownFS();
90
-	}
89
+        \OC_Util::tearDownFS();
90
+    }
91 91
 
92
-	/**
93
-	 * Act on behalf on trash item owner
94
-	 * @param string $user
95
-	 * @return boolean
96
-	 */
97
-	protected function setupFS($user) {
98
-		\OC_Util::tearDownFS();
99
-		\OC_Util::setupFS($user);
92
+    /**
93
+     * Act on behalf on trash item owner
94
+     * @param string $user
95
+     * @return boolean
96
+     */
97
+    protected function setupFS($user) {
98
+        \OC_Util::tearDownFS();
99
+        \OC_Util::setupFS($user);
100 100
 
101
-		// Check if this user has a trashbin directory
102
-		$view = new \OC\Files\View('/' . $user);
103
-		if (!$view->is_dir('/files_trashbin/files')) {
104
-			return false;
105
-		}
101
+        // Check if this user has a trashbin directory
102
+        $view = new \OC\Files\View('/' . $user);
103
+        if (!$view->is_dir('/files_trashbin/files')) {
104
+            return false;
105
+        }
106 106
 
107
-		return true;
108
-	}
107
+        return true;
108
+    }
109 109
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -117,7 +117,7 @@
 block discarded – undo
117 117
 		\OC_Util::setupFS($user);
118 118
 
119 119
 		// Check if this user has a trashbin directory
120
-		$view = new \OC\Files\View('/' . $user);
120
+		$view = new \OC\Files\View('/'.$user);
121 121
 		if (!$view->is_dir('/files_trashbin/files')) {
122 122
 			return false;
123 123
 		}
Please login to merge, or discard this patch.
apps/files_trashbin/lib/Hooks.php 2 patches
Indentation   +19 added lines, -19 removed lines patch added patch discarded remove patch
@@ -31,24 +31,24 @@
 block discarded – undo
31 31
 
32 32
 class Hooks {
33 33
 
34
-	/**
35
-	 * clean up user specific settings if user gets deleted
36
-	 * @param array $params array with uid
37
-	 *
38
-	 * This function is connected to the pre_deleteUser signal of OC_Users
39
-	 * to remove the used space for the trash bin stored in the database
40
-	 */
41
-	public static function deleteUser_hook($params) {
42
-		if( \OCP\App::isEnabled('files_trashbin') ) {
43
-			$uid = $params['uid'];
44
-			Trashbin::deleteUser($uid);
45
-		}
46
-	}
34
+    /**
35
+     * clean up user specific settings if user gets deleted
36
+     * @param array $params array with uid
37
+     *
38
+     * This function is connected to the pre_deleteUser signal of OC_Users
39
+     * to remove the used space for the trash bin stored in the database
40
+     */
41
+    public static function deleteUser_hook($params) {
42
+        if( \OCP\App::isEnabled('files_trashbin') ) {
43
+            $uid = $params['uid'];
44
+            Trashbin::deleteUser($uid);
45
+        }
46
+    }
47 47
 
48
-	public static function post_write_hook($params) {
49
-		$user = \OCP\User::getUser();
50
-		if (!empty($user)) {
51
-			Trashbin::resizeTrash($user);
52
-		}
53
-	}
48
+    public static function post_write_hook($params) {
49
+        $user = \OCP\User::getUser();
50
+        if (!empty($user)) {
51
+            Trashbin::resizeTrash($user);
52
+        }
53
+    }
54 54
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -39,7 +39,7 @@
 block discarded – undo
39 39
 	 * to remove the used space for the trash bin stored in the database
40 40
 	 */
41 41
 	public static function deleteUser_hook($params) {
42
-		if( \OCP\App::isEnabled('files_trashbin') ) {
42
+		if (\OCP\App::isEnabled('files_trashbin')) {
43 43
 			$uid = $params['uid'];
44 44
 			Trashbin::deleteUser($uid);
45 45
 		}
Please login to merge, or discard this patch.
apps/files_trashbin/lib/Expiration.php 2 patches
Indentation   +135 added lines, -135 removed lines patch added patch discarded remove patch
@@ -28,139 +28,139 @@
 block discarded – undo
28 28
 
29 29
 class Expiration {
30 30
 
31
-	// how long do we keep files in the trash bin if no other value is defined in the config file (unit: days)
32
-	const DEFAULT_RETENTION_OBLIGATION = 30;
33
-	const NO_OBLIGATION = -1;
34
-
35
-	/** @var ITimeFactory */
36
-	private $timeFactory;
37
-
38
-	/** @var string */
39
-	private $retentionObligation;
40
-
41
-	/** @var int */
42
-	private $minAge;
43
-
44
-	/** @var int */
45
-	private $maxAge;
46
-
47
-	/** @var bool */
48
-	private $canPurgeToSaveSpace;
49
-
50
-	public function __construct(IConfig $config,ITimeFactory $timeFactory){
51
-		$this->timeFactory = $timeFactory;
52
-		$this->retentionObligation = $config->getSystemValue('trashbin_retention_obligation', 'auto');
53
-
54
-		if ($this->retentionObligation !== 'disabled') {
55
-			$this->parseRetentionObligation();
56
-		}
57
-	}
58
-
59
-	/**
60
-	 * Is trashbin expiration enabled
61
-	 * @return bool
62
-	 */
63
-	public function isEnabled(){
64
-		return $this->retentionObligation !== 'disabled';
65
-	}
66
-
67
-	/**
68
-	 * Check if given timestamp in expiration range
69
-	 * @param int $timestamp
70
-	 * @param bool $quotaExceeded
71
-	 * @return bool
72
-	 */
73
-	public function isExpired($timestamp, $quotaExceeded = false){
74
-		// No expiration if disabled
75
-		if (!$this->isEnabled()) {
76
-			return false;
77
-		}
78
-
79
-		// Purge to save space (if allowed)
80
-		if ($quotaExceeded && $this->canPurgeToSaveSpace) {
81
-			return true;
82
-		}
83
-
84
-		$time = $this->timeFactory->getTime();
85
-		// Never expire dates in future e.g. misconfiguration or negative time
86
-		// adjustment
87
-		if ($time<$timestamp) {
88
-			return false;
89
-		}
90
-
91
-		// Purge as too old
92
-		if ($this->maxAge !== self::NO_OBLIGATION) {
93
-			$maxTimestamp = $time - ($this->maxAge * 86400);
94
-			$isOlderThanMax = $timestamp < $maxTimestamp;
95
-		} else {
96
-			$isOlderThanMax = false;
97
-		}
98
-
99
-		if ($this->minAge !== self::NO_OBLIGATION) {
100
-			// older than Min obligation and we are running out of quota?
101
-			$minTimestamp = $time - ($this->minAge * 86400);
102
-			$isMinReached = ($timestamp < $minTimestamp) && $quotaExceeded;
103
-		} else {
104
-			$isMinReached = false;
105
-		}
106
-
107
-		return $isOlderThanMax || $isMinReached;
108
-	}
109
-
110
-	/**
111
-	 * @return bool|int
112
-	 */
113
-	public function getMaxAgeAsTimestamp() {
114
-		$maxAge = false;
115
-		if ($this->isEnabled() && $this->maxAge !== self::NO_OBLIGATION) {
116
-			$time = $this->timeFactory->getTime();
117
-			$maxAge = $time - ($this->maxAge * 86400);
118
-		}
119
-		return $maxAge;
120
-	}
121
-
122
-	private function parseRetentionObligation(){
123
-		$splitValues = explode(',', $this->retentionObligation);
124
-		if (!isset($splitValues[0])) {
125
-			$minValue = self::DEFAULT_RETENTION_OBLIGATION;
126
-		} else {
127
-			$minValue = trim($splitValues[0]);
128
-		}
129
-
130
-		if (!isset($splitValues[1]) && $minValue === 'auto') {
131
-			$maxValue = 'auto';
132
-		} elseif (!isset($splitValues[1])) {
133
-			$maxValue = self::DEFAULT_RETENTION_OBLIGATION;
134
-		} else {
135
-			$maxValue = trim($splitValues[1]);
136
-		}
137
-
138
-		if ($minValue === 'auto' && $maxValue === 'auto') {
139
-			// Default: Keep for 30 days but delete anytime if space needed
140
-			$this->minAge = self::DEFAULT_RETENTION_OBLIGATION;
141
-			$this->maxAge = self::NO_OBLIGATION;
142
-			$this->canPurgeToSaveSpace = true;
143
-		} elseif ($minValue !== 'auto' && $maxValue === 'auto') {
144
-			// Keep for X days but delete anytime if space needed
145
-			$this->minAge = intval($minValue);
146
-			$this->maxAge = self::NO_OBLIGATION;
147
-			$this->canPurgeToSaveSpace = true;
148
-		} elseif ($minValue === 'auto' && $maxValue !== 'auto') {
149
-			// Delete anytime if space needed, Delete all older than max automatically
150
-			$this->minAge = self::NO_OBLIGATION;
151
-			$this->maxAge = intval($maxValue);
152
-			$this->canPurgeToSaveSpace = true;
153
-		} elseif ($minValue !== 'auto' && $maxValue !== 'auto') {
154
-			// Delete all older than max OR older than min if space needed
155
-
156
-			// Max < Min as per https://github.com/owncloud/core/issues/16300
157
-			if ($maxValue < $minValue) {
158
-				$maxValue = $minValue;
159
-			}
160
-
161
-			$this->minAge = intval($minValue);
162
-			$this->maxAge = intval($maxValue);
163
-			$this->canPurgeToSaveSpace = false;
164
-		}
165
-	}
31
+    // how long do we keep files in the trash bin if no other value is defined in the config file (unit: days)
32
+    const DEFAULT_RETENTION_OBLIGATION = 30;
33
+    const NO_OBLIGATION = -1;
34
+
35
+    /** @var ITimeFactory */
36
+    private $timeFactory;
37
+
38
+    /** @var string */
39
+    private $retentionObligation;
40
+
41
+    /** @var int */
42
+    private $minAge;
43
+
44
+    /** @var int */
45
+    private $maxAge;
46
+
47
+    /** @var bool */
48
+    private $canPurgeToSaveSpace;
49
+
50
+    public function __construct(IConfig $config,ITimeFactory $timeFactory){
51
+        $this->timeFactory = $timeFactory;
52
+        $this->retentionObligation = $config->getSystemValue('trashbin_retention_obligation', 'auto');
53
+
54
+        if ($this->retentionObligation !== 'disabled') {
55
+            $this->parseRetentionObligation();
56
+        }
57
+    }
58
+
59
+    /**
60
+     * Is trashbin expiration enabled
61
+     * @return bool
62
+     */
63
+    public function isEnabled(){
64
+        return $this->retentionObligation !== 'disabled';
65
+    }
66
+
67
+    /**
68
+     * Check if given timestamp in expiration range
69
+     * @param int $timestamp
70
+     * @param bool $quotaExceeded
71
+     * @return bool
72
+     */
73
+    public function isExpired($timestamp, $quotaExceeded = false){
74
+        // No expiration if disabled
75
+        if (!$this->isEnabled()) {
76
+            return false;
77
+        }
78
+
79
+        // Purge to save space (if allowed)
80
+        if ($quotaExceeded && $this->canPurgeToSaveSpace) {
81
+            return true;
82
+        }
83
+
84
+        $time = $this->timeFactory->getTime();
85
+        // Never expire dates in future e.g. misconfiguration or negative time
86
+        // adjustment
87
+        if ($time<$timestamp) {
88
+            return false;
89
+        }
90
+
91
+        // Purge as too old
92
+        if ($this->maxAge !== self::NO_OBLIGATION) {
93
+            $maxTimestamp = $time - ($this->maxAge * 86400);
94
+            $isOlderThanMax = $timestamp < $maxTimestamp;
95
+        } else {
96
+            $isOlderThanMax = false;
97
+        }
98
+
99
+        if ($this->minAge !== self::NO_OBLIGATION) {
100
+            // older than Min obligation and we are running out of quota?
101
+            $minTimestamp = $time - ($this->minAge * 86400);
102
+            $isMinReached = ($timestamp < $minTimestamp) && $quotaExceeded;
103
+        } else {
104
+            $isMinReached = false;
105
+        }
106
+
107
+        return $isOlderThanMax || $isMinReached;
108
+    }
109
+
110
+    /**
111
+     * @return bool|int
112
+     */
113
+    public function getMaxAgeAsTimestamp() {
114
+        $maxAge = false;
115
+        if ($this->isEnabled() && $this->maxAge !== self::NO_OBLIGATION) {
116
+            $time = $this->timeFactory->getTime();
117
+            $maxAge = $time - ($this->maxAge * 86400);
118
+        }
119
+        return $maxAge;
120
+    }
121
+
122
+    private function parseRetentionObligation(){
123
+        $splitValues = explode(',', $this->retentionObligation);
124
+        if (!isset($splitValues[0])) {
125
+            $minValue = self::DEFAULT_RETENTION_OBLIGATION;
126
+        } else {
127
+            $minValue = trim($splitValues[0]);
128
+        }
129
+
130
+        if (!isset($splitValues[1]) && $minValue === 'auto') {
131
+            $maxValue = 'auto';
132
+        } elseif (!isset($splitValues[1])) {
133
+            $maxValue = self::DEFAULT_RETENTION_OBLIGATION;
134
+        } else {
135
+            $maxValue = trim($splitValues[1]);
136
+        }
137
+
138
+        if ($minValue === 'auto' && $maxValue === 'auto') {
139
+            // Default: Keep for 30 days but delete anytime if space needed
140
+            $this->minAge = self::DEFAULT_RETENTION_OBLIGATION;
141
+            $this->maxAge = self::NO_OBLIGATION;
142
+            $this->canPurgeToSaveSpace = true;
143
+        } elseif ($minValue !== 'auto' && $maxValue === 'auto') {
144
+            // Keep for X days but delete anytime if space needed
145
+            $this->minAge = intval($minValue);
146
+            $this->maxAge = self::NO_OBLIGATION;
147
+            $this->canPurgeToSaveSpace = true;
148
+        } elseif ($minValue === 'auto' && $maxValue !== 'auto') {
149
+            // Delete anytime if space needed, Delete all older than max automatically
150
+            $this->minAge = self::NO_OBLIGATION;
151
+            $this->maxAge = intval($maxValue);
152
+            $this->canPurgeToSaveSpace = true;
153
+        } elseif ($minValue !== 'auto' && $maxValue !== 'auto') {
154
+            // Delete all older than max OR older than min if space needed
155
+
156
+            // Max < Min as per https://github.com/owncloud/core/issues/16300
157
+            if ($maxValue < $minValue) {
158
+                $maxValue = $minValue;
159
+            }
160
+
161
+            $this->minAge = intval($minValue);
162
+            $this->maxAge = intval($maxValue);
163
+            $this->canPurgeToSaveSpace = false;
164
+        }
165
+    }
166 166
 }
Please login to merge, or discard this patch.
Spacing   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -47,7 +47,7 @@  discard block
 block discarded – undo
47 47
 	/** @var bool */
48 48
 	private $canPurgeToSaveSpace;
49 49
 
50
-	public function __construct(IConfig $config,ITimeFactory $timeFactory){
50
+	public function __construct(IConfig $config, ITimeFactory $timeFactory) {
51 51
 		$this->timeFactory = $timeFactory;
52 52
 		$this->retentionObligation = $config->getSystemValue('trashbin_retention_obligation', 'auto');
53 53
 
@@ -60,7 +60,7 @@  discard block
 block discarded – undo
60 60
 	 * Is trashbin expiration enabled
61 61
 	 * @return bool
62 62
 	 */
63
-	public function isEnabled(){
63
+	public function isEnabled() {
64 64
 		return $this->retentionObligation !== 'disabled';
65 65
 	}
66 66
 
@@ -70,7 +70,7 @@  discard block
 block discarded – undo
70 70
 	 * @param bool $quotaExceeded
71 71
 	 * @return bool
72 72
 	 */
73
-	public function isExpired($timestamp, $quotaExceeded = false){
73
+	public function isExpired($timestamp, $quotaExceeded = false) {
74 74
 		// No expiration if disabled
75 75
 		if (!$this->isEnabled()) {
76 76
 			return false;
@@ -84,7 +84,7 @@  discard block
 block discarded – undo
84 84
 		$time = $this->timeFactory->getTime();
85 85
 		// Never expire dates in future e.g. misconfiguration or negative time
86 86
 		// adjustment
87
-		if ($time<$timestamp) {
87
+		if ($time < $timestamp) {
88 88
 			return false;
89 89
 		}
90 90
 
@@ -119,7 +119,7 @@  discard block
 block discarded – undo
119 119
 		return $maxAge;
120 120
 	}
121 121
 
122
-	private function parseRetentionObligation(){
122
+	private function parseRetentionObligation() {
123 123
 		$splitValues = explode(',', $this->retentionObligation);
124 124
 		if (!isset($splitValues[0])) {
125 125
 			$minValue = self::DEFAULT_RETENTION_OBLIGATION;
Please login to merge, or discard this patch.
apps/files_trashbin/appinfo/routes.php 1 patch
Indentation   +11 added lines, -11 removed lines patch added patch discarded remove patch
@@ -27,21 +27,21 @@
 block discarded – undo
27 27
 
28 28
 $application = new Application();
29 29
 $application->registerRoutes($this, [
30
-	'routes' => [
31
-		[
32
-			'name' => 'Preview#getPreview',
33
-			'url' => '/ajax/preview.php',
34
-			'verb' => 'GET',
35
-		],
36
-	],
30
+    'routes' => [
31
+        [
32
+            'name' => 'Preview#getPreview',
33
+            'url' => '/ajax/preview.php',
34
+            'verb' => 'GET',
35
+        ],
36
+    ],
37 37
 ]);
38 38
 
39 39
 $this->create('files_trashbin_ajax_delete', 'ajax/delete.php')
40
-	->actionInclude('files_trashbin/ajax/delete.php');
40
+    ->actionInclude('files_trashbin/ajax/delete.php');
41 41
 $this->create('files_trashbin_ajax_isEmpty', 'ajax/isEmpty.php')
42
-	->actionInclude('files_trashbin/ajax/isEmpty.php');
42
+    ->actionInclude('files_trashbin/ajax/isEmpty.php');
43 43
 $this->create('files_trashbin_ajax_list', 'ajax/list.php')
44
-	->actionInclude('files_trashbin/ajax/list.php');
44
+    ->actionInclude('files_trashbin/ajax/list.php');
45 45
 $this->create('files_trashbin_ajax_undelete', 'ajax/undelete.php')
46
-	->actionInclude('files_trashbin/ajax/undelete.php');
46
+    ->actionInclude('files_trashbin/ajax/undelete.php');
47 47
 
Please login to merge, or discard this patch.
apps/workflowengine/lib/Controller/RequestTime.php 2 patches
Indentation   +20 added lines, -20 removed lines patch added patch discarded remove patch
@@ -26,27 +26,27 @@
 block discarded – undo
26 26
 
27 27
 class RequestTime extends Controller {
28 28
 
29
-	/**
30
-	 * @NoAdminRequired
31
-	 *
32
-	 * @param string $search
33
-	 * @return JSONResponse
34
-	 */
35
-	public function getTimezones($search = '') {
36
-		$timezones = \DateTimeZone::listIdentifiers();
29
+    /**
30
+     * @NoAdminRequired
31
+     *
32
+     * @param string $search
33
+     * @return JSONResponse
34
+     */
35
+    public function getTimezones($search = '') {
36
+        $timezones = \DateTimeZone::listIdentifiers();
37 37
 
38
-		if ($search !== '') {
39
-			$timezones = array_filter($timezones, function ($timezone) use ($search) {
40
-				return strpos(strtolower($timezone), strtolower($search)) !== false;
41
-			});
42
-		}
38
+        if ($search !== '') {
39
+            $timezones = array_filter($timezones, function ($timezone) use ($search) {
40
+                return strpos(strtolower($timezone), strtolower($search)) !== false;
41
+            });
42
+        }
43 43
 
44
-		$timezones = array_slice($timezones, 0, 10);
44
+        $timezones = array_slice($timezones, 0, 10);
45 45
 
46
-		$response = [];
47
-		foreach ($timezones as $timezone) {
48
-			$response[$timezone] = $timezone;
49
-		}
50
-		return new JSONResponse($response);
51
-	}
46
+        $response = [];
47
+        foreach ($timezones as $timezone) {
48
+            $response[$timezone] = $timezone;
49
+        }
50
+        return new JSONResponse($response);
51
+    }
52 52
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -36,7 +36,7 @@
 block discarded – undo
36 36
 		$timezones = \DateTimeZone::listIdentifiers();
37 37
 
38 38
 		if ($search !== '') {
39
-			$timezones = array_filter($timezones, function ($timezone) use ($search) {
39
+			$timezones = array_filter($timezones, function($timezone) use ($search) {
40 40
 				return strpos(strtolower($timezone), strtolower($search)) !== false;
41 41
 			});
42 42
 		}
Please login to merge, or discard this patch.
apps/workflowengine/lib/Controller/FlowOperations.php 1 patch
Indentation   +85 added lines, -85 removed lines patch added patch discarded remove patch
@@ -29,100 +29,100 @@
 block discarded – undo
29 29
 
30 30
 class FlowOperations extends Controller {
31 31
 
32
-	/** @var Manager */
33
-	protected $manager;
32
+    /** @var Manager */
33
+    protected $manager;
34 34
 
35
-	/**
36
-	 * @param IRequest $request
37
-	 * @param Manager $manager
38
-	 */
39
-	public function __construct(IRequest $request, Manager $manager) {
40
-		parent::__construct('workflowengine', $request);
41
-		$this->manager = $manager;
42
-	}
35
+    /**
36
+     * @param IRequest $request
37
+     * @param Manager $manager
38
+     */
39
+    public function __construct(IRequest $request, Manager $manager) {
40
+        parent::__construct('workflowengine', $request);
41
+        $this->manager = $manager;
42
+    }
43 43
 
44
-	/**
45
-	 * @NoCSRFRequired
46
-	 *
47
-	 * @param string $class
48
-	 * @return JSONResponse
49
-	 */
50
-	public function getOperations($class) {
51
-		$operations = $this->manager->getOperations($class);
44
+    /**
45
+     * @NoCSRFRequired
46
+     *
47
+     * @param string $class
48
+     * @return JSONResponse
49
+     */
50
+    public function getOperations($class) {
51
+        $operations = $this->manager->getOperations($class);
52 52
 
53
-		foreach ($operations as &$operation) {
54
-			$operation = $this->prepareOperation($operation);
55
-		}
53
+        foreach ($operations as &$operation) {
54
+            $operation = $this->prepareOperation($operation);
55
+        }
56 56
 
57
-		return new JSONResponse($operations);
58
-	}
57
+        return new JSONResponse($operations);
58
+    }
59 59
 
60
-	/**
61
-	 * @PasswordConfirmationRequired
62
-	 *
63
-	 * @param string $class
64
-	 * @param string $name
65
-	 * @param array[] $checks
66
-	 * @param string $operation
67
-	 * @return JSONResponse The added element
68
-	 */
69
-	public function addOperation($class, $name, $checks, $operation) {
70
-		try {
71
-			$operation = $this->manager->addOperation($class, $name, $checks, $operation);
72
-			$operation = $this->prepareOperation($operation);
73
-			return new JSONResponse($operation);
74
-		} catch (\UnexpectedValueException $e) {
75
-			return new JSONResponse($e->getMessage(), Http::STATUS_BAD_REQUEST);
76
-		}
77
-	}
60
+    /**
61
+     * @PasswordConfirmationRequired
62
+     *
63
+     * @param string $class
64
+     * @param string $name
65
+     * @param array[] $checks
66
+     * @param string $operation
67
+     * @return JSONResponse The added element
68
+     */
69
+    public function addOperation($class, $name, $checks, $operation) {
70
+        try {
71
+            $operation = $this->manager->addOperation($class, $name, $checks, $operation);
72
+            $operation = $this->prepareOperation($operation);
73
+            return new JSONResponse($operation);
74
+        } catch (\UnexpectedValueException $e) {
75
+            return new JSONResponse($e->getMessage(), Http::STATUS_BAD_REQUEST);
76
+        }
77
+    }
78 78
 
79
-	/**
80
-	 * @PasswordConfirmationRequired
81
-	 *
82
-	 * @param int $id
83
-	 * @param string $name
84
-	 * @param array[] $checks
85
-	 * @param string $operation
86
-	 * @return JSONResponse The updated element
87
-	 */
88
-	public function updateOperation($id, $name, $checks, $operation) {
89
-		try {
90
-			$operation = $this->manager->updateOperation($id, $name, $checks, $operation);
91
-			$operation = $this->prepareOperation($operation);
92
-			return new JSONResponse($operation);
93
-		} catch (\UnexpectedValueException $e) {
94
-			return new JSONResponse($e->getMessage(), Http::STATUS_BAD_REQUEST);
95
-		}
96
-	}
79
+    /**
80
+     * @PasswordConfirmationRequired
81
+     *
82
+     * @param int $id
83
+     * @param string $name
84
+     * @param array[] $checks
85
+     * @param string $operation
86
+     * @return JSONResponse The updated element
87
+     */
88
+    public function updateOperation($id, $name, $checks, $operation) {
89
+        try {
90
+            $operation = $this->manager->updateOperation($id, $name, $checks, $operation);
91
+            $operation = $this->prepareOperation($operation);
92
+            return new JSONResponse($operation);
93
+        } catch (\UnexpectedValueException $e) {
94
+            return new JSONResponse($e->getMessage(), Http::STATUS_BAD_REQUEST);
95
+        }
96
+    }
97 97
 
98
-	/**
99
-	 * @PasswordConfirmationRequired
100
-	 *
101
-	 * @param int $id
102
-	 * @return JSONResponse
103
-	 */
104
-	public function deleteOperation($id) {
105
-		$deleted = $this->manager->deleteOperation((int) $id);
106
-		return new JSONResponse($deleted);
107
-	}
98
+    /**
99
+     * @PasswordConfirmationRequired
100
+     *
101
+     * @param int $id
102
+     * @return JSONResponse
103
+     */
104
+    public function deleteOperation($id) {
105
+        $deleted = $this->manager->deleteOperation((int) $id);
106
+        return new JSONResponse($deleted);
107
+    }
108 108
 
109
-	/**
110
-	 * @param array $operation
111
-	 * @return array
112
-	 */
113
-	protected function prepareOperation(array $operation) {
114
-		$checkIds = json_decode($operation['checks']);
115
-		$checks = $this->manager->getChecks($checkIds);
109
+    /**
110
+     * @param array $operation
111
+     * @return array
112
+     */
113
+    protected function prepareOperation(array $operation) {
114
+        $checkIds = json_decode($operation['checks']);
115
+        $checks = $this->manager->getChecks($checkIds);
116 116
 
117
-		$operation['checks'] = [];
118
-		foreach ($checks as $check) {
119
-			// Remove internal values
120
-			unset($check['id']);
121
-			unset($check['hash']);
117
+        $operation['checks'] = [];
118
+        foreach ($checks as $check) {
119
+            // Remove internal values
120
+            unset($check['id']);
121
+            unset($check['hash']);
122 122
 
123
-			$operation['checks'][] = $check;
124
-		}
123
+            $operation['checks'][] = $check;
124
+        }
125 125
 
126
-		return $operation;
127
-	}
126
+        return $operation;
127
+    }
128 128
 }
Please login to merge, or discard this patch.
apps/workflowengine/lib/Settings/Section.php 1 patch
Indentation   +36 added lines, -36 removed lines patch added patch discarded remove patch
@@ -28,45 +28,45 @@
 block discarded – undo
28 28
 use OCP\Settings\IIconSection;
29 29
 
30 30
 class Section implements IIconSection {
31
-	/** @var IL10N */
32
-	private $l;
33
-	/** @var IURLGenerator */
34
-	private $url;
31
+    /** @var IL10N */
32
+    private $l;
33
+    /** @var IURLGenerator */
34
+    private $url;
35 35
 
36
-	/**
37
-	 * @param IURLGenerator $url
38
-	 * @param IL10N $l
39
-	 */
40
-	public function __construct(IURLGenerator $url, IL10N $l) {
41
-		$this->url = $url;
42
-		$this->l = $l;
43
-	}
36
+    /**
37
+     * @param IURLGenerator $url
38
+     * @param IL10N $l
39
+     */
40
+    public function __construct(IURLGenerator $url, IL10N $l) {
41
+        $this->url = $url;
42
+        $this->l = $l;
43
+    }
44 44
 
45
-	/**
46
-	 * {@inheritdoc}
47
-	 */
48
-	public function getID() {
49
-		return 'workflow';
50
-	}
45
+    /**
46
+     * {@inheritdoc}
47
+     */
48
+    public function getID() {
49
+        return 'workflow';
50
+    }
51 51
 
52
-	/**
53
-	 * {@inheritdoc}
54
-	 */
55
-	public function getName() {
56
-		return $this->l->t('Workflow');
57
-	}
52
+    /**
53
+     * {@inheritdoc}
54
+     */
55
+    public function getName() {
56
+        return $this->l->t('Workflow');
57
+    }
58 58
 
59
-	/**
60
-	 * {@inheritdoc}
61
-	 */
62
-	public function getPriority() {
63
-		return 55;
64
-	}
59
+    /**
60
+     * {@inheritdoc}
61
+     */
62
+    public function getPriority() {
63
+        return 55;
64
+    }
65 65
 
66
-	/**
67
-	 * {@inheritdoc}
68
-	 */
69
-	public function getIcon() {
70
-		return $this->url->imagePath('core', 'actions/tag.svg');
71
-	}
66
+    /**
67
+     * {@inheritdoc}
68
+     */
69
+    public function getIcon() {
70
+        return $this->url->imagePath('core', 'actions/tag.svg');
71
+    }
72 72
 }
Please login to merge, or discard this patch.