Passed
Push — master ( 963d96...2d5047 )
by Morris
13:06
created
apps/files_versions/lib/Controller/PreviewController.php 1 patch
Indentation   +54 added lines, -54 removed lines patch added patch discarded remove patch
@@ -36,66 +36,66 @@
 block discarded – undo
36 36
 
37 37
 class PreviewController extends Controller {
38 38
 
39
-	/** @var IRootFolder */
40
-	private $rootFolder;
39
+    /** @var IRootFolder */
40
+    private $rootFolder;
41 41
 
42
-	/** @var string */
43
-	private $userId;
42
+    /** @var string */
43
+    private $userId;
44 44
 
45
-	/** @var IMimeTypeDetector */
46
-	private $mimeTypeDetector;
45
+    /** @var IMimeTypeDetector */
46
+    private $mimeTypeDetector;
47 47
 
48
-	/** @var IPreview */
49
-	private $previewManager;
48
+    /** @var IPreview */
49
+    private $previewManager;
50 50
 
51
-	public function __construct($appName,
52
-								IRequest $request,
53
-								IRootFolder $rootFolder,
54
-								$userId,
55
-								IMimeTypeDetector $mimeTypeDetector,
56
-								IPreview $previewManager) {
57
-		parent::__construct($appName, $request);
51
+    public function __construct($appName,
52
+                                IRequest $request,
53
+                                IRootFolder $rootFolder,
54
+                                $userId,
55
+                                IMimeTypeDetector $mimeTypeDetector,
56
+                                IPreview $previewManager) {
57
+        parent::__construct($appName, $request);
58 58
 
59
-		$this->rootFolder = $rootFolder;
60
-		$this->userId = $userId;
61
-		$this->mimeTypeDetector = $mimeTypeDetector;
62
-		$this->previewManager = $previewManager;
63
-	}
59
+        $this->rootFolder = $rootFolder;
60
+        $this->userId = $userId;
61
+        $this->mimeTypeDetector = $mimeTypeDetector;
62
+        $this->previewManager = $previewManager;
63
+    }
64 64
 
65
-	/**
66
-	 * @NoAdminRequired
67
-	 * @NoCSRFRequired
68
-	 *
69
-	 * @param string $file
70
-	 * @param int $x
71
-	 * @param int $y
72
-	 * @param string $version
73
-	 * @return DataResponse|FileDisplayResponse
74
-	 */
75
-	public function getPreview(
76
-		$file = '',
77
-		$x = 44,
78
-		$y = 44,
79
-		$version = ''
80
-	) {
81
-		if($file === '' || $version === '' || $x === 0 || $y === 0) {
82
-			return new DataResponse([], Http::STATUS_BAD_REQUEST);
83
-		}
65
+    /**
66
+     * @NoAdminRequired
67
+     * @NoCSRFRequired
68
+     *
69
+     * @param string $file
70
+     * @param int $x
71
+     * @param int $y
72
+     * @param string $version
73
+     * @return DataResponse|FileDisplayResponse
74
+     */
75
+    public function getPreview(
76
+        $file = '',
77
+        $x = 44,
78
+        $y = 44,
79
+        $version = ''
80
+    ) {
81
+        if($file === '' || $version === '' || $x === 0 || $y === 0) {
82
+            return new DataResponse([], Http::STATUS_BAD_REQUEST);
83
+        }
84 84
 
85
-		try {
86
-			$userFolder = $this->rootFolder->getUserFolder($this->userId);
87
-			/** @var Folder $versionFolder */
88
-			$versionFolder = $userFolder->getParent()->get('files_versions');
89
-			$mimeType = $this->mimeTypeDetector->detectPath($file);
90
-			$file = $versionFolder->get($file.'.v'.$version);
85
+        try {
86
+            $userFolder = $this->rootFolder->getUserFolder($this->userId);
87
+            /** @var Folder $versionFolder */
88
+            $versionFolder = $userFolder->getParent()->get('files_versions');
89
+            $mimeType = $this->mimeTypeDetector->detectPath($file);
90
+            $file = $versionFolder->get($file.'.v'.$version);
91 91
 
92
-			/** @var File $file */
93
-			$f = $this->previewManager->getPreview($file, $x, $y, true, IPreview::MODE_FILL, $mimeType);
94
-			return new FileDisplayResponse($f, Http::STATUS_OK, ['Content-Type' => $f->getMimeType()]);
95
-		} catch (NotFoundException $e) {
96
-			return new DataResponse([], Http::STATUS_NOT_FOUND);
97
-		} catch (\InvalidArgumentException $e) {
98
-			return new DataResponse([], Http::STATUS_BAD_REQUEST);
99
-		}
100
-	}
92
+            /** @var File $file */
93
+            $f = $this->previewManager->getPreview($file, $x, $y, true, IPreview::MODE_FILL, $mimeType);
94
+            return new FileDisplayResponse($f, Http::STATUS_OK, ['Content-Type' => $f->getMimeType()]);
95
+        } catch (NotFoundException $e) {
96
+            return new DataResponse([], Http::STATUS_NOT_FOUND);
97
+        } catch (\InvalidArgumentException $e) {
98
+            return new DataResponse([], Http::STATUS_BAD_REQUEST);
99
+        }
100
+    }
101 101
 }
Please login to merge, or discard this patch.
apps/dav/lib/CardDAV/PhotoCache.php 1 patch
Indentation   +230 added lines, -230 removed lines patch added patch discarded remove patch
@@ -13,234 +13,234 @@
 block discarded – undo
13 13
 
