Passed
Push — master ( 5fb7ea...32bbe3 )
by John
18:30 queued 13s
created
lib/private/Encryption/Manager.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -274,7 +274,7 @@
 block discarded – undo
274 274
 		}
275 275
 
276 276
 		// check if key storage is mounted correctly
277
-		if ($this->rootView->file_exists($rootDir . '/' . Storage::KEY_STORAGE_MARKER)) {
277
+		if ($this->rootView->file_exists($rootDir.'/'.Storage::KEY_STORAGE_MARKER)) {
278 278
 			return true;
279 279
 		}
280 280
 
Please login to merge, or discard this patch.
Indentation   +218 added lines, -218 removed lines patch added patch discarded remove patch
@@ -37,222 +37,222 @@
 block discarded – undo
37 37
 use Psr\Log\LoggerInterface;
38 38
 
39 39
 class Manager implements IManager {
40
-	/** @var array */
41
-	protected $encryptionModules;
42
-
43
-	/** @var IConfig */
44
-	protected $config;
45
-
46
-	protected LoggerInterface $logger;
47
-
48
-	/** @var Il10n */
49
-	protected $l;
50
-
51
-	/** @var View  */
52
-	protected $rootView;
53
-
54
-	/** @var Util  */
55
-	protected $util;
56
-
57
-	/** @var ArrayCache  */
58
-	protected $arrayCache;
59
-
60
-	public function __construct(IConfig $config, LoggerInterface $logger, IL10N $l10n, View $rootView, Util $util, ArrayCache $arrayCache) {
61
-		$this->encryptionModules = [];
62
-		$this->config = $config;
63
-		$this->logger = $logger;
64
-		$this->l = $l10n;
65
-		$this->rootView = $rootView;
66
-		$this->util = $util;
67
-		$this->arrayCache = $arrayCache;
68
-	}
69
-
70
-	/**
71
-	 * Check if encryption is enabled
72
-	 *
73
-	 * @return bool true if enabled, false if not
74
-	 */
75
-	public function isEnabled() {
76
-		$installed = $this->config->getSystemValueBool('installed', false);
77
-		if (!$installed) {
78
-			return false;
79
-		}
80
-
81
-		$enabled = $this->config->getAppValue('core', 'encryption_enabled', 'no');
82
-		return $enabled === 'yes';
83
-	}
84
-
85
-	/**
86
-	 * check if new encryption is ready
87
-	 *
88
-	 * @return bool
89
-	 * @throws ServiceUnavailableException
90
-	 */
91
-	public function isReady() {
92
-		if ($this->isKeyStorageReady() === false) {
93
-			throw new ServiceUnavailableException('Key Storage is not ready');
94
-		}
95
-
96
-		return true;
97
-	}
98
-
99
-	/**
100
-	 * @param string $user
101
-	 */
102
-	public function isReadyForUser($user) {
103
-		if (!$this->isReady()) {
104
-			return false;
105
-		}
106
-
107
-		foreach ($this->getEncryptionModules() as $module) {
108
-			/** @var IEncryptionModule $m */
109
-			$m = call_user_func($module['callback']);
110
-			if (!$m->isReadyForUser($user)) {
111
-				return false;
112
-			}
113
-		}
114
-
115
-		return true;
116
-	}
117
-
118
-	/**
119
-	 * Registers an callback function which must return an encryption module instance
120
-	 *
121
-	 * @param string $id
122
-	 * @param string $displayName
123
-	 * @param callable $callback
124
-	 * @throws Exceptions\ModuleAlreadyExistsException
125
-	 */
126
-	public function registerEncryptionModule($id, $displayName, callable $callback) {
127
-		if (isset($this->encryptionModules[$id])) {
128
-			throw new Exceptions\ModuleAlreadyExistsException($id, $displayName);
129
-		}
130
-
131
-		$this->encryptionModules[$id] = [
132
-			'id' => $id,
133
-			'displayName' => $displayName,
134
-			'callback' => $callback,
135
-		];
136
-
137
-		$defaultEncryptionModuleId = $this->getDefaultEncryptionModuleId();
138
-
139
-		if (empty($defaultEncryptionModuleId)) {
140
-			$this->setDefaultEncryptionModule($id);
141
-		}
142
-	}
143
-
144
-	/**
145
-	 * Unregisters an encryption module
146
-	 *
147
-	 * @param string $moduleId
148
-	 */
149
-	public function unregisterEncryptionModule($moduleId) {
150
-		unset($this->encryptionModules[$moduleId]);
151
-	}
152
-
153
-	/**
154
-	 * get a list of all encryption modules
155
-	 *
156
-	 * @return array [id => ['id' => $id, 'displayName' => $displayName, 'callback' => callback]]
157
-	 */
158
-	public function getEncryptionModules() {
159
-		return $this->encryptionModules;
160
-	}
161
-
162
-	/**
163
-	 * get a specific encryption module
164
-	 *
165
-	 * @param string $moduleId
166
-	 * @return IEncryptionModule
167
-	 * @throws Exceptions\ModuleDoesNotExistsException
168
-	 */
169
-	public function getEncryptionModule($moduleId = '') {
170
-		if (empty($moduleId)) {
171
-			return $this->getDefaultEncryptionModule();
172
-		}
173
-		if (isset($this->encryptionModules[$moduleId])) {
174
-			return call_user_func($this->encryptionModules[$moduleId]['callback']);
175
-		}
176
-		$message = "Module with ID: $moduleId does not exist.";
177
-		$hint = $this->l->t('Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator.', [$moduleId]);
178
-		throw new Exceptions\ModuleDoesNotExistsException($message, $hint);
179
-	}
180
-
181
-	/**
182
-	 * get default encryption module
183
-	 *
184
-	 * @return \OCP\Encryption\IEncryptionModule
185
-	 * @throws Exceptions\ModuleDoesNotExistsException
186
-	 */
187
-	protected function getDefaultEncryptionModule() {
188
-		$defaultModuleId = $this->getDefaultEncryptionModuleId();
189
-		if (empty($defaultModuleId)) {
190
-			$message = 'No default encryption module defined';
191
-			throw new Exceptions\ModuleDoesNotExistsException($message);
192
-		}
193
-		if (isset($this->encryptionModules[$defaultModuleId])) {
194
-			return call_user_func($this->encryptionModules[$defaultModuleId]['callback']);
195
-		}
196
-		$message = 'Default encryption module not loaded';
197
-		throw new Exceptions\ModuleDoesNotExistsException($message);
198
-	}
199
-
200
-	/**
201
-	 * set default encryption module Id
202
-	 *
203
-	 * @param string $moduleId
204
-	 * @return bool
205
-	 */
206
-	public function setDefaultEncryptionModule($moduleId) {
207
-		try {
208
-			$this->getEncryptionModule($moduleId);
209
-		} catch (\Exception $e) {
210
-			return false;
211
-		}
212
-
213
-		$this->config->setAppValue('core', 'default_encryption_module', $moduleId);
214
-		return true;
215
-	}
216
-
217
-	/**
218
-	 * get default encryption module Id
219
-	 *
220
-	 * @return string
221
-	 */
222
-	public function getDefaultEncryptionModuleId() {
223
-		return $this->config->getAppValue('core', 'default_encryption_module');
224
-	}
225
-
226
-	/**
227
-	 * Add storage wrapper
228
-	 */
229
-	public function setupStorage() {
230
-		// If encryption is disabled and there are no loaded modules it makes no sense to load the wrapper
231
-		if (!empty($this->encryptionModules) || $this->isEnabled()) {
232
-			$encryptionWrapper = new EncryptionWrapper($this->arrayCache, $this, $this->logger);
233
-			Filesystem::addStorageWrapper('oc_encryption', [$encryptionWrapper, 'wrapStorage'], 2);
234
-		}
235
-	}
236
-
237
-
238
-	/**
239
-	 * check if key storage is ready
240
-	 *
241
-	 * @return bool
242
-	 */
243
-	protected function isKeyStorageReady() {
244
-		$rootDir = $this->util->getKeyStorageRoot();
245
-
246
-		// the default root is always valid
247
-		if ($rootDir === '') {
248
-			return true;
249
-		}
250
-
251
-		// check if key storage is mounted correctly
252
-		if ($this->rootView->file_exists($rootDir . '/' . Storage::KEY_STORAGE_MARKER)) {
253
-			return true;
254
-		}
255
-
256
-		return false;
257
-	}
40
+    /** @var array */
41
+    protected $encryptionModules;
42
+
43
+    /** @var IConfig */
44
+    protected $config;
45
+
46
+    protected LoggerInterface $logger;
47
+
48
+    /** @var Il10n */
49
+    protected $l;
50
+
51
+    /** @var View  */
52
+    protected $rootView;
53
+
54
+    /** @var Util  */
55
+    protected $util;
56
+
57
+    /** @var ArrayCache  */
58
+    protected $arrayCache;
59
+
60
+    public function __construct(IConfig $config, LoggerInterface $logger, IL10N $l10n, View $rootView, Util $util, ArrayCache $arrayCache) {
61
+        $this->encryptionModules = [];
62
+        $this->config = $config;
63
+        $this->logger = $logger;
64
+        $this->l = $l10n;
65
+        $this->rootView = $rootView;
66
+        $this->util = $util;
67
+        $this->arrayCache = $arrayCache;
68
+    }
69
+
70
+    /**
71
+     * Check if encryption is enabled
72
+     *
73
+     * @return bool true if enabled, false if not
74
+     */
75
+    public function isEnabled() {
76
+        $installed = $this->config->getSystemValueBool('installed', false);
77
+        if (!$installed) {
78
+            return false;
79
+        }
80
+
81
+        $enabled = $this->config->getAppValue('core', 'encryption_enabled', 'no');
82
+        return $enabled === 'yes';
83
+    }
84
+
85
+    /**
86
+     * check if new encryption is ready
87
+     *
88
+     * @return bool
89
+     * @throws ServiceUnavailableException
90
+     */
91
+    public function isReady() {
92
+        if ($this->isKeyStorageReady() === false) {
93
+            throw new ServiceUnavailableException('Key Storage is not ready');
94
+        }
95
+
96
+        return true;
97
+    }
98
+
99
+    /**
100
+     * @param string $user
101
+     */
102
+    public function isReadyForUser($user) {
103
+        if (!$this->isReady()) {
104
+            return false;
105
+        }
106
+
107
+        foreach ($this->getEncryptionModules() as $module) {
108
+            /** @var IEncryptionModule $m */
109
+            $m = call_user_func($module['callback']);
110
+            if (!$m->isReadyForUser($user)) {
111
+                return false;
112
+            }
113
+        }
114
+
115
+        return true;
116
+    }
117
+
118
+    /**
119
+     * Registers an callback function which must return an encryption module instance
120
+     *
121
+     * @param string $id
122
+     * @param string $displayName
123
+     * @param callable $callback
124
+     * @throws Exceptions\ModuleAlreadyExistsException
125
+     */
126
+    public function registerEncryptionModule($id, $displayName, callable $callback) {
127
+        if (isset($this->encryptionModules[$id])) {
128
+            throw new Exceptions\ModuleAlreadyExistsException($id, $displayName);
129
+        }
130
+
131
+        $this->encryptionModules[$id] = [
132
+            'id' => $id,
133
+            'displayName' => $displayName,
134
+            'callback' => $callback,
135
+        ];
136
+
137
+        $defaultEncryptionModuleId = $this->getDefaultEncryptionModuleId();
138
+
139
+        if (empty($defaultEncryptionModuleId)) {
140
+            $this->setDefaultEncryptionModule($id);
141
+        }
142
+    }
143
+
144
+    /**
145
+     * Unregisters an encryption module
146
+     *
147
+     * @param string $moduleId
148
+     */
149
+    public function unregisterEncryptionModule($moduleId) {
150
+        unset($this->encryptionModules[$moduleId]);
151
+    }
152
+
153
+    /**
154
+     * get a list of all encryption modules
155
+     *
156
+     * @return array [id => ['id' => $id, 'displayName' => $displayName, 'callback' => callback]]
157
+     */
158
+    public function getEncryptionModules() {
159
+        return $this->encryptionModules;
160
+    }
161
+
162
+    /**
163
+     * get a specific encryption module
164
+     *
165
+     * @param string $moduleId
166
+     * @return IEncryptionModule
167
+     * @throws Exceptions\ModuleDoesNotExistsException
168
+     */
169
+    public function getEncryptionModule($moduleId = '') {
170
+        if (empty($moduleId)) {
171
+            return $this->getDefaultEncryptionModule();
172
+        }
173
+        if (isset($this->encryptionModules[$moduleId])) {
174
+            return call_user_func($this->encryptionModules[$moduleId]['callback']);
175
+        }
176
+        $message = "Module with ID: $moduleId does not exist.";
177
+        $hint = $this->l->t('Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator.', [$moduleId]);
178
+        throw new Exceptions\ModuleDoesNotExistsException($message, $hint);
179
+    }
180
+
181
+    /**
182
+     * get default encryption module
183
+     *
184
+     * @return \OCP\Encryption\IEncryptionModule
185
+     * @throws Exceptions\ModuleDoesNotExistsException
186
+     */
187
+    protected function getDefaultEncryptionModule() {
188
+        $defaultModuleId = $this->getDefaultEncryptionModuleId();
189
+        if (empty($defaultModuleId)) {
190
+            $message = 'No default encryption module defined';
191
+            throw new Exceptions\ModuleDoesNotExistsException($message);
192
+        }
193
+        if (isset($this->encryptionModules[$defaultModuleId])) {
194
+            return call_user_func($this->encryptionModules[$defaultModuleId]['callback']);
195
+        }
196
+        $message = 'Default encryption module not loaded';
197
+        throw new Exceptions\ModuleDoesNotExistsException($message);
198
+    }
199
+
200
+    /**
201
+     * set default encryption module Id
202
+     *
203
+     * @param string $moduleId
204
+     * @return bool
205
+     */
206
+    public function setDefaultEncryptionModule($moduleId) {
207
+        try {
208
+            $this->getEncryptionModule($moduleId);
209
+        } catch (\Exception $e) {
210
+            return false;
211
+        }
212
+
213
+        $this->config->setAppValue('core', 'default_encryption_module', $moduleId);
214
+        return true;
215
+    }
216
+
217
+    /**
218
+     * get default encryption module Id
219
+     *
220
+     * @return string
221
+     */
222
+    public function getDefaultEncryptionModuleId() {
223
+        return $this->config->getAppValue('core', 'default_encryption_module');
224
+    }
225
+
226
+    /**
227
+     * Add storage wrapper
228
+     */
229
+    public function setupStorage() {
230
+        // If encryption is disabled and there are no loaded modules it makes no sense to load the wrapper
231
+        if (!empty($this->encryptionModules) || $this->isEnabled()) {
232
+            $encryptionWrapper = new EncryptionWrapper($this->arrayCache, $this, $this->logger);
233
+            Filesystem::addStorageWrapper('oc_encryption', [$encryptionWrapper, 'wrapStorage'], 2);
234
+        }
235
+    }
236
+
237
+
238
+    /**
239
+     * check if key storage is ready
240
+     *
241
+     * @return bool
242
+     */
243
+    protected function isKeyStorageReady() {
244
+        $rootDir = $this->util->getKeyStorageRoot();
245
+
246
+        // the default root is always valid
247
+        if ($rootDir === '') {
248
+            return true;
249
+        }
250
+
251
+        // check if key storage is mounted correctly
252
+        if ($this->rootView->file_exists($rootDir . '/' . Storage::KEY_STORAGE_MARKER)) {
253
+            return true;
254
+        }
255
+
256
+        return false;
257
+    }
258 258
 }
Please login to merge, or discard this patch.
lib/private/NaturalSort.php 2 patches
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -117,8 +117,8 @@
 block discarded – undo
117 117
 			if ($aChunk !== $bChunk) {
118 118
 				// test first character (character comparison, not number comparison)
119 119
 				if ($aChunk[0] >= '0' && $aChunk[0] <= '9' && $bChunk[0] >= '0' && $bChunk[0] <= '9') {
120
-					$aNum = (int)$aChunk;
121
-					$bNum = (int)$bChunk;
120
+					$aNum = (int) $aChunk;
121
+					$bNum = (int) $bChunk;
122 122
 					return $aNum - $bNum;
123 123
 				}
124 124
 				return self::getCollator()->compare($aChunk, $bChunk);
Please login to merge, or discard this patch.
Indentation   +101 added lines, -101 removed lines patch added patch discarded remove patch
@@ -29,112 +29,112 @@
 block discarded – undo
29 29
 use Psr\Log\LoggerInterface;
30 30
 
31 31
 class NaturalSort {
32
-	private static $instance;
33
-	private $collator;
34
-	private $cache = [];
32
+    private static $instance;
33
+    private $collator;
34
+    private $cache = [];
35 35
 
36
-	/**
37
-	 * Instantiate a new \OC\NaturalSort instance.
38
-	 * @param object $injectedCollator
39
-	 */
40
-	public function __construct($injectedCollator = null) {
41
-		// inject an instance of \Collator('en_US') to force using the php5-intl Collator
42
-		// or inject an instance of \OC\NaturalSort_DefaultCollator to force using Owncloud's default collator
43
-		if (isset($injectedCollator)) {
44
-			$this->collator = $injectedCollator;
45
-			\OC::$server->get(LoggerInterface::class)->debug('forced use of '.get_class($injectedCollator));
46
-		}
47
-	}
36
+    /**
37
+     * Instantiate a new \OC\NaturalSort instance.
38
+     * @param object $injectedCollator
39
+     */
40
+    public function __construct($injectedCollator = null) {
41
+        // inject an instance of \Collator('en_US') to force using the php5-intl Collator
42
+        // or inject an instance of \OC\NaturalSort_DefaultCollator to force using Owncloud's default collator
43
+        if (isset($injectedCollator)) {
44
+            $this->collator = $injectedCollator;
45
+            \OC::$server->get(LoggerInterface::class)->debug('forced use of '.get_class($injectedCollator));
46
+        }
47
+    }
48 48
 
49
-	/**
50
-	 * Split the given string in chunks of numbers and strings
51
-	 * @param string $t string
52
-	 * @return array of strings and number chunks
53
-	 */
54
-	private function naturalSortChunkify($t) {
55
-		// Adapted and ported to PHP from
56
-		// http://my.opera.com/GreyWyvern/blog/show.dml/1671288
57
-		if (isset($this->cache[$t])) {
58
-			return $this->cache[$t];
59
-		}
60
-		$tz = [];
61
-		$x = 0;
62
-		$y = -1;
63
-		$n = null;
49
+    /**
50
+     * Split the given string in chunks of numbers and strings
51
+     * @param string $t string
52
+     * @return array of strings and number chunks
53
+     */
54
+    private function naturalSortChunkify($t) {
55
+        // Adapted and ported to PHP from
56
+        // http://my.opera.com/GreyWyvern/blog/show.dml/1671288
57
+        if (isset($this->cache[$t])) {
58
+            return $this->cache[$t];
59
+        }
60
+        $tz = [];
61
+        $x = 0;
62
+        $y = -1;
63
+        $n = null;
64 64
 
65
-		while (isset($t[$x])) {
66
-			$c = $t[$x];
67
-			// only include the dot in strings
68
-			$m = ((!$n && $c === '.') || ($c >= '0' && $c <= '9'));
69
-			if ($m !== $n) {
70
-				// next chunk
71
-				$y++;
72
-				$tz[$y] = '';
73
-				$n = $m;
74
-			}
75
-			$tz[$y] .= $c;
76
-			$x++;
77
-		}
78
-		$this->cache[$t] = $tz;
79
-		return $tz;
80
-	}
65
+        while (isset($t[$x])) {
66
+            $c = $t[$x];
67
+            // only include the dot in strings
68
+            $m = ((!$n && $c === '.') || ($c >= '0' && $c <= '9'));
69
+            if ($m !== $n) {
70
+                // next chunk
71
+                $y++;
72
+                $tz[$y] = '';
73
+                $n = $m;
74
+            }
75
+            $tz[$y] .= $c;
76
+            $x++;
77
+        }
78
+        $this->cache[$t] = $tz;
79
+        return $tz;
80
+    }
81 81
 
82
-	/**
83
-	 * Returns the string collator
84
-	 * @return \Collator string collator
85
-	 */
86
-	private function getCollator() {
87
-		if (!isset($this->collator)) {
88
-			// looks like the default is en_US_POSIX which yields wrong sorting with
89
-			// German umlauts, so using en_US instead
90
-			if (class_exists('Collator')) {
91
-				$this->collator = new \Collator('en_US');
92
-			} else {
93
-				$this->collator = new \OC\NaturalSort_DefaultCollator();
94
-			}
95
-		}
96
-		return $this->collator;
97
-	}
82
+    /**
83
+     * Returns the string collator
84
+     * @return \Collator string collator
85
+     */
86
+    private function getCollator() {
87
+        if (!isset($this->collator)) {
88
+            // looks like the default is en_US_POSIX which yields wrong sorting with
89
+            // German umlauts, so using en_US instead
90
+            if (class_exists('Collator')) {
91
+                $this->collator = new \Collator('en_US');
92
+            } else {
93
+                $this->collator = new \OC\NaturalSort_DefaultCollator();
94
+            }
95
+        }
96
+        return $this->collator;
97
+    }
98 98
 
99
-	/**
100
-	 * Compare two strings to provide a natural sort
101
-	 * @param string $a first string to compare
102
-	 * @param string $b second string to compare
103
-	 * @return int -1 if $b comes before $a, 1 if $a comes before $b
104
-	 * or 0 if the strings are identical
105
-	 */
106
-	public function compare($a, $b) {
107
-		// Needed because PHP doesn't sort correctly when numbers are enclosed in
108
-		// parenthesis, even with NUMERIC_COLLATION enabled.
109
-		// For example it gave ["test (2).txt", "test.txt"]
110
-		// instead of ["test.txt", "test (2).txt"]
111
-		$aa = self::naturalSortChunkify($a);
112
-		$bb = self::naturalSortChunkify($b);
99
+    /**
100
+     * Compare two strings to provide a natural sort
101
+     * @param string $a first string to compare
102
+     * @param string $b second string to compare
103
+     * @return int -1 if $b comes before $a, 1 if $a comes before $b
104
+     * or 0 if the strings are identical
105
+     */
106
+    public function compare($a, $b) {
107
+        // Needed because PHP doesn't sort correctly when numbers are enclosed in
108
+        // parenthesis, even with NUMERIC_COLLATION enabled.
109
+        // For example it gave ["test (2).txt", "test.txt"]
110
+        // instead of ["test.txt", "test (2).txt"]
111
+        $aa = self::naturalSortChunkify($a);
112
+        $bb = self::naturalSortChunkify($b);
113 113
 
114
-		for ($x = 0; isset($aa[$x]) && isset($bb[$x]); $x++) {
115
-			$aChunk = $aa[$x];
116
-			$bChunk = $bb[$x];
117
-			if ($aChunk !== $bChunk) {
118
-				// test first character (character comparison, not number comparison)
119
-				if ($aChunk[0] >= '0' && $aChunk[0] <= '9' && $bChunk[0] >= '0' && $bChunk[0] <= '9') {
120
-					$aNum = (int)$aChunk;
121
-					$bNum = (int)$bChunk;
122
-					return $aNum - $bNum;
123
-				}
124
-				return self::getCollator()->compare($aChunk, $bChunk);
125
-			}
126
-		}
127
-		return count($aa) - count($bb);
128
-	}
114
+        for ($x = 0; isset($aa[$x]) && isset($bb[$x]); $x++) {
115
+            $aChunk = $aa[$x];
116
+            $bChunk = $bb[$x];
117
+            if ($aChunk !== $bChunk) {
118
+                // test first character (character comparison, not number comparison)
119
+                if ($aChunk[0] >= '0' && $aChunk[0] <= '9' && $bChunk[0] >= '0' && $bChunk[0] <= '9') {
120
+                    $aNum = (int)$aChunk;
121
+                    $bNum = (int)$bChunk;
122
+                    return $aNum - $bNum;
123
+                }
124
+                return self::getCollator()->compare($aChunk, $bChunk);
125
+            }
126
+        }
127
+        return count($aa) - count($bb);
128
+    }
129 129
 
130
-	/**
131
-	 * Returns a singleton
132
-	 * @return \OC\NaturalSort instance
133
-	 */
134
-	public static function getInstance() {
135
-		if (!isset(self::$instance)) {
136
-			self::$instance = new \OC\NaturalSort();
137
-		}
138
-		return self::$instance;
139
-	}
130
+    /**
131
+     * Returns a singleton
132
+     * @return \OC\NaturalSort instance
133
+     */
134
+    public static function getInstance() {
135
+        if (!isset(self::$instance)) {
136
+            self::$instance = new \OC\NaturalSort();
137
+        }
138
+        return self::$instance;
139
+    }
140 140
 }
Please login to merge, or discard this patch.
ocs-provider/index.php 2 patches
Indentation   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -26,8 +26,8 @@
 block discarded – undo
26 26
 $server = \OC::$server;
27 27
 
28 28
 $controller = new \OC\OCS\Provider(
29
-	'ocs_provider',
30
-	$server->getRequest(),
31
-	$server->getAppManager()
29
+    'ocs_provider',
30
+    $server->getRequest(),
31
+    $server->getAppManager()
32 32
 );
33 33
 echo $controller->buildProviderList()->render();
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -19,7 +19,7 @@
 block discarded – undo
19 19
  *
20 20
  */
21 21
 
22
-require_once __DIR__ . '/../lib/base.php';
22
+require_once __DIR__.'/../lib/base.php';
23 23
 
24 24
 header('Content-Type: application/json');
25 25
 
Please login to merge, or discard this patch.
core/Command/User/ResetPassword.php 2 patches
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -117,12 +117,12 @@
 block discarded – undo
117 117
 		try {
118 118
 			$success = $user->setPassword($password);
119 119
 		} catch (\Exception $e) {
120
-			$output->writeln('<error>' . $e->getMessage() . '</error>');
120
+			$output->writeln('<error>'.$e->getMessage().'</error>');
121 121
 			return 1;
122 122
 		}
123 123
 
124 124
 		if ($success) {
125
-			$output->writeln("<info>Successfully reset password for " . $username . "</info>");
125
+			$output->writeln("<info>Successfully reset password for ".$username."</info>");
126 126
 		} else {
127 127
 			$output->writeln("<error>Error while resetting password!</error>");
128 128
 			return 1;
Please login to merge, or discard this patch.
Indentation   +105 added lines, -105 removed lines patch added patch discarded remove patch
@@ -41,109 +41,109 @@
 block discarded – undo
41 41
 use Symfony\Component\Console\Question\Question;
42 42
 
43 43
 class ResetPassword extends Base {
44
-	public function __construct(
45
-		protected IUserManager $userManager,
46
-		private IAppManager $appManager,
47
-	) {
48
-		parent::__construct();
49
-	}
50
-
51
-	protected function configure() {
52
-		$this
53
-			->setName('user:resetpassword')
54
-			->setDescription('Resets the password of the named user')
55
-			->addArgument(
56
-				'user',
57
-				InputArgument::REQUIRED,
58
-				'Username to reset password'
59
-			)
60
-			->addOption(
61
-				'password-from-env',
62
-				null,
63
-				InputOption::VALUE_NONE,
64
-				'read password from environment variable OC_PASS'
65
-			)
66
-		;
67
-	}
68
-
69
-	protected function execute(InputInterface $input, OutputInterface $output): int {
70
-		$username = $input->getArgument('user');
71
-
72
-		$user = $this->userManager->get($username);
73
-		if (is_null($user)) {
74
-			$output->writeln('<error>User does not exist</error>');
75
-			return 1;
76
-		}
77
-
78
-		if ($input->getOption('password-from-env')) {
79
-			$password = getenv('OC_PASS');
80
-			if (!$password) {
81
-				$output->writeln('<error>--password-from-env given, but OC_PASS is empty!</error>');
82
-				return 1;
83
-			}
84
-		} elseif ($input->isInteractive()) {
85
-			/** @var QuestionHelper $helper */
86
-			$helper = $this->getHelper('question');
87
-
88
-			if ($this->appManager->isEnabledForUser('encryption', $user)) {
89
-				$output->writeln(
90
-					'<error>Warning: Resetting the password when using encryption will result in data loss!</error>'
91
-				);
92
-
93
-				$question = new ConfirmationQuestion('Do you want to continue?');
94
-				if (!$helper->ask($input, $output, $question)) {
95
-					return 1;
96
-				}
97
-			}
98
-
99
-			$question = new Question('Enter a new password: ');
100
-			$question->setHidden(true);
101
-			$password = $helper->ask($input, $output, $question);
102
-
103
-			if ($password === null) {
104
-				$output->writeln("<error>Password cannot be empty!</error>");
105
-				return 1;
106
-			}
107
-
108
-			$question = new Question('Confirm the new password: ');
109
-			$question->setHidden(true);
110
-			$confirm = $helper->ask($input, $output, $question);
111
-
112
-			if ($password !== $confirm) {
113
-				$output->writeln("<error>Passwords did not match!</error>");
114
-				return 1;
115
-			}
116
-		} else {
117
-			$output->writeln("<error>Interactive input or --password-from-env is needed for entering a new password!</error>");
118
-			return 1;
119
-		}
120
-
121
-
122
-		try {
123
-			$success = $user->setPassword($password);
124
-		} catch (\Exception $e) {
125
-			$output->writeln('<error>' . $e->getMessage() . '</error>');
126
-			return 1;
127
-		}
128
-
129
-		if ($success) {
130
-			$output->writeln("<info>Successfully reset password for " . $username . "</info>");
131
-		} else {
132
-			$output->writeln("<error>Error while resetting password!</error>");
133
-			return 1;
134
-		}
135
-		return 0;
136
-	}
137
-
138
-	/**
139
-	 * @param string $argumentName
140
-	 * @param CompletionContext $context
141
-	 * @return string[]
142
-	 */
143
-	public function completeArgumentValues($argumentName, CompletionContext $context) {
144
-		if ($argumentName === 'user') {
145
-			return array_map(static fn (IUser $user) => $user->getUID(), $this->userManager->search($context->getCurrentWord()));
146
-		}
147
-		return [];
148
-	}
44
+    public function __construct(
45
+        protected IUserManager $userManager,
46
+        private IAppManager $appManager,
47
+    ) {
48
+        parent::__construct();
49
+    }
50
+
51
+    protected function configure() {
52
+        $this
53
+            ->setName('user:resetpassword')
54
+            ->setDescription('Resets the password of the named user')
55
+            ->addArgument(
56
+                'user',
57
+                InputArgument::REQUIRED,
58
+                'Username to reset password'
59
+            )
60
+            ->addOption(
61
+                'password-from-env',
62
+                null,
63
+                InputOption::VALUE_NONE,
64
+                'read password from environment variable OC_PASS'
65
+            )
66
+        ;
67
+    }
68
+
69
+    protected function execute(InputInterface $input, OutputInterface $output): int {
70
+        $username = $input->getArgument('user');
71
+
72
+        $user = $this->userManager->get($username);
73
+        if (is_null($user)) {
74
+            $output->writeln('<error>User does not exist</error>');
75
+            return 1;
76
+        }
77
+
78
+        if ($input->getOption('password-from-env')) {
79
+            $password = getenv('OC_PASS');
80
+            if (!$password) {
81
+                $output->writeln('<error>--password-from-env given, but OC_PASS is empty!</error>');
82
+                return 1;
83
+            }
84
+        } elseif ($input->isInteractive()) {
85
+            /** @var QuestionHelper $helper */
86
+            $helper = $this->getHelper('question');
87
+
88
+            if ($this->appManager->isEnabledForUser('encryption', $user)) {
89
+                $output->writeln(
90
+                    '<error>Warning: Resetting the password when using encryption will result in data loss!</error>'
91
+                );
92
+
93
+                $question = new ConfirmationQuestion('Do you want to continue?');
94
+                if (!$helper->ask($input, $output, $question)) {
95
+                    return 1;
96
+                }
97
+            }
98
+
99
+            $question = new Question('Enter a new password: ');
100
+            $question->setHidden(true);
101
+            $password = $helper->ask($input, $output, $question);
102
+
103
+            if ($password === null) {
104
+                $output->writeln("<error>Password cannot be empty!</error>");
105
+                return 1;
106
+            }
107
+
108
+            $question = new Question('Confirm the new password: ');
109
+            $question->setHidden(true);
110
+            $confirm = $helper->ask($input, $output, $question);
111
+
112
+            if ($password !== $confirm) {
113
+                $output->writeln("<error>Passwords did not match!</error>");
114
+                return 1;
115
+            }
116
+        } else {
117
+            $output->writeln("<error>Interactive input or --password-from-env is needed for entering a new password!</error>");
118
+            return 1;
119
+        }
120
+
121
+
122
+        try {
123
+            $success = $user->setPassword($password);
124
+        } catch (\Exception $e) {
125
+            $output->writeln('<error>' . $e->getMessage() . '</error>');
126
+            return 1;
127
+        }
128
+
129
+        if ($success) {
130
+            $output->writeln("<info>Successfully reset password for " . $username . "</info>");
131
+        } else {
132
+            $output->writeln("<error>Error while resetting password!</error>");
133
+            return 1;
134
+        }
135
+        return 0;
136
+    }
137
+
138
+    /**
139
+     * @param string $argumentName
140
+     * @param CompletionContext $context
141
+     * @return string[]
142
+     */
143
+    public function completeArgumentValues($argumentName, CompletionContext $context) {
144
+        if ($argumentName === 'user') {
145
+            return array_map(static fn (IUser $user) => $user->getUID(), $this->userManager->search($context->getCurrentWord()));
146
+        }
147
+        return [];
148
+    }
149 149
 }
Please login to merge, or discard this patch.
core/Command/Config/System/SetConfig.php 2 patches
Spacing   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -97,7 +97,7 @@  discard block
 block discarded – undo
97 97
 			$this->systemConfig->setValue($configName, $configValue['value']);
98 98
 		}
99 99
 
100
-		$output->writeln('<info>System config value ' . implode(' => ', $configNames) . ' set to ' . $configValue['readable-value'] . '</info>');
100
+		$output->writeln('<info>System config value '.implode(' => ', $configNames).' set to '.$configValue['readable-value'].'</info>');
101 101
 		return 0;
102 102
 	}
103 103
 
@@ -116,7 +116,7 @@  discard block
 block discarded – undo
116 116
 				}
