Completed
Push — stable12 ( 820ea9...0b8b08 )
by Morris
11:53
created
apps/files_sharing/lib/Helper.php 1 patch
Indentation   +237 added lines, -237 removed lines patch added patch discarded remove patch
@@ -36,242 +36,242 @@
 block discarded – undo
36 36
 
37 37
 class Helper {
38 38
 
39
-	public static function registerHooks() {
40
-		\OCP\Util::connectHook('OC_Filesystem', 'post_rename', '\OCA\Files_Sharing\Updater', 'renameHook');
41
-		\OCP\Util::connectHook('OC_Filesystem', 'post_delete', '\OCA\Files_Sharing\Hooks', 'unshareChildren');
42
-
43
-		\OCP\Util::connectHook('OC_User', 'post_deleteUser', '\OCA\Files_Sharing\Hooks', 'deleteUser');
44
-	}
45
-
46
-	/**
47
-	 * Sets up the filesystem and user for public sharing
48
-	 * @param string $token string share token
49
-	 * @param string $relativePath optional path relative to the share
50
-	 * @param string $password optional password
51
-	 * @return array
52
-	 */
53
-	public static function setupFromToken($token, $relativePath = null, $password = null) {
54
-		\OC_User::setIncognitoMode(true);
55
-
56
-		$shareManager = \OC::$server->getShareManager();
57
-
58
-		try {
59
-			$share = $shareManager->getShareByToken($token);
60
-		} catch (ShareNotFound $e) {
61
-			\OC_Response::setStatus(404);
62
-			\OCP\Util::writeLog('core-preview', 'Passed token parameter is not valid', \OCP\Util::DEBUG);
63
-			exit;
64
-		}
65
-
66
-		\OCP\JSON::checkUserExists($share->getShareOwner());
67
-		\OC_Util::tearDownFS();
68
-		\OC_Util::setupFS($share->getShareOwner());
69
-
70
-
71
-		try {
72
-			$path = Filesystem::getPath($share->getNodeId());
73
-		} catch (NotFoundException $e) {
74
-			\OCP\Util::writeLog('share', 'could not resolve linkItem', \OCP\Util::DEBUG);
75
-			\OC_Response::setStatus(404);
76
-			\OCP\JSON::error(array('success' => false));
77
-			exit();
78
-		}
79
-
80
-		if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK && $share->getPassword() !== null) {
81
-			if (!self::authenticate($share, $password)) {
82
-				\OC_Response::setStatus(403);
83
-				\OCP\JSON::error(array('success' => false));
84
-				exit();
85
-			}
86
-		}
87
-
88
-		$basePath = $path;
89
-
90
-		if ($relativePath !== null && Filesystem::isReadable($basePath . $relativePath)) {
91
-			$path .= Filesystem::normalizePath($relativePath);
92
-		}
93
-
94
-		return array(
95
-			'share' => $share,
96
-			'basePath' => $basePath,
97
-			'realPath' => $path
98
-		);
99
-	}
100
-
101
-	/**
102
-	 * Authenticate link item with the given password
103
-	 * or with the session if no password was given.
104
-	 * @param \OCP\Share\IShare $share
105
-	 * @param string $password optional password
106
-	 *
107
-	 * @return boolean true if authorized, false otherwise
108
-	 */
109
-	public static function authenticate($share, $password = null) {
110
-		$shareManager = \OC::$server->getShareManager();
111
-
112
-		if ($password !== null) {
113
-			if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
114
-				if ($shareManager->checkPassword($share, $password)) {
115
-					\OC::$server->getSession()->set('public_link_authenticated', (string)$share->getId());
116
-					return true;
117
-				}
118
-			}
119
-		} else {
120
-			// not authenticated ?
121
-			if (\OC::$server->getSession()->exists('public_link_authenticated')
122
-				&& \OC::$server->getSession()->get('public_link_authenticated') !== (string)$share->getId()) {
123
-				return true;
124
-			}
125
-		}
126
-		return false;
127
-	}
128
-
129
-	public static function getSharesFromItem($target) {
130
-		$result = array();
131
-		$owner = Filesystem::getOwner($target);
132
-		Filesystem::initMountPoints($owner);
133
-		$info = Filesystem::getFileInfo($target);
134
-		$ownerView = new View('/'.$owner.'/files');
135
-		if ( $owner != User::getUser() ) {
136
-			$path = $ownerView->getPath($info['fileid']);
137
-		} else {
138
-			$path = $target;
139
-		}
140
-
141
-
142
-		$ids = array();
143
-		while ($path !== dirname($path)) {
144
-			$info = $ownerView->getFileInfo($path);
145
-			if ($info instanceof \OC\Files\FileInfo) {
146
-				$ids[] = $info['fileid'];
147
-			} else {
148
-				\OCP\Util::writeLog('sharing', 'No fileinfo available for: ' . $path, \OCP\Util::WARN);
149
-			}
150
-			$path = dirname($path);
151
-		}
152
-
153
-		if (!empty($ids)) {
154
-
155
-			$idList = array_chunk($ids, 99, true);
156
-
157
-			foreach ($idList as $subList) {
158
-				$statement = "SELECT `share_with`, `share_type`, `file_target` FROM `*PREFIX*share` WHERE `file_source` IN (" . implode(',', $subList) . ") AND `share_type` IN (0, 1, 2)";
159
-				$query = \OCP\DB::prepare($statement);
160
-				$r = $query->execute();
161
-				$result = array_merge($result, $r->fetchAll());
162
-			}
163
-		}
164
-
165
-		return $result;
166
-	}
167
-
168
-	/**
169
-	 * get the UID of the owner of the file and the path to the file relative to
170
-	 * owners files folder
171
-	 *
172
-	 * @param $filename
173
-	 * @return array
174
-	 * @throws \OC\User\NoUserException
175
-	 */
176
-	public static function getUidAndFilename($filename) {
177
-		$uid = Filesystem::getOwner($filename);
178
-		$userManager = \OC::$server->getUserManager();
179
-		// if the user with the UID doesn't exists, e.g. because the UID points
180
-		// to a remote user with a federated cloud ID we use the current logged-in
181
-		// user. We need a valid local user to create the share
182
-		if (!$userManager->userExists($uid)) {
183
-			$uid = User::getUser();
184
-		}
185
-		Filesystem::initMountPoints($uid);
186
-		if ( $uid != User::getUser() ) {
187
-			$info = Filesystem::getFileInfo($filename);
188
-			$ownerView = new View('/'.$uid.'/files');
189
-			try {
190
-				$filename = $ownerView->getPath($info['fileid']);
191
-			} catch (NotFoundException $e) {
192
-				$filename = null;
193
-			}
194
-		}
195
-		return [$uid, $filename];
196
-	}
197
-
198
-	/**
199
-	 * Format a path to be relative to the /user/files/ directory
200
-	 * @param string $path the absolute path
201
-	 * @return string e.g. turns '/admin/files/test.txt' into 'test.txt'
202
-	 */
203
-	public static function stripUserFilesPath($path) {
204
-		$trimmed = ltrim($path, '/');
205
-		$split = explode('/', $trimmed);
206
-
207
-		// it is not a file relative to data/user/files
208
-		if (count($split) < 3 || $split[1] !== 'files') {
209
-			return false;
210
-		}
211
-
212
-		$sliced = array_slice($split, 2);
213
-		$relPath = implode('/', $sliced);
214
-
215
-		return $relPath;
216
-	}
217
-
218
-	/**
219
-	 * check if file name already exists and generate unique target
220
-	 *
221
-	 * @param string $path
222
-	 * @param array $excludeList
223
-	 * @param View $view
224
-	 * @return string $path
225
-	 */
226
-	public static function generateUniqueTarget($path, $excludeList, $view) {
227
-		$pathinfo = pathinfo($path);
228
-		$ext = (isset($pathinfo['extension'])) ? '.'.$pathinfo['extension'] : '';
229
-		$name = $pathinfo['filename'];
230
-		$dir = $pathinfo['dirname'];
231
-		$i = 2;
232
-		while ($view->file_exists($path) || in_array($path, $excludeList)) {
233
-			$path = Filesystem::normalizePath($dir . '/' . $name . ' ('.$i.')' . $ext);
234
-			$i++;
235
-		}
236
-
237
-		return $path;
238
-	}
239
-
240
-	/**
241
-	 * get default share folder
242
-	 *
243
-	 * @param \OC\Files\View
244
-	 * @return string
245
-	 */
246
-	public static function getShareFolder($view = null) {
247
-		if ($view === null) {
248
-			$view = Filesystem::getView();
249
-		}
250
-		$shareFolder = \OC::$server->getConfig()->getSystemValue('share_folder', '/');
251
-		$shareFolder = Filesystem::normalizePath($shareFolder);
252
-
253
-		if (!$view->file_exists($shareFolder)) {
254
-			$dir = '';
255
-			$subdirs = explode('/', $shareFolder);
256
-			foreach ($subdirs as $subdir) {
257
-				$dir = $dir . '/' . $subdir;
258
-				if (!$view->is_dir($dir)) {
259
-					$view->mkdir($dir);
260
-				}
261
-			}
262
-		}
263
-
264
-		return $shareFolder;
265
-
266
-	}
267
-
268
-	/**
269
-	 * set default share folder
270
-	 *
271
-	 * @param string $shareFolder
272
-	 */
273
-	public static function setShareFolder($shareFolder) {
274
-		\OC::$server->getConfig()->setSystemValue('share_folder', $shareFolder);
275
-	}
39
+    public static function registerHooks() {
40
+        \OCP\Util::connectHook('OC_Filesystem', 'post_rename', '\OCA\Files_Sharing\Updater', 'renameHook');
41
+        \OCP\Util::connectHook('OC_Filesystem', 'post_delete', '\OCA\Files_Sharing\Hooks', 'unshareChildren');
42
+
43
+        \OCP\Util::connectHook('OC_User', 'post_deleteUser', '\OCA\Files_Sharing\Hooks', 'deleteUser');
44
+    }
45
+
46
+    /**
47
+     * Sets up the filesystem and user for public sharing
48
+     * @param string $token string share token
49
+     * @param string $relativePath optional path relative to the share
50
+     * @param string $password optional password
51
+     * @return array
52
+     */
53
+    public static function setupFromToken($token, $relativePath = null, $password = null) {
54
+        \OC_User::setIncognitoMode(true);
55
+
56
+        $shareManager = \OC::$server->getShareManager();
57
+
58
+        try {
59
+            $share = $shareManager->getShareByToken($token);
60
+        } catch (ShareNotFound $e) {
61
+            \OC_Response::setStatus(404);
62
+            \OCP\Util::writeLog('core-preview', 'Passed token parameter is not valid', \OCP\Util::DEBUG);
63
+            exit;
64
+        }
65
+
66
+        \OCP\JSON::checkUserExists($share->getShareOwner());
67
+        \OC_Util::tearDownFS();
68
+        \OC_Util::setupFS($share->getShareOwner());
69
+
70
+
71
+        try {
72
+            $path = Filesystem::getPath($share->getNodeId());
73
+        } catch (NotFoundException $e) {
74
+            \OCP\Util::writeLog('share', 'could not resolve linkItem', \OCP\Util::DEBUG);
75
+            \OC_Response::setStatus(404);
76
+            \OCP\JSON::error(array('success' => false));
77
+            exit();
78
+        }
79
+
80
+        if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK && $share->getPassword() !== null) {
81
+            if (!self::authenticate($share, $password)) {
82
+                \OC_Response::setStatus(403);
83
+                \OCP\JSON::error(array('success' => false));
84
+                exit();
85
+            }
86
+        }
87
+
88
+        $basePath = $path;
89
+
90
+        if ($relativePath !== null && Filesystem::isReadable($basePath . $relativePath)) {
91
+            $path .= Filesystem::normalizePath($relativePath);
92
+        }
93
+
94
+        return array(
95
+            'share' => $share,
96
+            'basePath' => $basePath,
97
+            'realPath' => $path
98
+        );
99
+    }
100
+
101
+    /**
102
+     * Authenticate link item with the given password
103
+     * or with the session if no password was given.
104
+     * @param \OCP\Share\IShare $share
105
+     * @param string $password optional password
106
+     *
107
+     * @return boolean true if authorized, false otherwise
108
+     */
109
+    public static function authenticate($share, $password = null) {
110
+        $shareManager = \OC::$server->getShareManager();
111
+
112
+        if ($password !== null) {
113
+            if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
114
+                if ($shareManager->checkPassword($share, $password)) {
115
+                    \OC::$server->getSession()->set('public_link_authenticated', (string)$share->getId());
116
+                    return true;
117
+                }
118
+            }
119
+        } else {
120
+            // not authenticated ?
121
+            if (\OC::$server->getSession()->exists('public_link_authenticated')
122
+                && \OC::$server->getSession()->get('public_link_authenticated') !== (string)$share->getId()) {
123
+                return true;
124
+            }
125
+        }
126
+        return false;
127
+    }
128
+
129
+    public static function getSharesFromItem($target) {
130
+        $result = array();
131
+        $owner = Filesystem::getOwner($target);
132
+        Filesystem::initMountPoints($owner);
133
+        $info = Filesystem::getFileInfo($target);
134
+        $ownerView = new View('/'.$owner.'/files');
135
+        if ( $owner != User::getUser() ) {
136
+            $path = $ownerView->getPath($info['fileid']);
137
+        } else {
138
+            $path = $target;
139
+        }
140
+
141
+
142
+        $ids = array();
143
+        while ($path !== dirname($path)) {
144
+            $info = $ownerView->getFileInfo($path);
145
+            if ($info instanceof \OC\Files\FileInfo) {
146
+                $ids[] = $info['fileid'];
147
+            } else {
148
+                \OCP\Util::writeLog('sharing', 'No fileinfo available for: ' . $path, \OCP\Util::WARN);
149
+            }
150
+            $path = dirname($path);
151
+        }
152
+
153
+        if (!empty($ids)) {
154
+
155
+            $idList = array_chunk($ids, 99, true);
156
+
157
+            foreach ($idList as $subList) {
158
+                $statement = "SELECT `share_with`, `share_type`, `file_target` FROM `*PREFIX*share` WHERE `file_source` IN (" . implode(',', $subList) . ") AND `share_type` IN (0, 1, 2)";
159
+                $query = \OCP\DB::prepare($statement);
160
+                $r = $query->execute();
161
+                $result = array_merge($result, $r->fetchAll());
162
+            }
163
+        }
164
+
165
+        return $result;
166
+    }
167
+
168
+    /**
169
+     * get the UID of the owner of the file and the path to the file relative to
170
+     * owners files folder
171
+     *
172
+     * @param $filename
173
+     * @return array
174
+     * @throws \OC\User\NoUserException
175
+     */
176
+    public static function getUidAndFilename($filename) {
177
+        $uid = Filesystem::getOwner($filename);
178
+        $userManager = \OC::$server->getUserManager();
179
+        // if the user with the UID doesn't exists, e.g. because the UID points
180
+        // to a remote user with a federated cloud ID we use the current logged-in
181
+        // user. We need a valid local user to create the share
182
+        if (!$userManager->userExists($uid)) {
183
+            $uid = User::getUser();
184
+        }
185
+        Filesystem::initMountPoints($uid);
186
+        if ( $uid != User::getUser() ) {
187
+            $info = Filesystem::getFileInfo($filename);
188
+            $ownerView = new View('/'.$uid.'/files');
189
+            try {
190
+                $filename = $ownerView->getPath($info['fileid']);
191
+            } catch (NotFoundException $e) {
192
+                $filename = null;
193
+            }
194
+        }
195
+        return [$uid, $filename];
196
+    }
197
+
198
+    /**
199
+     * Format a path to be relative to the /user/files/ directory
200
+     * @param string $path the absolute path
201
+     * @return string e.g. turns '/admin/files/test.txt' into 'test.txt'
202
+     */
203
+    public static function stripUserFilesPath($path) {
204
+        $trimmed = ltrim($path, '/');
205
+        $split = explode('/', $trimmed);
206
+
207
+        // it is not a file relative to data/user/files
208
+        if (count($split) < 3 || $split[1] !== 'files') {
209
+            return false;
210
+        }
211
+
212
+        $sliced = array_slice($split, 2);
213
+        $relPath = implode('/', $sliced);
214
+
215
+        return $relPath;
216
+    }
217
+
218
+    /**
219
+     * check if file name already exists and generate unique target
220
+     *
221
+     * @param string $path
222
+     * @param array $excludeList
223
+     * @param View $view
224
+     * @return string $path
225
+     */
226
+    public static function generateUniqueTarget($path, $excludeList, $view) {
227
+        $pathinfo = pathinfo($path);
228
+        $ext = (isset($pathinfo['extension'])) ? '.'.$pathinfo['extension'] : '';
229
+        $name = $pathinfo['filename'];
230
+        $dir = $pathinfo['dirname'];
231
+        $i = 2;
232
+        while ($view->file_exists($path) || in_array($path, $excludeList)) {
233
+            $path = Filesystem::normalizePath($dir . '/' . $name . ' ('.$i.')' . $ext);
234
+            $i++;
235
+        }
236
+
237
+        return $path;
238
+    }
239
+
240
+    /**
241
+     * get default share folder
242
+     *
243
+     * @param \OC\Files\View
244
+     * @return string
245
+     */
246
+    public static function getShareFolder($view = null) {
247
+        if ($view === null) {
248
+            $view = Filesystem::getView();
249
+        }
250
+        $shareFolder = \OC::$server->getConfig()->getSystemValue('share_folder', '/');
251
+        $shareFolder = Filesystem::normalizePath($shareFolder);
252
+
253
+        if (!$view->file_exists($shareFolder)) {
254
+            $dir = '';
255
+            $subdirs = explode('/', $shareFolder);
256
+            foreach ($subdirs as $subdir) {
257
+                $dir = $dir . '/' . $subdir;
258
+                if (!$view->is_dir($dir)) {
259
+                    $view->mkdir($dir);
260
+                }
261
+            }
262
+        }
263
+
264
+        return $shareFolder;
265
+
266
+    }
267
+
268
+    /**
269
+     * set default share folder
270
+     *
271
+     * @param string $shareFolder
272
+     */
273
+    public static function setShareFolder($shareFolder) {
274
+        \OC::$server->getConfig()->setSystemValue('share_folder', $shareFolder);
275
+    }
276 276
 