14 14
 class PhotoCache {
15 15
 
16
-	/** @var IAppData $appData */
17
-	protected $appData;
18
-
19
-	/**
20
-	 * PhotoCache constructor.
21
-	 *
22
-	 * @param IAppData $appData
23
-	 */
24
-	public function __construct(IAppData $appData) {
25
-		$this->appData = $appData;
26
-	}
27
-
28
-	/**
29
-	 * @param int $addressBookId
30
-	 * @param string $cardUri
31
-	 * @param int $size
32
-	 * @param Card $card
33
-	 *
34
-	 * @return ISimpleFile
35
-	 * @throws NotFoundException
36
-	 */
37
-	public function get($addressBookId, $cardUri, $size, Card $card) {
38
-		$folder = $this->getFolder($addressBookId, $cardUri);
39
-
40
-		if ($this->isEmpty($folder)) {
41
-			$this->init($folder, $card);
42
-		}
43
-
44
-		if (!$this->hasPhoto($folder)) {
45
-			throw new NotFoundException();
46
-		}
47
-
48
-		if ($size !== -1) {
49
-			$size = 2 ** ceil(log($size) / log(2));
50
-		}
51
-
52
-		return $this->getFile($folder, $size);
53
-	}
54
-
55
-	/**
56
-	 * @param ISimpleFolder $folder
57
-	 * @return bool
58
-	 */
59
-	private function isEmpty(ISimpleFolder $folder) {
60
-		return $folder->getDirectoryListing() === [];
61
-	}
62
-
63
-	/**
64
-	 * @param ISimpleFolder $folder
65
-	 * @param Card $card
66
-	 */
67
-	private function init(ISimpleFolder $folder, Card $card) {
68
-		$data = $this->getPhoto($card);
69
-
70
-		if ($data === false) {
71
-			$folder->newFile('nophoto');
72
-		} else {
73
-			switch ($data['Content-Type']) {
74
-				case 'image/png':
75
-					$ext = 'png';
76
-					break;
77
-				case 'image/jpeg':
78
-					$ext = 'jpg';
79
-					break;
80
-				case 'image/gif':
81
-					$ext = 'gif';
82
-					break;
83
-			}
84
-			$file = $folder->newFile('photo.' . $ext);
85
-			$file->putContent($data['body']);
86
-		}
87
-	}
88
-
89
-	private function hasPhoto(ISimpleFolder $folder) {
90
-		return !$folder->fileExists('nophoto');
91
-	}
92
-
93
-	private function getFile(ISimpleFolder $folder, $size) {
94
-		$ext = $this->getExtension($folder);
95
-
96
-		if ($size === -1) {
97
-			$path = 'photo.' . $ext;
98
-		} else {
99
-			$path = 'photo.' . $size . '.' . $ext;
100
-		}
101
-
102
-		try {
103
-			$file = $folder->getFile($path);
104
-		} catch (NotFoundException $e) {
105
-			if ($size <= 0) {
106
-				throw new NotFoundException;
107
-			}
108
-
109
-			$photo = new \OC_Image();
110
-			/** @var ISimpleFile $file */
111
-			$file = $folder->getFile('photo.' . $ext);
112
-			$photo->loadFromData($file->getContent());
113
-
114
-			$ratio = $photo->width() / $photo->height();
115
-			if ($ratio < 1) {
116
-				$ratio = 1/$ratio;
117
-			}
118
-			$size = (int)($size * $ratio);
119
-
120
-			if ($size !== -1) {
121
-				$photo->resize($size);
122
-			}
123
-			try {
124
-				$file = $folder->newFile($path);
125
-				$file->putContent($photo->data());
126
-			} catch (NotPermittedException $e) {
127
-
128
-			}
129
-		}
130
-
131
-		return $file;
132
-	}
133
-
134
-
135
-	/**
136
-	 * @param int $addressBookId
137
-	 * @param string $cardUri
138
-	 * @return ISimpleFolder
139
-	 */
140
-	private function getFolder($addressBookId, $cardUri) {
141
-		$hash = md5($addressBookId . ' ' . $cardUri);
142
-		try {
143
-			return $this->appData->getFolder($hash);
144
-		} catch (NotFoundException $e) {
145
-			return $this->appData->newFolder($hash);
146
-		}
147
-	}
148
-
149
-	/**
150
-	 * Get the extension of the avatar. If there is no avatar throw Exception
151
-	 *
152
-	 * @param ISimpleFolder $folder
153
-	 * @return string
154
-	 * @throws NotFoundException
155
-	 */
156
-	private function getExtension(ISimpleFolder $folder) {
157
-		if ($folder->fileExists('photo.jpg')) {
158
-			return 'jpg';
159
-		} elseif ($folder->fileExists('photo.png')) {
160
-			return 'png';
161
-		} elseif ($folder->fileExists('photo.gif')) {
162
-			return 'gif';
163
-		}
164
-		throw new NotFoundException;
165
-	}
166
-
167
-	private function getPhoto(Card $node) {
168
-		try {
169
-			$vObject = $this->readCard($node->get());
170
-			if (!$vObject->PHOTO) {
171
-				return false;
172
-			}
173
-
174
-			$photo = $vObject->PHOTO;
175
-			$type = $this->getType($photo);
176
-
177
-			$val = $photo->getValue();
178
-			if ($photo->getValueType() === 'URI') {
179
-				$parsed = \Sabre\URI\parse($val);
180
-				//only allow data://
181
-				if ($parsed['scheme'] !== 'data') {
182
-					return false;
183
-				}
184
-				if (substr_count($parsed['path'], ';') === 1) {
185
-					list($type,) = explode(';', $parsed['path']);
186
-				}
187
-				$val = file_get_contents($val);
188
-			}
189
-
190
-			$allowedContentTypes = [
191
-				'image/png',
192
-				'image/jpeg',
193
-				'image/gif',
194
-			];
195
-
196
-			if(!in_array($type, $allowedContentTypes, true)) {
197
-				$type = 'application/octet-stream';
198
-			}
199
-
200
-			return [
201
-				'Content-Type' => $type,
202
-				'body' => $val
203
-			];
204
-		} catch(\Exception $ex) {
205
-
206
-		}
207
-		return false;
208
-	}
209
-
210
-	/**
211
-	 * @param string $cardData
212
-	 * @return \Sabre\VObject\Document
213
-	 */
214
-	private function readCard($cardData) {
215
-		return Reader::read($cardData);
216
-	}
217
-
218
-	/**
219
-	 * @param Binary $photo
220
-	 * @return string
221
-	 */
222
-	private function getType(Binary $photo) {
223
-		$params = $photo->parameters();
224
-		if (isset($params['TYPE']) || isset($params['MEDIATYPE'])) {
225
-			/** @var Parameter $typeParam */
226
-			$typeParam = isset($params['TYPE']) ? $params['TYPE'] : $params['MEDIATYPE'];
227
-			$type = $typeParam->getValue();
228
-
229
-			if (strpos($type, 'image/') === 0) {
230
-				return $type;
231
-			} else {
232
-				return 'image/' . strtolower($type);
233
-			}
234
-		}
235
-		return '';
236
-	}
237
-
238
-	/**
239
-	 * @param int $addressBookId
240
-	 * @param string $cardUri
241
-	 */
242
-	public function delete($addressBookId, $cardUri) {
243
-		$folder = $this->getFolder($addressBookId, $cardUri);
244
-		$folder->delete();
245
-	}
16
+    /** @var IAppData $appData */
17
+    protected $appData;
18
+
19
+    /**
20
+     * PhotoCache constructor.
21
+     *
22
+     * @param IAppData $appData
23
+     */
24
+    public function __construct(IAppData $appData) {
25
+        $this->appData = $appData;
26
+    }
27
+
28
+    /**
29
+     * @param int $addressBookId
30
+     * @param string $cardUri
31
+     * @param int $size
32
+     * @param Card $card
33
+     *
34
+     * @return ISimpleFile
35
+     * @throws NotFoundException
36
+     */
37
+    public function get($addressBookId, $cardUri, $size, Card $card) {
38
+        $folder = $this->getFolder($addressBookId, $cardUri);
39
+
40
+        if ($this->isEmpty($folder)) {
41
+            $this->init($folder, $card);
42
+        }
43
+
44
+        if (!$this->hasPhoto($folder)) {
45
+            throw new NotFoundException();
46
+        }
47
+
48
+        if ($size !== -1) {
49
+            $size = 2 ** ceil(log($size) / log(2));
50
+        }
51
+
52
+        return $this->getFile($folder, $size);
53
+    }
54
+
55
+    /**
56
+     * @param ISimpleFolder $folder
57
+     * @return bool
58
+     */
59
+    private function isEmpty(ISimpleFolder $folder) {
60
+        return $folder->getDirectoryListing() === [];
61
+    }
62
+
63
+    /**
64
+     * @param ISimpleFolder $folder
65
+     * @param Card $card
66
+     */
67
+    private function init(ISimpleFolder $folder, Card $card) {
68
+        $data = $this->getPhoto($card);
69
+
70
+        if ($data === false) {
71
+            $folder->newFile('nophoto');
72
+        } else {
73
+            switch ($data['Content-Type']) {
74
+                case 'image/png':
75
+                    $ext = 'png';
76
+                    break;
77
+                case 'image/jpeg':
78
+                    $ext = 'jpg';
79
+                    break;
80
+                case 'image/gif':
81
+                    $ext = 'gif';
82
+                    break;
83
+            }
84
+            $file = $folder->newFile('photo.' . $ext);
85
+            $file->putContent($data['body']);
86
+        }
87
+    }
88
+
89
+    private function hasPhoto(ISimpleFolder $folder) {
90
+        return !$folder->fileExists('nophoto');
91
+    }
92
+
93
+    private function getFile(ISimpleFolder $folder, $size) {
94
+        $ext = $this->getExtension($folder);
95
+
96
+        if ($size === -1) {
97
+            $path = 'photo.' . $ext;
98
+        } else {
99
+            $path = 'photo.' . $size . '.' . $ext;
100
+        }
101
+
102
+        try {
103
+            $file = $folder->getFile($path);
104
+        } catch (NotFoundException $e) {
105
+            if ($size <= 0) {
106
+                throw new NotFoundException;
107
+            }
108
+
109
+            $photo = new \OC_Image();
110
+            /** @var ISimpleFile $file */
111
+            $file = $folder->getFile('photo.' . $ext);
112
+            $photo->loadFromData($file->getContent());
113
+
114
+            $ratio = $photo->width() / $photo->height();
115
+            if ($ratio < 1) {
116
+                $ratio = 1/$ratio;
117
+            }
118
+            $size = (int)($size * $ratio);
119
+
120
+            if ($size !== -1) {
121
+                $photo->resize($size);
122
+            }
123
+            try {
124
+                $file = $folder->newFile($path);
125
+                $file->putContent($photo->data());
126
+            } catch (NotPermittedException $e) {
127
+
128
+            }
129
+        }
130
+
131
+        return $file;
132
+    }
133
+
134
+
135
+    /**
136
+     * @param int $addressBookId
137
+     * @param string $cardUri
138
+     * @return ISimpleFolder
139
+     */
140
+    private function getFolder($addressBookId, $cardUri) {
141
+        $hash = md5($addressBookId . ' ' . $cardUri);
142
+        try {
143
+            return $this->appData->getFolder($hash);
144
+        } catch (NotFoundException $e) {
145
+            return $this->appData->newFolder($hash);
146
+        }
147
+    }
148
+
149
+    /**
150
+     * Get the extension of the avatar. If there is no avatar throw Exception
151
+     *
152
+     * @param ISimpleFolder $folder
153
+     * @return string
154
+     * @throws NotFoundException
155
+     */
156
+    private function getExtension(ISimpleFolder $folder) {
157
+        if ($folder->fileExists('photo.jpg')) {
158
+            return 'jpg';
159
+        } elseif ($folder->fileExists('photo.png')) {
160
+            return 'png';
161
+        } elseif ($folder->fileExists('photo.gif')) {
162
+            return 'gif';
163
+        }
164
+        throw new NotFoundException;
165
+    }
166
+
167
+    private function getPhoto(Card $node) {
168
+        try {
169
+            $vObject = $this->readCard($node->get());
170
+            if (!$vObject->PHOTO) {
171
+                return false;
172
+            }
173
+
174
+            $photo = $vObject->PHOTO;
175
+            $type = $this->getType($photo);
176
+
177
+            $val = $photo->getValue();
178
+            if ($photo->getValueType() === 'URI') {
179
+                $parsed = \Sabre\URI\parse($val);
180
+                //only allow data://
181
+                if ($parsed['scheme'] !== 'data') {
182
+                    return false;
183
+                }
184
+                if (substr_count($parsed['path'], ';') === 1) {
185
+                    list($type,) = explode(';', $parsed['path']);
186
+                }
187
+                $val = file_get_contents($val);
188
+            }
189
+
190
+            $allowedContentTypes = [
191
+                'image/png',
192
+                'image/jpeg',
193
+                'image/gif',
194
+            ];
195
+
196
+            if(!in_array($type, $allowedContentTypes, true)) {
197
+                $type = 'application/octet-stream';
198
+            }
199
+
200
+            return [
201
+                'Content-Type' => $type,
202
+                'body' => $val
203
+            ];
204
+        } catch(\Exception $ex) {
205
+
206
+        }
207
+        return false;
208
+    }
209
+
210
+    /**
211
+     * @param string $cardData
212
+     * @return \Sabre\VObject\Document
213
+     */
214
+    private function readCard($cardData) {
215
+        return Reader::read($cardData);
216
+    }
217
+
218
+    /**
219
+     * @param Binary $photo
220
+     * @return string
221
+     */
222
+    private function getType(Binary $photo) {
223
+        $params = $photo->parameters();
224
+        if (isset($params['TYPE']) || isset($params['MEDIATYPE'])) {
225
+            /** @var Parameter $typeParam */
226
+            $typeParam = isset($params['TYPE']) ? $params['TYPE'] : $params['MEDIATYPE'];
227
+            $type = $typeParam->getValue();
228
+
229
+            if (strpos($type, 'image/') === 0) {
230
+                return $type;
231
+            } else {
232
+                return 'image/' . strtolower($type);
233
+            }
234
+        }
235
+        return '';
236
+    }
237
+
238
+    /**
239
+     * @param int $addressBookId
240
+     * @param string $cardUri
241
+     */
242
+    public function delete($addressBookId, $cardUri) {
243
+        $folder = $this->getFolder($addressBookId, $cardUri);
244
+        $folder->delete();
245
+    }
246 246
 }