117 117
 				return [
118 118
 					'value' => (int) $value,
119
-					'readable-value' => 'integer ' . (int) $value,
119
+					'readable-value' => 'integer '.(int) $value,
120 120
 				];
121 121
 
122 122
 			case 'double':
@@ -126,7 +126,7 @@  discard block
 block discarded – undo
126 126
 				}
127 127
 				return [
128 128
 					'value' => (double) $value,
129
-					'readable-value' => 'double ' . (double) $value,
129
+					'readable-value' => 'double '.(double) $value,
130 130
 				];
131 131
 
132 132
 			case 'boolean':
@@ -136,13 +136,13 @@  discard block
 block discarded – undo
136 136
 					case 'true':
137 137
 						return [
138 138
 							'value' => true,
139
-							'readable-value' => 'boolean ' . $value,
139
+							'readable-value' => 'boolean '.$value,
140 140
 						];
141 141
 
142 142
 					case 'false':
143 143
 						return [
144 144
 							'value' => false,
145
-							'readable-value' => 'boolean ' . $value,
145
+							'readable-value' => 'boolean '.$value,
146 146
 						];
147 147
 
148 148
 					default:
@@ -159,7 +159,7 @@  discard block
 block discarded – undo
159 159
 				$value = (string) $value;
160 160
 				return [
161 161
 					'value' => $value,
162
-					'readable-value' => ($value === '') ? 'empty string' : 'string ' . $value,
162
+					'readable-value' => ($value === '') ? 'empty string' : 'string '.$value,
163 163
 				];
