Completed
Pull Request — master (#3590)
by Individual IT
11:38
created
apps/files_sharing/lib/SharedMount.php 1 patch
Indentation   +222 added lines, -222 removed lines patch added patch discarded remove patch
@@ -36,226 +36,226 @@
 block discarded – undo
36 36
  * Shared mount points can be moved by the user
37 37
  */
38 38
 class SharedMount extends MountPoint implements MoveableMount {
39
-	/**
40
-	 * @var \OCA\Files_Sharing\SharedStorage $storage
41
-	 */
42
-	protected $storage = null;
43
-
44
-	/**
45
-	 * @var \OC\Files\View
46
-	 */
47
-	private $recipientView;
48
-
49
-	/**
50
-	 * @var string
51
-	 */
52
-	private $user;
53
-
54
-	/** @var \OCP\Share\IShare */
55
-	private $superShare;
56
-
57
-	/** @var \OCP\Share\IShare[] */
58
-	private $groupedShares;
59
-
60
-	/**
61
-	 * @param string $storage
62
-	 * @param SharedMount[] $mountpoints
63
-	 * @param array|null $arguments
64
-	 * @param \OCP\Files\Storage\IStorageFactory $loader
65
-	 */
66
-	public function __construct($storage, array $mountpoints, $arguments = null, $loader = null) {
67
-		$this->user = $arguments['user'];
68
-		$this->recipientView = new View('/' . $this->user . '/files');
69
-
70
-		$this->superShare = $arguments['superShare'];
71
-		$this->groupedShares = $arguments['groupedShares'];
72
-
73
-		$newMountPoint = $this->verifyMountPoint($this->superShare, $mountpoints);
74
-		$absMountPoint = '/' . $this->user . '/files' . $newMountPoint;
75
-		$arguments['ownerView'] = new View('/' . $this->superShare->getShareOwner() . '/files');
76
-		parent::__construct($storage, $absMountPoint, $arguments, $loader);
77
-	}
78
-
79
-	/**
80
-	 * check if the parent folder exists otherwise move the mount point up
81
-	 *
82
-	 * @param \OCP\Share\IShare $share
83
-	 * @param SharedMount[] $mountpoints
84
-	 * @return string
85
-	 */
86
-	private function verifyMountPoint(\OCP\Share\IShare $share, array $mountpoints) {
87
-
88
-		$mountPoint = basename($share->getTarget());
89
-		$parent = dirname($share->getTarget());
90
-
91
-		if (!$this->recipientView->is_dir($parent)) {
92
-			$parent = Helper::getShareFolder($this->recipientView);
93
-		}
94
-
95
-		$newMountPoint = $this->generateUniqueTarget(
96
-			\OC\Files\Filesystem::normalizePath($parent . '/' . $mountPoint),
97
-			$this->recipientView,
98
-			$mountpoints
99
-		);
100
-
101
-		if ($newMountPoint !== $share->getTarget()) {
102
-			$this->updateFileTarget($newMountPoint, $share);
103
-		}
104
-
105
-		return $newMountPoint;
106
-	}
107
-
108
-	/**
109
-	 * update fileTarget in the database if the mount point changed
110
-	 *
111
-	 * @param string $newPath
112
-	 * @param \OCP\Share\IShare $share
113
-	 * @return bool
114
-	 */
115
-	private function updateFileTarget($newPath, &$share) {
116
-		$share->setTarget($newPath);
117
-
118
-		foreach ($this->groupedShares as $tmpShare) {
119
-			$tmpShare->setTarget($newPath);
120
-			\OC::$server->getShareManager()->moveShare($tmpShare, $this->user);
121
-		}
122
-	}
123
-
124
-
125
-	/**
126
-	 * @param string $path
127
-	 * @param View $view
128
-	 * @param SharedMount[] $mountpoints
129
-	 * @return mixed
130
-	 */
131
-	private function generateUniqueTarget($path, $view, array $mountpoints) {
132
-		$pathinfo = pathinfo($path);
133
-		$ext = (isset($pathinfo['extension'])) ? '.' . $pathinfo['extension'] : '';
134
-		$name = $pathinfo['filename'];
135
-		$dir = $pathinfo['dirname'];
136
-
137
-		// Helper function to find existing mount points
138
-		$mountpointExists = function ($path) use ($mountpoints) {
139
-			foreach ($mountpoints as $mountpoint) {
140
-				if ($mountpoint->getShare()->getTarget() === $path) {
141
-					return true;
142
-				}
143
-			}
144
-			return false;
145
-		};
146
-
147
-		$i = 2;
148
-		while ($view->file_exists($path) || $mountpointExists($path)) {
149
-			$path = Filesystem::normalizePath($dir . '/' . $name . ' (' . $i . ')' . $ext);
150
-			$i++;
151
-		}
152
-
153
-		return $path;
154
-	}
155
-
156
-	/**
157
-	 * Format a path to be relative to the /user/files/ directory
158
-	 *
159
-	 * @param string $path the absolute path
160
-	 * @return string e.g. turns '/admin/files/test.txt' into '/test.txt'
161
-	 * @throws \OCA\Files_Sharing\Exceptions\BrokenPath
162
-	 */
163
-	protected function stripUserFilesPath($path) {
164
-		$trimmed = ltrim($path, '/');
165
-		$split = explode('/', $trimmed);
166
-
167
-		// it is not a file relative to data/user/files
168
-		if (count($split) < 3 || $split[1] !== 'files') {
169
-			\OCP\Util::writeLog('file sharing',
170
-				'Can not strip userid and "files/" from path: ' . $path,
171
-				\OCP\Util::ERROR);
172
-			throw new \OCA\Files_Sharing\Exceptions\BrokenPath('Path does not start with /user/files', 10);
173
-		}
174
-
175
-		// skip 'user' and 'files'
176
-		$sliced = array_slice($split, 2);
177
-		$relPath = implode('/', $sliced);
178
-
179
-		return '/' . $relPath;
180
-	}
181
-
182
-	/**
183
-	 * Move the mount point to $target
184
-	 *
185
-	 * @param string $target the target mount point
186
-	 * @return bool
187
-	 */
188
-	public function moveMount($target) {
189
-
190
-		$relTargetPath = $this->stripUserFilesPath($target);
191
-		$share = $this->storage->getShare();
192
-
193
-		$result = true;
194
-
195
-		try {
196
-			$this->updateFileTarget($relTargetPath, $share);
197
-			$this->setMountPoint($target);
198
-			$this->storage->setMountPoint($relTargetPath);
199
-		} catch (\Exception $e) {
200
-			\OCP\Util::writeLog('file sharing',
201
-				'Could not rename mount point for shared folder "' . $this->getMountPoint() . '" to "' . $target . '"',
202
-				\OCP\Util::ERROR);
203
-		}
204
-
205
-		return $result;
206
-	}
207
-
208
-	/**
209
-	 * Remove the mount points
210
-	 *
211
-	 * @return bool
212
-	 */
213
-	public function removeMount() {
214
-		$mountManager = \OC\Files\Filesystem::getMountManager();
215
-		/** @var $storage \OCA\Files_Sharing\SharedStorage */
216
-		$storage = $this->getStorage();
217
-		$result = $storage->unshareStorage();
218
-		$mountManager->removeMount($this->mountPoint);
219
-
220
-		return $result;
221
-	}
222
-
223
-	/**
224
-	 * @return \OCP\Share\IShare
225
-	 */
226
-	public function getShare() {
227
-		return $this->superShare;
228
-	}
229
-
230
-	/**
231
-	 * Get the file id of the root of the storage
232
-	 *
233
-	 * @return int
234
-	 */
235
-	public function getStorageRootId() {
236
-		return $this->getShare()->getNodeId();
237
-	}
238
-
239
-	/**
240
-	 * @return int
241
-	 */
242
-	public function getNumericStorageId() {
243
-		if (!is_null($this->getShare()->getNodeCacheEntry())) {
244
-			return $this->getShare()->getNodeCacheEntry()->getStorageId();
245
-		} else {
246
-			$builder = \OC::$server->getDatabaseConnection()->getQueryBuilder();
247
-
248
-			$query = $builder->select('storage')
249
-				->from('filecache')
250
-				->where($builder->expr()->eq('fileid', $builder->createNamedParameter($this->getStorageRootId())));
251
-
252
-			$result = $query->execute();
253
-			$row = $result->fetch();
254
-			$result->closeCursor();
255
-			if ($row) {
256
-				return $row['storage'];
257
-			}
258
-			return -1;
259
-		}
260
-	}
39
+    /**
40
+     * @var \OCA\Files_Sharing\SharedStorage $storage
41
+     */
42
+    protected $storage = null;
43
+
44
+    /**
45
+     * @var \OC\Files\View
46
+     */
47
+    private $recipientView;
48
+
49
+    /**
50
+     * @var string
51
+     */
52
+    private $user;
53
+
54
+    /** @var \OCP\Share\IShare */
55
+    private $superShare;
56
+
57
+    /** @var \OCP\Share\IShare[] */
58
+    private $groupedShares;
59
+
60
+    /**
61
+     * @param string $storage
62
+     * @param SharedMount[] $mountpoints
63
+     * @param array|null $arguments
64
+     * @param \OCP\Files\Storage\IStorageFactory $loader
65
+     */
66
+    public function __construct($storage, array $mountpoints, $arguments = null, $loader = null) {
67
+        $this->user = $arguments['user'];
68
+        $this->recipientView = new View('/' . $this->user . '/files');
69
+
70
+        $this->superShare = $arguments['superShare'];
71
+        $this->groupedShares = $arguments['groupedShares'];
72
+
73
+        $newMountPoint = $this->verifyMountPoint($this->superShare, $mountpoints);
74
+        $absMountPoint = '/' . $this->user . '/files' . $newMountPoint;
75
+        $arguments['ownerView'] = new View('/' . $this->superShare->getShareOwner() . '/files');
76
+        parent::__construct($storage, $absMountPoint, $arguments, $loader);
77
+    }
78
+
79
+    /**
80
+     * check if the parent folder exists otherwise move the mount point up
81
+     *
82
+     * @param \OCP\Share\IShare $share
83
+     * @param SharedMount[] $mountpoints
84
+     * @return string
85
+     */
86
+    private function verifyMountPoint(\OCP\Share\IShare $share, array $mountpoints) {
87
+
88
+        $mountPoint = basename($share->getTarget());
89
+        $parent = dirname($share->getTarget());
90
+
91
+        if (!$this->recipientView->is_dir($parent)) {
92
+            $parent = Helper::getShareFolder($this->recipientView);
93
+        }
94
+
95
+        $newMountPoint = $this->generateUniqueTarget(
96
+            \OC\Files\Filesystem::normalizePath($parent . '/' . $mountPoint),
97
+            $this->recipientView,
98
+            $mountpoints
99
+        );
100
+
101
+        if ($newMountPoint !== $share->getTarget()) {
102
+            $this->updateFileTarget($newMountPoint, $share);
103
+        }
104
+
105
+        return $newMountPoint;
106
+    }
107
+
108
+    /**
109
+     * update fileTarget in the database if the mount point changed
110
+     *
111
+     * @param string $newPath
112
+     * @param \OCP\Share\IShare $share
113
+     * @return bool
114
+     */
115
+    private function updateFileTarget($newPath, &$share) {
116
+        $share->setTarget($newPath);
117
+
118
+        foreach ($this->groupedShares as $tmpShare) {
119
+            $tmpShare->setTarget($newPath);
120
+            \OC::$server->getShareManager()->moveShare($tmpShare, $this->user);
121
+        }
122
+    }
123
+
124
+
125
+    /**
126
+     * @param string $path
127
+     * @param View $view
128
+     * @param SharedMount[] $mountpoints
129
+     * @return mixed
130
+     */
131
+    private function generateUniqueTarget($path, $view, array $mountpoints) {
132
+        $pathinfo = pathinfo($path);
133
+        $ext = (isset($pathinfo['extension'])) ? '.' . $pathinfo['extension'] : '';
134
+        $name = $pathinfo['filename'];
135
+        $dir = $pathinfo['dirname'];
136
+
137
+        // Helper function to find existing mount points
138
+        $mountpointExists = function ($path) use ($mountpoints) {
139
+            foreach ($mountpoints as $mountpoint) {
140
+                if ($mountpoint->getShare()->getTarget() === $path) {
141
+                    return true;
142
+                }
143
+            }
144
+            return false;
145
+        };
146
+
147
+        $i = 2;
148
+        while ($view->file_exists($path) || $mountpointExists($path)) {
149
+            $path = Filesystem::normalizePath($dir . '/' . $name . ' (' . $i . ')' . $ext);
150
+            $i++;
151
+        }
152
+
153
+        return $path;
154
+    }
155
+
156
+    /**
157
+     * Format a path to be relative to the /user/files/ directory
158
+     *
159
+     * @param string $path the absolute path
160
+     * @return string e.g. turns '/admin/files/test.txt' into '/test.txt'
161
+     * @throws \OCA\Files_Sharing\Exceptions\BrokenPath
162
+     */
163
+    protected function stripUserFilesPath($path) {
164
+        $trimmed = ltrim($path, '/');
165
+        $split = explode('/', $trimmed);
166
+
167
+        // it is not a file relative to data/user/files
168
+        if (count($split) < 3 || $split[1] !== 'files') {
169
+            \OCP\Util::writeLog('file sharing',
170
+                'Can not strip userid and "files/" from path: ' . $path,
171
+                \OCP\Util::ERROR);
172
+            throw new \OCA\Files_Sharing\Exceptions\BrokenPath('Path does not start with /user/files', 10);
173
+        }
174
+
175
+        // skip 'user' and 'files'
176
+        $sliced = array_slice($split, 2);
177
+        $relPath = implode('/', $sliced);
178
+
179
+        return '/' . $relPath;
180
+    }
181
+
182
+    /**
183
+     * Move the mount point to $target
184
+     *
185
+     * @param string $target the target mount point
186
+     * @return bool
187
+     */
188
+    public function moveMount($target) {
189
+
190
+        $relTargetPath = $this->stripUserFilesPath($target);
191
+        $share = $this->storage->getShare();
192
+
193
+        $result = true;
194
+
195
+        try {
196
+            $this->updateFileTarget($relTargetPath, $share);
197
+            $this->setMountPoint($target);
198
+            $this->storage->setMountPoint($relTargetPath);
199
+        } catch (\Exception $e) {
200
+            \OCP\Util::writeLog('file sharing',
201
+                'Could not rename mount point for shared folder "' . $this->getMountPoint() . '" to "' . $target . '"',
202
+                \OCP\Util::ERROR);
203
+        }
204
+
205
+        return $result;
206
+    }
207
+
208
+    /**
209
+     * Remove the mount points
210
+     *
211
+     * @return bool
212
+     */
213
+    public function removeMount() {
214
+        $mountManager = \OC\Files\Filesystem::getMountManager();
215
+        /** @var $storage \OCA\Files_Sharing\SharedStorage */
216
+        $storage = $this->getStorage();
217
+        $result = $storage->unshareStorage();
218
+        $mountManager->removeMount($this->mountPoint);
219
+
220
+        return $result;
221
+    }
222
+
223
+    /**
224
+     * @return \OCP\Share\IShare
225
+     */
226
+    public function getShare() {
227
+        return $this->superShare;
228
+    }
229
+
230
+    /**
231
+     * Get the file id of the root of the storage
232
+     *
233
+     * @return int
234
+     */
235
+    public function getStorageRootId() {
236
+        return $this->getShare()->getNodeId();
237
+    }
238
+
239
+    /**
240
+     * @return int
241
+     */
242
+    public function getNumericStorageId() {
243
+        if (!is_null($this->getShare()->getNodeCacheEntry())) {
244
+            return $this->getShare()->getNodeCacheEntry()->getStorageId();
245
+        } else {
246
+            $builder = \OC::$server->getDatabaseConnection()->getQueryBuilder();
247
+
248
+            $query = $builder->select('storage')
249
+                ->from('filecache')
250
+                ->where($builder->expr()->eq('fileid', $builder->createNamedParameter($this->getStorageRootId())));
251
+
252
+            $result = $query->execute();
253
+            $row = $result->fetch();
254
+            $result->closeCursor();
255
+            if ($row) {
256
+                return $row['storage'];
257
+            }
258
+            return -1;
259
+        }
260
+    }
261 261
 }
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/files_sharing/appinfo/update.php 1 patch
Indentation   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -26,11 +26,11 @@
 block discarded – undo
26 26
 
27 27
 // Migration OC8.2 -> OC9
28 28
 if (version_compare($installedVersion, '0.9.1', '<')) {
29
-	$m = new Migration(\OC::$server->getDatabaseConnection(), \OC::$server->getConfig());
30
-	$m->removeReShares();
31
-	$m->updateInitiatorInfo();
29
+    $m = new Migration(\OC::$server->getDatabaseConnection(), \OC::$server->getConfig());
30
+    $m->removeReShares();
31
+    $m->updateInitiatorInfo();
32 32
 }
33 33
 
34 34
 if (version_compare($installedVersion, '1.1.1', '<')) {
35
-	$m = new Migration(\OC::$server->getDatabaseConnection(), \OC::$server->getConfig());
35
+    $m = new Migration(\OC::$server->getDatabaseConnection(), \OC::$server->getConfig());
36 36
 }
Please login to merge, or discard this patch.
apps/files_sharing/appinfo/routes.php 1 patch
Indentation   +87 added lines, -87 removed lines patch added patch discarded remove patch
@@ -30,105 +30,105 @@
 block discarded – undo
30 30
 
31 31
 $application = new \OCA\Files_Sharing\AppInfo\Application();
32 32
 $application->registerRoutes($this, [
33
-	'resources' => [
34
-		'ExternalShares' => ['url' => '/api/externalShares'],
35
-	],
36
-	'routes' => [
37
-		[
38
-			'name' => 'externalShares#testRemote',
39
-			'url' => '/testremote',
40
-			'verb' => 'GET'
41
-		],
42
-		[
43
-			'name' => 'PublicPreview#getPreview',
44
-			'url' => '/publicpreview',
45
-			'verb' => 'GET',
46
-		],
33
+    'resources' => [
34
+        'ExternalShares' => ['url' => '/api/externalShares'],
35
+    ],
36
+    'routes' => [
37
+        [
38
+            'name' => 'externalShares#testRemote',
39
+            'url' => '/testremote',
40
+            'verb' => 'GET'
41
+        ],
42
+        [
43
+            'name' => 'PublicPreview#getPreview',
44
+            'url' => '/publicpreview',
45
+            'verb' => 'GET',
46
+        ],
47 47
 
48
-		[
49
-			'name' => 'PublicPreview#getPreview',
50
-			'url' => '/ajax/publicpreview.php',
51
-			'verb' => 'GET',
52
-		],
53
-	],
54
-	'ocs' => [
55
-		/*
48
+        [
49
+            'name' => 'PublicPreview#getPreview',
50
+            'url' => '/ajax/publicpreview.php',
51
+            'verb' => 'GET',
52
+        ],
53
+    ],
54
+    'ocs' => [
55
+        /*
56 56
 		 * OCS Share API
57 57
 		 */
58
-		[
59
-			'name' => 'ShareAPI#getShares',
60
-			'url'  => '/api/v1/shares',
61
-			'verb' => 'GET',
62
-		],
63
-		[
64
-			'name' => 'ShareAPI#createShare',
65
-			'url'  => '/api/v1/shares',
66
-			'verb' => 'POST',
67
-		],
68
-		[
69
-			'name' => 'ShareAPI#getShare',
70
-			'url'  => '/api/v1/shares/{id}',
71
-			'verb' => 'GET',
72
-		],
73
-		[
74
-			'name' => 'ShareAPI#updateShare',
75
-			'url'  => '/api/v1/shares/{id}',
76
-			'verb' => 'PUT',
77
-		],
78
-		[
79
-			'name' => 'ShareAPI#deleteShare',
80
-			'url'  => '/api/v1/shares/{id}',
81
-			'verb' => 'DELETE',
82
-		],
83
-		/*
58
+        [
59
+            'name' => 'ShareAPI#getShares',
60
+            'url'  => '/api/v1/shares',
61
+            'verb' => 'GET',
62
+        ],
63
+        [
64
+            'name' => 'ShareAPI#createShare',
65
+            'url'  => '/api/v1/shares',
66
+            'verb' => 'POST',
67
+        ],
68
+        [
69
+            'name' => 'ShareAPI#getShare',
70
+            'url'  => '/api/v1/shares/{id}',
71
+            'verb' => 'GET',
72
+        ],
73
+        [
74
+            'name' => 'ShareAPI#updateShare',
75
+            'url'  => '/api/v1/shares/{id}',
76
+            'verb' => 'PUT',
77
+        ],
78
+        [
79
+            'name' => 'ShareAPI#deleteShare',
80
+            'url'  => '/api/v1/shares/{id}',
81
+            'verb' => 'DELETE',
82
+        ],
83
+        /*
84 84
 		 * OCS Sharee API
85 85
 		 */
86
-		[
87
-			'name' => 'ShareesAPI#search',
88
-			'url' => '/api/v1/sharees',
89
-			'verb' => 'GET',
90
-		],
91
-		/*
86
+        [
87
+            'name' => 'ShareesAPI#search',
88
+            'url' => '/api/v1/sharees',
89
+            'verb' => 'GET',
90
+        ],
91
+        /*
92 92
 		 * Remote Shares
93 93
 		 */
94
-		[
95
-			'name' => 'Remote#getShares',
96
-			'url' => '/api/v1/remote_shares',
97
-			'verb' => 'GET',
98
-		],
99
-		[
100
-			'name' => 'Remote#getOpenShares',
101
-			'url' => '/api/v1/remote_shares/pending',
102
-			'verb' => 'GET',
103
-		],
104
-		[
105
-			'name' => 'Remote#acceptShare',
106
-			'url' => '/api/v1/remote_shares/pending/{id}',
107
-			'verb' => 'POST',
108
-		],
109
-		[
110
-			'name' => 'Remote#declineShare',
111
-			'url' => '/api/v1/remote_shares/pending/{id}',
112
-			'verb' => 'DELETE',
113
-		],
114
-		[
115
-			'name' => 'Remote#getShare',
116
-			'url' => '/api/v1/remote_shares/{id}',
117
-			'verb' => 'GET',
118
-		],
119
-		[
120
-			'name' => 'Remote#unshare',
121
-			'url' => '/api/v1/remote_shares/{id}',
122
-			'verb' => 'DELETE',
123
-		],
124
-	],
94
+        [
95
+            'name' => 'Remote#getShares',
96
+            'url' => '/api/v1/remote_shares',
97
+            'verb' => 'GET',
98
+        ],
99
+        [
100
+            'name' => 'Remote#getOpenShares',
101
+            'url' => '/api/v1/remote_shares/pending',
102
+            'verb' => 'GET',
103
+        ],
104
+        [
105
+            'name' => 'Remote#acceptShare',
106
+            'url' => '/api/v1/remote_shares/pending/{id}',
107
+            'verb' => 'POST',
108
+        ],
109
+        [
110
+            'name' => 'Remote#declineShare',
111
+            'url' => '/api/v1/remote_shares/pending/{id}',
112
+            'verb' => 'DELETE',
113
+        ],
114
+        [
115
+            'name' => 'Remote#getShare',
116
+            'url' => '/api/v1/remote_shares/{id}',
117
+            'verb' => 'GET',
118
+        ],
119
+        [
120
+            'name' => 'Remote#unshare',
121
+            'url' => '/api/v1/remote_shares/{id}',
122
+            'verb' => 'DELETE',
123
+        ],
124
+    ],
125 125
 ]);
126 126
 
127 127
 /** @var $this \OCP\Route\IRouter */
128 128
 $this->create('files_sharing_ajax_list', 'ajax/list.php')
129
-	->actionInclude('files_sharing/ajax/list.php');
129
+    ->actionInclude('files_sharing/ajax/list.php');
130 130
 $this->create('sharing_external_shareinfo', '/shareinfo')
131
-	->actionInclude('files_sharing/ajax/shareinfo.php');
131
+    ->actionInclude('files_sharing/ajax/shareinfo.php');
132 132
 
133 133
 // OCS API
134 134
 
Please login to merge, or discard this patch.
apps/files_sharing/appinfo/app.php 1 patch
Indentation   +40 added lines, -40 removed lines patch added patch discarded remove patch
@@ -38,14 +38,14 @@  discard block
 block discarded – undo
38 38
 
39 39
 $eventDispatcher = \OC::$server->getEventDispatcher();
40 40
 $eventDispatcher->addListener(
41
-	'OCA\Files::loadAdditionalScripts',
42
-	function() {
43
-		\OCP\Util::addScript('files_sharing', 'share');
44
-		\OCP\Util::addScript('files_sharing', 'sharetabview');
45
-		\OCP\Util::addScript('files_sharing', 'sharebreadcrumbview');
46
-		\OCP\Util::addStyle('files_sharing', 'sharetabview');
47
-		\OCP\Util::addStyle('files_sharing', 'sharebreadcrumb');
48
-	}
41
+    'OCA\Files::loadAdditionalScripts',
42
+    function() {
43
+        \OCP\Util::addScript('files_sharing', 'share');
44
+        \OCP\Util::addScript('files_sharing', 'sharetabview');
45
+        \OCP\Util::addScript('files_sharing', 'sharebreadcrumbview');
46
+        \OCP\Util::addStyle('files_sharing', 'sharetabview');
47
+        \OCP\Util::addStyle('files_sharing', 'sharebreadcrumb');
48
+    }
49 49
 );
50 50
 
51 51
 // \OCP\Util::addStyle('files_sharing', 'sharetabview');
@@ -53,38 +53,38 @@  discard block
 block discarded – undo
53 53
 $config = \OC::$server->getConfig();
54 54
 if ($config->getAppValue('core', 'shareapi_enabled', 'yes') === 'yes') {
55 55
 
56
-	\OCA\Files\App::getNavigationManager()->add(
57
-		array(
58
-			"id" => 'sharingin',
59
-			"appname" => 'files_sharing',
60
-			"script" => 'list.php',
61
-			"order" => 10,
62
-			"name" => $l->t('Shared with you')
63
-		)
64
-	);
56
+    \OCA\Files\App::getNavigationManager()->add(
57
+        array(
58
+            "id" => 'sharingin',
59
+            "appname" => 'files_sharing',
60
+            "script" => 'list.php',
61
+            "order" => 10,
62
+            "name" => $l->t('Shared with you')
63
+        )
64
+    );
65 65
 
66
-	if (\OCP\Util::isSharingDisabledForUser() === false) {
66
+    if (\OCP\Util::isSharingDisabledForUser() === false) {
67 67
 
68
-		\OCA\Files\App::getNavigationManager()->add(
69
-			array(
70
-				"id" => 'sharingout',
71
-				"appname" => 'files_sharing',
72
-				"script" => 'list.php',
73
-				"order" => 15,
74
-				"name" => $l->t('Shared with others')
75
-			)
76
-		);
77
-		// Check if sharing by link is enabled
78
-		if ($config->getAppValue('core', 'shareapi_allow_links', 'yes') === 'yes') {
79
-			\OCA\Files\App::getNavigationManager()->add(
80
-				array(
81
-					"id" => 'sharinglinks',
82
-					"appname" => 'files_sharing',
83
-					"script" => 'list.php',
84
-					"order" => 20,
85
-					"name" => $l->t('Shared by link')
86
-				)
87
-			);
88
-		}
89
-	}
68
+        \OCA\Files\App::getNavigationManager()->add(
69
+            array(
70
+                "id" => 'sharingout',
71
+                "appname" => 'files_sharing',
72
+                "script" => 'list.php',
73
+                "order" => 15,
74
+                "name" => $l->t('Shared with others')
75
+            )
76
+        );
77
+        // Check if sharing by link is enabled
78
+        if ($config->getAppValue('core', 'shareapi_allow_links', 'yes') === 'yes') {
79
+            \OCA\Files\App::getNavigationManager()->add(
80
+                array(
81
+                    "id" => 'sharinglinks',
82
+                    "appname" => 'files_sharing',
83
+                    "script" => 'list.php',
84
+                    "order" => 20,
85
+                    "name" => $l->t('Shared by link')
86
+                )
87
+            );
88
+        }
89
+    }
90 90
 }
Please login to merge, or discard this patch.
apps/provisioning_api/lib/Controller/AppsController.php 1 patch
Indentation   +74 added lines, -74 removed lines patch added patch discarded remove patch
@@ -33,86 +33,86 @@
 block discarded – undo
33 33
 use OCP\IRequest;
34 34
 
35 35
 class AppsController extends OCSController {
36
-	/** @var \OCP\App\IAppManager */
37
-	private $appManager;
36
+    /** @var \OCP\App\IAppManager */
37
+    private $appManager;
38 38
 
39
-	/**
40
-	 * @param string $appName
41
-	 * @param IRequest $request
42
-	 * @param IAppManager $appManager
43
-	 */
44
-	public function __construct(
45
-		$appName,
46
-		IRequest $request,
47
-		IAppManager $appManager
48
-	) {
49
-		parent::__construct($appName, $request);
39
+    /**
40
+     * @param string $appName
41
+     * @param IRequest $request
42
+     * @param IAppManager $appManager
43
+     */
44
+    public function __construct(
45
+        $appName,
46
+        IRequest $request,
47
+        IAppManager $appManager
48
+    ) {
49
+        parent::__construct($appName, $request);
50 50
 
51
-		$this->appManager = $appManager;
52
-	}
51
+        $this->appManager = $appManager;
52
+    }
53 53
 
54
-	/**
55
-	 * @param string $filter
56
-	 * @return DataResponse
57
-	 * @throws OCSException
58
-	 */
59
-	public function getApps($filter = null) {
60
-		$apps = (new OC_App())->listAllApps();
61
-		$list = [];
62
-		foreach($apps as $app) {
63
-			$list[] = $app['id'];
64
-		}
65
-		if($filter){
66
-			switch($filter){
67
-				case 'enabled':
68
-					return new DataResponse(['apps' => \OC_App::getEnabledApps()]);
69
-					break;
70
-				case 'disabled':
71
-					$enabled = OC_App::getEnabledApps();
72
-					return new DataResponse(['apps' => array_diff($list, $enabled)]);
73
-					break;
74
-				default:
75
-					// Invalid filter variable
76
-					throw new OCSException('', 101);
77
-			}
54
+    /**
55
+     * @param string $filter
56
+     * @return DataResponse
57
+     * @throws OCSException
58
+     */
59
+    public function getApps($filter = null) {
60
+        $apps = (new OC_App())->listAllApps();
61
+        $list = [];
62
+        foreach($apps as $app) {
63
+            $list[] = $app['id'];
64
+        }
65
+        if($filter){
66
+            switch($filter){
67
+                case 'enabled':
68
+                    return new DataResponse(['apps' => \OC_App::getEnabledApps()]);
69
+                    break;
70
+                case 'disabled':
71
+                    $enabled = OC_App::getEnabledApps();
72
+                    return new DataResponse(['apps' => array_diff($list, $enabled)]);
73
+                    break;
74
+                default:
75
+                    // Invalid filter variable
76
+                    throw new OCSException('', 101);
77
+            }
78 78
 
79
-		} else {
80
-			return new DataResponse(['apps' => $list]);
81
-		}
82
-	}
79
+        } else {
80
+            return new DataResponse(['apps' => $list]);
81
+        }
82
+    }
83 83
 
84
-	/**
85
-	 * @param string $app
86
-	 * @return DataResponse
87
-	 * @throws OCSException
88
-	 */
89
-	public function getAppInfo($app) {
90
-		$info = \OCP\App::getAppInfo($app);
91
-		if(!is_null($info)) {
92
-			return new DataResponse(OC_App::getAppInfo($app));
93
-		} else {
94
-			throw new OCSException('The request app was not found', \OCP\API::RESPOND_NOT_FOUND);
95
-		}
96
-	}
84
+    /**
85
+     * @param string $app
86
+     * @return DataResponse
87
+     * @throws OCSException
88
+     */
89
+    public function getAppInfo($app) {
90
+        $info = \OCP\App::getAppInfo($app);
91
+        if(!is_null($info)) {
92
+            return new DataResponse(OC_App::getAppInfo($app));
93
+        } else {
94
+            throw new OCSException('The request app was not found', \OCP\API::RESPOND_NOT_FOUND);
95
+        }
96
+    }
97 97
 
98
-	/**
99
-	 * @PasswordConfirmationRequired
100
-	 * @param string $app
101
-	 * @return DataResponse
102
-	 */
103
-	public function enable($app) {
104
-		$this->appManager->enableApp($app);
105
-		return new DataResponse();
106
-	}
98
+    /**
99
+     * @PasswordConfirmationRequired
100
+     * @param string $app
101
+     * @return DataResponse
102
+     */
103
+    public function enable($app) {
104
+        $this->appManager->enableApp($app);
105
+        return new DataResponse();
106
+    }
107 107
 
108
-	/**
109
-	 * @PasswordConfirmationRequired
110
-	 * @param string $app
111
-	 * @return DataResponse
112
-	 */
113
-	public function disable($app) {
114
-		$this->appManager->disableApp($app);
115
-		return new DataResponse();
116
-	}
108
+    /**
109
+     * @PasswordConfirmationRequired
110
+     * @param string $app
111
+     * @return DataResponse
112
+     */
113
+    public function disable($app) {
114
+        $this->appManager->disableApp($app);
115
+        return new DataResponse();
116
+    }
117 117
 
118 118
 }
Please login to merge, or discard this patch.
apps/provisioning_api/lib/Controller/GroupsController.php 1 patch
Indentation   +151 added lines, -151 removed lines patch added patch discarded remove patch
@@ -37,156 +37,156 @@
 block discarded – undo
37 37
 
38 38
 class GroupsController extends OCSController {
39 39
 
40
-	/** @var IGroupManager */
41
-	private $groupManager;
42
-
43
-	/** @var IUserSession */
44
-	private $userSession;
45
-
46
-	/**
47
-	 * @param string $appName
48
-	 * @param IRequest $request
49
-	 * @param IGroupManager $groupManager
50
-	 * @param IUserSession $userSession
51
-	 */
52
-	public function __construct(
53
-			$appName,
54
-			IRequest $request,
55
-			IGroupManager $groupManager,
56
-			IUserSession $userSession) {
57
-		parent::__construct($appName, $request);
58
-
59
-		$this->groupManager = $groupManager;
60
-		$this->userSession = $userSession;
61
-	}
62
-
63
-	/**
64
-	 * returns a list of groups
65
-	 *
66
-	 * @NoAdminRequired
67
-	 *
68
-	 * @param string $search
69
-	 * @param int $limit
70
-	 * @param int $offset
71
-	 * @return DataResponse
72
-	 */
73
-	public function getGroups($search = '', $limit = null, $offset = null) {
74
-		if ($limit !== null) {
75
-			$limit = (int)$limit;
76
-		}
77
-		if ($offset !== null) {
78
-			$offset = (int)$offset;
79
-		}
80
-
81
-		$groups = $this->groupManager->search($search, $limit, $offset);
82
-		$groups = array_map(function($group) {
83
-			/** @var IGroup $group */
84
-			return $group->getGID();
85
-		}, $groups);
86
-
87
-		return new DataResponse(['groups' => $groups]);
88
-	}
89
-
90
-	/**
91
-	 * returns an array of users in the group specified
92
-	 *
93
-	 * @NoAdminRequired
94
-	 *
95
-	 * @param string $groupId
96
-	 * @return DataResponse
97
-	 * @throws OCSException
98
-	 */
99
-	public function getGroup($groupId) {
100
-		$user = $this->userSession->getUser();
101
-
102
-		// Check the group exists
103
-		if(!$this->groupManager->groupExists($groupId)) {
104
-			throw new OCSException('The requested group could not be found', \OCP\API::RESPOND_NOT_FOUND);
105
-		}
106
-
107
-		$isSubadminOfGroup = false;
108
-		$group = $this->groupManager->get($groupId);
109
-		if ($group !== null) {
110
-			$isSubadminOfGroup =$this->groupManager->getSubAdmin()->isSubAdminofGroup($user, $group);
111
-		}
112
-
113
-		// Check subadmin has access to this group
114
-		if($this->groupManager->isAdmin($user->getUID())
115
-		   || $isSubadminOfGroup) {
116
-			$users = $this->groupManager->get($groupId)->getUsers();
117
-			$users =  array_map(function($user) {
118
-				/** @var IUser $user */
119
-				return $user->getUID();
120
-			}, $users);
121
-			$users = array_values($users);
122
-			return new DataResponse(['users' => $users]);
123
-		} else {
124
-			throw new OCSException('User does not have access to specified group', \OCP\API::RESPOND_UNAUTHORISED);
125
-		}
126
-	}
127
-
128
-	/**
129
-	 * creates a new group
130
-	 *
131
-	 * @PasswordConfirmationRequired
132
-	 *
133
-	 * @param string $groupid
134
-	 * @return DataResponse
135
-	 * @throws OCSException
136
-	 */
137
-	public function addGroup($groupid) {
138
-		// Validate name
139
-		if(empty($groupid)){
140
-			\OCP\Util::writeLog('provisioning_api', 'Group name not supplied', \OCP\Util::ERROR);
141
-			throw new OCSException('Invalid group name', 101);
142
-		}
143
-		// Check if it exists
144
-		if($this->groupManager->groupExists($groupid)){
145
-			throw new OCSException('', 102);
146
-		}
147
-		$this->groupManager->createGroup($groupid);
148
-		return new DataResponse();
149
-	}
150
-
151
-	/**
152
-	 * @PasswordConfirmationRequired
153
-	 *
154
-	 * @param string $groupId
155
-	 * @return DataResponse
156
-	 * @throws OCSException
157
-	 */
158
-	public function deleteGroup($groupId) {
159
-		// Check it exists
160
-		if(!$this->groupManager->groupExists($groupId)){
161
-			throw new OCSException('', 101);
162
-		} else if($groupId === 'admin' || !$this->groupManager->get($groupId)->delete()){
163
-			// Cannot delete admin group
164
-			throw new OCSException('', 102);
165
-		}
166
-
167
-		return new DataResponse(null, 100);
168
-	}
169
-
170
-	/**
171
-	 * @param string $groupId
172
-	 * @return DataResponse
173
-	 * @throws OCSException
174
-	 */
175
-	public function getSubAdminsOfGroup($groupId) {
176
-		// Check group exists
177
-		$targetGroup = $this->groupManager->get($groupId);
178
-		if($targetGroup === null) {
179
-			throw new OCSException('Group does not exist', 101);
180
-		}
181
-
182
-		$subadmins = $this->groupManager->getSubAdmin()->getGroupsSubAdmins($targetGroup);
183
-		// New class returns IUser[] so convert back
184
-		$uids = [];
185
-		foreach ($subadmins as $user) {
186
-			$uids[] = $user->getUID();
187
-		}
188
-
189
-		return new DataResponse($uids);
190
-	}
40
+    /** @var IGroupManager */
41
+    private $groupManager;
42
+
43
+    /** @var IUserSession */
44
+    private $userSession;
45
+
46
+    /**
47
+     * @param string $appName
48
+     * @param IRequest $request
49
+     * @param IGroupManager $groupManager
50
+     * @param IUserSession $userSession
51
+     */
52
+    public function __construct(
53
+            $appName,
54
+            IRequest $request,
55
+            IGroupManager $groupManager,
56
+            IUserSession $userSession) {
57
+        parent::__construct($appName, $request);
58
+
59
+        $this->groupManager = $groupManager;
60
+        $this->userSession = $userSession;
61
+    }
62
+
63
+    /**
64
+     * returns a list of groups
65
+     *
66
+     * @NoAdminRequired
67
+     *
68
+     * @param string $search
69
+     * @param int $limit
70
+     * @param int $offset
71
+     * @return DataResponse
72
+     */
73
+    public function getGroups($search = '', $limit = null, $offset = null) {
74
+        if ($limit !== null) {
75
+            $limit = (int)$limit;
76
+        }
77
+        if ($offset !== null) {
78
+            $offset = (int)$offset;
79
+        }
80
+
81
+        $groups = $this->groupManager->search($search, $limit, $offset);
82
+        $groups = array_map(function($group) {
83
+            /** @var IGroup $group */
84
+            return $group->getGID();
85
+        }, $groups);
86
+
87
+        return new DataResponse(['groups' => $groups]);
88
+    }
89
+
90
+    /**
91
+     * returns an array of users in the group specified
92
+     *
93
+     * @NoAdminRequired
94
+     *
95
+     * @param string $groupId
96
+     * @return DataResponse
97
+     * @throws OCSException
98
+     */
99
+    public function getGroup($groupId) {
100
+        $user = $this->userSession->getUser();
101
+
102
+        // Check the group exists
103
+        if(!$this->groupManager->groupExists($groupId)) {
104
+            throw new OCSException('The requested group could not be found', \OCP\API::RESPOND_NOT_FOUND);
105
+        }
106
+
107
+        $isSubadminOfGroup = false;
108
+        $group = $this->groupManager->get($groupId);
109
+        if ($group !== null) {
110
+            $isSubadminOfGroup =$this->groupManager->getSubAdmin()->isSubAdminofGroup($user, $group);
111
+        }
112
+
113
+        // Check subadmin has access to this group
114
+        if($this->groupManager->isAdmin($user->getUID())
115
+           || $isSubadminOfGroup) {
116
+            $users = $this->groupManager->get($groupId)->getUsers();
117
+            $users =  array_map(function($user) {
118
+                /** @var IUser $user */
119
+                return $user->getUID();
120
+            }, $users);
121
+            $users = array_values($users);
122
+            return new DataResponse(['users' => $users]);
123
+        } else {
124
+            throw new OCSException('User does not have access to specified group', \OCP\API::RESPOND_UNAUTHORISED);
125
+        }
126
+    }
127
+
128
+    /**
129
+     * creates a new group
130
+     *
131
+     * @PasswordConfirmationRequired
132
+     *
133
+     * @param string $groupid
134
+     * @return DataResponse
135
+     * @throws OCSException
136
+     */
137
+    public function addGroup($groupid) {
138
+        // Validate name
139
+        if(empty($groupid)){
140
+            \OCP\Util::writeLog('provisioning_api', 'Group name not supplied', \OCP\Util::ERROR);
141
+            throw new OCSException('Invalid group name', 101);
142
+        }
143
+        // Check if it exists
144
+        if($this->groupManager->groupExists($groupid)){
145
+            throw new OCSException('', 102);
146
+        }
147
+        $this->groupManager->createGroup($groupid);
148
+        return new DataResponse();
149
+    }
150
+
151
+    /**
152
+     * @PasswordConfirmationRequired
153
+     *
154
+     * @param string $groupId
155
+     * @return DataResponse
156
+     * @throws OCSException
157
+     */
158
+    public function deleteGroup($groupId) {
159
+        // Check it exists
160
+        if(!$this->groupManager->groupExists($groupId)){
161
+            throw new OCSException('', 101);
162
+        } else if($groupId === 'admin' || !$this->groupManager->get($groupId)->delete()){
163
+            // Cannot delete admin group
164
+            throw new OCSException('', 102);
165
+        }
166
+
167
+        return new DataResponse(null, 100);
168
+    }
169
+
170
+    /**
171
+     * @param string $groupId
172
+     * @return DataResponse
173
+     * @throws OCSException
174
+     */
175
+    public function getSubAdminsOfGroup($groupId) {
176
+        // Check group exists
177
+        $targetGroup = $this->groupManager->get($groupId);
178
+        if($targetGroup === null) {
179
+            throw new OCSException('Group does not exist', 101);
180
+        }
181
+
182
+        $subadmins = $this->groupManager->getSubAdmin()->getGroupsSubAdmins($targetGroup);
183
+        // New class returns IUser[] so convert back
184
+        $uids = [];
185
+        foreach ($subadmins as $user) {
186
+            $uids[] = $user->getUID();
187
+        }
188
+
189
+        return new DataResponse($uids);
190
+    }
191 191
 
192 192
 }
Please login to merge, or discard this patch.