277 277
 }
Please login to merge, or discard this patch.
apps/files_sharing/lib/DeleteOrphanedSharesJob.php 1 patch
Indentation   +27 added lines, -27 removed lines patch added patch discarded remove patch
@@ -31,36 +31,36 @@
 block discarded – undo
31 31
  */
32 32
 class DeleteOrphanedSharesJob extends TimedJob {
33 33
 
34
-	/**
35
-	 * Default interval in minutes
36
-	 *
37
-	 * @var int $defaultIntervalMin
38
-	 **/
39
-	protected $defaultIntervalMin = 15;
34
+    /**
35
+     * Default interval in minutes
36
+     *
37
+     * @var int $defaultIntervalMin
38
+     **/
39
+    protected $defaultIntervalMin = 15;
40 40
 
41
-	/**
42
-	 * sets the correct interval for this timed job
43
-	 */
44
-	public function __construct(){
45
-		$this->interval = $this->defaultIntervalMin * 60;
46
-	}
41
+    /**
42
+     * sets the correct interval for this timed job
43
+     */
44
+    public function __construct(){
45
+        $this->interval = $this->defaultIntervalMin * 60;
46
+    }
47 47
 
48
-	/**
49
-	 * Makes the background job do its work
50
-	 *
51
-	 * @param array $argument unused argument
52
-	 */
53
-	public function run($argument) {
54
-		$connection = \OC::$server->getDatabaseConnection();
55
-		$logger = \OC::$server->getLogger();
48
+    /**
49
+     * Makes the background job do its work
50
+     *
51
+     * @param array $argument unused argument
52
+     */
53
+    public function run($argument) {
54
+        $connection = \OC::$server->getDatabaseConnection();
55
+        $logger = \OC::$server->getLogger();
56 56
 
57
-		$sql =
58
-			'DELETE FROM `*PREFIX*share` ' .
59
-			'WHERE `item_type` in (\'file\', \'folder\') ' .
60
-			'AND NOT EXISTS (SELECT `fileid` FROM `*PREFIX*filecache` WHERE `file_source` = `fileid`)';
57
+        $sql =
58
+            'DELETE FROM `*PREFIX*share` ' .
59
+            'WHERE `item_type` in (\'file\', \'folder\') ' .
60
+            'AND NOT EXISTS (SELECT `fileid` FROM `*PREFIX*filecache` WHERE `file_source` = `fileid`)';
61 61
 
62
-		$deletedEntries = $connection->executeUpdate($sql);
63
-		$logger->debug("$deletedEntries orphaned share(s) deleted", ['app' => 'DeleteOrphanedSharesJob']);
64
-	}
62
+        $deletedEntries = $connection->executeUpdate($sql);
63
+        $logger->debug("$deletedEntries orphaned share(s) deleted", ['app' => 'DeleteOrphanedSharesJob']);
64
+    }
65 65
 
66 66
 }