164 164
 
165 165
 			default:
Please login to merge, or discard this patch.
Indentation   +172 added lines, -172 removed lines patch added patch discarded remove patch
@@ -32,176 +32,176 @@
 block discarded – undo
32 32
 use Symfony\Component\Console\Output\OutputInterface;
33 33
 
34 34
 class SetConfig extends Base {
35
-	public function __construct(
36
-		SystemConfig $systemConfig,
37
-	) {
38
-		parent::__construct($systemConfig);
39
-	}
40
-
41
-	protected function configure() {
42
-		parent::configure();
43
-
44
-		$this
45
-			->setName('config:system:set')
46
-			->setDescription('Set a system config value')
47
-			->addArgument(
48
-				'name',
49
-				InputArgument::REQUIRED | InputArgument::IS_ARRAY,
50
-				'Name of the config parameter, specify multiple for array parameter'
51
-			)
52
-			->addOption(
53
-				'type',
54
-				null,
55
-				InputOption::VALUE_REQUIRED,
56
-				'Value type [string, integer, double, boolean]',
57
-				'string'
58
-			)
59
-			->addOption(
60
-				'value',
61
-				null,
62
-				InputOption::VALUE_REQUIRED,
63
-				'The new value of the config'
64
-			)
65
-			->addOption(
66
-				'update-only',
67
-				null,
68
-				InputOption::VALUE_NONE,
69
-				'Only updates the value, if it is not set before, it is not being added'
70
-			)
71
-		;
72
-	}
73
-
74
-	protected function execute(InputInterface $input, OutputInterface $output): int {
75
-		$configNames = $input->getArgument('name');
76
-		$configName = $configNames[0];
77
-		$configValue = $this->castValue($input->getOption('value'), $input->getOption('type'));
78
-		$updateOnly = $input->getOption('update-only');
79
-
80
-		if (count($configNames) > 1) {
81
-			$existingValue = $this->systemConfig->getValue($configName);
82
-
83
-			$newValue = $this->mergeArrayValue(
84
-				array_slice($configNames, 1), $existingValue, $configValue['value'], $updateOnly
85
-			);
86
-
87
-			$this->systemConfig->setValue($configName, $newValue);
88
-		} else {
89
-			if ($updateOnly && !in_array($configName, $this->systemConfig->getKeys(), true)) {
90
-				throw new \UnexpectedValueException('Config parameter does not exist');
91
-			}
92
-
93
-			$this->systemConfig->setValue($configName, $configValue['value']);
94
-		}
95
-
96
-		$output->writeln('<info>System config value ' . implode(' => ', $configNames) . ' set to ' . $configValue['readable-value'] . '</info>');
97
-		return 0;
98
-	}
99
-
100
-	/**
101
-	 * @param string $value
102
-	 * @param string $type
103
-	 * @return mixed
104
-	 * @throws \InvalidArgumentException
105
-	 */
106
-	protected function castValue($value, $type) {
107
-		switch ($type) {
108
-			case 'integer':
109
-			case 'int':
110
-				if (!is_numeric($value)) {
111
-					throw new \InvalidArgumentException('Non-numeric value specified');
112
-				}
113
-				return [
114
-					'value' => (int) $value,
115
-					'readable-value' => 'integer ' . (int) $value,
116
-				];
117
-
118
-			case 'double':
119
-			case 'float':
120
-				if (!is_numeric($value)) {
121
-					throw new \InvalidArgumentException('Non-numeric value specified');
122
-				}
123
-				return [
124
-					'value' => (double) $value,
125
-					'readable-value' => 'double ' . (double) $value,
126
-				];
127
-
128
-			case 'boolean':
129
-			case 'bool':
130
-				$value = strtolower($value);
131
-				switch ($value) {
132
-					case 'true':
133
-						return [
134
-							'value' => true,
135
-							'readable-value' => 'boolean ' . $value,
136
-						];
137
-
138
-					case 'false':
139
-						return [
140
-							'value' => false,
141
-							'readable-value' => 'boolean ' . $value,
142
-						];
143
-
144
-					default:
145
-						throw new \InvalidArgumentException('Unable to parse value as boolean');
146
-				}
147
-
148
-				// no break
149
-			case 'null':
150
-				return [
151
-					'value' => null,
152
-					'readable-value' => 'null',
153
-				];
154
-
155
-			case 'string':
156
-				$value = (string) $value;
157
-				return [
158
-					'value' => $value,
159
-					'readable-value' => ($value === '') ? 'empty string' : 'string ' . $value,
160
-				];
161
-
162
-			default:
163
-				throw new \InvalidArgumentException('Invalid type');
164
-		}
165
-	}
166
-
167
-	/**
168
-	 * @param array $configNames
169
-	 * @param mixed $existingValues
170
-	 * @param mixed $value
171
-	 * @param bool $updateOnly
172
-	 * @return array merged value
173
-	 * @throws \UnexpectedValueException
174
-	 */
175
-	protected function mergeArrayValue(array $configNames, $existingValues, $value, $updateOnly) {
176
-		$configName = array_shift($configNames);
177
-		if (!is_array($existingValues)) {
178
-			$existingValues = [];
179
-		}
180
-		if (!empty($configNames)) {
181
-			if (isset($existingValues[$configName])) {
182
-				$existingValue = $existingValues[$configName];
183
-			} else {
184
-				$existingValue = [];
185
-			}
186
-			$existingValues[$configName] = $this->mergeArrayValue($configNames, $existingValue, $value, $updateOnly);
187
-		} else {
188
-			if (!isset($existingValues[$configName]) && $updateOnly) {
189
-				throw new \UnexpectedValueException('Config parameter does not exist');
190
-			}
191
-			$existingValues[$configName] = $value;
192
-		}
193
-		return $existingValues;
194
-	}
195
-
196
-	/**
197
-	 * @param string $optionName
198
-	 * @param CompletionContext $context
199
-	 * @return string[]
200
-	 */
201
-	public function completeOptionValues($optionName, CompletionContext $context) {
202
-		if ($optionName === 'type') {
203
-			return ['string', 'integer', 'double', 'boolean'];
204
-		}
205
-		return parent::completeOptionValues($optionName, $context);
206
-	}
35
+    public function __construct(
36
+        SystemConfig $systemConfig,
37
+    ) {
38
+        parent::__construct($systemConfig);
39
+    }
40
+
41
+    protected function configure() {
42
+        parent::configure();
43
+
44
+        $this
45
+            ->setName('config:system:set')
46
+            ->setDescription('Set a system config value')
47
+            ->addArgument(
48
+                'name',
49
+                InputArgument::REQUIRED | InputArgument::IS_ARRAY,
50
+                'Name of the config parameter, specify multiple for array parameter'
51
+            )
52
+            ->addOption(
53
+                'type',
54
+                null,
55
+                InputOption::VALUE_REQUIRED,
56
+                'Value type [string, integer, double, boolean]',
57
+                'string'
58
+            )
59
+            ->addOption(
60
+                'value',
61
+                null,
62
+                InputOption::VALUE_REQUIRED,
63
+                'The new value of the config'
64
+            )
65
+            ->addOption(
66
+                'update-only',
67
+                null,
68
+                InputOption::VALUE_NONE,
69
+                'Only updates the value, if it is not set before, it is not being added'
70
+            )
71
+        ;
72
+    }
73
+
74
+    protected function execute(InputInterface $input, OutputInterface $output): int {
75
+        $configNames = $input->getArgument('name');
76
+        $configName = $configNames[0];
77
+        $configValue = $this->castValue($input->getOption('value'), $input->getOption('type'));
78
+        $updateOnly = $input->getOption('update-only');
79
+
80
+        if (count($configNames) > 1) {
81
+            $existingValue = $this->systemConfig->getValue($configName);
82
+
83
+            $newValue = $this->mergeArrayValue(
84
+                array_slice($configNames, 1), $existingValue, $configValue['value'], $updateOnly
85
+            );
86
+
87
+            $this->systemConfig->setValue($configName, $newValue);
88
+        } else {
89
+            if ($updateOnly && !in_array($configName, $this->systemConfig->getKeys(), true)) {
90
+                throw new \UnexpectedValueException('Config parameter does not exist');
91
+            }
92
+
93
+            $this->systemConfig->setValue($configName, $configValue['value']);
94
+        }
95
+
96
+        $output->writeln('<info>System config value ' . implode(' => ', $configNames) . ' set to ' . $configValue['readable-value'] . '</info>');
97
+        return 0;
98
+    }
99
+
100
+    /**
101
+     * @param string $value
102
+     * @param string $type
103
+     * @return mixed
104
+     * @throws \InvalidArgumentException
105
+     */
106
+    protected function castValue($value, $type) {
107
+        switch ($type) {
108
+            case 'integer':
109
+            case 'int':
110
+                if (!is_numeric($value)) {
111
+                    throw new \InvalidArgumentException('Non-numeric value specified');
112
+                }
113
+                return [
114
+                    'value' => (int) $value,
115
+                    'readable-value' => 'integer ' . (int) $value,
116
+                ];
117
+
118
+            case 'double':
119
+            case 'float':
120
+                if (!is_numeric($value)) {
121
+                    throw new \InvalidArgumentException('Non-numeric value specified');
122
+                }
123
+                return [
124
+                    'value' => (double) $value,
125
+                    'readable-value' => 'double ' . (double) $value,
126
+                ];
127
+
128
+            case 'boolean':
129
+            case 'bool':
130
+                $value = strtolower($value);
131
+                switch ($value) {
132
+                    case 'true':
133
+                        return [
134
+                            'value' => true,
135
+                            'readable-value' => 'boolean ' . $value,
136
+                        ];
137
+
138
+                    case 'false':
139
+                        return [
140
+                            'value' => false,
141
+                            'readable-value' => 'boolean ' . $value,
142
+                        ];
143
+
144
+                    default:
145
+                        throw new \InvalidArgumentException('Unable to parse value as boolean');
146
+                }
147
+
148
+                // no break
149
+            case 'null':
150
+                return [
151
+                    'value' => null,
152
+                    'readable-value' => 'null',
153
+                ];
154
+
155
+            case 'string':
156
+                $value = (string) $value;
157
+                return [
158
+                    'value' => $value,
159
+                    'readable-value' => ($value === '') ? 'empty string' : 'string ' . $value,
160
+                ];
161
+
162
+            default:
163
+                throw new \InvalidArgumentException('Invalid type');
164
+        }
165
+    }
166
+
167
+    /**
168
+     * @param array $configNames
169
+     * @param mixed $existingValues
170
+     * @param mixed $value
171
+     * @param bool $updateOnly
172
+     * @return array merged value
173
+     * @throws \UnexpectedValueException
174
+     */
175
+    protected function mergeArrayValue(array $configNames, $existingValues, $value, $updateOnly) {
176
+        $configName = array_shift($configNames);
177
+        if (!is_array($existingValues)) {
178
+            $existingValues = [];
179
+        }
180
+        if (!empty($configNames)) {
181
+            if (isset($existingValues[$configName])) {
182
+                $existingValue = $existingValues[$configName];
183
+            } else {
184
+                $existingValue = [];
185
+            }
186
+            $existingValues[$configName] = $this->mergeArrayValue($configNames, $existingValue, $value, $updateOnly);
187
+        } else {
188
+            if (!isset($existingValues[$configName]) && $updateOnly) {
189
+                throw new \UnexpectedValueException('Config parameter does not exist');
190
+            }
191
+            $existingValues[$configName] = $value;
192
+        }
193
+        return $existingValues;
194
+    }
195
+
196
+    /**
197
+     * @param string $optionName
198
+     * @param CompletionContext $context
199
+     * @return string[]
200
+     */
201
+    public function completeOptionValues($optionName, CompletionContext $context) {
202
+        if ($optionName === 'type') {
203
+            return ['string', 'integer', 'double', 'boolean'];
204
+        }
205
+        return parent::completeOptionValues($optionName, $context);
206
+    }
207 207
 }