Please login to merge, or discard this patch.
apps/dav/lib/Connector/PublicAuth.php 1 patch
Indentation   +75 added lines, -75 removed lines patch added patch discarded remove patch
@@ -42,89 +42,89 @@
 block discarded – undo
42 42
  */
43 43
 class PublicAuth extends AbstractBasic {
44 44
 
45
-	/** @var \OCP\Share\IShare */
46
-	private $share;
45
+    /** @var \OCP\Share\IShare */
46
+    private $share;
47 47
 
48
-	/** @var IManager */
49
-	private $shareManager;
48
+    /** @var IManager */
49
+    private $shareManager;
50 50
 
51
-	/** @var ISession */
52
-	private $session;
51
+    /** @var ISession */
52
+    private $session;
53 53
 
54
-	/** @var IRequest */
55
-	private $request;
54
+    /** @var IRequest */
55
+    private $request;
56 56
 
57
-	/**
58
-	 * @param IRequest $request
59
-	 * @param IManager $shareManager
60
-	 * @param ISession $session
61
-	 */
62
-	public function __construct(IRequest $request,
63
-								IManager $shareManager,
64
-								ISession $session) {
65
-		$this->request = $request;
66
-		$this->shareManager = $shareManager;
67
-		$this->session = $session;
57
+    /**
58
+     * @param IRequest $request
59
+     * @param IManager $shareManager
60
+     * @param ISession $session
61
+     */
62
+    public function __construct(IRequest $request,
63
+                                IManager $shareManager,
64
+                                ISession $session) {
65
+        $this->request = $request;
66
+        $this->shareManager = $shareManager;
67
+        $this->session = $session;
68 68
 
69
-		// setup realm
70
-		$defaults = new \OCP\Defaults();
71
-		$this->realm = $defaults->getName();
72
-	}
69
+        // setup realm
70
+        $defaults = new \OCP\Defaults();
71
+        $this->realm = $defaults->getName();
72
+    }
73 73
 
74
-	/**
75
-	 * Validates a username and password
76
-	 *
77
-	 * This method should return true or false depending on if login
78
-	 * succeeded.
79
-	 *
80
-	 * @param string $username
81
-	 * @param string $password
82
-	 *
83
-	 * @return bool
84
-	 * @throws \Sabre\DAV\Exception\NotAuthenticated
85
-	 */
86
-	protected function validateUserPass($username, $password) {
87
-		try {
88
-			$share = $this->shareManager->getShareByToken($username);
89
-		} catch (ShareNotFound $e) {
90
-			return false;
91
-		}
74
+    /**
75
+     * Validates a username and password
76
+     *
77
+     * This method should return true or false depending on if login
78
+     * succeeded.
79
+     *
80
+     * @param string $username
81
+     * @param string $password
82
+     *
83
+     * @return bool
84
+     * @throws \Sabre\DAV\Exception\NotAuthenticated
85
+     */
86
+    protected function validateUserPass($username, $password) {
87
+        try {
88
+            $share = $this->shareManager->getShareByToken($username);
89
+        } catch (ShareNotFound $e) {
90
+            return false;
91
+        }
92 92
 
93
-		$this->share = $share;
93
+        $this->share = $share;
94 94
 
95
-		\OC_User::setIncognitoMode(true);
95
+        \OC_User::setIncognitoMode(true);
96 96
 
97
-		// check if the share is password protected
98
-		if ($share->getPassword() !== null) {
99
-			if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK || $share->getShareType() === \OCP\Share::SHARE_TYPE_EMAIL) {
100
-				if ($this->shareManager->checkPassword($share, $password)) {
101
-					return true;
102
-				} else if ($this->session->exists('public_link_authenticated')
103
-					&& $this->session->get('public_link_authenticated') === (string)$share->getId()) {
104
-					return true;
105
-				} else {
106
-					if (in_array('XMLHttpRequest', explode(',', $this->request->getHeader('X-Requested-With')))) {
107
-						// do not re-authenticate over ajax, use dummy auth name to prevent browser popup
108
-						http_response_code(401);
109
-						header('WWW-Authenticate','DummyBasic realm="' . $this->realm . '"');
110
-						throw new \Sabre\DAV\Exception\NotAuthenticated('Cannot authenticate over ajax calls');
111
-					}
112
-					return false;
113
-				}
114
-			} else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_REMOTE) {
115
-				return true;
116
-			} else {
117
-				return false;
118
-			}
119
-		} else {
120
-			return true;
121
-		}
122
-	}
97
+        // check if the share is password protected
98
+        if ($share->getPassword() !== null) {
99
+            if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK || $share->getShareType() === \OCP\Share::SHARE_TYPE_EMAIL) {
100
+                if ($this->shareManager->checkPassword($share, $password)) {
101
+                    return true;
102
+                } else if ($this->session->exists('public_link_authenticated')
103
+                    && $this->session->get('public_link_authenticated') === (string)$share->getId()) {
104
+                    return true;
105
+                } else {
106
+                    if (in_array('XMLHttpRequest', explode(',', $this->request->getHeader('X-Requested-With')))) {
107
+                        // do not re-authenticate over ajax, use dummy auth name to prevent browser popup
108
+                        http_response_code(401);
109
+                        header('WWW-Authenticate','DummyBasic realm="' . $this->realm . '"');
110
+                        throw new \Sabre\DAV\Exception\NotAuthenticated('Cannot authenticate over ajax calls');
111
+                    }
112
+                    return false;
113
+                }
114
+            } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_REMOTE) {
115
+                return true;
116
+            } else {
117
+                return false;
118
+            }
119
+        } else {
120
+            return true;
121
+        }
122
+    }
123 123
 