Please login to merge, or discard this patch.
apps/files_sharing/lib/Middleware/OCSShareAPIMiddleware.php 1 patch
Indentation   +35 added lines, -35 removed lines patch added patch discarded remove patch
@@ -10,43 +10,43 @@
 block discarded – undo
10 10
 use OCP\Share\IManager;
11 11
 
12 12
 class OCSShareAPIMiddleware extends Middleware {
13
-	/** @var IManager */
14
-	private $shareManager;
15
-	/** @var IL10N */
16
-	private $l;
13
+    /** @var IManager */
14
+    private $shareManager;
15
+    /** @var IL10N */
16
+    private $l;
17 17
 
18
-	public function __construct(IManager $shareManager,
19
-								IL10N $l) {
20
-		$this->shareManager = $shareManager;
21
-		$this->l = $l;
22
-	}
18
+    public function __construct(IManager $shareManager,
19
+                                IL10N $l) {
20
+        $this->shareManager = $shareManager;
21
+        $this->l = $l;
22
+    }
23 23
 
24
-	/**
25
-	 * @param \OCP\AppFramework\Controller $controller
26
-	 * @param string $methodName
27
-	 *
28
-	 * @throws OCSNotFoundException
29
-	 */
30
-	public function beforeController($controller, $methodName) {
31
-		if ($controller instanceof ShareAPIController) {
32
-			if (!$this->shareManager->shareApiEnabled()) {
33
-				throw new OCSNotFoundException($this->l->t('Share API is disabled'));
34
-			}
35
-		}
36
-	}
24
+    /**
25
+     * @param \OCP\AppFramework\Controller $controller
26
+     * @param string $methodName
27
+     *
28
+     * @throws OCSNotFoundException
29
+     */
30
+    public function beforeController($controller, $methodName) {
31
+        if ($controller instanceof ShareAPIController) {
32
+            if (!$this->shareManager->shareApiEnabled()) {
33
+                throw new OCSNotFoundException($this->l->t('Share API is disabled'));
34
+            }
35
+        }
36
+    }
37 37
 
38
-	/**
39
-	 * @param \OCP\AppFramework\Controller $controller
40
-	 * @param string $methodName
41
-	 * @param Response $response
42
-	 * @return Response
43
-	 */
44
-	public function afterController($controller, $methodName, Response $response) {
45
-		if ($controller instanceof ShareAPIController) {
46
-			/** @var ShareAPIController $controller */
47
-			$controller->cleanup();
48
-		}
38
+    /**
39
+     * @param \OCP\AppFramework\Controller $controller
40
+     * @param string $methodName
41
+     * @param Response $response
42
+     * @return Response
43
+     */
44
+    public function afterController($controller, $methodName, Response $response) {
45
+        if ($controller instanceof ShareAPIController) {
46
+            /** @var ShareAPIController $controller */
47
+            $controller->cleanup();
48
+        }
49 49
 
50
-		return $response;
51
-	}
50
+        return $response;
51
+    }
52 52
 }
Please login to merge, or discard this patch.
apps/files_sharing/lib/Middleware/SharingCheckMiddleware.php 1 patch
Indentation   +126 added lines, -126 removed lines patch added patch discarded remove patch
@@ -45,20 +45,20 @@  discard block
 block discarded – undo
45 45
  */