Please login to merge, or discard this patch.
core/Command/Config/App/DeleteConfig.php 2 patches
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -70,12 +70,12 @@
 block discarded – undo
70 70
 		$configName = $input->getArgument('name');
71 71
 
72 72
 		if ($input->hasParameterOption('--error-if-not-exists') && !in_array($configName, $this->config->getAppKeys($appName))) {
73
-			$output->writeln('<error>Config ' . $configName . ' of app ' . $appName . ' could not be deleted because it did not exist</error>');
73
+			$output->writeln('<error>Config '.$configName.' of app '.$appName.' could not be deleted because it did not exist</error>');
74 74
 			return 1;
75 75
 		}
76 76
 
77 77
 		$this->config->deleteAppValue($appName, $configName);
78
-		$output->writeln('<info>Config value ' . $configName . ' of app ' . $appName . ' deleted</info>');
78
+		$output->writeln('<info>Config value '.$configName.' of app '.$appName.' deleted</info>');
79 79
 		return 0;
80 80
 	}
81 81
 }
Please login to merge, or discard this patch.
Indentation   +39 added lines, -39 removed lines patch added patch discarded remove patch
@@ -28,48 +28,48 @@
 block discarded – undo
28 28
 use Symfony\Component\Console\Output\OutputInterface;