124
-	/**
125
-	 * @return \OCP\Share\IShare
126
-	 */
127
-	public function getShare() {
128
-		return $this->share;
129
-	}
124
+    /**
125
+     * @return \OCP\Share\IShare
126
+     */
127
+    public function getShare() {
128
+        return $this->share;
129
+    }
130 130
 }
Please login to merge, or discard this patch.
apps/dav/lib/CardDAV/ImageExportPlugin.php 1 patch
Indentation   +81 added lines, -81 removed lines patch added patch discarded remove patch
@@ -32,85 +32,85 @@
 block discarded – undo
32 32
 
33 33
 class ImageExportPlugin extends ServerPlugin {
34 34
 
35
-	/** @var Server */
36
-	protected $server;
37
-	/** @var PhotoCache */
38
-	private $cache;
39
-
40
-	/**
41
-	 * ImageExportPlugin constructor.
42
-	 *
43
-	 * @param PhotoCache $cache
44
-	 */
45
-	public function __construct(PhotoCache $cache) {
46
-		$this->cache = $cache;
47
-	}
48
-
49
-	/**
50
-	 * Initializes the plugin and registers event handlers
51
-	 *
52
-	 * @param Server $server
53
-	 * @return void
54
-	 */
55
-	public function initialize(Server $server) {
56
-		$this->server = $server;
57
-		$this->server->on('method:GET', [$this, 'httpGet'], 90);
58
-	}
59
-
60
-	/**
61
-	 * Intercepts GET requests on addressbook urls ending with ?photo.
62
-	 *
63
-	 * @param RequestInterface $request
64
-	 * @param ResponseInterface $response
65
-	 * @return bool
66
-	 */
67
-	public function httpGet(RequestInterface $request, ResponseInterface $response) {
68
-
69
-		$queryParams = $request->getQueryParameters();
70
-		// TODO: in addition to photo we should also add logo some point in time
71
-		if (!array_key_exists('photo', $queryParams)) {
72
-			return true;
73
-		}
74
-
75
-		$size = isset($queryParams['size']) ? (int)$queryParams['size'] : -1;
76
-
77
-		$path = $request->getPath();
78
-		$node = $this->server->tree->getNodeForPath($path);
79
-
80
-		if (!($node instanceof Card)) {
81
-			return true;
82
-		}
83
-
84
-		$this->server->transactionType = 'carddav-image-export';
85
-
86
-		// Checking ACL, if available.
87
-		if ($aclPlugin = $this->server->getPlugin('acl')) {
88
-			/** @var \Sabre\DAVACL\Plugin $aclPlugin */
89
-			$aclPlugin->checkPrivileges($path, '{DAV:}read');
90
-		}
91
-
92
-		// Fetch addressbook
93
-		$addressbookpath = explode('/', $path);
94
-		array_pop($addressbookpath);
95
-		$addressbookpath = implode('/', $addressbookpath);
96
-		/** @var AddressBook $addressbook */
97
-		$addressbook = $this->server->tree->getNodeForPath($addressbookpath);
98
-
99
-		$response->setHeader('Cache-Control', 'private, max-age=3600, must-revalidate');
100
-		$response->setHeader('Etag', $node->getETag() );
101
-		$response->setHeader('Pragma', 'public');
102
-
103
-		try {
104
-			$file = $this->cache->get($addressbook->getResourceId(), $node->getName(), $size, $node);
105
-			$response->setHeader('Content-Type', $file->getMimeType());
106
-			$response->setHeader('Content-Disposition', 'attachment');
107
-			$response->setStatus(200);
108
-
109
-			$response->setBody($file->getContent());
110
-		} catch (NotFoundException $e) {
111
-			$response->setStatus(404);
112
-		}
113
-
114
-		return false;
115
-	}
35
+    /** @var Server */
36
+    protected $server;
37
+    /** @var PhotoCache */
38
+    private $cache;
39
+
40
+    /**
41
+     * ImageExportPlugin constructor.
42
+     *
43
+     * @param PhotoCache $cache
44
+     */
45
+    public function __construct(PhotoCache $cache) {
46
+        $this->cache = $cache;
47
+    }
48
+
49
+    /**
50
+     * Initializes the plugin and registers event handlers
51
+     *
52
+     * @param Server $server
53
+     * @return void
54
+     */
55
+    public function initialize(Server $server) {
56
+        $this->server = $server;
57
+        $this->server->on('method:GET', [$this, 'httpGet'], 90);
58
+    }
59
+
60
+    /**
61
+     * Intercepts GET requests on addressbook urls ending with ?photo.
62
+     *
63
+     * @param RequestInterface $request
64
+     * @param ResponseInterface $response
65
+     * @return bool
66
+     */
67
+    public function httpGet(RequestInterface $request, ResponseInterface $response) {
68
+
69
+        $queryParams = $request->getQueryParameters();
70
+        // TODO: in addition to photo we should also add logo some point in time
71
+        if (!array_key_exists('photo', $queryParams)) {
72
+            return true;
73
+        }
74
+
75
+        $size = isset($queryParams['size']) ? (int)$queryParams['size'] : -1;
76
+
77
+        $path = $request->getPath();
78
+        $node = $this->server->tree->getNodeForPath($path);
79
+
80
+        if (!($node instanceof Card)) {
81
+            return true;
82
+        }
83
+
84
+        $this->server->transactionType = 'carddav-image-export';
85
+
86
+        // Checking ACL, if available.
87
+        if ($aclPlugin = $this->server->getPlugin('acl')) {
88
+            /** @var \Sabre\DAVACL\Plugin $aclPlugin */
89
+            $aclPlugin->checkPrivileges($path, '{DAV:}read');
90
+        }
91
+
92
+        // Fetch addressbook
93
+        $addressbookpath = explode('/', $path);
94
+        array_pop($addressbookpath);
95
+        $addressbookpath = implode('/', $addressbookpath);
96
+        /** @var AddressBook $addressbook */
97
+        $addressbook = $this->server->tree->getNodeForPath($addressbookpath);
98
+
99
+        $response->setHeader('Cache-Control', 'private, max-age=3600, must-revalidate');
100
+        $response->setHeader('Etag', $node->getETag() );
101
+        $response->setHeader('Pragma', 'public');
102
+
103
+        try {
104
+            $file = $this->cache->get($addressbook->getResourceId(), $node->getName(), $size, $node);
105
+            $response->setHeader('Content-Type', $file->getMimeType());
106
+            $response->setHeader('Content-Disposition', 'attachment');
107
+            $response->setStatus(200);
108
+
109
+            $response->setBody($file->getContent());
110
+        } catch (NotFoundException $e) {
111
+            $response->setStatus(404);
112
+        }
113
+
114
+        return false;
115
+    }
116 116
 }