46 46
 class SharingCheckMiddleware extends Middleware {
47 47
 
48
-	/** @var string */
49
-	protected $appName;
50
-	/** @var IConfig */
51
-	protected $config;
52
-	/** @var IAppManager */
53
-	protected $appManager;
54
-	/** @var IControllerMethodReflector */
55
-	protected $reflector;
56
-	/** @var IManager */
57
-	protected $shareManager;
58
-	/** @var IRequest */
59
-	protected $request;
60
-
61
-	/***
48
+    /** @var string */
49
+    protected $appName;
50
+    /** @var IConfig */
51
+    protected $config;
52
+    /** @var IAppManager */
53
+    protected $appManager;
54
+    /** @var IControllerMethodReflector */
55
+    protected $reflector;
56
+    /** @var IManager */
57
+    protected $shareManager;
58
+    /** @var IRequest */
59
+    protected $request;
60
+
61
+    /***
62 62
 	 * @param string $appName
63 63
 	 * @param IConfig $config
64 64
 	 * @param IAppManager $appManager
@@ -66,117 +66,117 @@  discard block
 block discarded – undo
66 66
 	 * @param IManager $shareManager
67 67
 	 * @param IRequest $request
68 68
 	 */
69
-	public function __construct($appName,
70
-								IConfig $config,
71
-								IAppManager $appManager,
72
-								IControllerMethodReflector $reflector,
73
-								IManager $shareManager,
74
-								IRequest $request
75
-								) {
76
-		$this->appName = $appName;
77
-		$this->config = $config;
78
-		$this->appManager = $appManager;
79
-		$this->reflector = $reflector;
80
-		$this->shareManager = $shareManager;
81
-		$this->request = $request;
82
-	}
83
-
84
-	/**
85
-	 * Check if sharing is enabled before the controllers is executed
86
-	 *
87
-	 * @param \OCP\AppFramework\Controller $controller
88
-	 * @param string $methodName
89
-	 * @throws NotFoundException
90
-	 * @throws S2SException
91
-	 */
92
-	public function beforeController($controller, $methodName) {
93
-		if(!$this->isSharingEnabled()) {
94
-			throw new NotFoundException('Sharing is disabled.');
95
-		}
96
-
97
-		if ($controller instanceof ExternalSharesController &&
98
-			!$this->externalSharesChecks()) {
99
-			throw new S2SException('Federated sharing not allowed');
100
-		} else if ($controller instanceof ShareController) {
101
-			$token = $this->request->getParam('token');
102
-			$share = $this->shareManager->getShareByToken($token);
103
-			if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK
104
-				&& !$this->isLinkSharingEnabled()) {
105
-				throw new NotFoundException('Link sharing is disabled');
106
-			}
107
-		}
108
-	}
109
-
110
-	/**
111
-	 * Return 404 page in case of a not found exception
112
-	 *
113
-	 * @param \OCP\AppFramework\Controller $controller
114
-	 * @param string $methodName
115
-	 * @param \Exception $exception
116
-	 * @return NotFoundResponse
117
-	 * @throws \Exception
118
-	 */
119
-	public function afterException($controller, $methodName, \Exception $exception) {
120
-		if(is_a($exception, '\OCP\Files\NotFoundException')) {
121
-			return new NotFoundResponse();
122
-		}
123
-
124
-		if (is_a($exception, '\OCA\Files_Sharing\Exceptions\S2SException')) {
125
-			return new JSONResponse($exception->getMessage(), 405);
126
-		}
127
-
128
-		throw $exception;
129
-	}
130
-
131
-	/**
132
-	 * Checks for externalshares controller
133
-	 * @return bool
134
-	 */
135
-	private function externalSharesChecks() {
136
-
137
-		if (!$this->reflector->hasAnnotation('NoIncomingFederatedSharingRequired') &&
138
-			$this->config->getAppValue('files_sharing', 'incoming_server2server_share_enabled', 'yes') !== 'yes') {
139
-			return false;
140
-		}
141
-
142
-		if (!$this->reflector->hasAnnotation('NoOutgoingFederatedSharingRequired') &&
143
-		    $this->config->getAppValue('files_sharing', 'outgoing_server2server_share_enabled', 'yes') !== 'yes') {
144
-			return false;
145
-		}
146
-
147
-		return true;
148
-	}
149
-
150
-	/**
151
-	 * Check whether sharing is enabled
152
-	 * @return bool
153
-	 */
154
-	private function isSharingEnabled() {
155
-		// FIXME: This check is done here since the route is globally defined and not inside the files_sharing app
156
-		// Check whether the sharing application is enabled
157
-		if(!$this->appManager->isEnabledForUser($this->appName)) {
158
-			return false;
159
-		}
160
-
161
-		return true;
162
-	}
163
-
164
-	/**
165
-	 * Check if link sharing is allowed
166
-	 * @return bool
167
-	 */
168
-	private function isLinkSharingEnabled() {
169
-		// Check if the shareAPI is enabled
170
-		if ($this->config->getAppValue('core', 'shareapi_enabled', 'yes') !== 'yes') {
171
-			return false;
172
-		}
173
-
174
-		// Check whether public sharing is enabled
175
-		if($this->config->getAppValue('core', 'shareapi_allow_links', 'yes') !== 'yes') {
176
-			return false;
177
-		}
178
-
179
-		return true;
180
-	}
69
+    public function __construct($appName,
70
+                                IConfig $config,
71
+                                IAppManager $appManager,
72
+                                IControllerMethodReflector $reflector,
73
+                                IManager $shareManager,
74
+                                IRequest $request
75
+                                ) {
76
+        $this->appName = $appName;
77
+        $this->config = $config;
78
+        $this->appManager = $appManager;
79
+        $this->reflector = $reflector;
80
+        $this->shareManager = $shareManager;
81
+        $this->request = $request;
82
+    }
83
+
84
+    /**
85
+     * Check if sharing is enabled before the controllers is executed
86
+     *
87
+     * @param \OCP\AppFramework\Controller $controller
88
+     * @param string $methodName
89
+     * @throws NotFoundException
90
+     * @throws S2SException
91
+     */
92
+    public function beforeController($controller, $methodName) {
93
+        if(!$this->isSharingEnabled()) {
94
+            throw new NotFoundException('Sharing is disabled.');
95
+        }
96
+
97
+        if ($controller instanceof ExternalSharesController &&
98
+            !$this->externalSharesChecks()) {
99
+            throw new S2SException('Federated sharing not allowed');
100
+        } else if ($controller instanceof ShareController) {
101
+            $token = $this->request->getParam('token');
102
+            $share = $this->shareManager->getShareByToken($token);
103
+            if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK
104
+                && !$this->isLinkSharingEnabled()) {
105
+                throw new NotFoundException('Link sharing is disabled');
106
+            }
107
+        }
108
+    }
109
+
110
+    /**
111
+     * Return 404 page in case of a not found exception
112
+     *
113
+     * @param \OCP\AppFramework\Controller $controller
114
+     * @param string $methodName
115
+     * @param \Exception $exception
116
+     * @return NotFoundResponse
117
+     * @throws \Exception
118
+     */
119
+    public function afterException($controller, $methodName, \Exception $exception) {
120
+        if(is_a($exception, '\OCP\Files\NotFoundException')) {
121
+            return new NotFoundResponse();
122
+        }
123
+
124
+        if (is_a($exception, '\OCA\Files_Sharing\Exceptions\S2SException')) {
125
+            return new JSONResponse($exception->getMessage(), 405);
126
+        }
127
+
128
+        throw $exception;
129
+    }
130
+
131
+    /**
132
+     * Checks for externalshares controller
133
+     * @return bool
134
+     */
135
+    private function externalSharesChecks() {
136
+
137
+        if (!$this->reflector->hasAnnotation('NoIncomingFederatedSharingRequired') &&
138
+            $this->config->getAppValue('files_sharing', 'incoming_server2server_share_enabled', 'yes') !== 'yes') {
139
+            return false;
140
+        }
141
+
142
+        if (!$this->reflector->hasAnnotation('NoOutgoingFederatedSharingRequired') &&
143
+            $this->config->getAppValue('files_sharing', 'outgoing_server2server_share_enabled', 'yes') !== 'yes') {
144
+            return false;
145
+        }
146
+
147
+        return true;
148
+    }
149
+
150
+    /**
151
+     * Check whether sharing is enabled
152
+     * @return bool
153
+     */
154
+    private function isSharingEnabled() {
155
+        // FIXME: This check is done here since the route is globally defined and not inside the files_sharing app
156
+        // Check whether the sharing application is enabled
157
+        if(!$this->appManager->isEnabledForUser($this->appName)) {
158
+            return false;
159
+        }
160
+
161
+        return true;
162
+    }
163
+
164
+    /**
165
+     * Check if link sharing is allowed
166
+     * @return bool
167
+     */
168
+    private function isLinkSharingEnabled() {
169
+        // Check if the shareAPI is enabled
170
+        if ($this->config->getAppValue('core', 'shareapi_enabled', 'yes') !== 'yes') {
171
+            return false;
172
+        }
173
+
174
+        // Check whether public sharing is enabled
175
+        if($this->config->getAppValue('core', 'shareapi_allow_links', 'yes') !== 'yes') {
176
+            return false;
177
+        }
178
+
179
+        return true;
180
+    }
181 181
 