29 29
 
30 30
 class DeleteConfig extends Base {
31
-	public function __construct(
32
-		protected IConfig $config,
33
-	) {
34
-		parent::__construct();
35
-	}
31
+    public function __construct(
32
+        protected IConfig $config,
33
+    ) {
34
+        parent::__construct();
35
+    }
36 36
 
37
-	protected function configure() {
38
-		parent::configure();
37
+    protected function configure() {
38
+        parent::configure();
39 39
 
40
-		$this
41
-			->setName('config:app:delete')
42
-			->setDescription('Delete an app config value')
43
-			->addArgument(
44
-				'app',
45
-				InputArgument::REQUIRED,
46
-				'Name of the app'
47
-			)
48
-			->addArgument(
49
-				'name',
50
-				InputArgument::REQUIRED,
51
-				'Name of the config to delete'
52
-			)
53
-			->addOption(
54
-				'error-if-not-exists',
55
-				null,
56
-				InputOption::VALUE_NONE,
57
-				'Checks whether the config exists before deleting it'
58
-			)
59
-		;
60
-	}
40
+        $this
41
+            ->setName('config:app:delete')
42
+            ->setDescription('Delete an app config value')
43
+            ->addArgument(
44
+                'app',
45
+                InputArgument::REQUIRED,
46
+                'Name of the app'
47
+            )
48
+            ->addArgument(
49
+                'name',
50
+                InputArgument::REQUIRED,
51
+                'Name of the config to delete'
52
+            )
53
+            ->addOption(
54
+                'error-if-not-exists',
55
+                null,
56
+                InputOption::VALUE_NONE,
57
+                'Checks whether the config exists before deleting it'
58
+            )
59
+        ;
60
+    }
61 61
 
62
-	protected function execute(InputInterface $input, OutputInterface $output): int {
63
-		$appName = $input->getArgument('app');
64
-		$configName = $input->getArgument('name');
62
+    protected function execute(InputInterface $input, OutputInterface $output): int {
63
+        $appName = $input->getArgument('app');
64
+        $configName = $input->getArgument('name');
65 65
 
66
-		if ($input->hasParameterOption('--error-if-not-exists') && !in_array($configName, $this->config->getAppKeys($appName))) {
67
-			$output->writeln('<error>Config ' . $configName . ' of app ' . $appName . ' could not be deleted because it did not exist</error>');
68
-			return 1;
69
-		}
66
+        if ($input->hasParameterOption('--error-if-not-exists') && !in_array($configName, $this->config->getAppKeys($appName))) {
67
+            $output->writeln('<error>Config ' . $configName . ' of app ' . $appName . ' could not be deleted because it did not exist</error>');
68
+            return 1;
69
+        }
70 70
 
71
-		$this->config->deleteAppValue($appName, $configName);
72
-		$output->writeln('<info>Config value ' . $configName . ' of app ' . $appName . ' deleted</info>');
73
-		return 0;
74
-	}
71
+        $this->config->deleteAppValue($appName, $configName);
72
+        $output->writeln('<info>Config value ' . $configName . ' of app ' . $appName . ' deleted</info>');
73
+        return 0;
74
+    }
75 75
 }
