Completed
Pull Request — master (#4888)
by Julius
32:02 queued 15:08
created
apps/files_versions/lib/BackgroundJob/ExpireVersions.php 2 patches
Indentation   +52 added lines, -52 removed lines patch added patch discarded remove patch
@@ -31,66 +31,66 @@
 block discarded – undo
31 31
 
32 32
 class ExpireVersions extends \OC\BackgroundJob\TimedJob {
33 33
 
34
-	const ITEMS_PER_SESSION = 1000;
34
+    const ITEMS_PER_SESSION = 1000;
35 35
 
36
-	/**
37
-	 * @var Expiration
38
-	 */
39
-	private $expiration;
36
+    /**
37
+     * @var Expiration
38
+     */
39
+    private $expiration;
40 40
 	
41
-	/**
42
-	 * @var IUserManager
43
-	 */
44
-	private $userManager;
41
+    /**
42
+     * @var IUserManager
43
+     */
44
+    private $userManager;
45 45
 
46
-	public function __construct(IUserManager $userManager = null, Expiration $expiration = null) {
47
-		// Run once per 30 minutes
48
-		$this->setInterval(60 * 30);
46
+    public function __construct(IUserManager $userManager = null, Expiration $expiration = null) {
47
+        // Run once per 30 minutes
48
+        $this->setInterval(60 * 30);
49 49
 
50
-		if (is_null($expiration) || is_null($userManager)) {
51
-			$this->fixDIForJobs();
52
-		} else {
53
-			$this->expiration = $expiration;
54
-			$this->userManager = $userManager;
55
-		}
56
-	}
50
+        if (is_null($expiration) || is_null($userManager)) {
51
+            $this->fixDIForJobs();
52
+        } else {
53
+            $this->expiration = $expiration;
54
+            $this->userManager = $userManager;
55
+        }
56
+    }
57 57
 
58
-	protected function fixDIForJobs() {
59
-		$application = new Application();
60
-		$this->expiration = $application->getContainer()->query('Expiration');
61
-		$this->userManager = \OC::$server->getUserManager();
62
-	}
58
+    protected function fixDIForJobs() {
59
+        $application = new Application();
60
+        $this->expiration = $application->getContainer()->query('Expiration');
61
+        $this->userManager = \OC::$server->getUserManager();
62
+    }
63 63
 
64
-	protected function run($argument) {
65
-		$maxAge = $this->expiration->getMaxAgeAsTimestamp();
66
-		if (!$maxAge) {
67
-			return;
68
-		}
64
+    protected function run($argument) {
65
+        $maxAge = $this->expiration->getMaxAgeAsTimestamp();
66
+        if (!$maxAge) {
67
+            return;
68
+        }
69 69
 
70
-		$this->userManager->callForSeenUsers(function(IUser $user) {
71
-			$uid = $user->getUID();
72
-			if (!$this->setupFS($uid)) {
73
-				return;
74
-			}
75
-			Storage::expireOlderThanMaxForUser($uid);
76
-		});
77
-	}
70
+        $this->userManager->callForSeenUsers(function(IUser $user) {
71
+            $uid = $user->getUID();
72
+            if (!$this->setupFS($uid)) {
73
+                return;
74
+            }
75
+            Storage::expireOlderThanMaxForUser($uid);
76
+        });
77
+    }
78 78
 
79
-	/**
80
-	 * Act on behalf on trash item owner
81
-	 * @param string $user
82
-	 * @return boolean
83
-	 */
84
-	protected function setupFS($user) {
85
-		\OC_Util::tearDownFS();
86
-		\OC_Util::setupFS($user);
79
+    /**
80
+     * Act on behalf on trash item owner
81
+     * @param string $user
82
+     * @return boolean
83
+     */
84
+    protected function setupFS($user) {
85
+        \OC_Util::tearDownFS();
86
+        \OC_Util::setupFS($user);
87 87
 
88
-		// Check if this user has a versions directory
89
-		$view = new \OC\Files\View('/' . $user);
90
-		if (!$view->is_dir('/files_versions')) {
91
-			return false;
92
-		}
88
+        // Check if this user has a versions directory
89
+        $view = new \OC\Files\View('/' . $user);
90
+        if (!$view->is_dir('/files_versions')) {
91
+            return false;
92
+        }
93 93
 
94
-		return true;
95
-	}
94
+        return true;
95
+    }
96 96
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -86,7 +86,7 @@
 block discarded – undo
86 86
 		\OC_Util::setupFS($user);
87 87
 
88 88
 		// Check if this user has a versions directory
89
-		$view = new \OC\Files\View('/' . $user);
89
+		$view = new \OC\Files\View('/'.$user);
90 90
 		if (!$view->is_dir('/files_versions')) {
91 91
 			return false;
92 92
 		}
Please login to merge, or discard this patch.
apps/files_versions/lib/Hooks.php 2 patches
Spacing   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -53,11 +53,11 @@  discard block
 block discarded – undo
53 53
 	/**
54 54
 	 * listen to write event.
55 55
 	 */
56
-	public static function write_hook( $params ) {
56
+	public static function write_hook($params) {
57 57
 
58 58
 		if (\OCP\App::isEnabled('files_versions')) {
59 59
 			$path = $params[\OC\Files\Filesystem::signal_param_path];
60
-			if($path<>'') {
60
+			if ($path <> '') {
61 61
 				Storage::store($path);
62 62
 			}
63 63
 		}
@@ -75,7 +75,7 @@  discard block
 block discarded – undo
75 75
 
76 76
 		if (\OCP\App::isEnabled('files_versions')) {
77 77
 			$path = $params[\OC\Files\Filesystem::signal_param_path];
78
-			if($path<>'') {
78
+			if ($path <> '') {
79 79
 				Storage::delete($path);
80 80
 			}
81 81
 		}
@@ -87,7 +87,7 @@  discard block
 block discarded – undo
87 87
 	 */
88 88
 	public static function pre_remove_hook($params) {
89 89
 		$path = $params[\OC\Files\Filesystem::signal_param_path];
90
-			if($path<>'') {
90
+			if ($path <> '') {
91 91
 				Storage::markDeletedFile($path);
92 92
 			}
93 93
 	}
@@ -104,7 +104,7 @@  discard block
 block discarded – undo
104 104
 		if (\OCP\App::isEnabled('files_versions')) {
105 105
 			$oldpath = $params['oldpath'];
106 106
 			$newpath = $params['newpath'];
107
-			if($oldpath<>'' && $newpath<>'') {
107
+			if ($oldpath <> '' && $newpath <> '') {
108 108
 				Storage::renameOrCopy($oldpath, $newpath, 'rename');
109 109
 			}
110 110
 		}
@@ -122,7 +122,7 @@  discard block
 block discarded – undo
122 122
 		if (\OCP\App::isEnabled('files_versions')) {
123 123
 			$oldpath = $params['oldpath'];
124 124
 			$newpath = $params['newpath'];
125
-			if($oldpath<>'' && $newpath<>'') {
125
+			if ($oldpath <> '' && $newpath <> '') {
126 126
 				Storage::renameOrCopy($oldpath, $newpath, 'copy');
127 127
 			}
128 128
 		}
@@ -141,7 +141,7 @@  discard block
 block discarded – undo
141 141
 
142 142
 			// if we rename a movable mount point, then the versions don't have
143 143
 			// to be renamed
144
-			$absOldPath = \OC\Files\Filesystem::normalizePath('/' . \OCP\User::getUser() . '/files' . $params['oldpath']);
144
+			$absOldPath = \OC\Files\Filesystem::normalizePath('/'.\OCP\User::getUser().'/files'.$params['oldpath']);
145 145
 			$manager = \OC\Files\Filesystem::getMountManager();
146 146
 			$mount = $manager->find($absOldPath);
147 147
 			$internalPath = $mount->getInternalPath($absOldPath);
@@ -149,7 +149,7 @@  discard block
 block discarded – undo
149 149
 				return;
150 150
 			}
151 151
 
152
-			$view = new \OC\Files\View(\OCP\User::getUser() . '/files');
152
+			$view = new \OC\Files\View(\OCP\User::getUser().'/files');
153 153
 			if ($view->file_exists($params['newpath'])) {
154 154
 				Storage::store($params['newpath']);
155 155
 			} else {
Please login to merge, or discard this patch.
Indentation   +130 added lines, -130 removed lines patch added patch discarded remove patch
@@ -35,134 +35,134 @@
 block discarded – undo
35 35
 
36 36
 class Hooks {
37 37
 
38
-	public static function connectHooks() {
39
-		// Listen to write signals
40
-		\OCP\Util::connectHook('OC_Filesystem', 'write', 'OCA\Files_Versions\Hooks', 'write_hook');
41
-		// Listen to delete and rename signals
42
-		\OCP\Util::connectHook('OC_Filesystem', 'post_delete', 'OCA\Files_Versions\Hooks', 'remove_hook');
43
-		\OCP\Util::connectHook('OC_Filesystem', 'delete', 'OCA\Files_Versions\Hooks', 'pre_remove_hook');
44
-		\OCP\Util::connectHook('OC_Filesystem', 'post_rename', 'OCA\Files_Versions\Hooks', 'rename_hook');
45
-		\OCP\Util::connectHook('OC_Filesystem', 'post_copy', 'OCA\Files_Versions\Hooks', 'copy_hook');
46
-		\OCP\Util::connectHook('OC_Filesystem', 'rename', 'OCA\Files_Versions\Hooks', 'pre_renameOrCopy_hook');
47
-		\OCP\Util::connectHook('OC_Filesystem', 'copy', 'OCA\Files_Versions\Hooks', 'pre_renameOrCopy_hook');
48
-
49
-		$eventDispatcher = \OC::$server->getEventDispatcher();
50
-		$eventDispatcher->addListener('OCA\Files::loadAdditionalScripts', ['OCA\Files_Versions\Hooks', 'onLoadFilesAppScripts']);
51
-	}
52
-
53
-	/**
54
-	 * listen to write event.
55
-	 */
56
-	public static function write_hook( $params ) {
57
-
58
-		if (\OCP\App::isEnabled('files_versions')) {
59
-			$path = $params[\OC\Files\Filesystem::signal_param_path];
60
-			if($path<>'') {
61
-				Storage::store($path);
62
-			}
63
-		}
64
-	}
65
-
66
-
67
-	/**
68
-	 * Erase versions of deleted file
69
-	 * @param array $params
70
-	 *
71
-	 * This function is connected to the delete signal of OC_Filesystem
72
-	 * cleanup the versions directory if the actual file gets deleted
73
-	 */
74
-	public static function remove_hook($params) {
75
-
76
-		if (\OCP\App::isEnabled('files_versions')) {
77
-			$path = $params[\OC\Files\Filesystem::signal_param_path];
78
-			if($path<>'') {
79
-				Storage::delete($path);
80
-			}
81
-		}
82
-	}
83
-
84
-	/**
85
-	 * mark file as "deleted" so that we can clean up the versions if the file is gone
86
-	 * @param array $params
87
-	 */
88
-	public static function pre_remove_hook($params) {
89
-		$path = $params[\OC\Files\Filesystem::signal_param_path];
90
-			if($path<>'') {
91
-				Storage::markDeletedFile($path);
92
-			}
93
-	}
94
-
95
-	/**
96
-	 * rename/move versions of renamed/moved files
97
-	 * @param array $params array with oldpath and newpath
98
-	 *
99
-	 * This function is connected to the rename signal of OC_Filesystem and adjust the name and location
100
-	 * of the stored versions along the actual file
101
-	 */
102
-	public static function rename_hook($params) {
103
-
104
-		if (\OCP\App::isEnabled('files_versions')) {
105
-			$oldpath = $params['oldpath'];
106
-			$newpath = $params['newpath'];
107
-			if($oldpath<>'' && $newpath<>'') {
108
-				Storage::renameOrCopy($oldpath, $newpath, 'rename');
109
-			}
110
-		}
111
-	}
112
-
113
-	/**
114
-	 * copy versions of copied files
115
-	 * @param array $params array with oldpath and newpath
116
-	 *
117
-	 * This function is connected to the copy signal of OC_Filesystem and copies the
118
-	 * the stored versions to the new location
119
-	 */
120
-	public static function copy_hook($params) {
121
-
122
-		if (\OCP\App::isEnabled('files_versions')) {
123
-			$oldpath = $params['oldpath'];
124
-			$newpath = $params['newpath'];
125
-			if($oldpath<>'' && $newpath<>'') {
126
-				Storage::renameOrCopy($oldpath, $newpath, 'copy');
127
-			}
128
-		}
129
-	}
130
-
131
-	/**
132
-	 * Remember owner and the owner path of the source file.
133
-	 * If the file already exists, then it was a upload of a existing file
134
-	 * over the web interface and we call Storage::store() directly
135
-	 *
136
-	 * @param array $params array with oldpath and newpath
137
-	 *
138
-	 */
139
-	public static function pre_renameOrCopy_hook($params) {
140
-		if (\OCP\App::isEnabled('files_versions')) {
141
-
142
-			// if we rename a movable mount point, then the versions don't have
143
-			// to be renamed
144
-			$absOldPath = \OC\Files\Filesystem::normalizePath('/' . \OCP\User::getUser() . '/files' . $params['oldpath']);
145
-			$manager = \OC\Files\Filesystem::getMountManager();
146
-			$mount = $manager->find($absOldPath);
147
-			$internalPath = $mount->getInternalPath($absOldPath);
148
-			if ($internalPath === '' and $mount instanceof \OC\Files\Mount\MoveableMount) {
149
-				return;
150
-			}
151
-
152
-			$view = new \OC\Files\View(\OCP\User::getUser() . '/files');
153
-			if ($view->file_exists($params['newpath'])) {
154
-				Storage::store($params['newpath']);
155
-			} else {
156
-				Storage::setSourcePathAndUser($params['oldpath']);
157
-			}
158
-
159
-		}
160
-	}
161
-
162
-	/**
163
-	 * Load additional scripts when the files app is visible
164
-	 */
165
-	public static function onLoadFilesAppScripts() {
166
-		\OCP\Util::addScript('files_versions', 'merged');
167
-	}
38
+    public static function connectHooks() {
39
+        // Listen to write signals
40
+        \OCP\Util::connectHook('OC_Filesystem', 'write', 'OCA\Files_Versions\Hooks', 'write_hook');
41
+        // Listen to delete and rename signals
42
+        \OCP\Util::connectHook('OC_Filesystem', 'post_delete', 'OCA\Files_Versions\Hooks', 'remove_hook');
43
+        \OCP\Util::connectHook('OC_Filesystem', 'delete', 'OCA\Files_Versions\Hooks', 'pre_remove_hook');
44
+        \OCP\Util::connectHook('OC_Filesystem', 'post_rename', 'OCA\Files_Versions\Hooks', 'rename_hook');
45
+        \OCP\Util::connectHook('OC_Filesystem', 'post_copy', 'OCA\Files_Versions\Hooks', 'copy_hook');
46
+        \OCP\Util::connectHook('OC_Filesystem', 'rename', 'OCA\Files_Versions\Hooks', 'pre_renameOrCopy_hook');
47
+        \OCP\Util::connectHook('OC_Filesystem', 'copy', 'OCA\Files_Versions\Hooks', 'pre_renameOrCopy_hook');
48
+
49
+        $eventDispatcher = \OC::$server->getEventDispatcher();
50
+        $eventDispatcher->addListener('OCA\Files::loadAdditionalScripts', ['OCA\Files_Versions\Hooks', 'onLoadFilesAppScripts']);
51
+    }
52
+
53
+    /**
54
+     * listen to write event.
55
+     */
56
+    public static function write_hook( $params ) {
57
+
58
+        if (\OCP\App::isEnabled('files_versions')) {
59
+            $path = $params[\OC\Files\Filesystem::signal_param_path];
60
+            if($path<>'') {
61
+                Storage::store($path);
62
+            }
63
+        }
64
+    }
65
+
66
+
67
+    /**
68
+     * Erase versions of deleted file
69
+     * @param array $params
70
+     *
71
+     * This function is connected to the delete signal of OC_Filesystem
72
+     * cleanup the versions directory if the actual file gets deleted
73
+     */
74
+    public static function remove_hook($params) {
75
+
76
+        if (\OCP\App::isEnabled('files_versions')) {
77
+            $path = $params[\OC\Files\Filesystem::signal_param_path];
78
+            if($path<>'') {
79
+                Storage::delete($path);
80
+            }
81
+        }
82
+    }
83
+
84
+    /**
85
+     * mark file as "deleted" so that we can clean up the versions if the file is gone
86
+     * @param array $params
87
+     */
88
+    public static function pre_remove_hook($params) {
89
+        $path = $params[\OC\Files\Filesystem::signal_param_path];
90
+            if($path<>'') {
91
+                Storage::markDeletedFile($path);
92
+            }
93
+    }
94
+
95
+    /**
96
+     * rename/move versions of renamed/moved files
97
+     * @param array $params array with oldpath and newpath
98
+     *
99
+     * This function is connected to the rename signal of OC_Filesystem and adjust the name and location
100
+     * of the stored versions along the actual file
101
+     */
102
+    public static function rename_hook($params) {
103
+
104
+        if (\OCP\App::isEnabled('files_versions')) {
105
+            $oldpath = $params['oldpath'];
106
+            $newpath = $params['newpath'];
107
+            if($oldpath<>'' && $newpath<>'') {
108
+                Storage::renameOrCopy($oldpath, $newpath, 'rename');
109
+            }
110
+        }
111
+    }
112
+
113
+    /**
114
+     * copy versions of copied files
115
+     * @param array $params array with oldpath and newpath
116
+     *
117
+     * This function is connected to the copy signal of OC_Filesystem and copies the
118
+     * the stored versions to the new location
119
+     */
120
+    public static function copy_hook($params) {
121
+
122
+        if (\OCP\App::isEnabled('files_versions')) {
123
+            $oldpath = $params['oldpath'];
124
+            $newpath = $params['newpath'];
125
+            if($oldpath<>'' && $newpath<>'') {
126
+                Storage::renameOrCopy($oldpath, $newpath, 'copy');
127
+            }
128
+        }
129
+    }
130
+
131
+    /**
132
+     * Remember owner and the owner path of the source file.
133
+     * If the file already exists, then it was a upload of a existing file
134
+     * over the web interface and we call Storage::store() directly
135
+     *
136
+     * @param array $params array with oldpath and newpath
137
+     *
138
+     */
139
+    public static function pre_renameOrCopy_hook($params) {
140
+        if (\OCP\App::isEnabled('files_versions')) {
141
+
142
+            // if we rename a movable mount point, then the versions don't have
143
+            // to be renamed
144
+            $absOldPath = \OC\Files\Filesystem::normalizePath('/' . \OCP\User::getUser() . '/files' . $params['oldpath']);
145
+            $manager = \OC\Files\Filesystem::getMountManager();
146
+            $mount = $manager->find($absOldPath);
147
+            $internalPath = $mount->getInternalPath($absOldPath);
148
+            if ($internalPath === '' and $mount instanceof \OC\Files\Mount\MoveableMount) {
149
+                return;
150
+            }
151
+
152
+            $view = new \OC\Files\View(\OCP\User::getUser() . '/files');
153
+            if ($view->file_exists($params['newpath'])) {
154
+                Storage::store($params['newpath']);
155
+            } else {
156
+                Storage::setSourcePathAndUser($params['oldpath']);
157
+            }
158
+
159
+        }
160
+    }
161
+
162
+    /**
163
+     * Load additional scripts when the files app is visible
164
+     */
165
+    public static function onLoadFilesAppScripts() {
166
+        \OCP\Util::addScript('files_versions', 'merged');
167
+    }
168 168
 }
Please login to merge, or discard this patch.
apps/files_versions/lib/Expiration.php 2 patches
Indentation   +169 added lines, -169 removed lines patch added patch discarded remove patch
@@ -27,173 +27,173 @@
 block discarded – undo
27 27
 
28 28
 class Expiration {
29 29
 
30
-	// how long do we keep files a version if no other value is defined in the config file (unit: days)
31
-	const NO_OBLIGATION = -1;
32
-
33
-	/** @var ITimeFactory */
34
-	private $timeFactory;
35
-
36
-	/** @var string */
37
-	private $retentionObligation;
38
-
39
-	/** @var int */
40
-	private $minAge;
41
-
42
-	/** @var int */
43
-	private $maxAge;
44
-
45
-	/** @var bool */
46
-	private $canPurgeToSaveSpace;
47
-
48
-	public function __construct(IConfig $config,ITimeFactory $timeFactory){
49
-		$this->timeFactory = $timeFactory;
50
-		$this->retentionObligation = $config->getSystemValue('versions_retention_obligation', 'auto');
51
-
52
-		if ($this->retentionObligation !== 'disabled') {
53
-			$this->parseRetentionObligation();
54
-		}
55
-	}
56
-
57
-	/**
58
-	 * Is versions expiration enabled
59
-	 * @return bool
60
-	 */
61
-	public function isEnabled(){
62
-		return $this->retentionObligation !== 'disabled';
63
-	}
64
-
65
-	/**
66
-	 * Is default expiration active
67
-	 */
68
-	public function shouldAutoExpire(){
69
-		return $this->minAge === self::NO_OBLIGATION
70
-				|| $this->maxAge === self::NO_OBLIGATION;
71
-	}
72
-
73
-	/**
74
-	 * Check if given timestamp in expiration range
75
-	 * @param int $timestamp
76
-	 * @param bool $quotaExceeded
77
-	 * @return bool
78
-	 */
79
-	public function isExpired($timestamp, $quotaExceeded = false){
80
-		// No expiration if disabled
81
-		if (!$this->isEnabled()) {
82
-			return false;
83
-		}
84
-
85
-		// Purge to save space (if allowed)
86
-		if ($quotaExceeded && $this->canPurgeToSaveSpace) {
87
-			return true;
88
-		}
89
-
90
-		$time = $this->timeFactory->getTime();
91
-		// Never expire dates in future e.g. misconfiguration or negative time
92
-		// adjustment
93
-		if ($time<$timestamp) {
94
-			return false;
95
-		}
96
-
97
-		// Purge as too old
98
-		if ($this->maxAge !== self::NO_OBLIGATION) {
99
-			$maxTimestamp = $time - ($this->maxAge * 86400);
100
-			$isOlderThanMax = $timestamp < $maxTimestamp;
101
-		} else {
102
-			$isOlderThanMax = false;
103
-		}
104
-
105
-		if ($this->minAge !== self::NO_OBLIGATION) {
106
-			// older than Min obligation and we are running out of quota?
107
-			$minTimestamp = $time - ($this->minAge * 86400);
108
-			$isMinReached = ($timestamp < $minTimestamp) && $quotaExceeded;
109
-		} else {
110
-			$isMinReached = false;
111
-		}
112
-
113
-		return $isOlderThanMax || $isMinReached;
114
-	}
115
-
116
-	/**
117
-	 * Get maximal retention obligation as a timestamp
118
-	 * @return int
119
-	 */
120
-	public function getMaxAgeAsTimestamp(){
121
-		$maxAge = false;
122
-		if ($this->isEnabled() && $this->maxAge !== self::NO_OBLIGATION) {
123
-			$time = $this->timeFactory->getTime();
124
-			$maxAge = $time - ($this->maxAge * 86400);
125
-		}
126
-		return $maxAge;
127
-	}
128
-
129
-	/**
130
-	* Read versions_retention_obligation, validate it 
131
-	* and set private members accordingly
132
-	*/
133
-	private function parseRetentionObligation(){
134
-		$splitValues = explode(',', $this->retentionObligation);
135
-		if (!isset($splitValues[0])) {
136
-			$minValue = 'auto';
137
-		} else {
138
-			$minValue = trim($splitValues[0]);
139
-		}
140
-
141
-		if (!isset($splitValues[1])) {
142
-			$maxValue = 'auto';
143
-		} else {
144
-			$maxValue = trim($splitValues[1]);
145
-		}
146
-
147
-		$isValid = true;
148
-		// Validate
149
-		if (!ctype_digit($minValue) && $minValue !== 'auto') {
150
-			$isValid = false;
151
-			\OC::$server->getLogger()->warning(
152
-					$minValue . ' is not a valid value for minimal versions retention obligation. Check versions_retention_obligation in your config.php. Falling back to auto.',
153
-					['app'=>'files_versions']
154
-			);
155
-		}
156
-
157
-		if (!ctype_digit($maxValue) && $maxValue !== 'auto') {
158
-			$isValid = false;
159
-			\OC::$server->getLogger()->warning(
160
-					$maxValue . ' is not a valid value for maximal versions retention obligation. Check versions_retention_obligation in your config.php. Falling back to auto.',
161
-					['app'=>'files_versions']
162
-			);
163
-		}
164
-
165
-		if (!$isValid){
166
-			$minValue = 'auto';
167
-			$maxValue = 'auto';
168
-		}
169
-
170
-
171
-		if ($minValue === 'auto' && $maxValue === 'auto') {
172
-			// Default: Delete anytime if space needed
173
-			$this->minAge = self::NO_OBLIGATION;
174
-			$this->maxAge = self::NO_OBLIGATION;
175
-			$this->canPurgeToSaveSpace = true;
176
-		} elseif ($minValue !== 'auto' && $maxValue === 'auto') {
177
-			// Keep for X days but delete anytime if space needed
178
-			$this->minAge = intval($minValue);
179
-			$this->maxAge = self::NO_OBLIGATION;
180
-			$this->canPurgeToSaveSpace = true;
181
-		} elseif ($minValue === 'auto' && $maxValue !== 'auto') {
182
-			// Delete anytime if space needed, Delete all older than max automatically
183
-			$this->minAge = self::NO_OBLIGATION;
184
-			$this->maxAge = intval($maxValue);
185
-			$this->canPurgeToSaveSpace = true;
186
-		} elseif ($minValue !== 'auto' && $maxValue !== 'auto') {
187
-			// Delete all older than max OR older than min if space needed
188
-
189
-			// Max < Min as per https://github.com/owncloud/core/issues/16301
190
-			if ($maxValue < $minValue) {
191
-				$maxValue = $minValue;
192
-			}
193
-
194
-			$this->minAge = intval($minValue);
195
-			$this->maxAge = intval($maxValue);
196
-			$this->canPurgeToSaveSpace = false;
197
-		}
198
-	}
30
+    // how long do we keep files a version if no other value is defined in the config file (unit: days)
31
+    const NO_OBLIGATION = -1;
32
+
33
+    /** @var ITimeFactory */
34
+    private $timeFactory;
35
+
36
+    /** @var string */
37
+    private $retentionObligation;
38
+
39
+    /** @var int */
40
+    private $minAge;
41
+
42
+    /** @var int */
43
+    private $maxAge;
44
+
45
+    /** @var bool */
46
+    private $canPurgeToSaveSpace;
47
+
48
+    public function __construct(IConfig $config,ITimeFactory $timeFactory){
49
+        $this->timeFactory = $timeFactory;
50
+        $this->retentionObligation = $config->getSystemValue('versions_retention_obligation', 'auto');
51
+
52
+        if ($this->retentionObligation !== 'disabled') {
53
+            $this->parseRetentionObligation();
54
+        }
55
+    }
56
+
57
+    /**
58
+     * Is versions expiration enabled
59
+     * @return bool
60
+     */
61
+    public function isEnabled(){
62
+        return $this->retentionObligation !== 'disabled';
63
+    }
64
+
65
+    /**
66
+     * Is default expiration active
67
+     */
68
+    public function shouldAutoExpire(){
69
+        return $this->minAge === self::NO_OBLIGATION
70
+                || $this->maxAge === self::NO_OBLIGATION;
71
+    }
72
+
73
+    /**
74
+     * Check if given timestamp in expiration range
75
+     * @param int $timestamp
76
+     * @param bool $quotaExceeded
77
+     * @return bool
78
+     */
79
+    public function isExpired($timestamp, $quotaExceeded = false){
80
+        // No expiration if disabled
81
+        if (!$this->isEnabled()) {
82
+            return false;
83
+        }
84
+
85
+        // Purge to save space (if allowed)
86
+        if ($quotaExceeded && $this->canPurgeToSaveSpace) {
87
+            return true;
88
+        }
89
+
90
+        $time = $this->timeFactory->getTime();
91
+        // Never expire dates in future e.g. misconfiguration or negative time
92
+        // adjustment
93
+        if ($time<$timestamp) {
94
+            return false;
95
+        }
96
+
97
+        // Purge as too old
98
+        if ($this->maxAge !== self::NO_OBLIGATION) {
99
+            $maxTimestamp = $time - ($this->maxAge * 86400);
100
+            $isOlderThanMax = $timestamp < $maxTimestamp;
101
+        } else {
102
+            $isOlderThanMax = false;
103
+        }
104
+
105
+        if ($this->minAge !== self::NO_OBLIGATION) {
106
+            // older than Min obligation and we are running out of quota?
107
+            $minTimestamp = $time - ($this->minAge * 86400);
108
+            $isMinReached = ($timestamp < $minTimestamp) && $quotaExceeded;
109
+        } else {
110
+            $isMinReached = false;
111
+        }
112
+
113
+        return $isOlderThanMax || $isMinReached;
114
+    }
115
+
116
+    /**
117
+     * Get maximal retention obligation as a timestamp
118
+     * @return int
119
+     */
120
+    public function getMaxAgeAsTimestamp(){
121
+        $maxAge = false;
122
+        if ($this->isEnabled() && $this->maxAge !== self::NO_OBLIGATION) {
123
+            $time = $this->timeFactory->getTime();
124
+            $maxAge = $time - ($this->maxAge * 86400);
125
+        }
126
+        return $maxAge;
127
+    }
128
+
129
+    /**
130
+     * Read versions_retention_obligation, validate it 
131
+     * and set private members accordingly
132
+     */
133
+    private function parseRetentionObligation(){
134
+        $splitValues = explode(',', $this->retentionObligation);
135
+        if (!isset($splitValues[0])) {
136
+            $minValue = 'auto';
137
+        } else {
138
+            $minValue = trim($splitValues[0]);
139
+        }
140
+
141
+        if (!isset($splitValues[1])) {
142
+            $maxValue = 'auto';
143
+        } else {
144
+            $maxValue = trim($splitValues[1]);
145
+        }
146
+
147
+        $isValid = true;
148
+        // Validate
149
+        if (!ctype_digit($minValue) && $minValue !== 'auto') {
150
+            $isValid = false;
151
+            \OC::$server->getLogger()->warning(
152
+                    $minValue . ' is not a valid value for minimal versions retention obligation. Check versions_retention_obligation in your config.php. Falling back to auto.',
153
+                    ['app'=>'files_versions']
154
+            );
155
+        }
156
+
157
+        if (!ctype_digit($maxValue) && $maxValue !== 'auto') {
158
+            $isValid = false;
159
+            \OC::$server->getLogger()->warning(
160
+                    $maxValue . ' is not a valid value for maximal versions retention obligation. Check versions_retention_obligation in your config.php. Falling back to auto.',
161
+                    ['app'=>'files_versions']
162
+            );
163
+        }
164
+
165
+        if (!$isValid){
166
+            $minValue = 'auto';
167
+            $maxValue = 'auto';
168
+        }
169
+
170
+
171
+        if ($minValue === 'auto' && $maxValue === 'auto') {
172
+            // Default: Delete anytime if space needed
173
+            $this->minAge = self::NO_OBLIGATION;
174
+            $this->maxAge = self::NO_OBLIGATION;
175
+            $this->canPurgeToSaveSpace = true;
176
+        } elseif ($minValue !== 'auto' && $maxValue === 'auto') {
177
+            // Keep for X days but delete anytime if space needed
178
+            $this->minAge = intval($minValue);
179
+            $this->maxAge = self::NO_OBLIGATION;
180
+            $this->canPurgeToSaveSpace = true;
181
+        } elseif ($minValue === 'auto' && $maxValue !== 'auto') {
182
+            // Delete anytime if space needed, Delete all older than max automatically
183
+            $this->minAge = self::NO_OBLIGATION;
184
+            $this->maxAge = intval($maxValue);
185
+            $this->canPurgeToSaveSpace = true;
186
+        } elseif ($minValue !== 'auto' && $maxValue !== 'auto') {
187
+            // Delete all older than max OR older than min if space needed
188
+
189
+            // Max < Min as per https://github.com/owncloud/core/issues/16301
190
+            if ($maxValue < $minValue) {
191
+                $maxValue = $minValue;
192
+            }
193
+
194
+            $this->minAge = intval($minValue);
195
+            $this->maxAge = intval($maxValue);
196
+            $this->canPurgeToSaveSpace = false;
197
+        }
198
+    }
199 199
 }
Please login to merge, or discard this patch.
Spacing   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -45,7 +45,7 @@  discard block
 block discarded – undo
45 45
 	/** @var bool */
46 46
 	private $canPurgeToSaveSpace;
47 47
 
48
-	public function __construct(IConfig $config,ITimeFactory $timeFactory){
48
+	public function __construct(IConfig $config, ITimeFactory $timeFactory) {
49 49
 		$this->timeFactory = $timeFactory;
50 50
 		$this->retentionObligation = $config->getSystemValue('versions_retention_obligation', 'auto');
51 51
 
@@ -58,14 +58,14 @@  discard block
 block discarded – undo
58 58
 	 * Is versions expiration enabled
59 59
 	 * @return bool
60 60
 	 */
61
-	public function isEnabled(){
61
+	public function isEnabled() {
62 62
 		return $this->retentionObligation !== 'disabled';
63 63
 	}
64 64
 
65 65
 	/**
66 66
 	 * Is default expiration active
67 67
 	 */
68
-	public function shouldAutoExpire(){
68
+	public function shouldAutoExpire() {
69 69
 		return $this->minAge === self::NO_OBLIGATION
70 70
 				|| $this->maxAge === self::NO_OBLIGATION;
71 71
 	}
@@ -76,7 +76,7 @@  discard block
 block discarded – undo
76 76
 	 * @param bool $quotaExceeded
77 77
 	 * @return bool
78 78
 	 */
79
-	public function isExpired($timestamp, $quotaExceeded = false){
79
+	public function isExpired($timestamp, $quotaExceeded = false) {
80 80
 		// No expiration if disabled
81 81
 		if (!$this->isEnabled()) {
82 82
 			return false;
@@ -90,7 +90,7 @@  discard block
 block discarded – undo
90 90
 		$time = $this->timeFactory->getTime();
91 91
 		// Never expire dates in future e.g. misconfiguration or negative time
92 92
 		// adjustment
93
-		if ($time<$timestamp) {
93
+		if ($time < $timestamp) {
94 94
 			return false;
95 95
 		}
96 96
 
@@ -117,7 +117,7 @@  discard block
 block discarded – undo
117 117
 	 * Get maximal retention obligation as a timestamp
118 118
 	 * @return int
119 119
 	 */
120
-	public function getMaxAgeAsTimestamp(){
120
+	public function getMaxAgeAsTimestamp() {
121 121
 		$maxAge = false;
122 122
 		if ($this->isEnabled() && $this->maxAge !== self::NO_OBLIGATION) {
123 123
 			$time = $this->timeFactory->getTime();
@@ -130,7 +130,7 @@  discard block
 block discarded – undo
130 130
 	* Read versions_retention_obligation, validate it 
131 131
 	* and set private members accordingly
132 132
 	*/
133
-	private function parseRetentionObligation(){
133
+	private function parseRetentionObligation() {
134 134
 		$splitValues = explode(',', $this->retentionObligation);
135 135
 		if (!isset($splitValues[0])) {
136 136
 			$minValue = 'auto';
@@ -149,7 +149,7 @@  discard block
 block discarded – undo
149 149
 		if (!ctype_digit($minValue) && $minValue !== 'auto') {
150 150
 			$isValid = false;
151 151
 			\OC::$server->getLogger()->warning(
152
-					$minValue . ' is not a valid value for minimal versions retention obligation. Check versions_retention_obligation in your config.php. Falling back to auto.',
152
+					$minValue.' is not a valid value for minimal versions retention obligation. Check versions_retention_obligation in your config.php. Falling back to auto.',
153 153
 					['app'=>'files_versions']
154 154
 			);
155 155
 		}
@@ -157,12 +157,12 @@  discard block
 block discarded – undo
157 157
 		if (!ctype_digit($maxValue) && $maxValue !== 'auto') {
158 158
 			$isValid = false;
159 159
 			\OC::$server->getLogger()->warning(
160
-					$maxValue . ' is not a valid value for maximal versions retention obligation. Check versions_retention_obligation in your config.php. Falling back to auto.',
160
+					$maxValue.' is not a valid value for maximal versions retention obligation. Check versions_retention_obligation in your config.php. Falling back to auto.',
161 161
 					['app'=>'files_versions']
162 162
 			);
163 163
 		}
164 164
 
165
-		if (!$isValid){
165
+		if (!$isValid) {
166 166
 			$minValue = 'auto';
167 167
 			$maxValue = 'auto';
168 168
 		}
Please login to merge, or discard this patch.
apps/files_versions/download.php 2 patches
Indentation   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -32,13 +32,13 @@
 block discarded – undo
32 32
 $revision=(int)$_GET['revision'];
33 33
 
34 34
 try {
35
-	list($uid, $filename) = OCA\Files_Versions\Storage::getUidAndFilename($file);
35
+    list($uid, $filename) = OCA\Files_Versions\Storage::getUidAndFilename($file);
36 36
 } catch(\OCP\Files\NotFoundException $e) {
37
-	header("HTTP/1.1 404 Not Found");
38
-	$tmpl = new OCP\Template('', '404', 'guest');
39
-	$tmpl->assign('file', '');
40
-	$tmpl->printPage();
41
-	exit();
37
+    header("HTTP/1.1 404 Not Found");
38
+    $tmpl = new OCP\Template('', '404', 'guest');
39
+    $tmpl->assign('file', '');
40
+    $tmpl->printPage();
41
+    exit();
42 42
 }
43 43
 
44 44
 $versionName = '/'.$uid.'/files_versions/'.$filename.'.v'.$revision;
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -29,11 +29,11 @@
 block discarded – undo
29 29
 OCP\JSON::checkLoggedIn();
30 30
 
31 31
 $file = $_GET['file'];
32
-$revision=(int)$_GET['revision'];
32
+$revision = (int) $_GET['revision'];
33 33
 
34 34
 try {
35 35
 	list($uid, $filename) = OCA\Files_Versions\Storage::getUidAndFilename($file);
36
-} catch(\OCP\Files\NotFoundException $e) {
36
+} catch (\OCP\Files\NotFoundException $e) {
37 37
 	header("HTTP/1.1 404 Not Found");
38 38
 	$tmpl = new OCP\Template('', '404', 'guest');
39 39
 	$tmpl->assign('file', '');
Please login to merge, or discard this patch.
apps/files_versions/appinfo/routes.php 1 patch
Indentation   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -31,20 +31,20 @@
 block discarded – undo
31 31
 
32 32
 $application = new Application();
33 33
 $application->registerRoutes($this, [
34
-	'routes' => [
35
-		[
36
-			'name' => 'Preview#getPreview',
37
-			'url' => '/preview',
38
-			'verb' => 'GET',
39
-		],
40
-	],
34
+    'routes' => [
35
+        [
36
+            'name' => 'Preview#getPreview',
37
+            'url' => '/preview',
38
+            'verb' => 'GET',
39
+        ],
40
+    ],
41 41
 ]);
42 42
 
43 43
 /** @var $this \OCP\Route\IRouter */
44 44
 $this->create('files_versions_download', 'download.php')
45
-	->actionInclude('files_versions/download.php');
45
+    ->actionInclude('files_versions/download.php');
46 46
 $this->create('files_versions_ajax_getVersions', 'ajax/getVersions.php')
47
-	->actionInclude('files_versions/ajax/getVersions.php');
47
+    ->actionInclude('files_versions/ajax/getVersions.php');
48 48
 $this->create('files_versions_ajax_rollbackVersion', 'ajax/rollbackVersion.php')
49
-	->actionInclude('files_versions/ajax/rollbackVersion.php');
49
+    ->actionInclude('files_versions/ajax/rollbackVersion.php');
50 50
 
Please login to merge, or discard this patch.
lib/public/Authentication/IApacheBackend.php 1 patch
Indentation   +21 added lines, -21 removed lines patch added patch discarded remove patch
@@ -38,28 +38,28 @@
 block discarded – undo
38 38
  */
39 39
 interface IApacheBackend {
40 40
 
41
-	/**
42
-	 * In case the user has been authenticated by Apache true is returned.
43
-	 *
44
-	 * @return boolean whether Apache reports a user as currently logged in.
45
-	 * @since 6.0.0
46
-	 */
47
-	public function isSessionActive();
41
+    /**
42
+     * In case the user has been authenticated by Apache true is returned.
43
+     *
44
+     * @return boolean whether Apache reports a user as currently logged in.
45
+     * @since 6.0.0
46
+     */
47
+    public function isSessionActive();
48 48
 
49
-	/**
50
-	 * Creates an attribute which is added to the logout hyperlink. It can
51
-	 * supply any attribute(s) which are valid for <a>.
52
-	 *
53
-	 * @return string with one or more HTML attributes.
54
-	 * @since 6.0.0
55
-	 */
56
-	public function getLogoutAttribute();
49
+    /**
50
+     * Creates an attribute which is added to the logout hyperlink. It can
51
+     * supply any attribute(s) which are valid for <a>.
52
+     *
53
+     * @return string with one or more HTML attributes.
54
+     * @since 6.0.0
55
+     */
56
+    public function getLogoutAttribute();
57 57
 
58
-	/**
59
-	 * Return the id of the current user
60
-	 * @return string
61
-	 * @since 6.0.0
62
-	 */
63
-	public function getCurrentUserId();
58
+    /**
59
+     * Return the id of the current user
60
+     * @return string
61
+     * @since 6.0.0
62
+     */
63
+    public function getCurrentUserId();
64 64
 
65 65
 }
Please login to merge, or discard this patch.
lib/public/Authentication/LoginCredentials/IStore.php 1 patch
Indentation   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -31,14 +31,14 @@
 block discarded – undo
31 31
  */
32 32
 interface IStore {
33 33
 	
34
-	/**
35
-	 * Get login credentials of the currently logged in user
36
-	 *
37
-	 * @since 12
38
-	 *
39
-	 * @throws CredentialsUnavailableException
40
-	 * @return ICredentials the login credentials of the current user
41
-	 */
42
-	public function getLoginCredentials();
34
+    /**
35
+     * Get login credentials of the currently logged in user
36
+     *
37
+     * @since 12
38
+     *
39
+     * @throws CredentialsUnavailableException
40
+     * @return ICredentials the login credentials of the current user
41
+     */
42
+    public function getLoginCredentials();
43 43
 	
44 44
 }
Please login to merge, or discard this patch.
lib/public/Authentication/TwoFactorAuth/IProvider.php 1 patch
Indentation   +55 added lines, -55 removed lines patch added patch discarded remove patch
@@ -30,64 +30,64 @@
 block discarded – undo
30 30
  */
31 31
 interface IProvider {
32 32
 
33
-	/**
34
-	 * Get unique identifier of this 2FA provider
35
-	 *
36
-	 * @since 9.1.0
37
-	 *
38
-	 * @return string
39
-	 */
40
-	public function getId();
33
+    /**
34
+     * Get unique identifier of this 2FA provider
35
+     *
36
+     * @since 9.1.0
37
+     *
38
+     * @return string
39
+     */
40
+    public function getId();
41 41
 
42
-	/**
43
-	 * Get the display name for selecting the 2FA provider
44
-	 *
45
-	 * Example: "Email"
46
-	 *
47
-	 * @since 9.1.0
48
-	 *
49
-	 * @return string
50
-	 */
51
-	public function getDisplayName();
42
+    /**
43
+     * Get the display name for selecting the 2FA provider
44
+     *
45
+     * Example: "Email"
46
+     *
47
+     * @since 9.1.0
48
+     *
49
+     * @return string
50
+     */
51
+    public function getDisplayName();
52 52
 
53
-	/**
54
-	 * Get the description for selecting the 2FA provider
55
-	 *
56
-	 * Example: "Get a token via e-mail"
57
-	 *
58
-	 * @since 9.1.0
59
-	 *
60
-	 * @return string
61
-	 */
62
-	public function getDescription();
53
+    /**
54
+     * Get the description for selecting the 2FA provider
55
+     *
56
+     * Example: "Get a token via e-mail"
57
+     *
58
+     * @since 9.1.0
59
+     *
60
+     * @return string
61
+     */
62
+    public function getDescription();
63 63
 
64
-	/**
65
-	 * Get the template for rending the 2FA provider view
66
-	 *
67
-	 * @since 9.1.0
68
-	 *
69
-	 * @param IUser $user
70
-	 * @return Template
71
-	 */
72
-	public function getTemplate(IUser $user);
64
+    /**
65
+     * Get the template for rending the 2FA provider view
66
+     *
67
+     * @since 9.1.0
68
+     *
69
+     * @param IUser $user
70
+     * @return Template
71
+     */
72
+    public function getTemplate(IUser $user);
73 73
 
74
-	/**
75
-	 * Verify the given challenge
76
-	 *
77
-	 * @since 9.1.0
78
-	 *
79
-	 * @param IUser $user
80
-	 * @param string $challenge
81
-	 */
82
-	public function verifyChallenge(IUser $user, $challenge);
74
+    /**
75
+     * Verify the given challenge
76
+     *
77
+     * @since 9.1.0
78
+     *
79
+     * @param IUser $user
80
+     * @param string $challenge
81
+     */
82
+    public function verifyChallenge(IUser $user, $challenge);
83 83
 
84
-	/**
85
-	 * Decides whether 2FA is enabled for the given user
86
-	 *
87
-	 * @since 9.1.0
88
-	 *
89
-	 * @param IUser $user
90
-	 * @return boolean
91
-	 */
92
-	public function isTwoFactorAuthEnabledForUser(IUser $user);
84
+    /**
85
+     * Decides whether 2FA is enabled for the given user
86
+     *
87
+     * @since 9.1.0
88
+     *
89
+     * @param IUser $user
90
+     * @return boolean
91
+     */
92
+    public function isTwoFactorAuthEnabledForUser(IUser $user);
93 93
 }
Please login to merge, or discard this patch.
lib/public/IHelper.php 1 patch
Indentation   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -38,13 +38,13 @@
 block discarded – undo
38 38
  * @deprecated 8.1.0
39 39
  */
40 40
 interface IHelper {
41
-	/**
42
-	 * Gets the content of an URL by using CURL or a fallback if it is not
43
-	 * installed
44
-	 * @param string $url the url that should be fetched
45
-	 * @return string the content of the webpage
46
-	 * @since 6.0.0
47
-	 * @deprecated 8.1.0 Use \OCP\IServerContainer::getHTTPClientService
48
-	 */
49
-	public function getUrlContent($url);
41
+    /**
42
+     * Gets the content of an URL by using CURL or a fallback if it is not
43
+     * installed
44
+     * @param string $url the url that should be fetched
45
+     * @return string the content of the webpage
46
+     * @since 6.0.0
47
+     * @deprecated 8.1.0 Use \OCP\IServerContainer::getHTTPClientService
48
+     */
49
+    public function getUrlContent($url);
50 50
 }
Please login to merge, or discard this patch.