Passed
Push — master ( 9d8e1e...a5b0f4 )
by Roeland
13:05 queued 14s
created
lib/private/Archive/Archive.php 3 patches
Braces   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -134,7 +134,7 @@
 block discarded – undo
134 134
 				}
135 135
 				if(is_dir($source.'/'.$file)) {
136 136
 					$this->addRecursive($path.'/'.$file, $source.'/'.$file);
137
-				}else{
137
+				} else{
138 138
 					$this->addFile($path.'/'.$file, $source.'/'.$file);
139 139
 				}
140 140
 			}
Please login to merge, or discard this patch.
Spacing   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -49,7 +49,7 @@  discard block
 block discarded – undo
49 49
 	 * @param string $source either a local file or string data
50 50
 	 * @return bool
51 51
 	 */
52
-	public abstract function addFile($path, $source='');
52
+	public abstract function addFile($path, $source = '');
53 53
 	/**
54 54
 	 * rename a file or folder in the archive
55 55
 	 * @param string $source
@@ -126,15 +126,15 @@  discard block
 block discarded – undo
126 126
 	 */
127 127
 	public function addRecursive($path, $source) {
128 128
 		$dh = opendir($source);
129
-		if(is_resource($dh)) {
129
+		if (is_resource($dh)) {
130 130
 			$this->addFolder($path);
131 131
 			while (($file = readdir($dh)) !== false) {
132
-				if($file === '.' || $file === '..') {
132
+				if ($file === '.' || $file === '..') {
133 133
 					continue;
134 134
 				}
135
-				if(is_dir($source.'/'.$file)) {
135
+				if (is_dir($source.'/'.$file)) {
136 136
 					$this->addRecursive($path.'/'.$file, $source.'/'.$file);
137
-				}else{
137
+				} else {
138 138
 					$this->addFile($path.'/'.$file, $source.'/'.$file);
139 139
 				}
140 140
 			}
Please login to merge, or discard this patch.
Indentation   +106 added lines, -106 removed lines patch added patch discarded remove patch
@@ -31,110 +31,110 @@
 block discarded – undo
31 31
 namespace OC\Archive;
32 32
 
33 33
 abstract class Archive {
34
-	/**
35
-	 * @param $source
36
-	 */
37
-	public abstract function __construct($source);
38
-	/**
39
-	 * add an empty folder to the archive
40
-	 * @param string $path
41
-	 * @return bool
42
-	 */
43
-	public abstract function addFolder($path);
44
-	/**
45
-	 * add a file to the archive
46
-	 * @param string $path
47
-	 * @param string $source either a local file or string data
48
-	 * @return bool
49
-	 */
50
-	public abstract function addFile($path, $source='');
51
-	/**
52
-	 * rename a file or folder in the archive
53
-	 * @param string $source
54
-	 * @param string $dest
55
-	 * @return bool
56
-	 */
57
-	public abstract function rename($source, $dest);
58
-	/**
59
-	 * get the uncompressed size of a file in the archive
60
-	 * @param string $path
61
-	 * @return int
62
-	 */
63
-	public abstract function filesize($path);
64
-	/**
65
-	 * get the last modified time of a file in the archive
66
-	 * @param string $path
67
-	 * @return int
68
-	 */
69
-	public abstract function mtime($path);
70
-	/**
71
-	 * get the files in a folder
72
-	 * @param string $path
73
-	 * @return array
74
-	 */
75
-	public abstract function getFolder($path);
76
-	/**
77
-	 * get all files in the archive
78
-	 * @return array
79
-	 */
80
-	public abstract function getFiles();
81
-	/**
82
-	 * get the content of a file
83
-	 * @param string $path
84
-	 * @return string
85
-	 */
86
-	public abstract function getFile($path);
87
-	/**
88
-	 * extract a single file from the archive
89
-	 * @param string $path
90
-	 * @param string $dest
91
-	 * @return bool
92
-	 */
93
-	public abstract function extractFile($path, $dest);
94
-	/**
95
-	 * extract the archive
96
-	 * @param string $dest
97
-	 * @return bool
98
-	 */
99
-	public abstract function extract($dest);
100
-	/**
101
-	 * check if a file or folder exists in the archive
102
-	 * @param string $path
103
-	 * @return bool
104
-	 */
105
-	public abstract function fileExists($path);
106
-	/**
107
-	 * remove a file or folder from the archive
108
-	 * @param string $path
109
-	 * @return bool
110
-	 */
111
-	public abstract function remove($path);
112
-	/**
113
-	 * get a file handler
114
-	 * @param string $path
115
-	 * @param string $mode
116
-	 * @return resource
117
-	 */
118
-	public abstract function getStream($path, $mode);
119
-	/**
120
-	 * add a folder and all its content
121
-	 * @param string $path
122
-	 * @param string $source
123
-	 */
124
-	public function addRecursive($path, $source) {
125
-		$dh = opendir($source);
126
-		if(is_resource($dh)) {
127
-			$this->addFolder($path);
128
-			while (($file = readdir($dh)) !== false) {
129
-				if($file === '.' || $file === '..') {
130
-					continue;
131
-				}
132
-				if(is_dir($source.'/'.$file)) {
133
-					$this->addRecursive($path.'/'.$file, $source.'/'.$file);
134
-				}else{
135
-					$this->addFile($path.'/'.$file, $source.'/'.$file);
136
-				}
137
-			}
138
-		}
139
-	}
34
+    /**
35
+     * @param $source
36
+     */
37
+    public abstract function __construct($source);
38
+    /**
39
+     * add an empty folder to the archive
40
+     * @param string $path
41
+     * @return bool
42
+     */
43
+    public abstract function addFolder($path);
44
+    /**
45
+     * add a file to the archive
46
+     * @param string $path
47
+     * @param string $source either a local file or string data
48
+     * @return bool
49
+     */
50
+    public abstract function addFile($path, $source='');
51
+    /**
52
+     * rename a file or folder in the archive
53
+     * @param string $source
54
+     * @param string $dest
55
+     * @return bool
56
+     */
57
+    public abstract function rename($source, $dest);
58
+    /**
59
+     * get the uncompressed size of a file in the archive
60
+     * @param string $path
61
+     * @return int
62
+     */
63
+    public abstract function filesize($path);
64
+    /**
65
+     * get the last modified time of a file in the archive
66
+     * @param string $path
67
+     * @return int
68
+     */
69
+    public abstract function mtime($path);
70
+    /**
71
+     * get the files in a folder
72
+     * @param string $path
73
+     * @return array
74
+     */
75
+    public abstract function getFolder($path);
76
+    /**
77
+     * get all files in the archive
78
+     * @return array
79
+     */
80
+    public abstract function getFiles();
81
+    /**
82
+     * get the content of a file
83
+     * @param string $path
84
+     * @return string
85
+     */
86
+    public abstract function getFile($path);
87
+    /**
88
+     * extract a single file from the archive
89
+     * @param string $path
90
+     * @param string $dest
91
+     * @return bool
92
+     */
93
+    public abstract function extractFile($path, $dest);
94
+    /**
95
+     * extract the archive
96
+     * @param string $dest
97
+     * @return bool
98
+     */
99
+    public abstract function extract($dest);
100
+    /**
101
+     * check if a file or folder exists in the archive
102
+     * @param string $path
103
+     * @return bool
104
+     */
105
+    public abstract function fileExists($path);
106
+    /**
107
+     * remove a file or folder from the archive
108
+     * @param string $path
109
+     * @return bool
110
+     */
111
+    public abstract function remove($path);
112
+    /**
113
+     * get a file handler
114
+     * @param string $path
115
+     * @param string $mode
116
+     * @return resource
117
+     */
118
+    public abstract function getStream($path, $mode);
119
+    /**
120
+     * add a folder and all its content
121
+     * @param string $path
122
+     * @param string $source
123
+     */
124
+    public function addRecursive($path, $source) {
125
+        $dh = opendir($source);
126
+        if(is_resource($dh)) {
127
+            $this->addFolder($path);
128
+            while (($file = readdir($dh)) !== false) {
129
+                if($file === '.' || $file === '..') {
130
+                    continue;
131
+                }
132
+                if(is_dir($source.'/'.$file)) {
133
+                    $this->addRecursive($path.'/'.$file, $source.'/'.$file);
134
+                }else{
135
+                    $this->addFile($path.'/'.$file, $source.'/'.$file);
136
+                }
137
+            }
138
+        }
139
+    }
140 140
 }
Please login to merge, or discard this patch.
lib/private/NaturalSort_DefaultCollator.php 1 patch
Indentation   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -25,14 +25,14 @@
 block discarded – undo
25 25
 namespace OC;
26 26
 
27 27
 class NaturalSort_DefaultCollator {
28
-	public function compare($a, $b) {
29
-		$result = strcasecmp($a, $b);
30
-		if ($result === 0) {
31
-			if ($a === $b) {
32
-				return 0;
33
-			}
34
-			return ($a > $b) ? -1 : 1;
35
-		}
36
-		return ($result < 0) ? -1 : 1;
37
-	}
28
+    public function compare($a, $b) {
29
+        $result = strcasecmp($a, $b);
30
+        if ($result === 0) {
31
+            if ($a === $b) {
32
+                return 0;
33
+            }
34
+            return ($a > $b) ? -1 : 1;
35
+        }
36
+        return ($result < 0) ? -1 : 1;
37
+    }
38 38
 }
Please login to merge, or discard this patch.
lib/private/TemplateLayout.php 3 patches
Braces   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -61,7 +61,7 @@
 block discarded – undo
61 61
 			parent::__construct( 'core', 'layout.user' );
62 62
 			if(in_array(\OC_App::getCurrentApp(), ['settings','admin', 'help']) !== false) {
63 63
 				$this->assign('bodyid', 'body-settings');
64
-			}else{
64
+			} else{
65 65
 				$this->assign('bodyid', 'body-user');
66 66
 			}
67 67
 
Please login to merge, or discard this patch.
Indentation   +309 added lines, -309 removed lines patch added patch discarded remove patch
@@ -47,313 +47,313 @@
 block discarded – undo
47 47
 
48 48
 class TemplateLayout extends \OC_Template {
49 49
 
50
-	private static $versionHash = '';
51
-
52
-	/**
53
-	 * @var \OCP\IConfig
54
-	 */
55
-	private $config;
56
-
57
-	/**
58
-	 * @param string $renderAs
59
-	 * @param string $appId application id
60
-	 */
61
-	public function __construct( $renderAs, $appId = '' ) {
62
-
63
-		// yes - should be injected ....
64
-		$this->config = \OC::$server->getConfig();
65
-
66
-		if(\OCP\Util::isIE()) {
67
-			\OC_Util::addStyle('ie');
68
-		}
69
-
70
-		// Decide which page we show
71
-		if($renderAs === 'user') {
72
-			parent::__construct( 'core', 'layout.user' );
73
-			if(in_array(\OC_App::getCurrentApp(), ['settings','admin', 'help']) !== false) {
74
-				$this->assign('bodyid', 'body-settings');
75
-			}else{
76
-				$this->assign('bodyid', 'body-user');
77
-			}
78
-
79
-			// Add navigation entry
80
-			$this->assign( 'application', '');
81
-			$this->assign( 'appid', $appId );
82
-			$navigation = \OC::$server->getNavigationManager()->getAll();
83
-			$this->assign( 'navigation', $navigation);
84
-			$settingsNavigation = \OC::$server->getNavigationManager()->getAll('settings');
85
-			$this->assign( 'settingsnavigation', $settingsNavigation);
86
-			foreach($navigation as $entry) {
87
-				if ($entry['active']) {
88
-					$this->assign( 'application', $entry['name'] );
89
-					break;
90
-				}
91
-			}
92
-
93
-			foreach($settingsNavigation as $entry) {
94
-				if ($entry['active']) {
95
-					$this->assign( 'application', $entry['name'] );
96
-					break;
97
-				}
98
-			}
99
-			$userDisplayName = \OC_User::getDisplayName();
100
-			$this->assign('user_displayname', $userDisplayName);
101
-			$this->assign('user_uid', \OC_User::getUser());
102
-
103
-			if (\OC_User::getUser() === false) {
104
-				$this->assign('userAvatarSet', false);
105
-			} else {
106
-				$this->assign('userAvatarSet', \OC::$server->getAvatarManager()->getAvatar(\OC_User::getUser())->exists());
107
-				$this->assign('userAvatarVersion', $this->config->getUserValue(\OC_User::getUser(), 'avatar', 'version', 0));
108
-			}
109
-
110
-			// check if app menu icons should be inverted
111
-			try {
112
-				/** @var \OCA\Theming\Util $util */
113
-				$util = \OC::$server->query(\OCA\Theming\Util::class);
114
-				$this->assign('themingInvertMenu', $util->invertTextColor(\OC::$server->getThemingDefaults()->getColorPrimary()));
115
-			} catch (\OCP\AppFramework\QueryException $e) {
116
-				$this->assign('themingInvertMenu', false);
117
-			} catch (\OCP\AutoloadNotAllowedException $e) {
118
-				$this->assign('themingInvertMenu', false);
119
-			}
120
-
121
-		} else if ($renderAs === 'error') {
122
-			parent::__construct('core', 'layout.guest', '', false);
123
-			$this->assign('bodyid', 'body-login');
124
-			$this->assign('user_displayname', '');
125
-			$this->assign('user_uid', '');
126
-		} else if ($renderAs === 'guest') {
127
-			parent::__construct('core', 'layout.guest');
128
-			\OC_Util::addStyle('guest');
129
-			$this->assign('bodyid', 'body-login');
130
-
131
-			$userDisplayName = \OC_User::getDisplayName();
132
-			$this->assign('user_displayname', $userDisplayName);
133
-			$this->assign('user_uid', \OC_User::getUser());
134
-		} else if ($renderAs === 'public') {
135
-			parent::__construct('core', 'layout.public');
136
-			$this->assign( 'appid', $appId );
137
-			$this->assign('bodyid', 'body-public');
138
-
139
-			/** @var IRegistry $subscription */
140
-			$subscription = \OC::$server->query(IRegistry::class);
141
-			$showSimpleSignup = $this->config->getSystemValueBool('simpleSignUpLink.shown', true);
142
-			if ($showSimpleSignup && $subscription->delegateHasValidSubscription()) {
143
-				$showSimpleSignup = false;
144
-			}
145
-			$this->assign('showSimpleSignUpLink', $showSimpleSignup);
146
-		} else {
147
-			parent::__construct('core', 'layout.base');
148
-
149
-		}
150
-		// Send the language and the locale to our layouts
151
-		$lang = \OC::$server->getL10NFactory()->findLanguage();
152
-		$locale = \OC::$server->getL10NFactory()->findLocale($lang);
153
-
154
-		$lang = str_replace('_', '-', $lang);
155
-		$this->assign('language', $lang);
156
-		$this->assign('locale', $locale);
157
-
158
-		if(\OC::$server->getSystemConfig()->getValue('installed', false)) {
159
-			if (empty(self::$versionHash)) {
160
-				$v = \OC_App::getAppVersions();
161
-				$v['core'] = implode('.', \OCP\Util::getVersion());
162
-				self::$versionHash = substr(md5(implode(',', $v)), 0, 8);
163
-			}
164
-		} else {
165
-			self::$versionHash = md5('not installed');
166
-		}
167
-
168
-		// Add the js files
169
-		$jsFiles = self::findJavascriptFiles(\OC_Util::$scripts);
170
-		$this->assign('jsfiles', array());
171
-		if ($this->config->getSystemValue('installed', false) && $renderAs != 'error') {
172
-			if (\OC::$server->getContentSecurityPolicyNonceManager()->browserSupportsCspV3()) {
173
-				$jsConfigHelper = new JSConfigHelper(
174
-					\OC::$server->getL10N('lib'),
175
-					\OC::$server->query(Defaults::class),
176
-					\OC::$server->getAppManager(),
177
-					\OC::$server->getSession(),
178
-					\OC::$server->getUserSession()->getUser(),
179
-					$this->config,
180
-					\OC::$server->getGroupManager(),
181
-					\OC::$server->getIniWrapper(),
182
-					\OC::$server->getURLGenerator(),
183
-					\OC::$server->getCapabilitiesManager()
184
-				);
185
-				$this->assign('inline_ocjs', $jsConfigHelper->getConfig());
186
-			} else {
187
-				$this->append('jsfiles', \OC::$server->getURLGenerator()->linkToRoute('core.OCJS.getConfig', ['v' => self::$versionHash]));
188
-			}
189
-		}
190
-		foreach($jsFiles as $info) {
191
-			$web = $info[1];
192
-			$file = $info[2];
193
-			$this->append( 'jsfiles', $web.'/'.$file . $this->getVersionHashSuffix() );
194
-		}
195
-
196
-		try {
197
-			$pathInfo = \OC::$server->getRequest()->getPathInfo();
198
-		} catch (\Exception $e) {
199
-			$pathInfo = '';
200
-		}
201
-
202
-		// Do not initialise scss appdata until we have a fully installed instance
203
-		// Do not load scss for update, errors, installation or login page
204
-		if(\OC::$server->getSystemConfig()->getValue('installed', false)
205
-			&& !\OCP\Util::needUpgrade()
206
-			&& $pathInfo !== ''
207
-			&& !preg_match('/^\/login/', $pathInfo)
208
-			&& $renderAs !== 'error'
209
-		) {
210
-			$cssFiles = self::findStylesheetFiles(\OC_Util::$styles);
211
-		} else {
212
-			// If we ignore the scss compiler,
213
-			// we need to load the guest css fallback
214
-			\OC_Util::addStyle('guest');
215
-			$cssFiles = self::findStylesheetFiles(\OC_Util::$styles, false);
216
-		}
217
-
218
-		$this->assign('cssfiles', array());
219
-		$this->assign('printcssfiles', []);
220
-		$this->assign('versionHash', self::$versionHash);
221
-		foreach($cssFiles as $info) {
222
-			$web = $info[1];
223
-			$file = $info[2];
224
-
225
-			if (substr($file, -strlen('print.css')) === 'print.css') {
226
-				$this->append( 'printcssfiles', $web.'/'.$file . $this->getVersionHashSuffix() );
227
-			} else {
228
-				$suffix = $this->getVersionHashSuffix($web, $file);
229
-
230
-				if (strpos($file, '?v=') == false) {
231
-					$this->append( 'cssfiles', $web.'/'.$file . $suffix);
232
-				} else {
233
-					$this->append( 'cssfiles', $web.'/'.$file . '-' . substr($suffix, 3));
234
-				}
235
-
236
-			}
237
-		}
238
-
239
-		/** @var InitialStateService $initialState */
240
-		$initialState = \OC::$server->query(InitialStateService::class);
241
-		$this->assign('initialStates', $initialState->getInitialStates());
242
-	}
243
-
244
-	/**
245
-	 * @param string $path
246
- 	 * @param string $file
247
-	 * @return string
248
-	 */
249
-	protected function getVersionHashSuffix($path = false, $file = false) {
250
-		if ($this->config->getSystemValue('debug', false)) {
251
-			// allows chrome workspace mapping in debug mode
252
-			return "";
253
-		}
254
-		$themingSuffix = '';
255
-		$v = [];
256
-
257
-		if ($this->config->getSystemValue('installed', false)) {
258
-			if (\OC::$server->getAppManager()->isInstalled('theming')) {
259
-				$themingSuffix = '-' . $this->config->getAppValue('theming', 'cachebuster', '0');
260
-			}
261
-			$v = \OC_App::getAppVersions();
262
-		}
263
-
264
-		// Try the webroot path for a match
265
-		if ($path !== false && $path !== '') {
266
-			$appName = $this->getAppNamefromPath($path);
267
-			if(array_key_exists($appName, $v)) {
268
-				$appVersion = $v[$appName];
269
-				return '?v=' . substr(md5($appVersion), 0, 8) . $themingSuffix;
270
-			}
271
-		}
272
-		// fallback to the file path instead
273
-		if ($file !== false && $file !== '') {
274
-			$appName = $this->getAppNamefromPath($file);
275
-			if(array_key_exists($appName, $v)) {
276
-				$appVersion = $v[$appName];
277
-				return '?v=' . substr(md5($appVersion), 0, 8) . $themingSuffix;
278
-			}
279
-		}
280
-
281
-		return '?v=' . self::$versionHash . $themingSuffix;
282
-	}
283
-
284
-	/**
285
-	 * @param array $styles
286
-	 * @return array
287
-	 */
288
-	static public function findStylesheetFiles($styles, $compileScss = true) {
289
-		// Read the selected theme from the config file
290
-		$theme = \OC_Util::getTheme();
291
-
292
-		if($compileScss) {
293
-			$SCSSCacher = \OC::$server->query(SCSSCacher::class);
294
-		} else {
295
-			$SCSSCacher = null;
296
-		}
297
-
298
-		$locator = new \OC\Template\CSSResourceLocator(
299
-			\OC::$server->getLogger(),
300
-			$theme,
301
-			array( \OC::$SERVERROOT => \OC::$WEBROOT ),
302
-			array( \OC::$SERVERROOT => \OC::$WEBROOT ),
303
-			$SCSSCacher
304
-		);
305
-		$locator->find($styles);
306
-		return $locator->getResources();
307
-	}
308
-
309
-	/**
310
-	 * @param string $path
311
-	 * @return string|boolean
312
-	 */
313
-	public function getAppNamefromPath($path) {
314
-		if ($path !== '' && is_string($path)) {
315
-			$pathParts = explode('/', $path);
316
-			if ($pathParts[0] === 'css') {
317
-				// This is a scss request
318
-				return $pathParts[1];
319
-			}
320
-			return end($pathParts);
321
-		}
322
-		return false;
323
-
324
-	}
325
-
326
-	/**
327
-	 * @param array $scripts
328
-	 * @return array
329
-	 */
330
-	static public function findJavascriptFiles($scripts) {
331
-		// Read the selected theme from the config file
332
-		$theme = \OC_Util::getTheme();
333
-
334
-		$locator = new \OC\Template\JSResourceLocator(
335
-			\OC::$server->getLogger(),
336
-			$theme,
337
-			array( \OC::$SERVERROOT => \OC::$WEBROOT ),
338
-			array( \OC::$SERVERROOT => \OC::$WEBROOT ),
339
-			\OC::$server->query(JSCombiner::class)
340
-			);
341
-		$locator->find($scripts);
342
-		return $locator->getResources();
343
-	}
344
-
345
-	/**
346
-	 * Converts the absolute file path to a relative path from \OC::$SERVERROOT
347
-	 * @param string $filePath Absolute path
348
-	 * @return string Relative path
349
-	 * @throws \Exception If $filePath is not under \OC::$SERVERROOT
350
-	 */
351
-	public static function convertToRelativePath($filePath) {
352
-		$relativePath = explode(\OC::$SERVERROOT, $filePath);
353
-		if(count($relativePath) !== 2) {
354
-			throw new \Exception('$filePath is not under the \OC::$SERVERROOT');
355
-		}
356
-
357
-		return $relativePath[1];
358
-	}
50
+    private static $versionHash = '';
51
+
52
+    /**
53
+     * @var \OCP\IConfig
54
+     */
55
+    private $config;
56
+
57
+    /**
58
+     * @param string $renderAs
59
+     * @param string $appId application id
60
+     */
61
+    public function __construct( $renderAs, $appId = '' ) {
62
+
63
+        // yes - should be injected ....
64
+        $this->config = \OC::$server->getConfig();
65
+
66
+        if(\OCP\Util::isIE()) {
67
+            \OC_Util::addStyle('ie');
68
+        }
69
+
70
+        // Decide which page we show
71
+        if($renderAs === 'user') {
72
+            parent::__construct( 'core', 'layout.user' );
73
+            if(in_array(\OC_App::getCurrentApp(), ['settings','admin', 'help']) !== false) {
74
+                $this->assign('bodyid', 'body-settings');
75
+            }else{
76
+                $this->assign('bodyid', 'body-user');
77
+            }
78
+
79
+            // Add navigation entry
80
+            $this->assign( 'application', '');
81
+            $this->assign( 'appid', $appId );
82
+            $navigation = \OC::$server->getNavigationManager()->getAll();
83
+            $this->assign( 'navigation', $navigation);
84
+            $settingsNavigation = \OC::$server->getNavigationManager()->getAll('settings');
85
+            $this->assign( 'settingsnavigation', $settingsNavigation);
86
+            foreach($navigation as $entry) {
87
+                if ($entry['active']) {
88
+                    $this->assign( 'application', $entry['name'] );
89
+                    break;
90
+                }
91
+            }
92
+
93
+            foreach($settingsNavigation as $entry) {
94
+                if ($entry['active']) {
95
+                    $this->assign( 'application', $entry['name'] );
96
+                    break;
97
+                }
98
+            }
99
+            $userDisplayName = \OC_User::getDisplayName();
100
+            $this->assign('user_displayname', $userDisplayName);
101
+            $this->assign('user_uid', \OC_User::getUser());
102
+
103
+            if (\OC_User::getUser() === false) {
104
+                $this->assign('userAvatarSet', false);
105
+            } else {
106
+                $this->assign('userAvatarSet', \OC::$server->getAvatarManager()->getAvatar(\OC_User::getUser())->exists());
107
+                $this->assign('userAvatarVersion', $this->config->getUserValue(\OC_User::getUser(), 'avatar', 'version', 0));
108
+            }
109
+
110
+            // check if app menu icons should be inverted
111
+            try {
112
+                /** @var \OCA\Theming\Util $util */
113
+                $util = \OC::$server->query(\OCA\Theming\Util::class);
114
+                $this->assign('themingInvertMenu', $util->invertTextColor(\OC::$server->getThemingDefaults()->getColorPrimary()));
115
+            } catch (\OCP\AppFramework\QueryException $e) {
116
+                $this->assign('themingInvertMenu', false);
117
+            } catch (\OCP\AutoloadNotAllowedException $e) {
118
+                $this->assign('themingInvertMenu', false);
119
+            }
120
+
121
+        } else if ($renderAs === 'error') {
122
+            parent::__construct('core', 'layout.guest', '', false);
123
+            $this->assign('bodyid', 'body-login');
124
+            $this->assign('user_displayname', '');
125
+            $this->assign('user_uid', '');
126
+        } else if ($renderAs === 'guest') {
127
+            parent::__construct('core', 'layout.guest');
128
+            \OC_Util::addStyle('guest');
129
+            $this->assign('bodyid', 'body-login');
130
+
131
+            $userDisplayName = \OC_User::getDisplayName();
132
+            $this->assign('user_displayname', $userDisplayName);
133
+            $this->assign('user_uid', \OC_User::getUser());
134
+        } else if ($renderAs === 'public') {
135
+            parent::__construct('core', 'layout.public');
136
+            $this->assign( 'appid', $appId );
137
+            $this->assign('bodyid', 'body-public');
138
+
139
+            /** @var IRegistry $subscription */
140
+            $subscription = \OC::$server->query(IRegistry::class);
141
+            $showSimpleSignup = $this->config->getSystemValueBool('simpleSignUpLink.shown', true);
142
+            if ($showSimpleSignup && $subscription->delegateHasValidSubscription()) {
143
+                $showSimpleSignup = false;
144
+            }
145
+            $this->assign('showSimpleSignUpLink', $showSimpleSignup);
146
+        } else {
147
+            parent::__construct('core', 'layout.base');
148
+
149
+        }
150
+        // Send the language and the locale to our layouts
151
+        $lang = \OC::$server->getL10NFactory()->findLanguage();
152
+        $locale = \OC::$server->getL10NFactory()->findLocale($lang);
153
+
154
+        $lang = str_replace('_', '-', $lang);
155
+        $this->assign('language', $lang);
156
+        $this->assign('locale', $locale);
157
+
158
+        if(\OC::$server->getSystemConfig()->getValue('installed', false)) {
159
+            if (empty(self::$versionHash)) {
160
+                $v = \OC_App::getAppVersions();
161
+                $v['core'] = implode('.', \OCP\Util::getVersion());
162
+                self::$versionHash = substr(md5(implode(',', $v)), 0, 8);
163
+            }
164
+        } else {
165
+            self::$versionHash = md5('not installed');
166
+        }
167
+
168
+        // Add the js files
169
+        $jsFiles = self::findJavascriptFiles(\OC_Util::$scripts);
170
+        $this->assign('jsfiles', array());
171
+        if ($this->config->getSystemValue('installed', false) && $renderAs != 'error') {
172
+            if (\OC::$server->getContentSecurityPolicyNonceManager()->browserSupportsCspV3()) {
173
+                $jsConfigHelper = new JSConfigHelper(
174
+                    \OC::$server->getL10N('lib'),
175
+                    \OC::$server->query(Defaults::class),
176
+                    \OC::$server->getAppManager(),
177
+                    \OC::$server->getSession(),
178
+                    \OC::$server->getUserSession()->getUser(),
179
+                    $this->config,
180
+                    \OC::$server->getGroupManager(),
181
+                    \OC::$server->getIniWrapper(),
182
+                    \OC::$server->getURLGenerator(),
183
+                    \OC::$server->getCapabilitiesManager()
184
+                );
185
+                $this->assign('inline_ocjs', $jsConfigHelper->getConfig());
186
+            } else {
187
+                $this->append('jsfiles', \OC::$server->getURLGenerator()->linkToRoute('core.OCJS.getConfig', ['v' => self::$versionHash]));
188
+            }
189
+        }
190
+        foreach($jsFiles as $info) {
191
+            $web = $info[1];
192
+            $file = $info[2];
193
+            $this->append( 'jsfiles', $web.'/'.$file . $this->getVersionHashSuffix() );
194
+        }
195
+
196
+        try {
197
+            $pathInfo = \OC::$server->getRequest()->getPathInfo();
198
+        } catch (\Exception $e) {
199
+            $pathInfo = '';
200
+        }
201
+
202
+        // Do not initialise scss appdata until we have a fully installed instance
203
+        // Do not load scss for update, errors, installation or login page
204
+        if(\OC::$server->getSystemConfig()->getValue('installed', false)
205
+            && !\OCP\Util::needUpgrade()
206
+            && $pathInfo !== ''
207
+            && !preg_match('/^\/login/', $pathInfo)
208
+            && $renderAs !== 'error'
209
+        ) {
210
+            $cssFiles = self::findStylesheetFiles(\OC_Util::$styles);
211
+        } else {
212
+            // If we ignore the scss compiler,
213
+            // we need to load the guest css fallback
214
+            \OC_Util::addStyle('guest');
215
+            $cssFiles = self::findStylesheetFiles(\OC_Util::$styles, false);
216
+        }
217
+
218
+        $this->assign('cssfiles', array());
219
+        $this->assign('printcssfiles', []);
220
+        $this->assign('versionHash', self::$versionHash);
221
+        foreach($cssFiles as $info) {
222
+            $web = $info[1];
223
+            $file = $info[2];
224
+
225
+            if (substr($file, -strlen('print.css')) === 'print.css') {
226
+                $this->append( 'printcssfiles', $web.'/'.$file . $this->getVersionHashSuffix() );
227
+            } else {
228
+                $suffix = $this->getVersionHashSuffix($web, $file);
229
+
230
+                if (strpos($file, '?v=') == false) {
231
+                    $this->append( 'cssfiles', $web.'/'.$file . $suffix);
232
+                } else {
233
+                    $this->append( 'cssfiles', $web.'/'.$file . '-' . substr($suffix, 3));
234
+                }
235
+
236
+            }
237
+        }
238
+
239
+        /** @var InitialStateService $initialState */
240
+        $initialState = \OC::$server->query(InitialStateService::class);
241
+        $this->assign('initialStates', $initialState->getInitialStates());
242
+    }
243
+
244
+    /**
245
+     * @param string $path
246
+     * @param string $file
247
+     * @return string
248
+     */
249
+    protected function getVersionHashSuffix($path = false, $file = false) {
250
+        if ($this->config->getSystemValue('debug', false)) {
251
+            // allows chrome workspace mapping in debug mode
252
+            return "";
253
+        }
254
+        $themingSuffix = '';
255
+        $v = [];
256
+
257
+        if ($this->config->getSystemValue('installed', false)) {
258
+            if (\OC::$server->getAppManager()->isInstalled('theming')) {
259
+                $themingSuffix = '-' . $this->config->getAppValue('theming', 'cachebuster', '0');
260
+            }
261
+            $v = \OC_App::getAppVersions();
262
+        }
263
+
264
+        // Try the webroot path for a match
265
+        if ($path !== false && $path !== '') {
266
+            $appName = $this->getAppNamefromPath($path);
267
+            if(array_key_exists($appName, $v)) {
268
+                $appVersion = $v[$appName];
269
+                return '?v=' . substr(md5($appVersion), 0, 8) . $themingSuffix;
270
+            }
271
+        }
272
+        // fallback to the file path instead
273
+        if ($file !== false && $file !== '') {
274
+            $appName = $this->getAppNamefromPath($file);
275
+            if(array_key_exists($appName, $v)) {
276
+                $appVersion = $v[$appName];
277
+                return '?v=' . substr(md5($appVersion), 0, 8) . $themingSuffix;
278
+            }
279
+        }
280
+
281
+        return '?v=' . self::$versionHash . $themingSuffix;
282
+    }
283
+
284
+    /**
285
+     * @param array $styles
286
+     * @return array
287
+     */
288
+    static public function findStylesheetFiles($styles, $compileScss = true) {
289
+        // Read the selected theme from the config file
290
+        $theme = \OC_Util::getTheme();
291
+
292
+        if($compileScss) {
293
+            $SCSSCacher = \OC::$server->query(SCSSCacher::class);
294
+        } else {
295
+            $SCSSCacher = null;
296
+        }
297
+
298
+        $locator = new \OC\Template\CSSResourceLocator(
299
+            \OC::$server->getLogger(),
300
+            $theme,
301
+            array( \OC::$SERVERROOT => \OC::$WEBROOT ),
302
+            array( \OC::$SERVERROOT => \OC::$WEBROOT ),
303
+            $SCSSCacher
304
+        );
305
+        $locator->find($styles);
306
+        return $locator->getResources();
307
+    }
308
+
309
+    /**
310
+     * @param string $path
311
+     * @return string|boolean
312
+     */
313
+    public function getAppNamefromPath($path) {
314
+        if ($path !== '' && is_string($path)) {
315
+            $pathParts = explode('/', $path);
316
+            if ($pathParts[0] === 'css') {
317
+                // This is a scss request
318
+                return $pathParts[1];
319
+            }
320
+            return end($pathParts);
321
+        }
322
+        return false;
323
+
324
+    }
325
+
326
+    /**
327
+     * @param array $scripts
328
+     * @return array
329
+     */
330
+    static public function findJavascriptFiles($scripts) {
331
+        // Read the selected theme from the config file
332
+        $theme = \OC_Util::getTheme();
333
+
334
+        $locator = new \OC\Template\JSResourceLocator(
335
+            \OC::$server->getLogger(),
336
+            $theme,
337
+            array( \OC::$SERVERROOT => \OC::$WEBROOT ),
338
+            array( \OC::$SERVERROOT => \OC::$WEBROOT ),
339
+            \OC::$server->query(JSCombiner::class)
340
+            );
341
+        $locator->find($scripts);
342
+        return $locator->getResources();
343
+    }
344
+
345
+    /**
346
+     * Converts the absolute file path to a relative path from \OC::$SERVERROOT
347
+     * @param string $filePath Absolute path
348
+     * @return string Relative path
349
+     * @throws \Exception If $filePath is not under \OC::$SERVERROOT
350
+     */
351
+    public static function convertToRelativePath($filePath) {
352
+        $relativePath = explode(\OC::$SERVERROOT, $filePath);
353
+        if(count($relativePath) !== 2) {
354
+            throw new \Exception('$filePath is not under the \OC::$SERVERROOT');
355
+        }
356
+
357
+        return $relativePath[1];
358
+    }
359 359
 }
Please login to merge, or discard this patch.
Spacing   +35 added lines, -35 removed lines patch added patch discarded remove patch
@@ -58,41 +58,41 @@  discard block
 block discarded – undo
58 58
 	 * @param string $renderAs
59 59
 	 * @param string $appId application id
60 60
 	 */
61
-	public function __construct( $renderAs, $appId = '' ) {
61
+	public function __construct($renderAs, $appId = '') {
62 62
 
63 63
 		// yes - should be injected ....
64 64
 		$this->config = \OC::$server->getConfig();
65 65
 
66
-		if(\OCP\Util::isIE()) {
66
+		if (\OCP\Util::isIE()) {
67 67
 			\OC_Util::addStyle('ie');
68 68
 		}
69 69
 
70 70
 		// Decide which page we show
71
-		if($renderAs === 'user') {
72
-			parent::__construct( 'core', 'layout.user' );
73
-			if(in_array(\OC_App::getCurrentApp(), ['settings','admin', 'help']) !== false) {
71
+		if ($renderAs === 'user') {
72
+			parent::__construct('core', 'layout.user');
73
+			if (in_array(\OC_App::getCurrentApp(), ['settings', 'admin', 'help']) !== false) {
74 74
 				$this->assign('bodyid', 'body-settings');
75
-			}else{
75
+			} else {
76 76
 				$this->assign('bodyid', 'body-user');
77 77
 			}
78 78
 
79 79
 			// Add navigation entry
80
-			$this->assign( 'application', '');
81
-			$this->assign( 'appid', $appId );
80
+			$this->assign('application', '');
81
+			$this->assign('appid', $appId);
82 82
 			$navigation = \OC::$server->getNavigationManager()->getAll();
83
-			$this->assign( 'navigation', $navigation);
83
+			$this->assign('navigation', $navigation);
84 84
 			$settingsNavigation = \OC::$server->getNavigationManager()->getAll('settings');
85
-			$this->assign( 'settingsnavigation', $settingsNavigation);
86
-			foreach($navigation as $entry) {
85
+			$this->assign('settingsnavigation', $settingsNavigation);
86
+			foreach ($navigation as $entry) {
87 87
 				if ($entry['active']) {
88
-					$this->assign( 'application', $entry['name'] );
88
+					$this->assign('application', $entry['name']);
89 89
 					break;
90 90
 				}
91 91
 			}
92 92
 
93
-			foreach($settingsNavigation as $entry) {
93
+			foreach ($settingsNavigation as $entry) {
94 94
 				if ($entry['active']) {
95
-					$this->assign( 'application', $entry['name'] );
95
+					$this->assign('application', $entry['name']);
96 96
 					break;
97 97
 				}
98 98
 			}
@@ -133,7 +133,7 @@  discard block
 block discarded – undo
133 133
 			$this->assign('user_uid', \OC_User::getUser());
134 134
 		} else if ($renderAs === 'public') {
135 135
 			parent::__construct('core', 'layout.public');
136
-			$this->assign( 'appid', $appId );
136
+			$this->assign('appid', $appId);
137 137
 			$this->assign('bodyid', 'body-public');
138 138
 
139 139
 			/** @var IRegistry $subscription */
@@ -155,7 +155,7 @@  discard block
 block discarded – undo
155 155
 		$this->assign('language', $lang);
156 156
 		$this->assign('locale', $locale);
157 157
 
158
-		if(\OC::$server->getSystemConfig()->getValue('installed', false)) {
158
+		if (\OC::$server->getSystemConfig()->getValue('installed', false)) {
159 159
 			if (empty(self::$versionHash)) {
160 160
 				$v = \OC_App::getAppVersions();
161 161
 				$v['core'] = implode('.', \OCP\Util::getVersion());
@@ -187,10 +187,10 @@  discard block
 block discarded – undo
187 187
 				$this->append('jsfiles', \OC::$server->getURLGenerator()->linkToRoute('core.OCJS.getConfig', ['v' => self::$versionHash]));
188 188
 			}
189 189
 		}
190
-		foreach($jsFiles as $info) {
190
+		foreach ($jsFiles as $info) {
191 191
 			$web = $info[1];
192 192
 			$file = $info[2];
193
-			$this->append( 'jsfiles', $web.'/'.$file . $this->getVersionHashSuffix() );
193
+			$this->append('jsfiles', $web.'/'.$file.$this->getVersionHashSuffix());
194 194
 		}
195 195
 
196 196
 		try {
@@ -201,7 +201,7 @@  discard block
 block discarded – undo
201 201
 
202 202
 		// Do not initialise scss appdata until we have a fully installed instance
203 203
 		// Do not load scss for update, errors, installation or login page
204
-		if(\OC::$server->getSystemConfig()->getValue('installed', false)
204
+		if (\OC::$server->getSystemConfig()->getValue('installed', false)
205 205
 			&& !\OCP\Util::needUpgrade()
206 206
 			&& $pathInfo !== ''
207 207
 			&& !preg_match('/^\/login/', $pathInfo)
@@ -218,19 +218,19 @@  discard block
 block discarded – undo
218 218
 		$this->assign('cssfiles', array());
219 219
 		$this->assign('printcssfiles', []);
220 220
 		$this->assign('versionHash', self::$versionHash);
221
-		foreach($cssFiles as $info) {
221
+		foreach ($cssFiles as $info) {
222 222
 			$web = $info[1];
223 223
 			$file = $info[2];
224 224
 
225 225
 			if (substr($file, -strlen('print.css')) === 'print.css') {
226
-				$this->append( 'printcssfiles', $web.'/'.$file . $this->getVersionHashSuffix() );
226
+				$this->append('printcssfiles', $web.'/'.$file.$this->getVersionHashSuffix());
227 227
 			} else {
228 228
 				$suffix = $this->getVersionHashSuffix($web, $file);
229 229
 
230 230
 				if (strpos($file, '?v=') == false) {
231
-					$this->append( 'cssfiles', $web.'/'.$file . $suffix);
231
+					$this->append('cssfiles', $web.'/'.$file.$suffix);
232 232
 				} else {
233
-					$this->append( 'cssfiles', $web.'/'.$file . '-' . substr($suffix, 3));
233
+					$this->append('cssfiles', $web.'/'.$file.'-'.substr($suffix, 3));
234 234
 				}
235 235
 
236 236
 			}
@@ -256,7 +256,7 @@  discard block
 block discarded – undo
256 256
 
257 257
 		if ($this->config->getSystemValue('installed', false)) {
258 258
 			if (\OC::$server->getAppManager()->isInstalled('theming')) {
259
-				$themingSuffix = '-' . $this->config->getAppValue('theming', 'cachebuster', '0');
259
+				$themingSuffix = '-'.$this->config->getAppValue('theming', 'cachebuster', '0');
260 260
 			}
261 261
 			$v = \OC_App::getAppVersions();
262 262
 		}
@@ -264,21 +264,21 @@  discard block
 block discarded – undo
264 264
 		// Try the webroot path for a match
265 265
 		if ($path !== false && $path !== '') {
266 266
 			$appName = $this->getAppNamefromPath($path);
267
-			if(array_key_exists($appName, $v)) {
267
+			if (array_key_exists($appName, $v)) {
268 268
 				$appVersion = $v[$appName];
269
-				return '?v=' . substr(md5($appVersion), 0, 8) . $themingSuffix;
269
+				return '?v='.substr(md5($appVersion), 0, 8).$themingSuffix;
270 270
 			}
271 271
 		}
272 272
 		// fallback to the file path instead
273 273
 		if ($file !== false && $file !== '') {
274 274
 			$appName = $this->getAppNamefromPath($file);
275
-			if(array_key_exists($appName, $v)) {
275
+			if (array_key_exists($appName, $v)) {
276 276
 				$appVersion = $v[$appName];
277
-				return '?v=' . substr(md5($appVersion), 0, 8) . $themingSuffix;
277
+				return '?v='.substr(md5($appVersion), 0, 8).$themingSuffix;
278 278
 			}
279 279
 		}
280 280
 
281
-		return '?v=' . self::$versionHash . $themingSuffix;
281
+		return '?v='.self::$versionHash.$themingSuffix;
282 282
 	}
283 283
 
284 284
 	/**
@@ -289,7 +289,7 @@  discard block
 block discarded – undo
289 289
 		// Read the selected theme from the config file
290 290
 		$theme = \OC_Util::getTheme();
291 291
 
292
-		if($compileScss) {
292
+		if ($compileScss) {
293 293
 			$SCSSCacher = \OC::$server->query(SCSSCacher::class);
294 294
 		} else {
295 295
 			$SCSSCacher = null;
@@ -298,8 +298,8 @@  discard block
 block discarded – undo
298 298
 		$locator = new \OC\Template\CSSResourceLocator(
299 299
 			\OC::$server->getLogger(),
300 300
 			$theme,
301
-			array( \OC::$SERVERROOT => \OC::$WEBROOT ),
302
-			array( \OC::$SERVERROOT => \OC::$WEBROOT ),
301
+			array(\OC::$SERVERROOT => \OC::$WEBROOT),
302
+			array(\OC::$SERVERROOT => \OC::$WEBROOT),
303 303
 			$SCSSCacher
304 304
 		);
305 305
 		$locator->find($styles);
@@ -334,8 +334,8 @@  discard block
 block discarded – undo
334 334
 		$locator = new \OC\Template\JSResourceLocator(
335 335
 			\OC::$server->getLogger(),
336 336
 			$theme,
337
-			array( \OC::$SERVERROOT => \OC::$WEBROOT ),
338
-			array( \OC::$SERVERROOT => \OC::$WEBROOT ),
337
+			array(\OC::$SERVERROOT => \OC::$WEBROOT),
338
+			array(\OC::$SERVERROOT => \OC::$WEBROOT),
339 339
 			\OC::$server->query(JSCombiner::class)
340 340
 			);
341 341
 		$locator->find($scripts);
@@ -350,7 +350,7 @@  discard block
 block discarded – undo
350 350
 	 */
351 351
 	public static function convertToRelativePath($filePath) {
352 352
 		$relativePath = explode(\OC::$SERVERROOT, $filePath);
353
-		if(count($relativePath) !== 2) {
353
+		if (count($relativePath) !== 2) {
354 354
 			throw new \Exception('$filePath is not under the \OC::$SERVERROOT');
355 355
 		}
356 356
 
Please login to merge, or discard this patch.
lib/private/Migration/BackgroundRepair.php 2 patches
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -57,7 +57,7 @@  discard block
 block discarded – undo
57 57
 	 */
58 58
 	public function execute($jobList, ILogger $logger = null) {
59 59
 		// add an interval of 15 mins
60
-		$this->setInterval(15*60);
60
+		$this->setInterval(15 * 60);
61 61
 
62 62
 		$this->jobList = $jobList;
63 63
 		$this->logger = $logger;
@@ -90,7 +90,7 @@  discard block
 block discarded – undo
90 90
 		try {
91 91
 			$repair->addStep($step);
92 92
 		} catch (\Exception $ex) {
93
-			$this->logger->logException($ex,[
93
+			$this->logger->logException($ex, [
94 94
 				'app' => 'migration'
95 95
 			]);
96 96
 
Please login to merge, or discard this patch.
Indentation   +78 added lines, -78 removed lines patch added patch discarded remove patch
@@ -39,82 +39,82 @@
 block discarded – undo
39 39
  */
40 40
 class BackgroundRepair extends TimedJob {
41 41
 
42
-	/** @var IJobList */
43
-	private $jobList;
44
-
45
-	/** @var ILogger */
46
-	private $logger;
47
-
48
-	/** @var EventDispatcherInterface */
49
-	private $dispatcher;
50
-
51
-	public function __construct(EventDispatcherInterface $dispatcher) {
52
-		$this->dispatcher = $dispatcher;
53
-	}
54
-
55
-	/**
56
-	 * run the job, then remove it from the job list
57
-	 *
58
-	 * @param JobList $jobList
59
-	 * @param ILogger|null $logger
60
-	 */
61
-	public function execute($jobList, ILogger $logger = null) {
62
-		// add an interval of 15 mins
63
-		$this->setInterval(15*60);
64
-
65
-		$this->jobList = $jobList;
66
-		$this->logger = $logger;
67
-		parent::execute($jobList, $logger);
68
-	}
69
-
70
-	/**
71
-	 * @param array $argument
72
-	 * @throws \Exception
73
-	 * @throws \OC\NeedsUpdateException
74
-	 */
75
-	protected function run($argument) {
76
-		if (!isset($argument['app']) || !isset($argument['step'])) {
77
-			// remove the job - we can never execute it
78
-			$this->jobList->remove($this, $this->argument);
79
-			return;
80
-		}
81
-		$app = $argument['app'];
82
-
83
-		try {
84
-			$this->loadApp($app);
85
-		} catch (NeedsUpdateException $ex) {
86
-			// as long as the app is not yet done with it's offline migration
87
-			// we better not start with the live migration
88
-			return;
89
-		}
90
-
91
-		$step = $argument['step'];
92
-		$repair = new Repair([], $this->dispatcher);
93
-		try {
94
-			$repair->addStep($step);
95
-		} catch (\Exception $ex) {
96
-			$this->logger->logException($ex,[
97
-				'app' => 'migration'
98
-			]);
99
-
100
-			// remove the job - we can never execute it
101
-			$this->jobList->remove($this, $this->argument);
102
-			return;
103
-		}
104
-
105
-		// execute the repair step
106
-		$repair->run();
107
-
108
-		// remove the job once executed successfully
109
-		$this->jobList->remove($this, $this->argument);
110
-	}
111
-
112
-	/**
113
-	 * @codeCoverageIgnore
114
-	 * @param $app
115
-	 * @throws NeedsUpdateException
116
-	 */
117
-	protected function loadApp($app) {
118
-		OC_App::loadApp($app);
119
-	}
42
+    /** @var IJobList */
43
+    private $jobList;
44
+
45
+    /** @var ILogger */
46
+    private $logger;
47
+
48
+    /** @var EventDispatcherInterface */
49
+    private $dispatcher;
50
+
51
+    public function __construct(EventDispatcherInterface $dispatcher) {
52
+        $this->dispatcher = $dispatcher;
53
+    }
54
+
55
+    /**
56
+     * run the job, then remove it from the job list
57
+     *
58
+     * @param JobList $jobList
59
+     * @param ILogger|null $logger
60
+     */
61
+    public function execute($jobList, ILogger $logger = null) {
62
+        // add an interval of 15 mins
63
+        $this->setInterval(15*60);
64
+
65
+        $this->jobList = $jobList;
66
+        $this->logger = $logger;
67
+        parent::execute($jobList, $logger);
68
+    }
69
+
70
+    /**
71
+     * @param array $argument
72
+     * @throws \Exception
73
+     * @throws \OC\NeedsUpdateException
74
+     */
75
+    protected function run($argument) {
76
+        if (!isset($argument['app']) || !isset($argument['step'])) {
77
+            // remove the job - we can never execute it
78
+            $this->jobList->remove($this, $this->argument);
79
+            return;
80
+        }
81
+        $app = $argument['app'];
82
+
83
+        try {
84
+            $this->loadApp($app);
85
+        } catch (NeedsUpdateException $ex) {
86
+            // as long as the app is not yet done with it's offline migration
87
+            // we better not start with the live migration
88
+            return;
89
+        }
90
+
91
+        $step = $argument['step'];
92
+        $repair = new Repair([], $this->dispatcher);
93
+        try {
94
+            $repair->addStep($step);
95
+        } catch (\Exception $ex) {
96
+            $this->logger->logException($ex,[
97
+                'app' => 'migration'
98
+            ]);
99
+
100
+            // remove the job - we can never execute it
101
+            $this->jobList->remove($this, $this->argument);
102
+            return;
103
+        }
104
+
105
+        // execute the repair step
106
+        $repair->run();
107
+
108
+        // remove the job once executed successfully
109
+        $this->jobList->remove($this, $this->argument);
110
+    }
111
+
112
+    /**
113
+     * @codeCoverageIgnore
114
+     * @param $app
115
+     * @throws NeedsUpdateException
116
+     */
117
+    protected function loadApp($app) {
118
+        OC_App::loadApp($app);
119
+    }
120 120
 }
Please login to merge, or discard this patch.
lib/private/Command/QueueBus.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -55,7 +55,7 @@
 block discarded – undo
55 55
 		if ($command instanceof ICommand) {
56 56
 			// ensure the command can be serialized
57 57
 			$serialized = serialize($command);
58
-			if(strlen($serialized) > 4000) {
58
+			if (strlen($serialized) > 4000) {
59 59
 				throw new \InvalidArgumentException('Trying to push a command which serialized form can not be stored in the database (>4000 character)');
60 60
 			}
61 61
 			$unserialized = unserialize($serialized);
Please login to merge, or discard this patch.
Indentation   +40 added lines, -40 removed lines patch added patch discarded remove patch
@@ -26,48 +26,48 @@
 block discarded – undo
26 26
 use OCP\Command\ICommand;
27 27
 
28 28
 class QueueBus implements IBus {
29
-	/**
30
-	 * @var ICommand[]|callable[]
31
-	 */
32
-	private $queue = [];
29
+    /**
30
+     * @var ICommand[]|callable[]
31
+     */
32
+    private $queue = [];
33 33
 
34
-	/**
35
-	 * Schedule a command to be fired
36
-	 *
37
-	 * @param \OCP\Command\ICommand | callable $command
38
-	 */
39
-	public function push($command) {
40
-		$this->queue[] = $command;
41
-	}
34
+    /**
35
+     * Schedule a command to be fired
36
+     *
37
+     * @param \OCP\Command\ICommand | callable $command
38
+     */
39
+    public function push($command) {
40
+        $this->queue[] = $command;
41
+    }
42 42
 
43
-	/**
44
-	 * Require all commands using a trait to be run synchronous
45
-	 *
46
-	 * @param string $trait
47
-	 */
48
-	public function requireSync($trait) {
49
-	}
43
+    /**
44
+     * Require all commands using a trait to be run synchronous
45
+     *
46
+     * @param string $trait
47
+     */
48
+    public function requireSync($trait) {
49
+    }
50 50
 
51
-	/**
52
-	 * @param \OCP\Command\ICommand | callable $command
53
-	 */
54
-	private function runCommand($command) {
55
-		if ($command instanceof ICommand) {
56
-			// ensure the command can be serialized
57
-			$serialized = serialize($command);
58
-			if(strlen($serialized) > 4000) {
59
-				throw new \InvalidArgumentException('Trying to push a command which serialized form can not be stored in the database (>4000 character)');
60
-			}
61
-			$unserialized = unserialize($serialized);
62
-			$unserialized->handle();
63
-		} else {
64
-			$command();
65
-		}
66
-	}
51
+    /**
52
+     * @param \OCP\Command\ICommand | callable $command
53
+     */
54
+    private function runCommand($command) {
55
+        if ($command instanceof ICommand) {
56
+            // ensure the command can be serialized
57
+            $serialized = serialize($command);
58
+            if(strlen($serialized) > 4000) {
59
+                throw new \InvalidArgumentException('Trying to push a command which serialized form can not be stored in the database (>4000 character)');
60
+            }
61
+            $unserialized = unserialize($serialized);
62
+            $unserialized->handle();
63
+        } else {
64
+            $command();
65
+        }
66
+    }
67 67
 
68
-	public function run() {
69
-		while ($command = array_shift($this->queue)) {
70
-			$this->runCommand($command);
71
-		}
72
-	}
68
+    public function run() {
69
+        while ($command = array_shift($this->queue)) {
70
+            $this->runCommand($command);
71
+        }
72
+    }
73 73
 }
Please login to merge, or discard this patch.
lib/private/Command/CallableJob.php 1 patch
Indentation   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -25,12 +25,12 @@
 block discarded – undo
25 25
 use OC\BackgroundJob\QueuedJob;
26 26
 
27 27
 class CallableJob extends QueuedJob {
28
-	protected function run($serializedCallable) {
29
-		$callable = unserialize($serializedCallable);
30
-		if (is_callable($callable)) {
31
-			$callable();
32
-		} else {
33
-			throw new \InvalidArgumentException('Invalid serialized callable');
34
-		}
35
-	}
28
+    protected function run($serializedCallable) {
29
+        $callable = unserialize($serializedCallable);
30
+        if (is_callable($callable)) {
31
+            $callable();
32
+        } else {
33
+            throw new \InvalidArgumentException('Invalid serialized callable');
34
+        }
35
+    }
36 36
 }
Please login to merge, or discard this patch.
lib/private/Command/ClosureJob.php 1 patch
Indentation   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -26,13 +26,13 @@
 block discarded – undo
26 26
 use SuperClosure\Serializer;
27 27
 
28 28
 class ClosureJob extends QueuedJob {
29
-	protected function run($serializedCallable) {
30
-		$serializer = new Serializer();
31
-		$callable = $serializer->unserialize($serializedCallable);
32
-		if (is_callable($callable)) {
33
-			$callable();
34
-		} else {
35
-			throw new \InvalidArgumentException('Invalid serialized callable');
36
-		}
37
-	}
29
+    protected function run($serializedCallable) {
30
+        $serializer = new Serializer();
31
+        $callable = $serializer->unserialize($serializedCallable);
32
+        if (is_callable($callable)) {
33
+            $callable();
34
+        } else {
35
+            throw new \InvalidArgumentException('Invalid serialized callable');
36
+        }
37
+    }
38 38
 }
Please login to merge, or discard this patch.
lib/private/Command/FileAccess.php 2 patches
Indentation   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -25,12 +25,12 @@
 block discarded – undo
25 25
 use OCP\IUser;
26 26
 
27 27
 trait FileAccess {
28
-	protected function setupFS(IUser $user){
29
-		\OC_Util::setupFS($user->getUID());
30
-	}
28
+    protected function setupFS(IUser $user){
29
+        \OC_Util::setupFS($user->getUID());
30
+    }
31 31
 
32
-	protected function getUserFolder(IUser $user) {
33
-		$this->setupFS($user);
34
-		return \OC::$server->getUserFolder($user->getUID());
35
-	}
32
+    protected function getUserFolder(IUser $user) {
33
+        $this->setupFS($user);
34
+        return \OC::$server->getUserFolder($user->getUID());
35
+    }
36 36
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -25,7 +25,7 @@
 block discarded – undo
25 25
 use OCP\IUser;
26 26
 
27 27
 trait FileAccess {
28
-	protected function setupFS(IUser $user){
28
+	protected function setupFS(IUser $user) {
29 29
 		\OC_Util::setupFS($user->getUID());
30 30
 	}
31 31
 
Please login to merge, or discard this patch.
lib/private/Command/CommandJob.php 1 patch
Indentation   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -29,12 +29,12 @@
 block discarded – undo
29 29
  * Wrap a command in the background job interface
30 30
  */
31 31
 class CommandJob extends QueuedJob {
32
-	protected function run($serializedCommand) {
33
-		$command = unserialize($serializedCommand);
34
-		if ($command instanceof ICommand) {
35
-			$command->handle();
36
-		} else {
37
-			throw new \InvalidArgumentException('Invalid serialized command');
38
-		}
39
-	}
32
+    protected function run($serializedCommand) {
33
+        $command = unserialize($serializedCommand);
34
+        if ($command instanceof ICommand) {
35
+            $command->handle();
36
+        } else {
37
+            throw new \InvalidArgumentException('Invalid serialized command');
38
+        }
39
+    }
40 40
 }
Please login to merge, or discard this patch.