Please login to merge, or discard this patch.
core/templates/layout.guest.php 1 patch
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -41,7 +41,7 @@
 block discarded – undo
41 41
 									<?php p($theme->getName()); ?>
42 42
 								</h1>
43 43
 								<?php if(\OC::$server->getConfig()->getSystemValue('installed', false)
44
-									&& \OC::$server->getConfig()->getAppValue('theming', 'logoMime', false)): ?>
44
+                                    && \OC::$server->getConfig()->getAppValue('theming', 'logoMime', false)): ?>
45 45
 									<img src="<?php p($theme->getLogo()); ?>"/>
46 46
 								<?php endif; ?>
47 47
 							</div>
Please login to merge, or discard this patch.
lib/private/Config.php 1 patch
Indentation   +204 added lines, -204 removed lines patch added patch discarded remove patch
@@ -40,235 +40,235 @@
 block discarded – undo
40 40
  */
41 41
 class Config {
42 42
 
43
-	const ENV_PREFIX = 'NC_';
43
+    const ENV_PREFIX = 'NC_';
44 44
 
45
-	/** @var array Associative array ($key => $value) */
46
-	protected $cache = array();
47
-	/** @var string */
48
-	protected $configDir;
49
-	/** @var string */
50
-	protected $configFilePath;
51
-	/** @var string */
52
-	protected $configFileName;
45
+    /** @var array Associative array ($key => $value) */
46
+    protected $cache = array();
47
+    /** @var string */
48
+    protected $configDir;
49
+    /** @var string */
50
+    protected $configFilePath;
51
+    /** @var string */
52
+    protected $configFileName;
53 53
 
54
-	/**
55
-	 * @param string $configDir Path to the config dir, needs to end with '/'
56
-	 * @param string $fileName (Optional) Name of the config file. Defaults to config.php
57
-	 */
58
-	public function __construct($configDir, $fileName = 'config.php') {
59
-		$this->configDir = $configDir;
60
-		$this->configFilePath = $this->configDir.$fileName;
61
-		$this->configFileName = $fileName;
62
-		$this->readData();
63
-	}
54
+    /**
55
+     * @param string $configDir Path to the config dir, needs to end with '/'
56
+     * @param string $fileName (Optional) Name of the config file. Defaults to config.php
57
+     */
58
+    public function __construct($configDir, $fileName = 'config.php') {
59
+        $this->configDir = $configDir;
60
+        $this->configFilePath = $this->configDir.$fileName;
61
+        $this->configFileName = $fileName;
62
+        $this->readData();
63
+    }
64 64
 
65
-	/**
66
-	 * Lists all available config keys
67
-	 *
68
-	 * Please note that it does not return the values.
69
-	 *
70
-	 * @return array an array of key names
71
-	 */
72
-	public function getKeys() {
73
-		return array_keys($this->cache);
74
-	}
65
+    /**
66
+     * Lists all available config keys
67
+     *
68
+     * Please note that it does not return the values.
69
+     *
70
+     * @return array an array of key names
71
+     */
72
+    public function getKeys() {
73
+        return array_keys($this->cache);
74
+    }
75 75
 
76
-	/**
77
-	 * Returns a config value
78
-	 *
79
-	 * gets its value from an `NC_` prefixed environment variable
80
-	 * if it doesn't exist from config.php
81
-	 * if this doesn't exist either, it will return the given `$default`
82
-	 *
83
-	 * @param string $key key
84
-	 * @param mixed $default = null default value
85
-	 * @return mixed the value or $default
86
-	 */
87
-	public function getValue($key, $default = null) {
88
-		$envValue = getenv(self::ENV_PREFIX . $key);
89
-		if ($envValue !== false) {
90
-			return $envValue;
91
-		}
76
+    /**
77
+     * Returns a config value
78
+     *
79
+     * gets its value from an `NC_` prefixed environment variable
80
+     * if it doesn't exist from config.php
81
+     * if this doesn't exist either, it will return the given `$default`
82
+     *
83
+     * @param string $key key
84
+     * @param mixed $default = null default value
85
+     * @return mixed the value or $default
86
+     */
87
+    public function getValue($key, $default = null) {
88
+        $envValue = getenv(self::ENV_PREFIX . $key);
89
+        if ($envValue !== false) {
90
+            return $envValue;
91
+        }
92 92
 
93
-		if (isset($this->cache[$key])) {
94
-			return $this->cache[$key];
95
-		}
93
+        if (isset($this->cache[$key])) {
94
+            return $this->cache[$key];
95
+        }
96 96
 
97
-		return $default;
98
-	}
97
+        return $default;
98
+    }
99 99
 
100
-	/**
101
-	 * Sets and deletes values and writes the config.php
102
-	 *
103
-	 * @param array $configs Associative array with `key => value` pairs
104
-	 *                       If value is null, the config key will be deleted
105
-	 */
106
-	public function setValues(array $configs) {
107
-		$needsUpdate = false;
108
-		foreach ($configs as $key => $value) {
109
-			if ($value !== null) {
110
-				$needsUpdate |= $this->set($key, $value);
111
-			} else {
112
-				$needsUpdate |= $this->delete($key);
113
-			}
114
-		}
100
+    /**
101
+     * Sets and deletes values and writes the config.php
102
+     *
103
+     * @param array $configs Associative array with `key => value` pairs
104
+     *                       If value is null, the config key will be deleted
105
+     */
106
+    public function setValues(array $configs) {
107
+        $needsUpdate = false;
108
+        foreach ($configs as $key => $value) {
109
+            if ($value !== null) {
110
+                $needsUpdate |= $this->set($key, $value);
111
+            } else {
112
+                $needsUpdate |= $this->delete($key);
113
+            }
114
+        }
115 115
 
116
-		if ($needsUpdate) {
117
-			// Write changes
118
-			$this->writeData();
119
-		}
120
-	}
116
+        if ($needsUpdate) {
117
+            // Write changes
118
+            $this->writeData();
119
+        }
120
+    }
121 121
 
122
-	/**
123
-	 * Sets the value and writes it to config.php if required
124
-	 *
125
-	 * @param string $key key
126
-	 * @param mixed $value value
127
-	 */
128
-	public function setValue($key, $value) {
129
-		if ($this->set($key, $value)) {
130
-			// Write changes
131
-			$this->writeData();
132
-		}
133
-	}
122
+    /**
123
+     * Sets the value and writes it to config.php if required
124
+     *
125
+     * @param string $key key
126
+     * @param mixed $value value
127
+     */
128
+    public function setValue($key, $value) {
129
+        if ($this->set($key, $value)) {
130
+            // Write changes
131
+            $this->writeData();
132
+        }
133
+    }
134 134
 
135
-	/**
136
-	 * This function sets the value
137
-	 *
138
-	 * @param string $key key
139
-	 * @param mixed $value value
140
-	 * @return bool True if the file needs to be updated, false otherwise
141
-	 */
142
-	protected function set($key, $value) {
143
-		if (!isset($this->cache[$key]) || $this->cache[$key] !== $value) {
144
-			// Add change
145
-			$this->cache[$key] = $value;
146
-			return true;
147
-		}
135
+    /**
136
+     * This function sets the value
137
+     *
138
+     * @param string $key key
139
+     * @param mixed $value value
140
+     * @return bool True if the file needs to be updated, false otherwise
141
+     */
142
+    protected function set($key, $value) {
143
+        if (!isset($this->cache[$key]) || $this->cache[$key] !== $value) {
144
+            // Add change
145
+            $this->cache[$key] = $value;
146
+            return true;
147
+        }
148 148
 
149
-		return false;
150
-	}
149
+        return false;
150
+    }
151 151
 
152
-	/**
153
-	 * Removes a key from the config and removes it from config.php if required
154
-	 * @param string $key
155
-	 */
156
-	public function deleteKey($key) {
157
-		if ($this->delete($key)) {
158
-			// Write changes
159
-			$this->writeData();
160
-		}
161
-	}
152
+    /**
153
+     * Removes a key from the config and removes it from config.php if required
154
+     * @param string $key
155
+     */
156
+    public function deleteKey($key) {
157
+        if ($this->delete($key)) {
158
+            // Write changes
159
+            $this->writeData();
160
+        }
161
+    }
162 162
 
163
-	/**
164
-	 * This function removes a key from the config
165
-	 *
166
-	 * @param string $key
167
-	 * @return bool True if the file needs to be updated, false otherwise
168
-	 */
169
-	protected function delete($key) {
170
-		if (isset($this->cache[$key])) {
171
-			// Delete key from cache
172
-			unset($this->cache[$key]);
173
-			return true;
174
-		}
175
-		return false;
176
-	}
163
+    /**
164
+     * This function removes a key from the config
165
+     *
166
+     * @param string $key
167
+     * @return bool True if the file needs to be updated, false otherwise
168
+     */
169
+    protected function delete($key) {
170
+        if (isset($this->cache[$key])) {
171
+            // Delete key from cache
172
+            unset($this->cache[$key]);
173
+            return true;
174
+        }
175
+        return false;
176
+    }
177 177
 
178
-	/**
179
-	 * Loads the config file
180
-	 *
181
-	 * Reads the config file and saves it to the cache
182
-	 *
183
-	 * @throws \Exception If no lock could be acquired or the config file has not been found
184
-	 */
185
-	private function readData() {
186
-		// Default config should always get loaded
187
-		$configFiles = array($this->configFilePath);
178
+    /**
179
+     * Loads the config file
180
+     *
181
+     * Reads the config file and saves it to the cache
182
+     *
183
+     * @throws \Exception If no lock could be acquired or the config file has not been found
184
+     */
185
+    private function readData() {
186
+        // Default config should always get loaded
187
+        $configFiles = array($this->configFilePath);
188 188
 
189
-		// Add all files in the config dir ending with the same file name
190
-		$extra = glob($this->configDir.'*.'.$this->configFileName);
191
-		if (is_array($extra)) {
192
-			natsort($extra);
193
-			$configFiles = array_merge($configFiles, $extra);
194
-		}
189
+        // Add all files in the config dir ending with the same file name
190
+        $extra = glob($this->configDir.'*.'.$this->configFileName);
191
+        if (is_array($extra)) {
192
+            natsort($extra);
193
+            $configFiles = array_merge($configFiles, $extra);
194
+        }
195 195
 
196
-		// Include file and merge config
197
-		foreach ($configFiles as $file) {
198
-			$fileExistsAndIsReadable = file_exists($file) && is_readable($file);
199
-			$filePointer = $fileExistsAndIsReadable ? fopen($file, 'r') : false;
200
-			if($file === $this->configFilePath &&
201
-				$filePointer === false) {
202
-				// Opening the main config might not be possible, e.g. if the wrong
203
-				// permissions are set (likely on a new installation)
204
-				continue;
205
-			}
196
+        // Include file and merge config
197
+        foreach ($configFiles as $file) {
198
+            $fileExistsAndIsReadable = file_exists($file) && is_readable($file);
199
+            $filePointer = $fileExistsAndIsReadable ? fopen($file, 'r') : false;
200
+            if($file === $this->configFilePath &&
201
+                $filePointer === false) {
202
+                // Opening the main config might not be possible, e.g. if the wrong
203
+                // permissions are set (likely on a new installation)
204
+                continue;
205
+            }
206 206
 
207
-			// Try to acquire a file lock
208
-			if(!flock($filePointer, LOCK_SH)) {
209
-				throw new \Exception(sprintf('Could not acquire a shared lock on the config file %s', $file));
210
-			}
207
+            // Try to acquire a file lock
208
+            if(!flock($filePointer, LOCK_SH)) {
209
+                throw new \Exception(sprintf('Could not acquire a shared lock on the config file %s', $file));
210
+            }
211 211
 
212
-			unset($CONFIG);
213
-			include $file;
214
-			if(isset($CONFIG) && is_array($CONFIG)) {
215
-				$this->cache = array_merge($this->cache, $CONFIG);
216
-			}
212
+            unset($CONFIG);
213
+            include $file;
214
+            if(isset($CONFIG) && is_array($CONFIG)) {
215
+                $this->cache = array_merge($this->cache, $CONFIG);
216
+            }
217 217
 
218
-			// Close the file pointer and release the lock
219
-			flock($filePointer, LOCK_UN);
220
-			fclose($filePointer);
221
-		}
222
-	}
218
+            // Close the file pointer and release the lock
219
+            flock($filePointer, LOCK_UN);
220
+            fclose($filePointer);
221
+        }
222
+    }
223 223
 
224
-	/**
225
-	 * Writes the config file
226
-	 *
227
-	 * Saves the config to the config file.
228
-	 *
229
-	 * @throws HintException If the config file cannot be written to
230
-	 * @throws \Exception If no file lock can be acquired
231
-	 */
232
-	private function writeData() {
233
-		// Create a php file ...
234
-		$content = "<?php\n";
235
-		$content .= '$CONFIG = ';
236
-		$content .= var_export($this->cache, true);
237
-		$content .= ";\n";
224
+    /**
225
+     * Writes the config file
226
+     *
227
+     * Saves the config to the config file.
228
+     *
229
+     * @throws HintException If the config file cannot be written to
230
+     * @throws \Exception If no file lock can be acquired
231
+     */
232
+    private function writeData() {
233
+        // Create a php file ...
234
+        $content = "<?php\n";
235
+        $content .= '$CONFIG = ';
236
+        $content .= var_export($this->cache, true);
237
+        $content .= ";\n";
238 238
 
239
-		touch ($this->configFilePath);
240
-		$filePointer = fopen($this->configFilePath, 'r+');
239
+        touch ($this->configFilePath);
240
+        $filePointer = fopen($this->configFilePath, 'r+');
241 241
 
242
-		// Prevent others not to read the config
243
-		chmod($this->configFilePath, 0640);
242
+        // Prevent others not to read the config
243
+        chmod($this->configFilePath, 0640);
244 244
 
245
-		// File does not exist, this can happen when doing a fresh install
246
-		if(!is_resource ($filePointer)) {
247
-			// TODO fix this via DI once it is very clear that this doesn't cause side effects due to initialization order
248
-			// currently this breaks app routes but also could have other side effects especially during setup and exception handling
249
-			$url = \OC::$server->getURLGenerator()->linkToDocs('admin-dir_permissions');
250
-			throw new HintException(
251
-				"Can't write into config directory!",
252
-				'This can usually be fixed by giving the webserver write access to the config directory. See ' . $url);
253
-		}
245
+        // File does not exist, this can happen when doing a fresh install
246
+        if(!is_resource ($filePointer)) {
247
+            // TODO fix this via DI once it is very clear that this doesn't cause side effects due to initialization order
248
+            // currently this breaks app routes but also could have other side effects especially during setup and exception handling
249
+            $url = \OC::$server->getURLGenerator()->linkToDocs('admin-dir_permissions');
250
+            throw new HintException(
251
+                "Can't write into config directory!",
252
+                'This can usually be fixed by giving the webserver write access to the config directory. See ' . $url);
253
+        }
254 254
 
255
-		// Try to acquire a file lock
256
-		if(!flock($filePointer, LOCK_EX)) {
257
-			throw new \Exception(sprintf('Could not acquire an exclusive lock on the config file %s', $this->configFilePath));
258
-		}
255
+        // Try to acquire a file lock
256
+        if(!flock($filePointer, LOCK_EX)) {
257
+            throw new \Exception(sprintf('Could not acquire an exclusive lock on the config file %s', $this->configFilePath));
258
+        }
259 259
 
260
-		// Write the config and release the lock
261
-		ftruncate ($filePointer, 0);
262
-		fwrite($filePointer, $content);
263
-		fflush($filePointer);
264
-		flock($filePointer, LOCK_UN);
265
-		fclose($filePointer);
260
+        // Write the config and release the lock
261
+        ftruncate ($filePointer, 0);
262
+        fwrite($filePointer, $content);
263
+        fflush($filePointer);
264
+        flock($filePointer, LOCK_UN);
265
+        fclose($filePointer);
266 266
 
267
-		// Try invalidating the opcache just for the file we wrote...
268
-		if (!\OC_Util::deleteFromOpcodeCache($this->configFilePath)) {
269
-			// But if that doesn't work, clear the whole cache.
270
-			\OC_Util::clearOpcodeCache();
271
-		}
272
-	}
267
+        // Try invalidating the opcache just for the file we wrote...
268
+        if (!\OC_Util::deleteFromOpcodeCache($this->configFilePath)) {
269
+            // But if that doesn't work, clear the whole cache.
270
+            \OC_Util::clearOpcodeCache();
271
+        }
272
+    }
273 273
 }