Please login to merge, or discard this patch.
core/Command/Config/App/SetConfig.php 2 patches
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -76,14 +76,14 @@
 block discarded – undo
76 76
 		$configName = $input->getArgument('name');
77 77
 
78 78
 		if (!in_array($configName, $this->config->getAppKeys($appName)) && $input->hasParameterOption('--update-only')) {
79
-			$output->writeln('<comment>Config value ' . $configName . ' for app ' . $appName . ' not updated, as it has not been set before.</comment>');
79
+			$output->writeln('<comment>Config value '.$configName.' for app '.$appName.' not updated, as it has not been set before.</comment>');
80 80
 			return 1;
81 81
 		}
82 82
 
83 83
 		$configValue = $input->getOption('value');
84 84
 		$this->config->setAppValue($appName, $configName, $configValue);
85 85
 
86
-		$output->writeln('<info>Config value ' . $configName . ' for app ' . $appName . ' set to ' . $configValue . '</info>');
86
+		$output->writeln('<info>Config value '.$configName.' for app '.$appName.' set to '.$configValue.'</info>');
87 87
 		return 0;
88 88
 	}
89 89
 }
Please login to merge, or discard this patch.
Indentation   +46 added lines, -46 removed lines patch added patch discarded remove patch
@@ -28,56 +28,56 @@
 block discarded – undo