182 182
 }
Please login to merge, or discard this patch.
apps/files_sharing/lib/ShareBackend/File.php 1 patch
Indentation   +204 added lines, -204 removed lines patch added patch discarded remove patch
@@ -37,208 +37,208 @@
 block discarded – undo
37 37
 
38 38
 class File implements \OCP\Share_Backend_File_Dependent {
39 39
 
40
-	const FORMAT_SHARED_STORAGE = 0;
41
-	const FORMAT_GET_FOLDER_CONTENTS = 1;
42
-	const FORMAT_FILE_APP_ROOT = 2;
43
-	const FORMAT_OPENDIR = 3;
44
-	const FORMAT_GET_ALL = 4;
45
-	const FORMAT_PERMISSIONS = 5;
46
-	const FORMAT_TARGET_NAMES = 6;
47
-
48
-	private $path;
49
-
50
-	/** @var FederatedShareProvider */
51
-	private $federatedShareProvider;
52
-
53
-	public function __construct(FederatedShareProvider $federatedShareProvider = null) {
54
-		if ($federatedShareProvider) {
55
-			$this->federatedShareProvider = $federatedShareProvider;
56
-		} else {
57
-			$federatedSharingApp = new \OCA\FederatedFileSharing\AppInfo\Application();
58
-			$this->federatedShareProvider = $federatedSharingApp->getFederatedShareProvider();
59
-		}
60
-	}
61
-
62
-	public function isValidSource($itemSource, $uidOwner) {
63
-		try {
64
-			$path = \OC\Files\Filesystem::getPath($itemSource);
65
-			// FIXME: attributes should not be set here,
66
-			// keeping this pattern for now to avoid unexpected
67
-			// regressions
68
-			$this->path = \OC\Files\Filesystem::normalizePath(basename($path));
69
-			return true;
70
-		} catch (\OCP\Files\NotFoundException $e) {
71
-			return false;
72
-		}
73
-	}
74
-
75
-	public function getFilePath($itemSource, $uidOwner) {
76
-		if (isset($this->path)) {
77
-			$path = $this->path;
78
-			$this->path = null;
79
-			return $path;
80
-		} else {
81
-			try {
82
-				$path = \OC\Files\Filesystem::getPath($itemSource);
83
-				return $path;
84
-			} catch (\OCP\Files\NotFoundException $e) {
85
-				return false;
86
-			}
87
-		}
88
-	}
89
-
90
-	/**
91
-	 * create unique target
92
-	 * @param string $filePath
93
-	 * @param string $shareWith
94
-	 * @param array $exclude (optional)
95
-	 * @return string
96
-	 */
97
-	public function generateTarget($filePath, $shareWith, $exclude = null) {
98
-		$shareFolder = \OCA\Files_Sharing\Helper::getShareFolder();
99
-		$target = \OC\Files\Filesystem::normalizePath($shareFolder . '/' . basename($filePath));
100
-
101
-		// for group shares we return the target right away
102
-		if ($shareWith === false) {
103
-			return $target;
104
-		}
105
-
106
-		\OC\Files\Filesystem::initMountPoints($shareWith);
107
-		$view = new \OC\Files\View('/' . $shareWith . '/files');
108
-
109
-		if (!$view->is_dir($shareFolder)) {
110
-			$dir = '';
111
-			$subdirs = explode('/', $shareFolder);
112
-			foreach ($subdirs as $subdir) {
113
-				$dir = $dir . '/' . $subdir;
114
-				if (!$view->is_dir($dir)) {
115
-					$view->mkdir($dir);
116
-				}
117
-			}
118
-		}
119
-
120
-		$excludeList = (is_array($exclude)) ? $exclude : array();
121
-
122
-		return \OCA\Files_Sharing\Helper::generateUniqueTarget($target, $excludeList, $view);
123
-	}
124
-
125
-	public function formatItems($items, $format, $parameters = null) {
126
-		if ($format == self::FORMAT_SHARED_STORAGE) {
127
-			// Only 1 item should come through for this format call
128
-			$item = array_shift($items);
129
-			return array(
130
-				'parent' => $item['parent'],
131
-				'path' => $item['path'],
132
-				'storage' => $item['storage'],
133
-				'permissions' => $item['permissions'],
134
-				'uid_owner' => $item['uid_owner'],
135
-			);
136
-		} else if ($format == self::FORMAT_GET_FOLDER_CONTENTS) {
137
-			$files = array();
138
-			foreach ($items as $item) {
139
-				$file = array();
140
-				$file['fileid'] = $item['file_source'];
141
-				$file['storage'] = $item['storage'];
142
-				$file['path'] = $item['file_target'];
143
-				$file['parent'] = $item['file_parent'];
144
-				$file['name'] = basename($item['file_target']);
145
-				$file['mimetype'] = $item['mimetype'];
146
-				$file['mimepart'] = $item['mimepart'];
147
-				$file['mtime'] = $item['mtime'];
148
-				$file['encrypted'] = $item['encrypted'];
149
-				$file['etag'] = $item['etag'];
150
-				$file['uid_owner'] = $item['uid_owner'];
151
-				$file['displayname_owner'] = $item['displayname_owner'];
152
-
153
-				$storage = \OC\Files\Filesystem::getStorage('/');
154
-				$cache = $storage->getCache();
155
-				$file['size'] = $item['size'];
156
-				$files[] = $file;
157
-			}
158
-			return $files;
159
-		} else if ($format == self::FORMAT_OPENDIR) {
160
-			$files = array();
161
-			foreach ($items as $item) {
162
-				$files[] = basename($item['file_target']);
163
-			}
164
-			return $files;
165
-		} else if ($format == self::FORMAT_GET_ALL) {
166
-			$ids = array();
167
-			foreach ($items as $item) {
168
-				$ids[] = $item['file_source'];
169
-			}
170
-			return $ids;
171
-		} else if ($format === self::FORMAT_PERMISSIONS) {
172
-			$filePermissions = array();
173
-			foreach ($items as $item) {
174
-				$filePermissions[$item['file_source']] = $item['permissions'];
175
-			}
176
-			return $filePermissions;
177
-		} else if ($format === self::FORMAT_TARGET_NAMES) {
178
-			$targets = array();
179
-			foreach ($items as $item) {
180
-				$targets[] = $item['file_target'];
181
-			}
182
-			return $targets;
183
-		}
184
-		return array();
185
-	}
186
-
187
-	/**
188
-	 * check if server2server share is enabled
189
-	 *
190
-	 * @param int $shareType
191
-	 * @return boolean
192
-	 */
193
-	public function isShareTypeAllowed($shareType) {
194
-		if ($shareType === \OCP\Share::SHARE_TYPE_REMOTE) {
195
-			return $this->federatedShareProvider->isOutgoingServer2serverShareEnabled();
196
-		}
197
-
198
-		return true;
199
-	}
200
-
201
-	/**
202
-	 * resolve reshares to return the correct source item
203
-	 * @param array $source
204
-	 * @return array source item
205
-	 */
206
-	protected static function resolveReshares($source) {
207
-		if (isset($source['parent'])) {
208
-			$parent = $source['parent'];
209
-			while (isset($parent)) {
210
-				$query = \OCP\DB::prepare('SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1);
211
-				$item = $query->execute(array($parent))->fetchRow();
212
-				if (isset($item['parent'])) {
213
-					$parent = $item['parent'];
214
-				} else {
215
-					$fileOwner = $item['uid_owner'];
216
-					break;
217
-				}
218
-			}
219
-		} else {
220
-			$fileOwner = $source['uid_owner'];
221
-		}
222
-		if (isset($fileOwner)) {
223
-			$source['fileOwner'] = $fileOwner;
224
-		} else {
225
-			\OCP\Util::writeLog('files_sharing', "No owner found for reshare", \OCP\Util::ERROR);
226
-		}
227
-
228
-		return $source;
229
-	}
230
-
231
-	/**
232
-	 * @param string $target
233
-	 * @param array $share
234
-	 * @return array|false source item
235
-	 */
236
-	public static function getSource($target, $share) {
237
-		if ($share['item_type'] === 'folder' && $target !== '') {
238
-			// note: in case of ext storage mount points the path might be empty
239
-			// which would cause a leading slash to appear
240
-			$share['path'] = ltrim($share['path'] . '/' . $target, '/');
241
-		}
242
-		return self::resolveReshares($share);
243
-	}
40
+    const FORMAT_SHARED_STORAGE = 0;
41
+    const FORMAT_GET_FOLDER_CONTENTS = 1;
42
+    const FORMAT_FILE_APP_ROOT = 2;
43
+    const FORMAT_OPENDIR = 3;
44
+    const FORMAT_GET_ALL = 4;
45
+    const FORMAT_PERMISSIONS = 5;
46
+    const FORMAT_TARGET_NAMES = 6;
47
+
48
+    private $path;
49
+
50
+    /** @var FederatedShareProvider */
51
+    private $federatedShareProvider;
52
+
53
+    public function __construct(FederatedShareProvider $federatedShareProvider = null) {
54
+        if ($federatedShareProvider) {
55
+            $this->federatedShareProvider = $federatedShareProvider;
56
+        } else {
57
+            $federatedSharingApp = new \OCA\FederatedFileSharing\AppInfo\Application();
58
+            $this->federatedShareProvider = $federatedSharingApp->getFederatedShareProvider();
59
+        }
60
+    }
61
+
62
+    public function isValidSource($itemSource, $uidOwner) {
63
+        try {
64
+            $path = \OC\Files\Filesystem::getPath($itemSource);
65
+            // FIXME: attributes should not be set here,
66
+            // keeping this pattern for now to avoid unexpected
67
+            // regressions
68
+            $this->path = \OC\Files\Filesystem::normalizePath(basename($path));
69
+            return true;
70
+        } catch (\OCP\Files\NotFoundException $e) {
71
+            return false;
72
+        }
73
+    }
74
+
75
+    public function getFilePath($itemSource, $uidOwner) {
76
+        if (isset($this->path)) {
77
+            $path = $this->path;
78
+            $this->path = null;
79
+            return $path;
80
+        } else {
81
+            try {
82
+                $path = \OC\Files\Filesystem::getPath($itemSource);
83
+                return $path;
84
+            } catch (\OCP\Files\NotFoundException $e) {
85
+                return false;
86
+            }
87
+        }
88
+    }
89
+
90
+    /**
91
+     * create unique target
92
+     * @param string $filePath
93
+     * @param string $shareWith
94
+     * @param array $exclude (optional)
95
+     * @return string
96
+     */
97
+    public function generateTarget($filePath, $shareWith, $exclude = null) {
98
+        $shareFolder = \OCA\Files_Sharing\Helper::getShareFolder();
99
+        $target = \OC\Files\Filesystem::normalizePath($shareFolder . '/' . basename($filePath));
100
+
101
+        // for group shares we return the target right away
102
+        if ($shareWith === false) {
103
+            return $target;
104
+        }
105
+
106
+        \OC\Files\Filesystem::initMountPoints($shareWith);
107
+        $view = new \OC\Files\View('/' . $shareWith . '/files');
108
+
109
+        if (!$view->is_dir($shareFolder)) {
110
+            $dir = '';
111
+            $subdirs = explode('/', $shareFolder);
112
+            foreach ($subdirs as $subdir) {
113
+                $dir = $dir . '/' . $subdir;
114
+                if (!$view->is_dir($dir)) {
115
+                    $view->mkdir($dir);
116
+                }
117
+            }
118
+        }
119
+
120
+        $excludeList = (is_array($exclude)) ? $exclude : array();
121
+
122
+        return \OCA\Files_Sharing\Helper::generateUniqueTarget($target, $excludeList, $view);
123
+    }
124
+
125
+    public function formatItems($items, $format, $parameters = null) {
126
+        if ($format == self::FORMAT_SHARED_STORAGE) {
127
+            // Only 1 item should come through for this format call
128
+            $item = array_shift($items);
129
+            return array(
130
+                'parent' => $item['parent'],
131
+                'path' => $item['path'],
132
+                'storage' => $item['storage'],
133
+                'permissions' => $item['permissions'],
134
+                'uid_owner' => $item['uid_owner'],
135
+            );
136
+        } else if ($format == self::FORMAT_GET_FOLDER_CONTENTS) {
137
+            $files = array();
138
+            foreach ($items as $item) {
139
+                $file = array();
140
+                $file['fileid'] = $item['file_source'];
141
+                $file['storage'] = $item['storage'];
142
+                $file['path'] = $item['file_target'];
143
+                $file['parent'] = $item['file_parent'];
144
+                $file['name'] = basename($item['file_target']);
145
+                $file['mimetype'] = $item['mimetype'];
146
+                $file['mimepart'] = $item['mimepart'];
147
+                $file['mtime'] = $item['mtime'];
148
+                $file['encrypted'] = $item['encrypted'];
149
+                $file['etag'] = $item['etag'];
150
+                $file['uid_owner'] = $item['uid_owner'];
151
+                $file['displayname_owner'] = $item['displayname_owner'];
152
+
153
+                $storage = \OC\Files\Filesystem::getStorage('/');
154
+                $cache = $storage->getCache();
155
+                $file['size'] = $item['size'];
156
+                $files[] = $file;
157
+            }
158
+            return $files;
159
+        } else if ($format == self::FORMAT_OPENDIR) {
160
+            $files = array();
161
+            foreach ($items as $item) {
162
+                $files[] = basename($item['file_target']);
163
+            }
164
+            return $files;
165
+        } else if ($format == self::FORMAT_GET_ALL) {
166
+            $ids = array();
167
+            foreach ($items as $item) {
168
+                $ids[] = $item['file_source'];
169
+            }
170
+            return $ids;
171
+        } else if ($format === self::FORMAT_PERMISSIONS) {
172
+            $filePermissions = array();
173
+            foreach ($items as $item) {
174
+                $filePermissions[$item['file_source']] = $item['permissions'];
175
+            }
176
+            return $filePermissions;
177
+        } else if ($format === self::FORMAT_TARGET_NAMES) {
178
+            $targets = array();
179
+            foreach ($items as $item) {
180
+                $targets[] = $item['file_target'];
181
+            }
182
+            return $targets;
183
+        }
184
+        return array();
185
+    }
186
+
187
+    /**
188
+     * check if server2server share is enabled
189
+     *
190
+     * @param int $shareType
191
+     * @return boolean
192
+     */
193
+    public function isShareTypeAllowed($shareType) {
194
+        if ($shareType === \OCP\Share::SHARE_TYPE_REMOTE) {
195
+            return $this->federatedShareProvider->isOutgoingServer2serverShareEnabled();
196
+        }
197
+
198
+        return true;
199
+    }
200
+
201
+    /**
202
+     * resolve reshares to return the correct source item
203
+     * @param array $source
204
+     * @return array source item
205
+     */
206
+    protected static function resolveReshares($source) {
207
+        if (isset($source['parent'])) {
208
+            $parent = $source['parent'];
209
+            while (isset($parent)) {
210
+                $query = \OCP\DB::prepare('SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1);
211
+                $item = $query->execute(array($parent))->fetchRow();
212
+                if (isset($item['parent'])) {
213
+                    $parent = $item['parent'];
214
+                } else {
215
+                    $fileOwner = $item['uid_owner'];
216
+                    break;
217
+                }
218
+            }
219
+        } else {
220
+            $fileOwner = $source['uid_owner'];
221
+        }
222
+        if (isset($fileOwner)) {
223
+            $source['fileOwner'] = $fileOwner;
224
+        } else {
225
+            \OCP\Util::writeLog('files_sharing', "No owner found for reshare", \OCP\Util::ERROR);
226
+        }
227
+
228
+        return $source;
229
+    }
230
+
231
+    /**
232
+     * @param string $target
233
+     * @param array $share
234
+     * @return array|false source item
235
+     */
236
+    public static function getSource($target, $share) {
237
+        if ($share['item_type'] === 'folder' && $target !== '') {
238
+            // note: in case of ext storage mount points the path might be empty
239
+            // which would cause a leading slash to appear
240
+            $share['path'] = ltrim($share['path'] . '/' . $target, '/');
241
+        }
242
+        return self::resolveReshares($share);
243
+    }
244 244
 }
Please login to merge, or discard this patch.
apps/files_sharing/lib/ShareBackend/Folder.php 1 patch
Indentation   +69 added lines, -69 removed lines patch added patch discarded remove patch
@@ -29,79 +29,79 @@
 block discarded – undo
29 29
 
30 30
 class Folder extends File implements \OCP\Share_Backend_Collection {
31 31
 
32
-	/**
33
-	 * get shared parents
34
-	 *
35
-	 * @param int $itemSource item source ID
36
-	 * @param string $shareWith with whom should the item be shared
37
-	 * @param string $owner owner of the item
38
-	 * @return array with shares
39
-	 */
40
-	public function getParents($itemSource, $shareWith = null, $owner = null) {
41
-		$result = array();
42
-		$parent = $this->getParentId($itemSource);
43
-		while ($parent) {
44
-			$shares = \OCP\Share::getItemSharedWithUser('folder', $parent, $shareWith, $owner);
45
-			if ($shares) {
46
-				foreach ($shares as $share) {
47
-					$name = basename($share['path']);
48
-					$share['collection']['path'] = $name;
49
-					$share['collection']['item_type'] = 'folder';
50
-					$share['file_path'] = $name;
51
-					$displayNameOwner = \OCP\User::getDisplayName($share['uid_owner']);
52
-					$displayNameShareWith = \OCP\User::getDisplayName($share['share_with']);
53
-					$share['displayname_owner'] = ($displayNameOwner) ? $displayNameOwner : $share['uid_owner'];
54
-					$share['share_with_displayname'] = ($displayNameShareWith) ? $displayNameShareWith : $share['uid_owner'];
32
+    /**
33
+     * get shared parents
34
+     *
35
+     * @param int $itemSource item source ID
36
+     * @param string $shareWith with whom should the item be shared
37
+     * @param string $owner owner of the item
38
+     * @return array with shares
39
+     */
40
+    public function getParents($itemSource, $shareWith = null, $owner = null) {
41
+        $result = array();
42
+        $parent = $this->getParentId($itemSource);
43
+        while ($parent) {
44
+            $shares = \OCP\Share::getItemSharedWithUser('folder', $parent, $shareWith, $owner);
45
+            if ($shares) {
46
+                foreach ($shares as $share) {
47
+                    $name = basename($share['path']);
48
+                    $share['collection']['path'] = $name;
49
+                    $share['collection']['item_type'] = 'folder';
50
+                    $share['file_path'] = $name;
51
+                    $displayNameOwner = \OCP\User::getDisplayName($share['uid_owner']);
52
+                    $displayNameShareWith = \OCP\User::getDisplayName($share['share_with']);
53
+                    $share['displayname_owner'] = ($displayNameOwner) ? $displayNameOwner : $share['uid_owner'];
54
+                    $share['share_with_displayname'] = ($displayNameShareWith) ? $displayNameShareWith : $share['uid_owner'];
55 55
 
56
-					$result[] = $share;
57
-				}
58
-			}
59
-			$parent = $this->getParentId($parent);
60
-		}
56
+                    $result[] = $share;
57
+                }
58
+            }
59
+            $parent = $this->getParentId($parent);
60
+        }
61 61
 
62
-		return $result;
63
-	}
62
+        return $result;
63
+    }
64 64
 
65
-	/**
66
-	 * get file cache ID of parent
67
-	 *
68
-	 * @param int $child file cache ID of child
69
-	 * @return mixed parent ID or null
70
-	 */
71
-	private function getParentId($child) {
72
-		$query = \OCP\DB::prepare('SELECT `parent` FROM `*PREFIX*filecache` WHERE `fileid` = ?');
73
-		$result = $query->execute(array($child));
74
-		$row = $result->fetchRow();
75
-		$parent = ($row) ? $row['parent'] : null;
65
+    /**
66
+     * get file cache ID of parent
67
+     *
68
+     * @param int $child file cache ID of child
69
+     * @return mixed parent ID or null
70
+     */
71
+    private function getParentId($child) {
72
+        $query = \OCP\DB::prepare('SELECT `parent` FROM `*PREFIX*filecache` WHERE `fileid` = ?');
73
+        $result = $query->execute(array($child));
74
+        $row = $result->fetchRow();
75
+        $parent = ($row) ? $row['parent'] : null;
76 76
 
77
-		return $parent;
78
-	}
77
+        return $parent;
78
+    }
79 79
 
80
-	public function getChildren($itemSource) {
81
-		$children = array();
82
-		$parents = array($itemSource);
83
-		$query = \OCP\DB::prepare('SELECT `id` FROM `*PREFIX*mimetypes` WHERE `mimetype` = ?');
84
-		$result = $query->execute(array('httpd/unix-directory'));
85
-		if ($row = $result->fetchRow()) {
86
-			$mimetype = $row['id'];
87
-		} else {
88
-			$mimetype = -1;
89
-		}
90
-		while (!empty($parents)) {
91
-			$parents = "'".implode("','", $parents)."'";
92
-			$query = \OCP\DB::prepare('SELECT `fileid`, `name`, `mimetype` FROM `*PREFIX*filecache`'
93
-				.' WHERE `parent` IN ('.$parents.')');
94
-			$result = $query->execute();
95
-			$parents = array();
96
-			while ($file = $result->fetchRow()) {
97
-				$children[] = array('source' => $file['fileid'], 'file_path' => $file['name']);
98
-				// If a child folder is found look inside it
99
-				if ($file['mimetype'] == $mimetype) {
100
-					$parents[] = $file['fileid'];
101
-				}
102
-			}
103
-		}
104
-		return $children;
105
-	}
80
+    public function getChildren($itemSource) {
81
+        $children = array();
82
+        $parents = array($itemSource);
83
+        $query = \OCP\DB::prepare('SELECT `id` FROM `*PREFIX*mimetypes` WHERE `mimetype` = ?');
84
+        $result = $query->execute(array('httpd/unix-directory'));
85
+        if ($row = $result->fetchRow()) {
86
+            $mimetype = $row['id'];
87
+        } else {
88
+            $mimetype = -1;
89
+        }
90
+        while (!empty($parents)) {
91
+            $parents = "'".implode("','", $parents)."'";
92
+            $query = \OCP\DB::prepare('SELECT `fileid`, `name`, `mimetype` FROM `*PREFIX*filecache`'
93
+                .' WHERE `parent` IN ('.$parents.')');
94
+            $result = $query->execute();
95
+            $parents = array();
96
+            while ($file = $result->fetchRow()) {
97
+                $children[] = array('source' => $file['fileid'], 'file_path' => $file['name']);
98
+                // If a child folder is found look inside it
99
+                if ($file['mimetype'] == $mimetype) {
100
+                    $parents[] = $file['fileid'];
101
+                }
102
+            }
103
+        }
104
+        return $children;
105
+    }
106 106
 
107 107
 }
Please login to merge, or discard this patch.
apps/files_sharing/public.php 1 patch
Indentation   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -28,9 +28,9 @@
 block discarded – undo
28 28
 $route = isset($_GET['download']) ? 'files_sharing.sharecontroller.downloadShare' : 'files_sharing.sharecontroller.showShare';
29 29
 
30 30
 if($token !== '') {
31
-	OC_Response::redirect($urlGenerator->linkToRoute($route, array('token' => $token)));
31
+    OC_Response::redirect($urlGenerator->linkToRoute($route, array('token' => $token)));
32 32
 } else {
33
-	header('HTTP/1.0 404 Not Found');
34
-	$tmpl = new OCP\Template('', '404', 'guest');
35
-	print_unescaped($tmpl->fetchPage());
33
+    header('HTTP/1.0 404 Not Found');
34
+    $tmpl = new OCP\Template('', '404', 'guest');
35
+    print_unescaped($tmpl->fetchPage());
36 36
 }
Please login to merge, or discard this patch.
apps/provisioning_api/lib/Controller/AppConfigController.php 1 patch
Indentation   +123 added lines, -123 removed lines patch added patch discarded remove patch
@@ -31,127 +31,127 @@
 block discarded – undo
31 31
 
32 32
 class AppConfigController extends OCSController {
33 33
 
34
-	/** @var IConfig */
35
-	protected $config;
36
-
37
-	/** @var IAppConfig */
38
-	protected $appConfig;
39
-
40
-	/**
41
-	 * @param string $appName
42
-	 * @param IRequest $request
43
-	 * @param IConfig $config
44
-	 * @param IAppConfig $appConfig
45
-	 */
46
-	public function __construct($appName,
47
-								IRequest $request,
48
-								IConfig $config,
49
-								IAppConfig $appConfig) {
50
-		parent::__construct($appName, $request);
51
-		$this->config = $config;
52
-		$this->appConfig = $appConfig;
53
-	}
54
-
55
-	/**
56
-	 * @return DataResponse
57
-	 */
58
-	public function getApps() {
59
-		return new DataResponse([
60
-			'data' => $this->appConfig->getApps(),
61
-		]);
62
-	}
63
-
64
-	/**
65
-	 * @param string $app
66
-	 * @return DataResponse
67
-	 */
68
-	public function getKeys($app) {
69
-		try {
70
-			$this->verifyAppId($app);
71
-		} catch (\InvalidArgumentException $e) {
72
-			return new DataResponse(['data' => ['message' => $e->getMessage()]], Http::STATUS_FORBIDDEN);
73
-		}
74
-		return new DataResponse([
75
-			'data' => $this->config->getAppKeys($app),
76
-		]);
77
-	}
78
-
79
-	/**
80
-	 * @param string $app
81
-	 * @param string $key
82
-	 * @param string $defaultValue
83
-	 * @return DataResponse
84
-	 */
85
-	public function getValue($app, $key, $defaultValue = '') {
86
-		try {
87
-			$this->verifyAppId($app);
88
-		} catch (\InvalidArgumentException $e) {
89
-			return new DataResponse(['data' => ['message' => $e->getMessage()]], Http::STATUS_FORBIDDEN);
90
-		}
91
-		return new DataResponse([
92
-			'data' => $this->config->getAppValue($app, $key, $defaultValue),
93
-		]);
94
-	}
95
-
96
-	/**
97
-	 * @PasswordConfirmationRequired
98
-	 * @param string $app
99
-	 * @param string $key
100
-	 * @param string $value
101
-	 * @return DataResponse
102
-	 */
103
-	public function setValue($app, $key, $value) {
104
-		try {
105
-			$this->verifyAppId($app);
106
-			$this->verifyConfigKey($app, $key);
107
-		} catch (\InvalidArgumentException $e) {
108
-			return new DataResponse(['data' => ['message' => $e->getMessage()]], Http::STATUS_FORBIDDEN);
109
-		}
110
-
111
-		$this->config->setAppValue($app, $key, $value);
112
-		return new DataResponse();
113
-	}
114
-
115
-	/**
116
-	 * @PasswordConfirmationRequired
117
-	 * @param string $app
118
-	 * @param string $key
119
-	 * @return DataResponse
120
-	 */
121
-	public function deleteKey($app, $key) {
122
-		try {
123
-			$this->verifyAppId($app);
124
-			$this->verifyConfigKey($app, $key);
125
-		} catch (\InvalidArgumentException $e) {
126
-			return new DataResponse(['data' => ['message' => $e->getMessage()]], Http::STATUS_FORBIDDEN);
127
-		}
128
-
129
-		$this->config->deleteAppValue($app, $key);
130
-		return new DataResponse();
131
-	}
132
-
133
-	/**
134
-	 * @param string $app
135
-	 * @throws \InvalidArgumentException
136
-	 */
137
-	protected function verifyAppId($app) {
138
-		if (\OC_App::cleanAppId($app) !== $app) {
139
-			throw new \InvalidArgumentException('Invalid app id given');
140
-		}
141
-	}
142
-
143
-	/**
144
-	 * @param string $app
145
-	 * @param string $key
146
-	 * @throws \InvalidArgumentException
147
-	 */
148
-	protected function verifyConfigKey($app, $key) {
149
-		if (in_array($key, ['installed_version', 'enabled', 'types'])) {
150
-			throw new \InvalidArgumentException('The given key can not be set');
151
-		}
152
-
153
-		if ($app === 'core' && (strpos($key, 'public_') === 0 || strpos($key, 'remote_') === 0)) {
154
-			throw new \InvalidArgumentException('The given key can not be set');
155
-		}
156
-	}
34
+    /** @var IConfig */
35
+    protected $config;
36
+
37
+    /** @var IAppConfig */
38
+    protected $appConfig;
39
+
40
+    /**
41
+     * @param string $appName
42
+     * @param IRequest $request
43
+     * @param IConfig $config
44
+     * @param IAppConfig $appConfig
45
+     */
46
+    public function __construct($appName,
47
+                                IRequest $request,
48
+                                IConfig $config,
49
+                                IAppConfig $appConfig) {
50
+        parent::__construct($appName, $request);
51
+        $this->config = $config;
52
+        $this->appConfig = $appConfig;
53
+    }
54
+
55
+    /**
56
+     * @return DataResponse
57
+     */
58
+    public function getApps() {
59
+        return new DataResponse([
60
+            'data' => $this->appConfig->getApps(),
61
+        ]);
62
+    }
63
+
64
+    /**
65
+     * @param string $app
66
+     * @return DataResponse
67
+     */
68
+    public function getKeys($app) {
69
+        try {
70
+            $this->verifyAppId($app);
71
+        } catch (\InvalidArgumentException $e) {
72
+            return new DataResponse(['data' => ['message' => $e->getMessage()]], Http::STATUS_FORBIDDEN);
73
+        }
74
+        return new DataResponse([
75
+            'data' => $this->config->getAppKeys($app),
76
+        ]);
77
+    }
78
+
79
+    /**
80
+     * @param string $app
81
+     * @param string $key
82
+     * @param string $defaultValue
83
+     * @return DataResponse
84
+     */
85
+    public function getValue($app, $key, $defaultValue = '') {
86
+        try {
87
+            $this->verifyAppId($app);
88
+        } catch (\InvalidArgumentException $e) {
89
+            return new DataResponse(['data' => ['message' => $e->getMessage()]], Http::STATUS_FORBIDDEN);
90
+        }
91
+        return new DataResponse([
92
+            'data' => $this->config->getAppValue($app, $key, $defaultValue),
93
+        ]);
94
+    }
95
+
96
+    /**
97
+     * @PasswordConfirmationRequired
98
+     * @param string $app
99
+     * @param string $key
100
+     * @param string $value
101
+     * @return DataResponse
102
+     */
103
+    public function setValue($app, $key, $value) {
104
+        try {
105
+            $this->verifyAppId($app);
106
+            $this->verifyConfigKey($app, $key);
107
+        } catch (\InvalidArgumentException $e) {
108
+            return new DataResponse(['data' => ['message' => $e->getMessage()]], Http::STATUS_FORBIDDEN);
109
+        }
110
+
111
+        $this->config->setAppValue($app, $key, $value);
112
+        return new DataResponse();
113
+    }
114
+
115
+    /**
116
+     * @PasswordConfirmationRequired
117
+     * @param string $app
118
+     * @param string $key
119
+     * @return DataResponse
120
+     */
121
+    public function deleteKey($app, $key) {
122
+        try {
123
+            $this->verifyAppId($app);
124
+            $this->verifyConfigKey($app, $key);
125
+        } catch (\InvalidArgumentException $e) {
126
+            return new DataResponse(['data' => ['message' => $e->getMessage()]], Http::STATUS_FORBIDDEN);
127
+        }
128
+
129
+        $this->config->deleteAppValue($app, $key);
130
+        return new DataResponse();
131
+    }
132
+
133
+    /**
134
+     * @param string $app
135
+     * @throws \InvalidArgumentException
136
+     */
137
+    protected function verifyAppId($app) {
138
+        if (\OC_App::cleanAppId($app) !== $app) {
139
+            throw new \InvalidArgumentException('Invalid app id given');
140
+        }
141
+    }
142
+
143
+    /**
144
+     * @param string $app
145
+     * @param string $key
146
+     * @throws \InvalidArgumentException
147
+     */
148
+    protected function verifyConfigKey($app, $key) {
149
+        if (in_array($key, ['installed_version', 'enabled', 'types'])) {
150
+            throw new \InvalidArgumentException('The given key can not be set');
151
+        }
152
+
153
+        if ($app === 'core' && (strpos($key, 'public_') === 0 || strpos($key, 'remote_') === 0)) {
154
+            throw new \InvalidArgumentException('The given key can not be set');
155
+        }
156
+    }
157 157
 }
Please login to merge, or discard this patch.
apps/provisioning_api/lib/Middleware/Exceptions/NotSubAdminException.php 1 patch
Indentation   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -5,7 +5,7 @@
 block discarded – undo
5 5
 use OCP\AppFramework\Http;
6 6
 
7 7
 class NotSubAdminException extends \Exception {
8
-	public function __construct() {
9
-		parent::__construct('Logged in user must be at least a sub admin', Http::STATUS_FORBIDDEN);
10
-	}
8
+    public function __construct() {
9
+        parent::__construct('Logged in user must be at least a sub admin', Http::STATUS_FORBIDDEN);
10
+    }
11 11
 }
12 12
\ No newline at end of file
Please login to merge, or discard this patch.