274 274
 
Please login to merge, or discard this patch.
lib/private/App/CodeChecker/LanguageParseChecker.php 1 patch
Indentation   +32 added lines, -32 removed lines patch added patch discarded remove patch
@@ -25,36 +25,36 @@
 block discarded – undo
25 25
 
26 26
 class LanguageParseChecker {
27 27
 
28
-	/**
29
-	 * @param string $appId
30
-	 * @return array
31
-	 */
32
-	public function analyse($appId) {
33
-		$appPath = \OC_App::getAppPath($appId);
34
-		if ($appPath === false) {
35
-			throw new \RuntimeException("No app with given id <$appId> known.");
36
-		}
37
-
38
-		if (!is_dir($appPath . '/l10n/')) {
39
-			return [];
40
-		}
41
-
42
-		$errors = [];
43
-		$directory = new \DirectoryIterator($appPath . '/l10n/');
44
-
45
-		foreach ($directory as $file) {
46
-			if ($file->getExtension() !== 'json') {
47
-				continue;
48
-			}
49
-
50
-			$content = file_get_contents($file->getPathname());
51
-			json_decode($content, true);
52
-
53
-			if (json_last_error() !== JSON_ERROR_NONE) {
54
-				$errors[] = 'Invalid language file found: l10n/' . $file->getFilename() . ': ' . json_last_error_msg();
55
-			}
56
-		}
57
-
58
-		return $errors;
59
-	}
28
+    /**
29
+     * @param string $appId
30
+     * @return array
31
+     */
32
+    public function analyse($appId) {
33
+        $appPath = \OC_App::getAppPath($appId);
34
+        if ($appPath === false) {
35
+            throw new \RuntimeException("No app with given id <$appId> known.");
36
+        }
37
+
38
+        if (!is_dir($appPath . '/l10n/')) {
39
+            return [];
40
+        }
41
+
42
+        $errors = [];
43
+        $directory = new \DirectoryIterator($appPath . '/l10n/');
44
+
45
+        foreach ($directory as $file) {
46
+            if ($file->getExtension() !== 'json') {
47
+                continue;
48
+            }
49
+
50
+            $content = file_get_contents($file->getPathname());
51
+            json_decode($content, true);
52
+
53
+            if (json_last_error() !== JSON_ERROR_NONE) {
54
+                $errors[] = 'Invalid language file found: l10n/' . $file->getFilename() . ': ' . json_last_error_msg();
55
+            }
56
+        }
57
+
58
+        return $errors;
59
+    }
60 60
 }