28 28
 use Symfony\Component\Console\Output\OutputInterface;
29 29
 
30 30
 class SetConfig extends Base {
31
-	public function __construct(
32
-		protected IConfig $config,
33
-	) {
34
-		parent::__construct();
35
-	}
31
+    public function __construct(
32
+        protected IConfig $config,
33
+    ) {
34
+        parent::__construct();
35
+    }
36 36
 
37
-	protected function configure() {
38
-		parent::configure();
37
+    protected function configure() {
38
+        parent::configure();
39 39
 
40
-		$this
41
-			->setName('config:app:set')
42
-			->setDescription('Set an app config value')
43
-			->addArgument(
44
-				'app',
45
-				InputArgument::REQUIRED,
46
-				'Name of the app'
47
-			)
48
-			->addArgument(
49
-				'name',
50
-				InputArgument::REQUIRED,
51
-				'Name of the config to set'
52
-			)
53
-			->addOption(
54
-				'value',
55
-				null,
56
-				InputOption::VALUE_REQUIRED,
57
-				'The new value of the config'
58
-			)
59
-			->addOption(
60
-				'update-only',
61
-				null,
62
-				InputOption::VALUE_NONE,
63
-				'Only updates the value, if it is not set before, it is not being added'
64
-			)
65
-		;
66
-	}
40
+        $this
41
+            ->setName('config:app:set')
42
+            ->setDescription('Set an app config value')
43
+            ->addArgument(
44
+                'app',
45
+                InputArgument::REQUIRED,
46
+                'Name of the app'
47
+            )
48
+            ->addArgument(
49
+                'name',
50
+                InputArgument::REQUIRED,
51
+                'Name of the config to set'
52
+            )
53
+            ->addOption(
54
+                'value',
55
+                null,
56
+                InputOption::VALUE_REQUIRED,
57
+                'The new value of the config'
58
+            )
59
+            ->addOption(
60
+                'update-only',
61
+                null,
62
+                InputOption::VALUE_NONE,
63
+                'Only updates the value, if it is not set before, it is not being added'
64
+            )
65
+        ;
66
+    }
67 67
 
68
-	protected function execute(InputInterface $input, OutputInterface $output): int {
69
-		$appName = $input->getArgument('app');
70
-		$configName = $input->getArgument('name');
68
+    protected function execute(InputInterface $input, OutputInterface $output): int {
69
+        $appName = $input->getArgument('app');
70
+        $configName = $input->getArgument('name');
71 71
 
72
-		if (!in_array($configName, $this->config->getAppKeys($appName)) && $input->hasParameterOption('--update-only')) {
73
-			$output->writeln('<comment>Config value ' . $configName . ' for app ' . $appName . ' not updated, as it has not been set before.</comment>');
74
-			return 1;
75
-		}
72
+        if (!in_array($configName, $this->config->getAppKeys($appName)) && $input->hasParameterOption('--update-only')) {
73
+            $output->writeln('<comment>Config value ' . $configName . ' for app ' . $appName . ' not updated, as it has not been set before.</comment>');
74
+            return 1;
75
+        }
76 76
 
77
-		$configValue = $input->getOption('value');
78
-		$this->config->setAppValue($appName, $configName, $configValue);
77
+        $configValue = $input->getOption('value');
78
+        $this->config->setAppValue($appName, $configName, $configValue);
79 79
 
80
-		$output->writeln('<info>Config value ' . $configName . ' for app ' . $appName . ' set to ' . $configValue . '</info>');
81
-		return 0;
82
-	}
80
+        $output->writeln('<info>Config value ' . $configName . ' for app ' . $appName . ' set to ' . $configValue . '</info>');
81
+        return 0;
82
+    }
83 83
 }
Please login to merge, or discard this patch.
apps/files_external/lib/Command/Delete.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -68,7 +68,7 @@
 block discarded – undo
68 68
 		try {
69 69
 			$mount = $this->globalService->getStorage($mountId);
70 70
 		} catch (NotFoundException $e) {
71
-			$output->writeln('<error>Mount with id "' . $mountId . ' not found, check "occ files_external:list" to get available mounts"</error>');
71
+			$output->writeln('<error>Mount with id "'.$mountId.' not found, check "occ files_external:list" to get available mounts"</error>');
72 72
 			return 404;
73 73
 		}
74 74
 
Please login to merge, or discard this patch.
Indentation   +50 added lines, -50 removed lines patch added patch discarded remove patch
@@ -37,62 +37,62 @@
 block discarded – undo
37 37
 use Symfony\Component\Console\Question\ConfirmationQuestion;
38 38
 
39 39
 class Delete extends Base {
40
-	protected GlobalStoragesService $globalService;
41
-	protected UserStoragesService $userService;
42
-	protected IUserSession $userSession;
43
-	protected IUserManager $userManager;
40
+    protected GlobalStoragesService $globalService;
41
+    protected UserStoragesService $userService;
42
+    protected IUserSession $userSession;
43
+    protected IUserManager $userManager;
44 44
 
45
-	public function __construct(GlobalStoragesService $globalService, UserStoragesService $userService, IUserSession $userSession, IUserManager $userManager) {
46
-		parent::__construct();
47
-		$this->globalService = $globalService;
48
-		$this->userService = $userService;
49
-		$this->userSession = $userSession;
50
-		$this->userManager = $userManager;
51
-	}
45
+    public function __construct(GlobalStoragesService $globalService, UserStoragesService $userService, IUserSession $userSession, IUserManager $userManager) {
46
+        parent::__construct();
47
+        $this->globalService = $globalService;
48
+        $this->userService = $userService;
49
+        $this->userSession = $userSession;
50
+        $this->userManager = $userManager;
51
+    }
52 52
 
53
-	protected function configure(): void {
54
-		$this
55
-			->setName('files_external:delete')
56
-			->setDescription('Delete an external mount')
57
-			->addArgument(
58
-				'mount_id',
59
-				InputArgument::REQUIRED,
60
-				'The id of the mount to edit'
61
-			)->addOption(
62
-				'yes',
63
-				'y',
64
-				InputOption::VALUE_NONE,
65
-				'Skip confirmation'
66
-			);
67
-		parent::configure();
68
-	}
53
+    protected function configure(): void {
54
+        $this
55
+            ->setName('files_external:delete')
56
+            ->setDescription('Delete an external mount')
57
+            ->addArgument(
58
+                'mount_id',
59
+                InputArgument::REQUIRED,
60
+                'The id of the mount to edit'
61
+            )->addOption(
62
+                'yes',
63
+                'y',
64
+                InputOption::VALUE_NONE,
65
+                'Skip confirmation'
66
+            );
67
+        parent::configure();
68
+    }
69 69
 
70
-	protected function execute(InputInterface $input, OutputInterface $output): int {
71
-		$mountId = $input->getArgument('mount_id');
72
-		try {
73
-			$mount = $this->globalService->getStorage($mountId);
74
-		} catch (NotFoundException $e) {
75
-			$output->writeln('<error>Mount with id "' . $mountId . ' not found, check "occ files_external:list" to get available mounts"</error>');
76
-			return 404;
77
-		}
70
+    protected function execute(InputInterface $input, OutputInterface $output): int {
71
+        $mountId = $input->getArgument('mount_id');
72
+        try {
73
+            $mount = $this->globalService->getStorage($mountId);
74
+        } catch (NotFoundException $e) {
75
+            $output->writeln('<error>Mount with id "' . $mountId . ' not found, check "occ files_external:list" to get available mounts"</error>');
76
+            return 404;
77
+        }
78 78
 
79
-		$noConfirm = $input->getOption('yes');
79
+        $noConfirm = $input->getOption('yes');
80 80
 
81
-		if (!$noConfirm) {
82
-			$listCommand = new ListCommand($this->globalService, $this->userService, $this->userSession, $this->userManager);
83
-			$listInput = new ArrayInput([], $listCommand->getDefinition());
84
-			$listInput->setOption('output', $input->getOption('output'));
85
-			$listCommand->listMounts(null, [$mount], $listInput, $output);
81
+        if (!$noConfirm) {
82
+            $listCommand = new ListCommand($this->globalService, $this->userService, $this->userSession, $this->userManager);
83
+            $listInput = new ArrayInput([], $listCommand->getDefinition());
84
+            $listInput->setOption('output', $input->getOption('output'));
85
+            $listCommand->listMounts(null, [$mount], $listInput, $output);
86 86
 
87
-			$questionHelper = $this->getHelper('question');
88
-			$question = new ConfirmationQuestion('Delete this mount? [y/N] ', false);
87
+            $questionHelper = $this->getHelper('question');
88
+            $question = new ConfirmationQuestion('Delete this mount? [y/N] ', false);
89 89
 
90
-			if (!$questionHelper->ask($input, $output, $question)) {
91
-				return 1;
92
-			}
93
-		}
90
+            if (!$questionHelper->ask($input, $output, $question)) {
91
+                return 1;
92
+            }
93
+        }
94 94
 
95
-		$this->globalService->removeStorage($mountId);
96
-		return 0;
97
-	}
95
+        $this->globalService->removeStorage($mountId);
96
+        return 0;
97
+    }
98 98
 }