Please login to merge, or discard this patch.
apps/lookup_server_connector/appinfo/app.php 1 patch
Indentation   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -22,10 +22,10 @@
 block discarded – undo
22 22
 $dispatcher = \OC::$server->getEventDispatcher();
23 23
 
24 24
 $dispatcher->addListener('OC\AccountManager::userUpdated', function(\Symfony\Component\EventDispatcher\GenericEvent $event) {
25
-	/** @var \OCP\IUser $user */
26
-	$user = $event->getSubject();
25
+    /** @var \OCP\IUser $user */
26
+    $user = $event->getSubject();
27 27
 
28
-	/** @var \OCA\LookupServerConnector\UpdateLookupServer $updateLookupServer */
29
-	$updateLookupServer = \OC::$server->query(\OCA\LookupServerConnector\UpdateLookupServer::class);
30
-	$updateLookupServer->userUpdated($user);
28
+    /** @var \OCA\LookupServerConnector\UpdateLookupServer $updateLookupServer */
29
+    $updateLookupServer = \OC::$server->query(\OCA\LookupServerConnector\UpdateLookupServer::class);
30
+    $updateLookupServer->userUpdated($user);
31 31
 });
Please login to merge, or discard this patch.
apps/files/ajax/download.php 1 patch
Indentation   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -37,7 +37,7 @@  discard block
 block discarded – undo