Please login to merge, or discard this patch.
lib/private/Repair/RepairInvalidShares.php 2 patches
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -71,7 +71,7 @@  discard block
 block discarded – undo
71 71
 
72 72
 		$updatedEntries = $builder->execute();
73 73
 		if ($updatedEntries > 0) {
74
-			$out->info('Fixed file share permissions for ' . $updatedEntries . ' shares');
74
+			$out->info('Fixed file share permissions for '.$updatedEntries.' shares');
75 75
 		}
76 76
 	}
77 77
 
@@ -107,7 +107,7 @@  discard block
 block discarded – undo
107 107
 		}
108 108
 
109 109
 		if ($deletedEntries) {
110
-			$out->info('Removed ' . $deletedEntries . ' shares where the parent did not exist');
110
+			$out->info('Removed '.$deletedEntries.' shares where the parent did not exist');
111 111
 		}
112 112
 	}
113 113
 
Please login to merge, or discard this patch.
Indentation   +85 added lines, -85 removed lines patch added patch discarded remove patch
@@ -32,89 +32,89 @@
 block discarded – undo
32 32
  * Repairs shares with invalid data
33 33
  */
34 34
 class RepairInvalidShares implements IRepairStep {
35
-	public const CHUNK_SIZE = 200;
36
-
37
-	/** @var \OCP\IConfig */
38
-	protected $config;
39
-
40
-	/** @var \OCP\IDBConnection */
41
-	protected $connection;
42
-
43
-	/**
44
-	 * @param \OCP\IConfig $config
45
-	 * @param \OCP\IDBConnection $connection
46
-	 */
47
-	public function __construct($config, $connection) {
48
-		$this->connection = $connection;
49
-		$this->config = $config;
50
-	}
51
-
52
-	public function getName() {
53
-		return 'Repair invalid shares';
54
-	}
55
-
56
-	/**
57
-	 * Adjust file share permissions
58
-	 */
59
-	private function adjustFileSharePermissions(IOutput $out) {
60
-		$mask = \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_SHARE;
61
-		$builder = $this->connection->getQueryBuilder();
62
-
63
-		$permsFunc = $builder->expr()->bitwiseAnd('permissions', $mask);
64
-		$builder
65
-			->update('share')
66
-			->set('permissions', $permsFunc)
67
-			->where($builder->expr()->eq('item_type', $builder->expr()->literal('file')))
68
-			->andWhere($builder->expr()->neq('permissions', $permsFunc));
69
-
70
-		$updatedEntries = $builder->execute();
71
-		if ($updatedEntries > 0) {
72
-			$out->info('Fixed file share permissions for ' . $updatedEntries . ' shares');
73
-		}
74
-	}
75
-
76
-	/**
77
-	 * Remove shares where the parent share does not exist anymore
78
-	 */
79
-	private function removeSharesNonExistingParent(IOutput $out) {
80
-		$deletedEntries = 0;
81
-
82
-		$query = $this->connection->getQueryBuilder();
83
-		$query->select('s1.parent')
84
-			->from('share', 's1')
85
-			->where($query->expr()->isNotNull('s1.parent'))
86
-				->andWhere($query->expr()->isNull('s2.id'))
87
-			->leftJoin('s1', 'share', 's2', $query->expr()->eq('s1.parent', 's2.id'))
88
-			->groupBy('s1.parent')
89
-			->setMaxResults(self::CHUNK_SIZE);
90
-
91
-		$deleteQuery = $this->connection->getQueryBuilder();
92
-		$deleteQuery->delete('share')
93
-			->where($deleteQuery->expr()->eq('parent', $deleteQuery->createParameter('parent')));
94
-
95
-		$deletedInLastChunk = self::CHUNK_SIZE;
96
-		while ($deletedInLastChunk === self::CHUNK_SIZE) {
97
-			$deletedInLastChunk = 0;
98
-			$result = $query->execute();
99
-			while ($row = $result->fetch()) {
100
-				$deletedInLastChunk++;
101
-				$deletedEntries += $deleteQuery->setParameter('parent', (int) $row['parent'])
102
-					->execute();
103
-			}
104
-			$result->closeCursor();
105
-		}
106
-
107
-		if ($deletedEntries) {
108
-			$out->info('Removed ' . $deletedEntries . ' shares where the parent did not exist');
109
-		}
110
-	}
111
-
112
-	public function run(IOutput $out) {
113
-		$ocVersionFromBeforeUpdate = $this->config->getSystemValueString('version', '0.0.0');
114
-		if (version_compare($ocVersionFromBeforeUpdate, '12.0.0.11', '<')) {
115
-			$this->adjustFileSharePermissions($out);
116
-		}
117
-
118
-		$this->removeSharesNonExistingParent($out);
119
-	}
35
+    public const CHUNK_SIZE = 200;
36
+
37
+    /** @var \OCP\IConfig */
38
+    protected $config;
39
+
40
+    /** @var \OCP\IDBConnection */
41
+    protected $connection;
42
+
43
+    /**
44
+     * @param \OCP\IConfig $config
45
+     * @param \OCP\IDBConnection $connection
46
+     */
47
+    public function __construct($config, $connection) {
48
+        $this->connection = $connection;
49
+        $this->config = $config;
50
+    }
51
+
52
+    public function getName() {
53
+        return 'Repair invalid shares';
54
+    }
55
+
56
+    /**
57
+     * Adjust file share permissions
58
+     */
59
+    private function adjustFileSharePermissions(IOutput $out) {
60
+        $mask = \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_SHARE;
61
+        $builder = $this->connection->getQueryBuilder();
62
+
63
+        $permsFunc = $builder->expr()->bitwiseAnd('permissions', $mask);
64
+        $builder
65
+            ->update('share')
66
+            ->set('permissions', $permsFunc)
67
+            ->where($builder->expr()->eq('item_type', $builder->expr()->literal('file')))
68
+            ->andWhere($builder->expr()->neq('permissions', $permsFunc));
69
+
70
+        $updatedEntries = $builder->execute();
71
+        if ($updatedEntries > 0) {
72
+            $out->info('Fixed file share permissions for ' . $updatedEntries . ' shares');
73
+        }
74
+    }
75
+
76
+    /**
77
+     * Remove shares where the parent share does not exist anymore
78
+     */
79
+    private function removeSharesNonExistingParent(IOutput $out) {
80
+        $deletedEntries = 0;
81
+
82
+        $query = $this->connection->getQueryBuilder();
83
+        $query->select('s1.parent')
84
+            ->from('share', 's1')
85
+            ->where($query->expr()->isNotNull('s1.parent'))
86
+                ->andWhere($query->expr()->isNull('s2.id'))
87
+            ->leftJoin('s1', 'share', 's2', $query->expr()->eq('s1.parent', 's2.id'))
88
+            ->groupBy('s1.parent')
89
+            ->setMaxResults(self::CHUNK_SIZE);
90
+
91
+        $deleteQuery = $this->connection->getQueryBuilder();
92
+        $deleteQuery->delete('share')
93
+            ->where($deleteQuery->expr()->eq('parent', $deleteQuery->createParameter('parent')));
94
+
95
+        $deletedInLastChunk = self::CHUNK_SIZE;
96
+        while ($deletedInLastChunk === self::CHUNK_SIZE) {
97
+            $deletedInLastChunk = 0;
98
+            $result = $query->execute();
99
+            while ($row = $result->fetch()) {
100
+                $deletedInLastChunk++;
101
+                $deletedEntries += $deleteQuery->setParameter('parent', (int) $row['parent'])
102
+                    ->execute();
103
+            }
104
+            $result->closeCursor();
105
+        }
106
+
107
+        if ($deletedEntries) {
108
+            $out->info('Removed ' . $deletedEntries . ' shares where the parent did not exist');
109
+        }
110
+    }
111
+
112
+    public function run(IOutput $out) {
113
+        $ocVersionFromBeforeUpdate = $this->config->getSystemValueString('version', '0.0.0');
114
+        if (version_compare($ocVersionFromBeforeUpdate, '12.0.0.11', '<')) {
115
+            $this->adjustFileSharePermissions($out);
116
+        }
117
+
118
+        $this->removeSharesNonExistingParent($out);
119
+    }
120 120
 }
Please login to merge, or discard this patch.