37 37
 $files_list = json_decode($files);
38 38
 // in case we get only a single file
39 39
 if (!is_array($files_list)) {
40
-	$files_list = array($files);
40
+    $files_list = array($files);
41 41
 }
42 42
 
43 43
 /**
@@ -46,9 +46,9 @@  discard block
 block discarded – undo
46 46
  * alphanumeric characters
47 47
  */
48 48
 if(isset($_GET['downloadStartSecret'])
49
-	&& !isset($_GET['downloadStartSecret'][32])
50
-	&& preg_match('!^[a-zA-Z0-9]+$!', $_GET['downloadStartSecret']) === 1) {
51
-	setcookie('ocDownloadStarted', $_GET['downloadStartSecret'], time() + 20, '/');
49
+    && !isset($_GET['downloadStartSecret'][32])
50
+    && preg_match('!^[a-zA-Z0-9]+$!', $_GET['downloadStartSecret']) === 1) {
51
+    setcookie('ocDownloadStarted', $_GET['downloadStartSecret'], time() + 20, '/');
52 52
 }
53 53
 
54 54
 $server_params = array( 'head' => \OC::$server->getRequest()->getMethod() === 'HEAD' );
@@ -57,7 +57,7 @@  discard block
 block discarded – undo
57 57
  * Http range requests support
58 58
  */
59 59
 if (isset($_SERVER['HTTP_RANGE'])) {
60
-	$server_params['range'] = \OC::$server->getRequest()->getHeader('Range');
60
+    $server_params['range'] = \OC::$server->getRequest()->getHeader('Range');
61 61
 }
62 62
 
63 63
 OC_Files::get($dir, $files_list, $server_params);
Please login to merge, or discard this patch.