Passed
Push — master ( 8593ed...6e3b9e )
by Roeland
12:18
created
lib/private/Group/Manager.php 2 patches
Spacing   +15 added lines, -15 removed lines patch added patch discarded remove patch
@@ -93,20 +93,20 @@  discard block
 block discarded – undo
93 93
 		$this->logger = $logger;
94 94
 		$cachedGroups = & $this->cachedGroups;
95 95
 		$cachedUserGroups = & $this->cachedUserGroups;
96
-		$this->listen('\OC\Group', 'postDelete', function ($group) use (&$cachedGroups, &$cachedUserGroups) {
96
+		$this->listen('\OC\Group', 'postDelete', function($group) use (&$cachedGroups, &$cachedUserGroups) {
97 97
 			/**
98 98
 			 * @var \OC\Group\Group $group
99 99
 			 */
100 100
 			unset($cachedGroups[$group->getGID()]);
101 101
 			$cachedUserGroups = array();
102 102
 		});
103
-		$this->listen('\OC\Group', 'postAddUser', function ($group) use (&$cachedUserGroups) {
103
+		$this->listen('\OC\Group', 'postAddUser', function($group) use (&$cachedUserGroups) {
104 104
 			/**
105 105
 			 * @var \OC\Group\Group $group
106 106
 			 */
107 107
 			$cachedUserGroups = array();
108 108
 		});
109
-		$this->listen('\OC\Group', 'postRemoveUser', function ($group) use (&$cachedUserGroups) {
109
+		$this->listen('\OC\Group', 'postRemoveUser', function($group) use (&$cachedUserGroups) {
110 110
 			/**
111 111
 			 * @var \OC\Group\Group $group
112 112
 			 */
@@ -235,7 +235,7 @@  discard block
 block discarded – undo
235 235
 				if ($aGroup instanceof IGroup) {
236 236
 					$groups[$groupId] = $aGroup;
237 237
 				} else {
238
-					$this->logger->debug('Group "' . $groupId . '" was returned by search but not found through direct access', ['app' => 'core']);
238
+					$this->logger->debug('Group "'.$groupId.'" was returned by search but not found through direct access', ['app' => 'core']);
239 239
 				}
240 240
 			}
241 241
 			if (!is_null($limit) and $limit <= 0) {
@@ -249,7 +249,7 @@  discard block
 block discarded – undo
249 249
 	 * @param IUser|null $user
250 250
 	 * @return \OC\Group\Group[]
251 251
 	 */
252
-	public function getUserGroups(IUser $user= null) {
252
+	public function getUserGroups(IUser $user = null) {
253 253
 		if (!$user instanceof IUser) {
254 254
 			return [];
255 255
 		}
@@ -273,7 +273,7 @@  discard block
 block discarded – undo
273 273
 					if ($aGroup instanceof IGroup) {
274 274
 						$groups[$groupId] = $aGroup;
275 275
 					} else {
276
-						$this->logger->debug('User "' . $uid . '" belongs to deleted group: "' . $groupId . '"', ['app' => 'core']);
276
+						$this->logger->debug('User "'.$uid.'" belongs to deleted group: "'.$groupId.'"', ['app' => 'core']);
277 277
 					}
278 278
 				}
279 279
 			}
@@ -322,32 +322,32 @@  discard block
 block discarded – undo
322 322
 	 */
323 323
 	public function displayNamesInGroup($gid, $search = '', $limit = -1, $offset = 0) {
324 324
 		$group = $this->get($gid);
325
-		if(is_null($group)) {
325
+		if (is_null($group)) {
326 326
 			return array();
327 327
 		}
328 328
 
329 329
 		$search = trim($search);
330 330
 		$groupUsers = array();
331 331
 
332
-		if(!empty($search)) {
332
+		if (!empty($search)) {
333 333
 			// only user backends have the capability to do a complex search for users
334 334
 			$searchOffset = 0;
335 335
 			$searchLimit = $limit * 100;
336
-			if($limit === -1) {
336
+			if ($limit === -1) {
337 337
 				$searchLimit = 500;
338 338
 			}
339 339
 
340 340
 			do {
341 341
 				$filteredUsers = $this->userManager->searchDisplayName($search, $searchLimit, $searchOffset);
342
-				foreach($filteredUsers as $filteredUser) {
343
-					if($group->inGroup($filteredUser)) {
344
-						$groupUsers[]= $filteredUser;
342
+				foreach ($filteredUsers as $filteredUser) {
343
+					if ($group->inGroup($filteredUser)) {
344
+						$groupUsers[] = $filteredUser;
345 345
 					}
346 346
 				}
347 347
 				$searchOffset += $searchLimit;
348
-			} while(count($groupUsers) < $searchLimit+$offset && count($filteredUsers) >= $searchLimit);
348
+			} while (count($groupUsers) < $searchLimit + $offset && count($filteredUsers) >= $searchLimit);
349 349
 
350
-			if($limit === -1) {
350
+			if ($limit === -1) {
351 351
 				$groupUsers = array_slice($groupUsers, $offset);
352 352
 			} else {
353 353
 				$groupUsers = array_slice($groupUsers, $offset, $limit);
@@ -357,7 +357,7 @@  discard block
 block discarded – undo
357 357
 		}
358 358
 
359 359
 		$matchingUsers = array();
360
-		foreach($groupUsers as $groupUser) {
360
+		foreach ($groupUsers as $groupUser) {
361 361
 			$matchingUsers[$groupUser->getUID()] = $groupUser->getDisplayName();
362 362
 		}
363 363
 		return $matchingUsers;
Please login to merge, or discard this patch.
Indentation   +344 added lines, -344 removed lines patch added patch discarded remove patch
@@ -61,348 +61,348 @@
 block discarded – undo
61 61
  * @package OC\Group
62 62
  */
63 63
 class Manager extends PublicEmitter implements IGroupManager {
64
-	/**
65
-	 * @var GroupInterface[] $backends
66
-	 */
67
-	private $backends = array();
68
-
69
-	/**
70
-	 * @var \OC\User\Manager $userManager
71
-	 */
72
-	private $userManager;
73
-
74
-	/**
75
-	 * @var \OC\Group\Group[]
76
-	 */
77
-	private $cachedGroups = array();
78
-
79
-	/**
80
-	 * @var \OC\Group\Group[]
81
-	 */
82
-	private $cachedUserGroups = array();
83
-
84
-	/** @var \OC\SubAdmin */
85
-	private $subAdmin = null;
86
-
87
-	/** @var ILogger */
88
-	private $logger;
89
-
90
-	/**
91
-	 * @param \OC\User\Manager $userManager
92
-	 * @param ILogger $logger
93
-	 */
94
-	public function __construct(\OC\User\Manager $userManager, ILogger $logger) {
95
-		$this->userManager = $userManager;
96
-		$this->logger = $logger;
97
-		$cachedGroups = & $this->cachedGroups;
98
-		$cachedUserGroups = & $this->cachedUserGroups;
99
-		$this->listen('\OC\Group', 'postDelete', function ($group) use (&$cachedGroups, &$cachedUserGroups) {
100
-			/**
101
-			 * @var \OC\Group\Group $group
102
-			 */
103
-			unset($cachedGroups[$group->getGID()]);
104
-			$cachedUserGroups = array();
105
-		});
106
-		$this->listen('\OC\Group', 'postAddUser', function ($group) use (&$cachedUserGroups) {
107
-			/**
108
-			 * @var \OC\Group\Group $group
109
-			 */
110
-			$cachedUserGroups = array();
111
-		});
112
-		$this->listen('\OC\Group', 'postRemoveUser', function ($group) use (&$cachedUserGroups) {
113
-			/**
114
-			 * @var \OC\Group\Group $group
115
-			 */
116
-			$cachedUserGroups = array();
117
-		});
118
-	}
119
-
120
-	/**
121
-	 * Checks whether a given backend is used
122
-	 *
123
-	 * @param string $backendClass Full classname including complete namespace
124
-	 * @return bool
125
-	 */
126
-	public function isBackendUsed($backendClass) {
127
-		$backendClass = strtolower(ltrim($backendClass, '\\'));
128
-
129
-		foreach ($this->backends as $backend) {
130
-			if (strtolower(get_class($backend)) === $backendClass) {
131
-				return true;
132
-			}
133
-		}
134
-
135
-		return false;
136
-	}
137
-
138
-	/**
139
-	 * @param \OCP\GroupInterface $backend
140
-	 */
141
-	public function addBackend($backend) {
142
-		$this->backends[] = $backend;
143
-		$this->clearCaches();
144
-	}
145
-
146
-	public function clearBackends() {
147
-		$this->backends = array();
148
-		$this->clearCaches();
149
-	}
150
-
151
-	/**
152
-	 * Get the active backends
153
-	 * @return \OCP\GroupInterface[]
154
-	 */
155
-	public function getBackends() {
156
-		return $this->backends;
157
-	}
158
-
159
-
160
-	protected function clearCaches() {
161
-		$this->cachedGroups = array();
162
-		$this->cachedUserGroups = array();
163
-	}
164
-
165
-	/**
166
-	 * @param string $gid
167
-	 * @return \OC\Group\Group
168
-	 */
169
-	public function get($gid) {
170
-		if (isset($this->cachedGroups[$gid])) {
171
-			return $this->cachedGroups[$gid];
172
-		}
173
-		return $this->getGroupObject($gid);
174
-	}
175
-
176
-	/**
177
-	 * @param string $gid
178
-	 * @param string $displayName
179
-	 * @return \OCP\IGroup
180
-	 */
181
-	protected function getGroupObject($gid, $displayName = null) {
182
-		$backends = array();
183
-		foreach ($this->backends as $backend) {
184
-			if ($backend->implementsActions(\OC\Group\Backend::GROUP_DETAILS)) {
185
-				$groupData = $backend->getGroupDetails($gid);
186
-				if (is_array($groupData) && !empty($groupData)) {
187
-					// take the display name from the first backend that has a non-null one
188
-					if (is_null($displayName) && isset($groupData['displayName'])) {
189
-						$displayName = $groupData['displayName'];
190
-					}
191
-					$backends[] = $backend;
192
-				}
193
-			} else if ($backend->groupExists($gid)) {
194
-				$backends[] = $backend;
195
-			}
196
-		}
197
-		if (count($backends) === 0) {
198
-			return null;
199
-		}
200
-		$this->cachedGroups[$gid] = new Group($gid, $backends, $this->userManager, $this, $displayName);
201
-		return $this->cachedGroups[$gid];
202
-	}
203
-
204
-	/**
205
-	 * @param string $gid
206
-	 * @return bool
207
-	 */
208
-	public function groupExists($gid) {
209
-		return $this->get($gid) instanceof IGroup;
210
-	}
211
-
212
-	/**
213
-	 * @param string $gid
214
-	 * @return \OC\Group\Group
215
-	 */
216
-	public function createGroup($gid) {
217
-		if ($gid === '' || $gid === null) {
218
-			return false;
219
-		} else if ($group = $this->get($gid)) {
220
-			return $group;
221
-		} else {
222
-			$this->emit('\OC\Group', 'preCreate', array($gid));
223
-			foreach ($this->backends as $backend) {
224
-				if ($backend->implementsActions(\OC\Group\Backend::CREATE_GROUP)) {
225
-					$backend->createGroup($gid);
226
-					$group = $this->getGroupObject($gid);
227
-					$this->emit('\OC\Group', 'postCreate', array($group));
228
-					return $group;
229
-				}
230
-			}
231
-			return null;
232
-		}
233
-	}
234
-
235
-	/**
236
-	 * @param string $search
237
-	 * @param int $limit
238
-	 * @param int $offset
239
-	 * @return \OC\Group\Group[]
240
-	 */
241
-	public function search($search, $limit = null, $offset = null) {
242
-		$groups = array();
243
-		foreach ($this->backends as $backend) {
244
-			$groupIds = $backend->getGroups($search, $limit, $offset);
245
-			foreach ($groupIds as $groupId) {
246
-				$aGroup = $this->get($groupId);
247
-				if ($aGroup instanceof IGroup) {
248
-					$groups[$groupId] = $aGroup;
249
-				} else {
250
-					$this->logger->debug('Group "' . $groupId . '" was returned by search but not found through direct access', ['app' => 'core']);
251
-				}
252
-			}
253
-			if (!is_null($limit) and $limit <= 0) {
254
-				return array_values($groups);
255
-			}
256
-		}
257
-		return array_values($groups);
258
-	}
259
-
260
-	/**
261
-	 * @param IUser|null $user
262
-	 * @return \OC\Group\Group[]
263
-	 */
264
-	public function getUserGroups(IUser $user= null) {
265
-		if (!$user instanceof IUser) {
266
-			return [];
267
-		}
268
-		return $this->getUserIdGroups($user->getUID());
269
-	}
270
-
271
-	/**
272
-	 * @param string $uid the user id
273
-	 * @return \OC\Group\Group[]
274
-	 */
275
-	public function getUserIdGroups($uid) {
276
-		if (isset($this->cachedUserGroups[$uid])) {
277
-			return $this->cachedUserGroups[$uid];
278
-		}
279
-		$groups = array();
280
-		foreach ($this->backends as $backend) {
281
-			$groupIds = $backend->getUserGroups($uid);
282
-			if (is_array($groupIds)) {
283
-				foreach ($groupIds as $groupId) {
284
-					$aGroup = $this->get($groupId);
285
-					if ($aGroup instanceof IGroup) {
286
-						$groups[$groupId] = $aGroup;
287
-					} else {
288
-						$this->logger->debug('User "' . $uid . '" belongs to deleted group: "' . $groupId . '"', ['app' => 'core']);
289
-					}
290
-				}
291
-			}
292
-		}
293
-		$this->cachedUserGroups[$uid] = $groups;
294
-		return $this->cachedUserGroups[$uid];
295
-	}
296
-
297
-	/**
298
-	 * Checks if a userId is in the admin group
299
-	 * @param string $userId
300
-	 * @return bool if admin
301
-	 */
302
-	public function isAdmin($userId) {
303
-		foreach ($this->backends as $backend) {
304
-			if ($backend->implementsActions(\OC\Group\Backend::IS_ADMIN) && $backend->isAdmin($userId)) {
305
-				return true;
306
-			}
307
-		}
308
-		return $this->isInGroup($userId, 'admin');
309
-	}
310
-
311
-	/**
312
-	 * Checks if a userId is in a group
313
-	 * @param string $userId
314
-	 * @param string $group
315
-	 * @return bool if in group
316
-	 */
317
-	public function isInGroup($userId, $group) {
318
-		return array_key_exists($group, $this->getUserIdGroups($userId));
319
-	}
320
-
321
-	/**
322
-	 * get a list of group ids for a user
323
-	 * @param IUser $user
324
-	 * @return array with group ids
325
-	 */
326
-	public function getUserGroupIds(IUser $user) {
327
-		return array_map(function($value) {
328
-			return (string) $value;
329
-		}, array_keys($this->getUserGroups($user)));
330
-	}
331
-
332
-	/**
333
-	 * get an array of groupid and displayName for a user
334
-	 * @param IUser $user
335
-	 * @return array ['displayName' => displayname]
336
-	 */
337
-	public function getUserGroupNames(IUser $user) {
338
-		return array_map(function($group) {
339
-			return array('displayName' => $group->getDisplayName());
340
-		}, $this->getUserGroups($user));
341
-	}
342
-
343
-	/**
344
-	 * get a list of all display names in a group
345
-	 * @param string $gid
346
-	 * @param string $search
347
-	 * @param int $limit
348
-	 * @param int $offset
349
-	 * @return array an array of display names (value) and user ids (key)
350
-	 */
351
-	public function displayNamesInGroup($gid, $search = '', $limit = -1, $offset = 0) {
352
-		$group = $this->get($gid);
353
-		if(is_null($group)) {
354
-			return array();
355
-		}
356
-
357
-		$search = trim($search);
358
-		$groupUsers = array();
359
-
360
-		if(!empty($search)) {
361
-			// only user backends have the capability to do a complex search for users
362
-			$searchOffset = 0;
363
-			$searchLimit = $limit * 100;
364
-			if($limit === -1) {
365
-				$searchLimit = 500;
366
-			}
367
-
368
-			do {
369
-				$filteredUsers = $this->userManager->searchDisplayName($search, $searchLimit, $searchOffset);
370
-				foreach($filteredUsers as $filteredUser) {
371
-					if($group->inGroup($filteredUser)) {
372
-						$groupUsers[]= $filteredUser;
373
-					}
374
-				}
375
-				$searchOffset += $searchLimit;
376
-			} while(count($groupUsers) < $searchLimit+$offset && count($filteredUsers) >= $searchLimit);
377
-
378
-			if($limit === -1) {
379
-				$groupUsers = array_slice($groupUsers, $offset);
380
-			} else {
381
-				$groupUsers = array_slice($groupUsers, $offset, $limit);
382
-			}
383
-		} else {
384
-			$groupUsers = $group->searchUsers('', $limit, $offset);
385
-		}
386
-
387
-		$matchingUsers = array();
388
-		foreach($groupUsers as $groupUser) {
389
-			$matchingUsers[$groupUser->getUID()] = $groupUser->getDisplayName();
390
-		}
391
-		return $matchingUsers;
392
-	}
393
-
394
-	/**
395
-	 * @return \OC\SubAdmin
396
-	 */
397
-	public function getSubAdmin() {
398
-		if (!$this->subAdmin) {
399
-			$this->subAdmin = new \OC\SubAdmin(
400
-				$this->userManager,
401
-				$this,
402
-				\OC::$server->getDatabaseConnection()
403
-			);
404
-		}
405
-
406
-		return $this->subAdmin;
407
-	}
64
+    /**
65
+     * @var GroupInterface[] $backends
66
+     */
67
+    private $backends = array();
68
+
69
+    /**
70
+     * @var \OC\User\Manager $userManager
71
+     */
72
+    private $userManager;
73
+
74
+    /**
75
+     * @var \OC\Group\Group[]
76
+     */
77
+    private $cachedGroups = array();
78
+
79
+    /**
80
+     * @var \OC\Group\Group[]
81
+     */
82
+    private $cachedUserGroups = array();
83
+
84
+    /** @var \OC\SubAdmin */
85
+    private $subAdmin = null;
86
+
87
+    /** @var ILogger */
88
+    private $logger;
89
+
90
+    /**
91
+     * @param \OC\User\Manager $userManager
92
+     * @param ILogger $logger
93
+     */
94
+    public function __construct(\OC\User\Manager $userManager, ILogger $logger) {
95
+        $this->userManager = $userManager;
96
+        $this->logger = $logger;
97
+        $cachedGroups = & $this->cachedGroups;
98
+        $cachedUserGroups = & $this->cachedUserGroups;
99
+        $this->listen('\OC\Group', 'postDelete', function ($group) use (&$cachedGroups, &$cachedUserGroups) {
100
+            /**
101
+             * @var \OC\Group\Group $group
102
+             */
103
+            unset($cachedGroups[$group->getGID()]);
104
+            $cachedUserGroups = array();
105
+        });
106
+        $this->listen('\OC\Group', 'postAddUser', function ($group) use (&$cachedUserGroups) {
107
+            /**
108
+             * @var \OC\Group\Group $group
109
+             */
110
+            $cachedUserGroups = array();
111
+        });
112
+        $this->listen('\OC\Group', 'postRemoveUser', function ($group) use (&$cachedUserGroups) {
113
+            /**
114
+             * @var \OC\Group\Group $group
115
+             */
116
+            $cachedUserGroups = array();
117
+        });
118
+    }
119
+
120
+    /**
121
+     * Checks whether a given backend is used
122
+     *
123
+     * @param string $backendClass Full classname including complete namespace
124
+     * @return bool
125
+     */
126
+    public function isBackendUsed($backendClass) {
127
+        $backendClass = strtolower(ltrim($backendClass, '\\'));
128
+
129
+        foreach ($this->backends as $backend) {
130
+            if (strtolower(get_class($backend)) === $backendClass) {
131
+                return true;
132
+            }
133
+        }
134
+
135
+        return false;
136
+    }
137
+
138
+    /**
139
+     * @param \OCP\GroupInterface $backend
140
+     */
141
+    public function addBackend($backend) {
142
+        $this->backends[] = $backend;
143
+        $this->clearCaches();
144
+    }
145
+
146
+    public function clearBackends() {
147
+        $this->backends = array();
148
+        $this->clearCaches();
149
+    }
150
+
151
+    /**
152
+     * Get the active backends
153
+     * @return \OCP\GroupInterface[]
154
+     */
155
+    public function getBackends() {
156
+        return $this->backends;
157
+    }
158
+
159
+
160
+    protected function clearCaches() {
161
+        $this->cachedGroups = array();
162
+        $this->cachedUserGroups = array();
163
+    }
164
+
165
+    /**
166
+     * @param string $gid
167
+     * @return \OC\Group\Group
168
+     */
169
+    public function get($gid) {
170
+        if (isset($this->cachedGroups[$gid])) {
171
+            return $this->cachedGroups[$gid];
172
+        }
173
+        return $this->getGroupObject($gid);
174
+    }
175
+
176
+    /**
177
+     * @param string $gid
178
+     * @param string $displayName
179
+     * @return \OCP\IGroup
180
+     */
181
+    protected function getGroupObject($gid, $displayName = null) {
182
+        $backends = array();
183
+        foreach ($this->backends as $backend) {
184
+            if ($backend->implementsActions(\OC\Group\Backend::GROUP_DETAILS)) {
185
+                $groupData = $backend->getGroupDetails($gid);
186
+                if (is_array($groupData) && !empty($groupData)) {
187
+                    // take the display name from the first backend that has a non-null one
188
+                    if (is_null($displayName) && isset($groupData['displayName'])) {
189
+                        $displayName = $groupData['displayName'];
190
+                    }
191
+                    $backends[] = $backend;
192
+                }
193
+            } else if ($backend->groupExists($gid)) {
194
+                $backends[] = $backend;
195
+            }
196
+        }
197
+        if (count($backends) === 0) {
198
+            return null;
199
+        }
200
+        $this->cachedGroups[$gid] = new Group($gid, $backends, $this->userManager, $this, $displayName);
201
+        return $this->cachedGroups[$gid];
202
+    }
203
+
204
+    /**
205
+     * @param string $gid
206
+     * @return bool
207
+     */
208
+    public function groupExists($gid) {
209
+        return $this->get($gid) instanceof IGroup;
210
+    }
211
+
212
+    /**
213
+     * @param string $gid
214
+     * @return \OC\Group\Group
215
+     */
216
+    public function createGroup($gid) {
217
+        if ($gid === '' || $gid === null) {
218
+            return false;
219
+        } else if ($group = $this->get($gid)) {
220
+            return $group;
221
+        } else {
222
+            $this->emit('\OC\Group', 'preCreate', array($gid));
223
+            foreach ($this->backends as $backend) {
224
+                if ($backend->implementsActions(\OC\Group\Backend::CREATE_GROUP)) {
225
+                    $backend->createGroup($gid);
226
+                    $group = $this->getGroupObject($gid);
227
+                    $this->emit('\OC\Group', 'postCreate', array($group));
228
+                    return $group;
229
+                }
230
+            }
231
+            return null;
232
+        }
233
+    }
234
+
235
+    /**
236
+     * @param string $search
237
+     * @param int $limit
238
+     * @param int $offset
239
+     * @return \OC\Group\Group[]
240
+     */
241
+    public function search($search, $limit = null, $offset = null) {
242
+        $groups = array();
243
+        foreach ($this->backends as $backend) {
244
+            $groupIds = $backend->getGroups($search, $limit, $offset);
245
+            foreach ($groupIds as $groupId) {
246
+                $aGroup = $this->get($groupId);
247
+                if ($aGroup instanceof IGroup) {
248
+                    $groups[$groupId] = $aGroup;
249
+                } else {
250
+                    $this->logger->debug('Group "' . $groupId . '" was returned by search but not found through direct access', ['app' => 'core']);
251
+                }
252
+            }
253
+            if (!is_null($limit) and $limit <= 0) {
254
+                return array_values($groups);
255
+            }
256
+        }
257
+        return array_values($groups);
258
+    }
259
+
260
+    /**
261
+     * @param IUser|null $user
262
+     * @return \OC\Group\Group[]
263
+     */
264
+    public function getUserGroups(IUser $user= null) {
265
+        if (!$user instanceof IUser) {
266
+            return [];
267
+        }
268
+        return $this->getUserIdGroups($user->getUID());
269
+    }
270
+
271
+    /**
272
+     * @param string $uid the user id
273
+     * @return \OC\Group\Group[]
274
+     */
275
+    public function getUserIdGroups($uid) {
276
+        if (isset($this->cachedUserGroups[$uid])) {
277
+            return $this->cachedUserGroups[$uid];
278
+        }
279
+        $groups = array();
280
+        foreach ($this->backends as $backend) {
281
+            $groupIds = $backend->getUserGroups($uid);
282
+            if (is_array($groupIds)) {
283
+                foreach ($groupIds as $groupId) {
284
+                    $aGroup = $this->get($groupId);
285
+                    if ($aGroup instanceof IGroup) {
286
+                        $groups[$groupId] = $aGroup;
287
+                    } else {
288
+                        $this->logger->debug('User "' . $uid . '" belongs to deleted group: "' . $groupId . '"', ['app' => 'core']);
289
+                    }
290
+                }
291
+            }
292
+        }
293
+        $this->cachedUserGroups[$uid] = $groups;
294
+        return $this->cachedUserGroups[$uid];
295
+    }
296
+
297
+    /**
298
+     * Checks if a userId is in the admin group
299
+     * @param string $userId
300
+     * @return bool if admin
301
+     */
302
+    public function isAdmin($userId) {
303
+        foreach ($this->backends as $backend) {
304
+            if ($backend->implementsActions(\OC\Group\Backend::IS_ADMIN) && $backend->isAdmin($userId)) {
305
+                return true;
306
+            }
307
+        }
308
+        return $this->isInGroup($userId, 'admin');
309
+    }
310
+
311
+    /**
312
+     * Checks if a userId is in a group
313
+     * @param string $userId
314
+     * @param string $group
315
+     * @return bool if in group
316
+     */
317
+    public function isInGroup($userId, $group) {
318
+        return array_key_exists($group, $this->getUserIdGroups($userId));
319
+    }
320
+
321
+    /**
322
+     * get a list of group ids for a user
323
+     * @param IUser $user
324
+     * @return array with group ids
325
+     */
326
+    public function getUserGroupIds(IUser $user) {
327
+        return array_map(function($value) {
328
+            return (string) $value;
329
+        }, array_keys($this->getUserGroups($user)));
330
+    }
331
+
332
+    /**
333
+     * get an array of groupid and displayName for a user
334
+     * @param IUser $user
335
+     * @return array ['displayName' => displayname]
336
+     */
337
+    public function getUserGroupNames(IUser $user) {
338
+        return array_map(function($group) {
339
+            return array('displayName' => $group->getDisplayName());
340
+        }, $this->getUserGroups($user));
341
+    }
342
+
343
+    /**
344
+     * get a list of all display names in a group
345
+     * @param string $gid
346
+     * @param string $search
347
+     * @param int $limit
348
+     * @param int $offset
349
+     * @return array an array of display names (value) and user ids (key)
350
+     */
351
+    public function displayNamesInGroup($gid, $search = '', $limit = -1, $offset = 0) {
352
+        $group = $this->get($gid);
353
+        if(is_null($group)) {
354
+            return array();
355
+        }
356
+
357
+        $search = trim($search);
358
+        $groupUsers = array();
359
+
360
+        if(!empty($search)) {
361
+            // only user backends have the capability to do a complex search for users
362
+            $searchOffset = 0;
363
+            $searchLimit = $limit * 100;
364
+            if($limit === -1) {
365
+                $searchLimit = 500;
366
+            }
367
+
368
+            do {
369
+                $filteredUsers = $this->userManager->searchDisplayName($search, $searchLimit, $searchOffset);
370
+                foreach($filteredUsers as $filteredUser) {
371
+                    if($group->inGroup($filteredUser)) {
372
+                        $groupUsers[]= $filteredUser;
373
+                    }
374
+                }
375
+                $searchOffset += $searchLimit;
376
+            } while(count($groupUsers) < $searchLimit+$offset && count($filteredUsers) >= $searchLimit);
377
+
378
+            if($limit === -1) {
379
+                $groupUsers = array_slice($groupUsers, $offset);
380
+            } else {
381
+                $groupUsers = array_slice($groupUsers, $offset, $limit);
382
+            }
383
+        } else {
384
+            $groupUsers = $group->searchUsers('', $limit, $offset);
385
+        }
386
+
387
+        $matchingUsers = array();
388
+        foreach($groupUsers as $groupUser) {
389
+            $matchingUsers[$groupUser->getUID()] = $groupUser->getDisplayName();
390
+        }
391
+        return $matchingUsers;
392
+    }
393
+
394
+    /**
395
+     * @return \OC\SubAdmin
396
+     */
397
+    public function getSubAdmin() {
398
+        if (!$this->subAdmin) {
399
+            $this->subAdmin = new \OC\SubAdmin(
400
+                $this->userManager,
401
+                $this,
402
+                \OC::$server->getDatabaseConnection()
403
+            );
404
+        }
405
+
406
+        return $this->subAdmin;
407
+    }
408 408
 }
Please login to merge, or discard this patch.
lib/private/Files/Storage/Wrapper/Availability.php 1 patch
Indentation   +435 added lines, -435 removed lines patch added patch discarded remove patch
@@ -30,439 +30,439 @@
 block discarded – undo
30 30
  * Throws a StorageNotAvailableException for storages with known failures
31 31
  */
32 32
 class Availability extends Wrapper {
33
-	const RECHECK_TTL_SEC = 600; // 10 minutes
34
-
35
-	public static function shouldRecheck($availability) {
36
-		if (!$availability['available']) {
37
-			// trigger a recheck if TTL reached
38
-			if ((time() - $availability['last_checked']) > self::RECHECK_TTL_SEC) {
39
-				return true;
40
-			}
41
-		}
42
-		return false;
43
-	}
44
-
45
-	/**
46
-	 * Only called if availability === false
47
-	 *
48
-	 * @return bool
49
-	 */
50
-	private function updateAvailability() {
51
-		// reset availability to false so that multiple requests don't recheck concurrently
52
-		$this->setAvailability(false);
53
-		try {
54
-			$result = $this->test();
55
-		} catch (\Exception $e) {
56
-			$result = false;
57
-		}
58
-		$this->setAvailability($result);
59
-		return $result;
60
-	}
61
-
62
-	/**
63
-	 * @return bool
64
-	 */
65
-	private function isAvailable() {
66
-		$availability = $this->getAvailability();
67
-		if (self::shouldRecheck($availability)) {
68
-			return $this->updateAvailability();
69
-		}
70
-		return $availability['available'];
71
-	}
72
-
73
-	/**
74
-	 * @throws \OCP\Files\StorageNotAvailableException
75
-	 */
76
-	private function checkAvailability() {
77
-		if (!$this->isAvailable()) {
78
-			throw new \OCP\Files\StorageNotAvailableException();
79
-		}
80
-	}
81
-
82
-	/** {@inheritdoc} */
83
-	public function mkdir($path) {
84
-		$this->checkAvailability();
85
-		try {
86
-			return parent::mkdir($path);
87
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
88
-			$this->setAvailability(false);
89
-			throw $e;
90
-		}
91
-	}
92
-
93
-	/** {@inheritdoc} */
94
-	public function rmdir($path) {
95
-		$this->checkAvailability();
96
-		try {
97
-			return parent::rmdir($path);
98
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
99
-			$this->setAvailability(false);
100
-			throw $e;
101
-		}
102
-	}
103
-
104
-	/** {@inheritdoc} */
105
-	public function opendir($path) {
106
-		$this->checkAvailability();
107
-		try {
108
-			return parent::opendir($path);
109
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
110
-			$this->setAvailability(false);
111
-			throw $e;
112
-		}
113
-	}
114
-
115
-	/** {@inheritdoc} */
116
-	public function is_dir($path) {
117
-		$this->checkAvailability();
118
-		try {
119
-			return parent::is_dir($path);
120
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
121
-			$this->setAvailability(false);
122
-			throw $e;
123
-		}
124
-	}
125
-
126
-	/** {@inheritdoc} */
127
-	public function is_file($path) {
128
-		$this->checkAvailability();
129
-		try {
130
-			return parent::is_file($path);
131
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
132
-			$this->setAvailability(false);
133
-			throw $e;
134
-		}
135
-	}
136
-
137
-	/** {@inheritdoc} */
138
-	public function stat($path) {
139
-		$this->checkAvailability();
140
-		try {
141
-			return parent::stat($path);
142
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
143
-			$this->setAvailability(false);
144
-			throw $e;
145
-		}
146
-	}
147
-
148
-	/** {@inheritdoc} */
149
-	public function filetype($path) {
150
-		$this->checkAvailability();
151
-		try {
152
-			return parent::filetype($path);
153
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
154
-			$this->setAvailability(false);
155
-			throw $e;
156
-		}
157
-	}
158
-
159
-	/** {@inheritdoc} */
160
-	public function filesize($path) {
161
-		$this->checkAvailability();
162
-		try {
163
-			return parent::filesize($path);
164
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
165
-			$this->setAvailability(false);
166
-			throw $e;
167
-		}
168
-	}
169
-
170
-	/** {@inheritdoc} */
171
-	public function isCreatable($path) {
172
-		$this->checkAvailability();
173
-		try {
174
-			return parent::isCreatable($path);
175
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
176
-			$this->setAvailability(false);
177
-			throw $e;
178
-		}
179
-	}
180
-
181
-	/** {@inheritdoc} */
182
-	public function isReadable($path) {
183
-		$this->checkAvailability();
184
-		try {
185
-			return parent::isReadable($path);
186
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
187
-			$this->setAvailability(false);
188
-			throw $e;
189
-		}
190
-	}
191
-
192
-	/** {@inheritdoc} */
193
-	public function isUpdatable($path) {
194
-		$this->checkAvailability();
195
-		try {
196
-			return parent::isUpdatable($path);
197
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
198
-			$this->setAvailability(false);
199
-			throw $e;
200
-		}
201
-	}
202
-
203
-	/** {@inheritdoc} */
204
-	public function isDeletable($path) {
205
-		$this->checkAvailability();
206
-		try {
207
-			return parent::isDeletable($path);
208
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
209
-			$this->setAvailability(false);
210
-			throw $e;
211
-		}
212
-	}
213
-
214
-	/** {@inheritdoc} */
215
-	public function isSharable($path) {
216
-		$this->checkAvailability();
217
-		try {
218
-			return parent::isSharable($path);
219
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
220
-			$this->setAvailability(false);
221
-			throw $e;
222
-		}
223
-	}
224
-
225
-	/** {@inheritdoc} */
226
-	public function getPermissions($path) {
227
-		$this->checkAvailability();
228
-		try {
229
-			return parent::getPermissions($path);
230
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
231
-			$this->setAvailability(false);
232
-			throw $e;
233
-		}
234
-	}
235
-
236
-	/** {@inheritdoc} */
237
-	public function file_exists($path) {
238
-		if ($path === '') {
239
-			return true;
240
-		}
241
-		$this->checkAvailability();
242
-		try {
243
-			return parent::file_exists($path);
244
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
245
-			$this->setAvailability(false);
246
-			throw $e;
247
-		}
248
-	}
249
-
250
-	/** {@inheritdoc} */
251
-	public function filemtime($path) {
252
-		$this->checkAvailability();
253
-		try {
254
-			return parent::filemtime($path);
255
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
256
-			$this->setAvailability(false);
257
-			throw $e;
258
-		}
259
-	}
260
-
261
-	/** {@inheritdoc} */
262
-	public function file_get_contents($path) {
263
-		$this->checkAvailability();
264
-		try {
265
-			return parent::file_get_contents($path);
266
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
267
-			$this->setAvailability(false);
268
-			throw $e;
269
-		}
270
-	}
271
-
272
-	/** {@inheritdoc} */
273
-	public function file_put_contents($path, $data) {
274
-		$this->checkAvailability();
275
-		try {
276
-			return parent::file_put_contents($path, $data);
277
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
278
-			$this->setAvailability(false);
279
-			throw $e;
280
-		}
281
-	}
282
-
283
-	/** {@inheritdoc} */
284
-	public function unlink($path) {
285
-		$this->checkAvailability();
286
-		try {
287
-			return parent::unlink($path);
288
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
289
-			$this->setAvailability(false);
290
-			throw $e;
291
-		}
292
-	}
293
-
294
-	/** {@inheritdoc} */
295
-	public function rename($path1, $path2) {
296
-		$this->checkAvailability();
297
-		try {
298
-			return parent::rename($path1, $path2);
299
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
300
-			$this->setAvailability(false);
301
-			throw $e;
302
-		}
303
-	}
304
-
305
-	/** {@inheritdoc} */
306
-	public function copy($path1, $path2) {
307
-		$this->checkAvailability();
308
-		try {
309
-			return parent::copy($path1, $path2);
310
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
311
-			$this->setAvailability(false);
312
-			throw $e;
313
-		}
314
-	}
315
-
316
-	/** {@inheritdoc} */
317
-	public function fopen($path, $mode) {
318
-		$this->checkAvailability();
319
-		try {
320
-			return parent::fopen($path, $mode);
321
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
322
-			$this->setAvailability(false);
323
-			throw $e;
324
-		}
325
-	}
326
-
327
-	/** {@inheritdoc} */
328
-	public function getMimeType($path) {
329
-		$this->checkAvailability();
330
-		try {
331
-			return parent::getMimeType($path);
332
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
333
-			$this->setAvailability(false);
334
-			throw $e;
335
-		}
336
-	}
337
-
338
-	/** {@inheritdoc} */
339
-	public function hash($type, $path, $raw = false) {
340
-		$this->checkAvailability();
341
-		try {
342
-			return parent::hash($type, $path, $raw);
343
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
344
-			$this->setAvailability(false);
345
-			throw $e;
346
-		}
347
-	}
348
-
349
-	/** {@inheritdoc} */
350
-	public function free_space($path) {
351
-		$this->checkAvailability();
352
-		try {
353
-			return parent::free_space($path);
354
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
355
-			$this->setAvailability(false);
356
-			throw $e;
357
-		}
358
-	}
359
-
360
-	/** {@inheritdoc} */
361
-	public function search($query) {
362
-		$this->checkAvailability();
363
-		try {
364
-			return parent::search($query);
365
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
366
-			$this->setAvailability(false);
367
-			throw $e;
368
-		}
369
-	}
370
-
371
-	/** {@inheritdoc} */
372
-	public function touch($path, $mtime = null) {
373
-		$this->checkAvailability();
374
-		try {
375
-			return parent::touch($path, $mtime);
376
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
377
-			$this->setAvailability(false);
378
-			throw $e;
379
-		}
380
-	}
381
-
382
-	/** {@inheritdoc} */
383
-	public function getLocalFile($path) {
384
-		$this->checkAvailability();
385
-		try {
386
-			return parent::getLocalFile($path);
387
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
388
-			$this->setAvailability(false);
389
-			throw $e;
390
-		}
391
-	}
392
-
393
-	/** {@inheritdoc} */
394
-	public function hasUpdated($path, $time) {
395
-		$this->checkAvailability();
396
-		try {
397
-			return parent::hasUpdated($path, $time);
398
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
399
-			$this->setAvailability(false);
400
-			throw $e;
401
-		}
402
-	}
403
-
404
-	/** {@inheritdoc} */
405
-	public function getOwner($path) {
406
-		try {
407
-			return parent::getOwner($path);
408
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
409
-			$this->setAvailability(false);
410
-			throw $e;
411
-		}
412
-	}
413
-
414
-	/** {@inheritdoc} */
415
-	public function getETag($path) {
416
-		$this->checkAvailability();
417
-		try {
418
-			return parent::getETag($path);
419
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
420
-			$this->setAvailability(false);
421
-			throw $e;
422
-		}
423
-	}
424
-
425
-	/** {@inheritdoc} */
426
-	public function getDirectDownload($path) {
427
-		$this->checkAvailability();
428
-		try {
429
-			return parent::getDirectDownload($path);
430
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
431
-			$this->setAvailability(false);
432
-			throw $e;
433
-		}
434
-	}
435
-
436
-	/** {@inheritdoc} */
437
-	public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
438
-		$this->checkAvailability();
439
-		try {
440
-			return parent::copyFromStorage($sourceStorage, $sourceInternalPath, $targetInternalPath);
441
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
442
-			$this->setAvailability(false);
443
-			throw $e;
444
-		}
445
-	}
446
-
447
-	/** {@inheritdoc} */
448
-	public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
449
-		$this->checkAvailability();
450
-		try {
451
-			return parent::moveFromStorage($sourceStorage, $sourceInternalPath, $targetInternalPath);
452
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
453
-			$this->setAvailability(false);
454
-			throw $e;
455
-		}
456
-	}
457
-
458
-	/** {@inheritdoc} */
459
-	public function getMetaData($path) {
460
-		$this->checkAvailability();
461
-		try {
462
-			return parent::getMetaData($path);
463
-		} catch (\OCP\Files\StorageNotAvailableException $e) {
464
-			$this->setAvailability(false);
465
-			throw $e;
466
-		}
467
-	}
33
+    const RECHECK_TTL_SEC = 600; // 10 minutes
34
+
35
+    public static function shouldRecheck($availability) {
36
+        if (!$availability['available']) {
37
+            // trigger a recheck if TTL reached
38
+            if ((time() - $availability['last_checked']) > self::RECHECK_TTL_SEC) {
39
+                return true;
40
+            }
41
+        }
42
+        return false;
43
+    }
44
+
45
+    /**
46
+     * Only called if availability === false
47
+     *
48
+     * @return bool
49
+     */
50
+    private function updateAvailability() {
51
+        // reset availability to false so that multiple requests don't recheck concurrently
52
+        $this->setAvailability(false);
53
+        try {
54
+            $result = $this->test();
55
+        } catch (\Exception $e) {
56
+            $result = false;
57
+        }
58
+        $this->setAvailability($result);
59
+        return $result;
60
+    }
61
+
62
+    /**
63
+     * @return bool
64
+     */
65
+    private function isAvailable() {
66
+        $availability = $this->getAvailability();
67
+        if (self::shouldRecheck($availability)) {
68
+            return $this->updateAvailability();
69
+        }
70
+        return $availability['available'];
71
+    }
72
+
73
+    /**
74
+     * @throws \OCP\Files\StorageNotAvailableException
75
+     */
76
+    private function checkAvailability() {
77
+        if (!$this->isAvailable()) {
78
+            throw new \OCP\Files\StorageNotAvailableException();
79
+        }
80
+    }
81
+
82
+    /** {@inheritdoc} */
83
+    public function mkdir($path) {
84
+        $this->checkAvailability();
85
+        try {
86
+            return parent::mkdir($path);
87
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
88
+            $this->setAvailability(false);
89
+            throw $e;
90
+        }
91
+    }
92
+
93
+    /** {@inheritdoc} */
94
+    public function rmdir($path) {
95
+        $this->checkAvailability();
96
+        try {
97
+            return parent::rmdir($path);
98
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
99
+            $this->setAvailability(false);
100
+            throw $e;
101
+        }
102
+    }
103
+
104
+    /** {@inheritdoc} */
105
+    public function opendir($path) {
106
+        $this->checkAvailability();
107
+        try {
108
+            return parent::opendir($path);
109
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
110
+            $this->setAvailability(false);
111
+            throw $e;
112
+        }
113
+    }
114
+
115
+    /** {@inheritdoc} */
116
+    public function is_dir($path) {
117
+        $this->checkAvailability();
118
+        try {
119
+            return parent::is_dir($path);
120
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
121
+            $this->setAvailability(false);
122
+            throw $e;
123
+        }
124
+    }
125
+
126
+    /** {@inheritdoc} */
127
+    public function is_file($path) {
128
+        $this->checkAvailability();
129
+        try {
130
+            return parent::is_file($path);
131
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
132
+            $this->setAvailability(false);
133
+            throw $e;
134
+        }
135
+    }
136
+
137
+    /** {@inheritdoc} */
138
+    public function stat($path) {
139
+        $this->checkAvailability();
140
+        try {
141
+            return parent::stat($path);
142
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
143
+            $this->setAvailability(false);
144
+            throw $e;
145
+        }
146
+    }
147
+
148
+    /** {@inheritdoc} */
149
+    public function filetype($path) {
150
+        $this->checkAvailability();
151
+        try {
152
+            return parent::filetype($path);
153
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
154
+            $this->setAvailability(false);
155
+            throw $e;
156
+        }
157
+    }
158
+
159
+    /** {@inheritdoc} */
160
+    public function filesize($path) {
161
+        $this->checkAvailability();
162
+        try {
163
+            return parent::filesize($path);
164
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
165
+            $this->setAvailability(false);
166
+            throw $e;
167
+        }
168
+    }
169
+
170
+    /** {@inheritdoc} */
171
+    public function isCreatable($path) {
172
+        $this->checkAvailability();
173
+        try {
174
+            return parent::isCreatable($path);
175
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
176
+            $this->setAvailability(false);
177
+            throw $e;
178
+        }
179
+    }
180
+
181
+    /** {@inheritdoc} */
182
+    public function isReadable($path) {
183
+        $this->checkAvailability();
184
+        try {
185
+            return parent::isReadable($path);
186
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
187
+            $this->setAvailability(false);
188
+            throw $e;
189
+        }
190
+    }
191
+
192
+    /** {@inheritdoc} */
193
+    public function isUpdatable($path) {
194
+        $this->checkAvailability();
195
+        try {
196
+            return parent::isUpdatable($path);
197
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
198
+            $this->setAvailability(false);
199
+            throw $e;
200
+        }
201
+    }
202
+
203
+    /** {@inheritdoc} */
204
+    public function isDeletable($path) {
205
+        $this->checkAvailability();
206
+        try {
207
+            return parent::isDeletable($path);
208
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
209
+            $this->setAvailability(false);
210
+            throw $e;
211
+        }
212
+    }
213
+
214
+    /** {@inheritdoc} */
215
+    public function isSharable($path) {
216
+        $this->checkAvailability();
217
+        try {
218
+            return parent::isSharable($path);
219
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
220
+            $this->setAvailability(false);
221
+            throw $e;
222
+        }
223
+    }
224
+
225
+    /** {@inheritdoc} */
226
+    public function getPermissions($path) {
227
+        $this->checkAvailability();
228
+        try {
229
+            return parent::getPermissions($path);
230
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
231
+            $this->setAvailability(false);
232
+            throw $e;
233
+        }
234
+    }
235
+
236
+    /** {@inheritdoc} */
237
+    public function file_exists($path) {
238
+        if ($path === '') {
239
+            return true;
240
+        }
241
+        $this->checkAvailability();
242
+        try {
243
+            return parent::file_exists($path);
244
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
245
+            $this->setAvailability(false);
246
+            throw $e;
247
+        }
248
+    }
249
+
250
+    /** {@inheritdoc} */
251
+    public function filemtime($path) {
252
+        $this->checkAvailability();
253
+        try {
254
+            return parent::filemtime($path);
255
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
256
+            $this->setAvailability(false);
257
+            throw $e;
258
+        }
259
+    }
260
+
261
+    /** {@inheritdoc} */
262
+    public function file_get_contents($path) {
263
+        $this->checkAvailability();
264
+        try {
265
+            return parent::file_get_contents($path);
266
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
267
+            $this->setAvailability(false);
268
+            throw $e;
269
+        }
270
+    }
271
+
272
+    /** {@inheritdoc} */
273
+    public function file_put_contents($path, $data) {
274
+        $this->checkAvailability();
275
+        try {
276
+            return parent::file_put_contents($path, $data);
277
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
278
+            $this->setAvailability(false);
279
+            throw $e;
280
+        }
281
+    }
282
+
283
+    /** {@inheritdoc} */
284
+    public function unlink($path) {
285
+        $this->checkAvailability();
286
+        try {
287
+            return parent::unlink($path);
288
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
289
+            $this->setAvailability(false);
290
+            throw $e;
291
+        }
292
+    }
293
+
294
+    /** {@inheritdoc} */
295
+    public function rename($path1, $path2) {
296
+        $this->checkAvailability();
297
+        try {
298
+            return parent::rename($path1, $path2);
299
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
300
+            $this->setAvailability(false);
301
+            throw $e;
302
+        }
303
+    }
304
+
305
+    /** {@inheritdoc} */
306
+    public function copy($path1, $path2) {
307
+        $this->checkAvailability();
308
+        try {
309
+            return parent::copy($path1, $path2);
310
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
311
+            $this->setAvailability(false);
312
+            throw $e;
313
+        }
314
+    }
315
+
316
+    /** {@inheritdoc} */
317
+    public function fopen($path, $mode) {
318
+        $this->checkAvailability();
319
+        try {
320
+            return parent::fopen($path, $mode);
321
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
322
+            $this->setAvailability(false);
323
+            throw $e;
324
+        }
325
+    }
326
+
327
+    /** {@inheritdoc} */
328
+    public function getMimeType($path) {
329
+        $this->checkAvailability();
330
+        try {
331
+            return parent::getMimeType($path);
332
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
333
+            $this->setAvailability(false);
334
+            throw $e;
335
+        }
336
+    }
337
+
338
+    /** {@inheritdoc} */
339
+    public function hash($type, $path, $raw = false) {
340
+        $this->checkAvailability();
341
+        try {
342
+            return parent::hash($type, $path, $raw);
343
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
344
+            $this->setAvailability(false);
345
+            throw $e;
346
+        }
347
+    }
348
+
349
+    /** {@inheritdoc} */
350
+    public function free_space($path) {
351
+        $this->checkAvailability();
352
+        try {
353
+            return parent::free_space($path);
354
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
355
+            $this->setAvailability(false);
356
+            throw $e;
357
+        }
358
+    }
359
+
360
+    /** {@inheritdoc} */
361
+    public function search($query) {
362
+        $this->checkAvailability();
363
+        try {
364
+            return parent::search($query);
365
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
366
+            $this->setAvailability(false);
367
+            throw $e;
368
+        }
369
+    }
370
+
371
+    /** {@inheritdoc} */
372
+    public function touch($path, $mtime = null) {
373
+        $this->checkAvailability();
374
+        try {
375
+            return parent::touch($path, $mtime);
376
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
377
+            $this->setAvailability(false);
378
+            throw $e;
379
+        }
380
+    }
381
+
382
+    /** {@inheritdoc} */
383
+    public function getLocalFile($path) {
384
+        $this->checkAvailability();
385
+        try {
386
+            return parent::getLocalFile($path);
387
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
388
+            $this->setAvailability(false);
389
+            throw $e;
390
+        }
391
+    }
392
+
393
+    /** {@inheritdoc} */
394
+    public function hasUpdated($path, $time) {
395
+        $this->checkAvailability();
396
+        try {
397
+            return parent::hasUpdated($path, $time);
398
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
399
+            $this->setAvailability(false);
400
+            throw $e;
401
+        }
402
+    }
403
+
404
+    /** {@inheritdoc} */
405
+    public function getOwner($path) {
406
+        try {
407
+            return parent::getOwner($path);
408
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
409
+            $this->setAvailability(false);
410
+            throw $e;
411
+        }
412
+    }
413
+
414
+    /** {@inheritdoc} */
415
+    public function getETag($path) {
416
+        $this->checkAvailability();
417
+        try {
418
+            return parent::getETag($path);
419
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
420
+            $this->setAvailability(false);
421
+            throw $e;
422
+        }
423
+    }
424
+
425
+    /** {@inheritdoc} */
426
+    public function getDirectDownload($path) {
427
+        $this->checkAvailability();
428
+        try {
429
+            return parent::getDirectDownload($path);
430
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
431
+            $this->setAvailability(false);
432
+            throw $e;
433
+        }
434
+    }
435
+
436
+    /** {@inheritdoc} */
437
+    public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
438
+        $this->checkAvailability();
439
+        try {
440
+            return parent::copyFromStorage($sourceStorage, $sourceInternalPath, $targetInternalPath);
441
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
442
+            $this->setAvailability(false);
443
+            throw $e;
444
+        }
445
+    }
446
+
447
+    /** {@inheritdoc} */
448
+    public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
449
+        $this->checkAvailability();
450
+        try {
451
+            return parent::moveFromStorage($sourceStorage, $sourceInternalPath, $targetInternalPath);
452
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
453
+            $this->setAvailability(false);
454
+            throw $e;
455
+        }
456
+    }
457
+
458
+    /** {@inheritdoc} */
459
+    public function getMetaData($path) {
460
+        $this->checkAvailability();
461
+        try {
462
+            return parent::getMetaData($path);
463
+        } catch (\OCP\Files\StorageNotAvailableException $e) {
464
+            $this->setAvailability(false);
465
+            throw $e;
466
+        }
467
+    }
468 468
 }
Please login to merge, or discard this patch.
lib/public/IDateTimeFormatter.php 1 patch
Indentation   +104 added lines, -104 removed lines patch added patch discarded remove patch
@@ -30,114 +30,114 @@
 block discarded – undo
30 30
  * @since 8.0.0
31 31
  */
32 32
 interface IDateTimeFormatter {
33
-	/**
34
-	 * Formats the date of the given timestamp
35
-	 *
36
-	 * @param int|\DateTime		$timestamp
37
-	 * @param string	$format			Either 'full', 'long', 'medium' or 'short'
38
-	 * 				full:	e.g. 'EEEE, MMMM d, y'	=> 'Wednesday, August 20, 2014'
39
-	 * 				long:	e.g. 'MMMM d, y'		=> 'August 20, 2014'
40
-	 * 				medium:	e.g. 'MMM d, y'			=> 'Aug 20, 2014'
41
-	 * 				short:	e.g. 'M/d/yy'			=> '8/20/14'
42
-	 * 				The exact format is dependent on the language
43
-	 * @param \DateTimeZone|null	$timeZone	The timezone to use
44
-	 * @param \OCP\IL10N|null	$l			The locale to use
45
-	 * @return string Formatted date string
46
-	 * @since 8.0.0
47
-	 */
48
-	public function formatDate($timestamp, $format = 'long', \DateTimeZone $timeZone = null, \OCP\IL10N $l = null);
33
+    /**
34
+     * Formats the date of the given timestamp
35
+     *
36
+     * @param int|\DateTime		$timestamp
37
+     * @param string	$format			Either 'full', 'long', 'medium' or 'short'
38
+     * 				full:	e.g. 'EEEE, MMMM d, y'	=> 'Wednesday, August 20, 2014'
39
+     * 				long:	e.g. 'MMMM d, y'		=> 'August 20, 2014'
40
+     * 				medium:	e.g. 'MMM d, y'			=> 'Aug 20, 2014'
41
+     * 				short:	e.g. 'M/d/yy'			=> '8/20/14'
42
+     * 				The exact format is dependent on the language
43
+     * @param \DateTimeZone|null	$timeZone	The timezone to use
44
+     * @param \OCP\IL10N|null	$l			The locale to use
45
+     * @return string Formatted date string
46
+     * @since 8.0.0
47
+     */
48
+    public function formatDate($timestamp, $format = 'long', \DateTimeZone $timeZone = null, \OCP\IL10N $l = null);
49 49
 
50
-	/**
51
-	 * Formats the date of the given timestamp
52
-	 *
53
-	 * @param int|\DateTime		$timestamp
54
-	 * @param string	$format			Either 'full', 'long', 'medium' or 'short'
55
-	 * 				full:	e.g. 'EEEE, MMMM d, y'	=> 'Wednesday, August 20, 2014'
56
-	 * 				long:	e.g. 'MMMM d, y'		=> 'August 20, 2014'
57
-	 * 				medium:	e.g. 'MMM d, y'			=> 'Aug 20, 2014'
58
-	 * 				short:	e.g. 'M/d/yy'			=> '8/20/14'
59
-	 * 				The exact format is dependent on the language
60
-	 * 					Uses 'Today', 'Yesterday' and 'Tomorrow' when applicable
61
-	 * @param \DateTimeZone|null	$timeZone	The timezone to use
62
-	 * @param \OCP\IL10N|null	$l			The locale to use
63
-	 * @return string Formatted relative date string
64
-	 * @since 8.0.0
65
-	 */
66
-	public function formatDateRelativeDay($timestamp, $format = 'long', \DateTimeZone $timeZone = null, \OCP\IL10N $l = null);
50
+    /**
51
+     * Formats the date of the given timestamp
52
+     *
53
+     * @param int|\DateTime		$timestamp
54
+     * @param string	$format			Either 'full', 'long', 'medium' or 'short'
55
+     * 				full:	e.g. 'EEEE, MMMM d, y'	=> 'Wednesday, August 20, 2014'
56
+     * 				long:	e.g. 'MMMM d, y'		=> 'August 20, 2014'
57
+     * 				medium:	e.g. 'MMM d, y'			=> 'Aug 20, 2014'
58
+     * 				short:	e.g. 'M/d/yy'			=> '8/20/14'
59
+     * 				The exact format is dependent on the language
60
+     * 					Uses 'Today', 'Yesterday' and 'Tomorrow' when applicable
61
+     * @param \DateTimeZone|null	$timeZone	The timezone to use
62
+     * @param \OCP\IL10N|null	$l			The locale to use
63
+     * @return string Formatted relative date string
64
+     * @since 8.0.0
65
+     */
66
+    public function formatDateRelativeDay($timestamp, $format = 'long', \DateTimeZone $timeZone = null, \OCP\IL10N $l = null);
67 67
 
68
-	/**
69
-	 * Gives the relative date of the timestamp
70
-	 * Only works for past dates
71
-	 *
72
-	 * @param int|\DateTime	$timestamp
73
-	 * @param int|\DateTime|null	$baseTimestamp	Timestamp to compare $timestamp against, defaults to current time
74
-	 * @param \OCP\IL10N|null		$l			The locale to use
75
-	 * @return string	Dates returned are:
76
-	 * 				<  1 month	=> Today, Yesterday, n days ago
77
-	 * 				< 13 month	=> last month, n months ago
78
-	 * 				>= 13 month	=> last year, n years ago
79
-	 * @since 8.0.0
80
-	 */
81
-	public function formatDateSpan($timestamp, $baseTimestamp = null, \OCP\IL10N $l = null);
68
+    /**
69
+     * Gives the relative date of the timestamp
70
+     * Only works for past dates
71
+     *
72
+     * @param int|\DateTime	$timestamp
73
+     * @param int|\DateTime|null	$baseTimestamp	Timestamp to compare $timestamp against, defaults to current time
74
+     * @param \OCP\IL10N|null		$l			The locale to use
75
+     * @return string	Dates returned are:
76
+     * 				<  1 month	=> Today, Yesterday, n days ago
77
+     * 				< 13 month	=> last month, n months ago
78
+     * 				>= 13 month	=> last year, n years ago
79
+     * @since 8.0.0
80
+     */
81
+    public function formatDateSpan($timestamp, $baseTimestamp = null, \OCP\IL10N $l = null);
82 82
 
83
-	/**
84
-	 * Formats the time of the given timestamp
85
-	 *
86
-	 * @param int|\DateTime $timestamp
87
-	 * @param string	$format			Either 'full', 'long', 'medium' or 'short'
88
-	 * 				full:	e.g. 'h:mm:ss a zzzz'	=> '11:42:13 AM GMT+0:00'
89
-	 * 				long:	e.g. 'h:mm:ss a z'		=> '11:42:13 AM GMT'
90
-	 * 				medium:	e.g. 'h:mm:ss a'		=> '11:42:13 AM'
91
-	 * 				short:	e.g. 'h:mm a'			=> '11:42 AM'
92
-	 * 				The exact format is dependent on the language
93
-	 * @param \DateTimeZone|null	$timeZone	The timezone to use
94
-	 * @param \OCP\IL10N|null		$l			The locale to use
95
-	 * @return string Formatted time string
96
-	 * @since 8.0.0
97
-	 */
98
-	public function formatTime($timestamp, $format = 'medium', \DateTimeZone $timeZone = null, \OCP\IL10N $l = null);
83
+    /**
84
+     * Formats the time of the given timestamp
85
+     *
86
+     * @param int|\DateTime $timestamp
87
+     * @param string	$format			Either 'full', 'long', 'medium' or 'short'
88
+     * 				full:	e.g. 'h:mm:ss a zzzz'	=> '11:42:13 AM GMT+0:00'
89
+     * 				long:	e.g. 'h:mm:ss a z'		=> '11:42:13 AM GMT'
90
+     * 				medium:	e.g. 'h:mm:ss a'		=> '11:42:13 AM'
91
+     * 				short:	e.g. 'h:mm a'			=> '11:42 AM'
92
+     * 				The exact format is dependent on the language
93
+     * @param \DateTimeZone|null	$timeZone	The timezone to use
94
+     * @param \OCP\IL10N|null		$l			The locale to use
95
+     * @return string Formatted time string
96
+     * @since 8.0.0
97
+     */
98
+    public function formatTime($timestamp, $format = 'medium', \DateTimeZone $timeZone = null, \OCP\IL10N $l = null);
99 99
 
100
-	/**
101
-	 * Gives the relative past time of the timestamp
102
-	 *
103
-	 * @param int|\DateTime	$timestamp
104
-	 * @param int|\DateTime|null	$baseTimestamp	Timestamp to compare $timestamp against, defaults to current time
105
-	 * @param \OCP\IL10N|null		$l			The locale to use
106
-	 * @return string	Dates returned are:
107
-	 * 				< 60 sec	=> seconds ago
108
-	 * 				<  1 hour	=> n minutes ago
109
-	 * 				<  1 day	=> n hours ago
110
-	 * 				<  1 month	=> Yesterday, n days ago
111
-	 * 				< 13 month	=> last month, n months ago
112
-	 * 				>= 13 month	=> last year, n years ago
113
-	 * @since 8.0.0
114
-	 */
115
-	public function formatTimeSpan($timestamp, $baseTimestamp = null, \OCP\IL10N $l = null);
100
+    /**
101
+     * Gives the relative past time of the timestamp
102
+     *
103
+     * @param int|\DateTime	$timestamp
104
+     * @param int|\DateTime|null	$baseTimestamp	Timestamp to compare $timestamp against, defaults to current time
105
+     * @param \OCP\IL10N|null		$l			The locale to use
106
+     * @return string	Dates returned are:
107
+     * 				< 60 sec	=> seconds ago
108
+     * 				<  1 hour	=> n minutes ago
109
+     * 				<  1 day	=> n hours ago
110
+     * 				<  1 month	=> Yesterday, n days ago
111
+     * 				< 13 month	=> last month, n months ago
112
+     * 				>= 13 month	=> last year, n years ago
113
+     * @since 8.0.0
114
+     */
115
+    public function formatTimeSpan($timestamp, $baseTimestamp = null, \OCP\IL10N $l = null);
116 116
 
117
-	/**
118
-	 * Formats the date and time of the given timestamp
119
-	 *
120
-	 * @param int|\DateTime $timestamp
121
-	 * @param string	$formatDate		See formatDate() for description
122
-	 * @param string	$formatTime		See formatTime() for description
123
-	 * @param \DateTimeZone|null	$timeZone	The timezone to use
124
-	 * @param \OCP\IL10N|null		$l			The locale to use
125
-	 * @return string Formatted date and time string
126
-	 * @since 8.0.0
127
-	 */
128
-	public function formatDateTime($timestamp, $formatDate = 'long', $formatTime = 'medium', \DateTimeZone $timeZone = null, \OCP\IL10N $l = null);
117
+    /**
118
+     * Formats the date and time of the given timestamp
119
+     *
120
+     * @param int|\DateTime $timestamp
121
+     * @param string	$formatDate		See formatDate() for description
122
+     * @param string	$formatTime		See formatTime() for description
123
+     * @param \DateTimeZone|null	$timeZone	The timezone to use
124
+     * @param \OCP\IL10N|null		$l			The locale to use
125
+     * @return string Formatted date and time string
126
+     * @since 8.0.0
127
+     */
128
+    public function formatDateTime($timestamp, $formatDate = 'long', $formatTime = 'medium', \DateTimeZone $timeZone = null, \OCP\IL10N $l = null);
129 129
 
130
-	/**
131
-	 * Formats the date and time of the given timestamp
132
-	 *
133
-	 * @param int|\DateTime $timestamp
134
-	 * @param string	$formatDate		See formatDate() for description
135
-	 * 					Uses 'Today', 'Yesterday' and 'Tomorrow' when applicable
136
-	 * @param string	$formatTime		See formatTime() for description
137
-	 * @param \DateTimeZone|null	$timeZone	The timezone to use
138
-	 * @param \OCP\IL10N|null		$l			The locale to use
139
-	 * @return string Formatted relative date and time string
140
-	 * @since 8.0.0
141
-	 */
142
-	public function formatDateTimeRelativeDay($timestamp, $formatDate = 'long', $formatTime = 'medium', \DateTimeZone $timeZone = null, \OCP\IL10N $l = null);
130
+    /**
131
+     * Formats the date and time of the given timestamp
132
+     *
133
+     * @param int|\DateTime $timestamp
134
+     * @param string	$formatDate		See formatDate() for description
135
+     * 					Uses 'Today', 'Yesterday' and 'Tomorrow' when applicable
136
+     * @param string	$formatTime		See formatTime() for description
137
+     * @param \DateTimeZone|null	$timeZone	The timezone to use
138
+     * @param \OCP\IL10N|null		$l			The locale to use
139
+     * @return string Formatted relative date and time string
140
+     * @since 8.0.0
141
+     */
142
+    public function formatDateTimeRelativeDay($timestamp, $formatDate = 'long', $formatTime = 'medium', \DateTimeZone $timeZone = null, \OCP\IL10N $l = null);
143 143
 }
Please login to merge, or discard this patch.
lib/public/Search/PagedProvider.php 1 patch
Indentation   +32 added lines, -32 removed lines patch added patch discarded remove patch
@@ -30,39 +30,39 @@
 block discarded – undo
30 30
  */
31 31
 abstract class PagedProvider extends Provider {
32 32
 
33
-	/**
34
-	 * show all results
35
-	 * @since 8.0.0
36
-	 */
37
-	const SIZE_ALL = 0;
33
+    /**
34
+     * show all results
35
+     * @since 8.0.0
36
+     */
37
+    const SIZE_ALL = 0;
38 38
 
39
-	/**
40
-	 * Constructor
41
-	 * @param array $options
42
-	 * @since 8.0.0
43
-	 */
44
-	public function __construct($options) {
45
-		parent::__construct($options);
46
-	}
39
+    /**
40
+     * Constructor
41
+     * @param array $options
42
+     * @since 8.0.0
43
+     */
44
+    public function __construct($options) {
45
+        parent::__construct($options);
46
+    }
47 47
 
48
-	/**
49
-	 * Search for $query
50
-	 * @param string $query
51
-	 * @return array An array of OCP\Search\Result's
52
-	 * @since 8.0.0
53
-	 */
54
-	public function search($query) {
55
-		// old apps might assume they get all results, so we use SIZE_ALL
56
-		return $this->searchPaged($query, 1, self::SIZE_ALL);
57
-	}
48
+    /**
49
+     * Search for $query
50
+     * @param string $query
51
+     * @return array An array of OCP\Search\Result's
52
+     * @since 8.0.0
53
+     */
54
+    public function search($query) {
55
+        // old apps might assume they get all results, so we use SIZE_ALL
56
+        return $this->searchPaged($query, 1, self::SIZE_ALL);
57
+    }
58 58
 
59
-	/**
60
-	 * Search for $query
61
-	 * @param string $query
62
-	 * @param int $page pages start at page 1
63
-	 * @param int $size 0 = SIZE_ALL
64
-	 * @return array An array of OCP\Search\Result's
65
-	 * @since 8.0.0
66
-	 */
67
-	abstract public function searchPaged($query, $page, $size);
59
+    /**
60
+     * Search for $query
61
+     * @param string $query
62
+     * @param int $page pages start at page 1
63
+     * @param int $size 0 = SIZE_ALL
64
+     * @return array An array of OCP\Search\Result's
65
+     * @since 8.0.0
66
+     */
67
+    abstract public function searchPaged($query, $page, $size);
68 68
 }
Please login to merge, or discard this patch.
lib/public/Share/Exceptions/GenericShareException.php 1 patch
Indentation   +13 added lines, -13 removed lines patch added patch discarded remove patch
@@ -31,18 +31,18 @@
 block discarded – undo
31 31
  */
32 32
 class GenericShareException extends HintException {
33 33
 
34
-	/**
35
-	 * @param string $message
36
-	 * @param string $hint
37
-	 * @param int $code
38
-	 * @param \Exception|null $previous
39
-	 * @since 9.0.0
40
-	 */
41
-	public function __construct($message = '', $hint = '', $code = 0, \Exception $previous = null) {
42
-		if (empty($message)) {
43
-			$message = 'There was an error retrieving the share. Maybe the link is wrong, it was unshared, or it was deleted.';
44
-		}
45
-		parent::__construct($message, $hint, $code, $previous);
46
-	}
34
+    /**
35
+     * @param string $message
36
+     * @param string $hint
37
+     * @param int $code
38
+     * @param \Exception|null $previous
39
+     * @since 9.0.0
40
+     */
41
+    public function __construct($message = '', $hint = '', $code = 0, \Exception $previous = null) {
42
+        if (empty($message)) {
43
+            $message = 'There was an error retrieving the share. Maybe the link is wrong, it was unshared, or it was deleted.';
44
+        }
45
+        parent::__construct($message, $hint, $code, $previous);
46
+    }
47 47
 
48 48
 }
Please login to merge, or discard this patch.
lib/public/BackgroundJob/IJob.php 1 patch
Indentation   +46 added lines, -46 removed lines patch added patch discarded remove patch
@@ -32,56 +32,56 @@
 block discarded – undo
32 32
  * @since 7.0.0
33 33
  */
34 34
 interface IJob {
35
-	/**
36
-	 * Run the background job with the registered argument
37
-	 *
38
-	 * @param \OCP\BackgroundJob\IJobList $jobList The job list that manages the state of this job
39
-	 * @param ILogger|null $logger
40
-	 * @since 7.0.0
41
-	 */
42
-	public function execute($jobList, ILogger $logger = null);
35
+    /**
36
+     * Run the background job with the registered argument
37
+     *
38
+     * @param \OCP\BackgroundJob\IJobList $jobList The job list that manages the state of this job
39
+     * @param ILogger|null $logger
40
+     * @since 7.0.0
41
+     */
42
+    public function execute($jobList, ILogger $logger = null);
43 43
 
44
-	/**
45
-	 * @param int $id
46
-	 * @since 7.0.0
47
-	 */
48
-	public function setId($id);
44
+    /**
45
+     * @param int $id
46
+     * @since 7.0.0
47
+     */
48
+    public function setId($id);
49 49
 
50
-	/**
51
-	 * @param int $lastRun
52
-	 * @since 7.0.0
53
-	 */
54
-	public function setLastRun($lastRun);
50
+    /**
51
+     * @param int $lastRun
52
+     * @since 7.0.0
53
+     */
54
+    public function setLastRun($lastRun);
55 55
 
56
-	/**
57
-	 * @param mixed $argument
58
-	 * @since 7.0.0
59
-	 */
60
-	public function setArgument($argument);
56
+    /**
57
+     * @param mixed $argument
58
+     * @since 7.0.0
59
+     */
60
+    public function setArgument($argument);
61 61
 
62
-	/**
63
-	 * Get the id of the background job
64
-	 * This id is determined by the job list when a job is added to the list
65
-	 *
66
-	 * @return int
67
-	 * @since 7.0.0
68
-	 */
69
-	public function getId();
62
+    /**
63
+     * Get the id of the background job
64
+     * This id is determined by the job list when a job is added to the list
65
+     *
66
+     * @return int
67
+     * @since 7.0.0
68
+     */
69
+    public function getId();
70 70
 
71
-	/**
72
-	 * Get the last time this job was run as unix timestamp
73
-	 *
74
-	 * @return int
75
-	 * @since 7.0.0
76
-	 */
77
-	public function getLastRun();
71
+    /**
72
+     * Get the last time this job was run as unix timestamp
73
+     *
74
+     * @return int
75
+     * @since 7.0.0
76
+     */
77
+    public function getLastRun();
78 78
 
79
-	/**
80
-	 * Get the argument associated with the background job
81
-	 * This is the argument that will be passed to the background job
82
-	 *
83
-	 * @return mixed
84
-	 * @since 7.0.0
85
-	 */
86
-	public function getArgument();
79
+    /**
80
+     * Get the argument associated with the background job
81
+     * This is the argument that will be passed to the background job
82
+     *
83
+     * @return mixed
84
+     * @since 7.0.0
85
+     */
86
+    public function getArgument();
87 87
 }
Please login to merge, or discard this patch.
lib/public/Encryption/Exceptions/GenericEncryptionException.php 1 patch
Indentation   +13 added lines, -13 removed lines patch added patch discarded remove patch
@@ -35,18 +35,18 @@
 block discarded – undo
35 35
  */
36 36
 class GenericEncryptionException extends HintException {
37 37
 
38
-	/**
39
-	 * @param string $message
40
-	 * @param string $hint
41
-	 * @param int $code
42
-	 * @param \Exception|null $previous
43
-	 * @since 8.1.0
44
-	 */
45
-	public function __construct($message = '', $hint = '', $code = 0, \Exception $previous = null) {
46
-		if (empty($message)) {
47
-			$message = 'Unspecified encryption exception';
48
-		}
49
-		parent::__construct($message, $hint, $code, $previous);
50
-	}
38
+    /**
39
+     * @param string $message
40
+     * @param string $hint
41
+     * @param int $code
42
+     * @param \Exception|null $previous
43
+     * @since 8.1.0
44
+     */
45
+    public function __construct($message = '', $hint = '', $code = 0, \Exception $previous = null) {
46
+        if (empty($message)) {
47
+            $message = 'Unspecified encryption exception';
48
+        }
49
+        parent::__construct($message, $hint, $code, $previous);
50
+    }
51 51
 
52 52
 }
Please login to merge, or discard this patch.
lib/public/Diagnostics/IQueryLogger.php 1 patch
Indentation   +36 added lines, -36 removed lines patch added patch discarded remove patch
@@ -33,43 +33,43 @@
 block discarded – undo
33 33
  * @since 8.0.0
34 34
  */
35 35
 interface IQueryLogger extends SQLLogger {
36
-	/**
37
-	 * Mark the start of a query providing query SQL statement, its parameters and types. 
38
-	 * This method should be called as close to the DB as possible and after 
39
-	 * query is finished finalized with stopQuery() method. 
40
-	 * 
41
-	 * @param string $sql
42
-	 * @param array|null $params
43
-	 * @param array|null $types
44
-	 * @since 8.0.0
45
-	 */
46
-	public function startQuery($sql, array $params = null, array $types = null);
36
+    /**
37
+     * Mark the start of a query providing query SQL statement, its parameters and types. 
38
+     * This method should be called as close to the DB as possible and after 
39
+     * query is finished finalized with stopQuery() method. 
40
+     * 
41
+     * @param string $sql
42
+     * @param array|null $params
43
+     * @param array|null $types
44
+     * @since 8.0.0
45
+     */
46
+    public function startQuery($sql, array $params = null, array $types = null);
47 47
 
48
-	/**
49
-	 * Mark the end of the current active query. Ending query should store \OCP\Diagnostics\IQuery to
50
-	 * be returned with getQueries() method.
51
-	 * 
52
-	 * @return mixed
53
-	 * @since 8.0.0
54
-	 */
55
-	public function stopQuery();
48
+    /**
49
+     * Mark the end of the current active query. Ending query should store \OCP\Diagnostics\IQuery to
50
+     * be returned with getQueries() method.
51
+     * 
52
+     * @return mixed
53
+     * @since 8.0.0
54
+     */
55
+    public function stopQuery();
56 56
 
57
-	/**
58
-	 * This method should return all \OCP\Diagnostics\IQuery objects stored using
59
-	 * startQuery()/stopQuery() methods.
60
-	 * 
61
-	 * @return \OCP\Diagnostics\IQuery[]
62
-	 * @since 8.0.0
63
-	 */
64
-	public function getQueries();
57
+    /**
58
+     * This method should return all \OCP\Diagnostics\IQuery objects stored using
59
+     * startQuery()/stopQuery() methods.
60
+     * 
61
+     * @return \OCP\Diagnostics\IQuery[]
62
+     * @since 8.0.0
63
+     */
64
+    public function getQueries();
65 65
 
66
-	/**
67
-	 * Activate the module for the duration of the request. Deactivated module
68
-	 * does not create and store \OCP\Diagnostics\IQuery objects.
69
-	 * Only activated module should create and store objects to be 
70
-	 * returned with getQueries() call. 
71
-	 *
72
-	 * @since 12.0.0
73
-	 */
74
-	public function activate();
66
+    /**
67
+     * Activate the module for the duration of the request. Deactivated module
68
+     * does not create and store \OCP\Diagnostics\IQuery objects.
69
+     * Only activated module should create and store objects to be 
70
+     * returned with getQueries() call. 
71
+     *
72
+     * @since 12.0.0
73
+     */
74
+    public function activate();
75 75
 }
Please login to merge, or discard this patch.
lib/public/Files/Storage.php 1 patch
Indentation   +413 added lines, -413 removed lines patch added patch discarded remove patch
@@ -47,417 +47,417 @@
 block discarded – undo
47 47
  * @deprecated 9.0.0 use \OCP\Files\Storage\IStorage instead
48 48
  */
49 49
 interface Storage extends IStorage {
50
-	/**
51
-	 * $parameters is a free form array with the configuration options needed to construct the storage
52
-	 *
53
-	 * @param array $parameters
54
-	 * @since 6.0.0
55
-	 */
56
-	public function __construct($parameters);
57
-
58
-	/**
59
-	 * Get the identifier for the storage,
60
-	 * the returned id should be the same for every storage object that is created with the same parameters
61
-	 * and two storage objects with the same id should refer to two storages that display the same files.
62
-	 *
63
-	 * @return string
64
-	 * @since 6.0.0
65
-	 */
66
-	public function getId();
67
-
68
-	/**
69
-	 * see http://php.net/manual/en/function.mkdir.php
70
-	 * implementations need to implement a recursive mkdir
71
-	 *
72
-	 * @param string $path
73
-	 * @return bool
74
-	 * @since 6.0.0
75
-	 */
76
-	public function mkdir($path);
77
-
78
-	/**
79
-	 * see http://php.net/manual/en/function.rmdir.php
80
-	 *
81
-	 * @param string $path
82
-	 * @return bool
83
-	 * @since 6.0.0
84
-	 */
85
-	public function rmdir($path);
86
-
87
-	/**
88
-	 * see http://php.net/manual/en/function.opendir.php
89
-	 *
90
-	 * @param string $path
91
-	 * @return resource|false
92
-	 * @since 6.0.0
93
-	 */
94
-	public function opendir($path);
95
-
96
-	/**
97
-	 * see http://php.net/manual/en/function.is-dir.php
98
-	 *
99
-	 * @param string $path
100
-	 * @return bool
101
-	 * @since 6.0.0
102
-	 */
103
-	public function is_dir($path);
104
-
105
-	/**
106
-	 * see http://php.net/manual/en/function.is-file.php
107
-	 *
108
-	 * @param string $path
109
-	 * @return bool
110
-	 * @since 6.0.0
111
-	 */
112
-	public function is_file($path);
113
-
114
-	/**
115
-	 * see http://php.net/manual/en/function.stat.php
116
-	 * only the following keys are required in the result: size and mtime
117
-	 *
118
-	 * @param string $path
119
-	 * @return array|false
120
-	 * @since 6.0.0
121
-	 */
122
-	public function stat($path);
123
-
124
-	/**
125
-	 * see http://php.net/manual/en/function.filetype.php
126
-	 *
127
-	 * @param string $path
128
-	 * @return string|false
129
-	 * @since 6.0.0
130
-	 */
131
-	public function filetype($path);
132
-
133
-	/**
134
-	 * see http://php.net/manual/en/function.filesize.php
135
-	 * The result for filesize when called on a folder is required to be 0
136
-	 *
137
-	 * @param string $path
138
-	 * @return int|false
139
-	 * @since 6.0.0
140
-	 */
141
-	public function filesize($path);
142
-
143
-	/**
144
-	 * check if a file can be created in $path
145
-	 *
146
-	 * @param string $path
147
-	 * @return bool
148
-	 * @since 6.0.0
149
-	 */
150
-	public function isCreatable($path);
151
-
152
-	/**
153
-	 * check if a file can be read
154
-	 *
155
-	 * @param string $path
156
-	 * @return bool
157
-	 * @since 6.0.0
158
-	 */
159
-	public function isReadable($path);
160
-
161
-	/**
162
-	 * check if a file can be written to
163
-	 *
164
-	 * @param string $path
165
-	 * @return bool
166
-	 * @since 6.0.0
167
-	 */
168
-	public function isUpdatable($path);
169
-
170
-	/**
171
-	 * check if a file can be deleted
172
-	 *
173
-	 * @param string $path
174
-	 * @return bool
175
-	 * @since 6.0.0
176
-	 */
177
-	public function isDeletable($path);
178
-
179
-	/**
180
-	 * check if a file can be shared
181
-	 *
182
-	 * @param string $path
183
-	 * @return bool
184
-	 * @since 6.0.0
185
-	 */
186
-	public function isSharable($path);
187
-
188
-	/**
189
-	 * get the full permissions of a path.
190
-	 * Should return a combination of the PERMISSION_ constants defined in lib/public/constants.php
191
-	 *
192
-	 * @param string $path
193
-	 * @return int
194
-	 * @since 6.0.0
195
-	 */
196
-	public function getPermissions($path);
197
-
198
-	/**
199
-	 * see http://php.net/manual/en/function.file_exists.php
200
-	 *
201
-	 * @param string $path
202
-	 * @return bool
203
-	 * @since 6.0.0
204
-	 */
205
-	public function file_exists($path);
206
-
207
-	/**
208
-	 * see http://php.net/manual/en/function.filemtime.php
209
-	 *
210
-	 * @param string $path
211
-	 * @return int|false
212
-	 * @since 6.0.0
213
-	 */
214
-	public function filemtime($path);
215
-
216
-	/**
217
-	 * see http://php.net/manual/en/function.file_get_contents.php
218
-	 *
219
-	 * @param string $path
220
-	 * @return string|false
221
-	 * @since 6.0.0
222
-	 */
223
-	public function file_get_contents($path);
224
-
225
-	/**
226
-	 * see http://php.net/manual/en/function.file_put_contents.php
227
-	 *
228
-	 * @param string $path
229
-	 * @param string $data
230
-	 * @return bool
231
-	 * @since 6.0.0
232
-	 */
233
-	public function file_put_contents($path, $data);
234
-
235
-	/**
236
-	 * see http://php.net/manual/en/function.unlink.php
237
-	 *
238
-	 * @param string $path
239
-	 * @return bool
240
-	 * @since 6.0.0
241
-	 */
242
-	public function unlink($path);
243
-
244
-	/**
245
-	 * see http://php.net/manual/en/function.rename.php
246
-	 *
247
-	 * @param string $path1
248
-	 * @param string $path2
249
-	 * @return bool
250
-	 * @since 6.0.0
251
-	 */
252
-	public function rename($path1, $path2);
253
-
254
-	/**
255
-	 * see http://php.net/manual/en/function.copy.php
256
-	 *
257
-	 * @param string $path1
258
-	 * @param string $path2
259
-	 * @return bool
260
-	 * @since 6.0.0
261
-	 */
262
-	public function copy($path1, $path2);
263
-
264
-	/**
265
-	 * see http://php.net/manual/en/function.fopen.php
266
-	 *
267
-	 * @param string $path
268
-	 * @param string $mode
269
-	 * @return resource|false
270
-	 * @since 6.0.0
271
-	 */
272
-	public function fopen($path, $mode);
273
-
274
-	/**
275
-	 * get the mimetype for a file or folder
276
-	 * The mimetype for a folder is required to be "httpd/unix-directory"
277
-	 *
278
-	 * @param string $path
279
-	 * @return string|false
280
-	 * @since 6.0.0
281
-	 */
282
-	public function getMimeType($path);
283
-
284
-	/**
285
-	 * see http://php.net/manual/en/function.hash-file.php
286
-	 *
287
-	 * @param string $type
288
-	 * @param string $path
289
-	 * @param bool $raw
290
-	 * @return string|false
291
-	 * @since 6.0.0
292
-	 */
293
-	public function hash($type, $path, $raw = false);
294
-
295
-	/**
296
-	 * see http://php.net/manual/en/function.free_space.php
297
-	 *
298
-	 * @param string $path
299
-	 * @return int|false
300
-	 * @since 6.0.0
301
-	 */
302
-	public function free_space($path);
303
-
304
-	/**
305
-	 * search for occurrences of $query in file names
306
-	 *
307
-	 * @param string $query
308
-	 * @return array|false
309
-	 * @since 6.0.0
310
-	 */
311
-	public function search($query);
312
-
313
-	/**
314
-	 * see http://php.net/manual/en/function.touch.php
315
-	 * If the backend does not support the operation, false should be returned
316
-	 *
317
-	 * @param string $path
318
-	 * @param int $mtime
319
-	 * @return bool
320
-	 * @since 6.0.0
321
-	 */
322
-	public function touch($path, $mtime = null);
323
-
324
-	/**
325
-	 * get the path to a local version of the file.
326
-	 * The local version of the file can be temporary and doesn't have to be persistent across requests
327
-	 *
328
-	 * @param string $path
329
-	 * @return string|false
330
-	 * @since 6.0.0
331
-	 */
332
-	public function getLocalFile($path);
333
-
334
-	/**
335
-	 * check if a file or folder has been updated since $time
336
-	 *
337
-	 * @param string $path
338
-	 * @param int $time
339
-	 * @return bool
340
-	 * @since 6.0.0
341
-	 *
342
-	 * hasUpdated for folders should return at least true if a file inside the folder is add, removed or renamed.
343
-	 * returning true for other changes in the folder is optional
344
-	 */
345
-	public function hasUpdated($path, $time);
346
-
347
-	/**
348
-	 * get the ETag for a file or folder
349
-	 *
350
-	 * @param string $path
351
-	 * @return string|false
352
-	 * @since 6.0.0
353
-	 */
354
-	public function getETag($path);
355
-
356
-	/**
357
-	 * Returns whether the storage is local, which means that files
358
-	 * are stored on the local filesystem instead of remotely.
359
-	 * Calling getLocalFile() for local storages should always
360
-	 * return the local files, whereas for non-local storages
361
-	 * it might return a temporary file.
362
-	 *
363
-	 * @return bool true if the files are stored locally, false otherwise
364
-	 * @since 7.0.0
365
-	 */
366
-	public function isLocal();
367
-
368
-	/**
369
-	 * Check if the storage is an instance of $class or is a wrapper for a storage that is an instance of $class
370
-	 *
371
-	 * @param string $class
372
-	 * @return bool
373
-	 * @since 7.0.0
374
-	 */
375
-	public function instanceOfStorage($class);
376
-
377
-	/**
378
-	 * A custom storage implementation can return an url for direct download of a give file.
379
-	 *
380
-	 * For now the returned array can hold the parameter url - in future more attributes might follow.
381
-	 *
382
-	 * @param string $path
383
-	 * @return array|false
384
-	 * @since 8.0.0
385
-	 */
386
-	public function getDirectDownload($path);
387
-
388
-	/**
389
-	 * @param string $path the path of the target folder
390
-	 * @param string $fileName the name of the file itself
391
-	 * @return void
392
-	 * @throws InvalidPathException
393
-	 * @since 8.1.0
394
-	 */
395
-	public function verifyPath($path, $fileName);
396
-
397
-	/**
398
-	 * @param IStorage $sourceStorage
399
-	 * @param string $sourceInternalPath
400
-	 * @param string $targetInternalPath
401
-	 * @return bool
402
-	 * @since 8.1.0
403
-	 */
404
-	public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath);
405
-
406
-	/**
407
-	 * @param IStorage $sourceStorage
408
-	 * @param string $sourceInternalPath
409
-	 * @param string $targetInternalPath
410
-	 * @return bool
411
-	 * @since 8.1.0
412
-	 */
413
-	public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath);
414
-
415
-	/**
416
-	 * @param string $path The path of the file to acquire the lock for
417
-	 * @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
418
-	 * @param \OCP\Lock\ILockingProvider $provider
419
-	 * @throws \OCP\Lock\LockedException
420
-	 * @since 8.1.0
421
-	 */
422
-	public function acquireLock($path, $type, ILockingProvider $provider);
423
-
424
-	/**
425
-	 * @param string $path The path of the file to acquire the lock for
426
-	 * @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
427
-	 * @param \OCP\Lock\ILockingProvider $provider
428
-	 * @throws \OCP\Lock\LockedException
429
-	 * @since 8.1.0
430
-	 */
431
-	public function releaseLock($path, $type, ILockingProvider $provider);
432
-
433
-	/**
434
-	 * @param string $path The path of the file to change the lock for
435
-	 * @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
436
-	 * @param \OCP\Lock\ILockingProvider $provider
437
-	 * @throws \OCP\Lock\LockedException
438
-	 * @since 8.1.0
439
-	 */
440
-	public function changeLock($path, $type, ILockingProvider $provider);
441
-
442
-	/**
443
-	 * Test a storage for availability
444
-	 *
445
-	 * @since 8.2.0
446
-	 * @return bool
447
-	 */
448
-	public function test();
449
-
450
-	/**
451
-	 * @since 8.2.0
452
-	 * @return array [ available, last_checked ]
453
-	 */
454
-	public function getAvailability();
455
-
456
-	/**
457
-	 * @since 8.2.0
458
-	 * @param bool $isAvailable
459
-	 */
460
-	public function setAvailability($isAvailable);
461
-
462
-	public function needsPartFile();
50
+    /**
51
+     * $parameters is a free form array with the configuration options needed to construct the storage
52
+     *
53
+     * @param array $parameters
54
+     * @since 6.0.0
55
+     */
56
+    public function __construct($parameters);
57
+
58
+    /**
59
+     * Get the identifier for the storage,
60
+     * the returned id should be the same for every storage object that is created with the same parameters
61
+     * and two storage objects with the same id should refer to two storages that display the same files.
62
+     *
63
+     * @return string
64
+     * @since 6.0.0
65
+     */
66
+    public function getId();
67
+
68
+    /**
69
+     * see http://php.net/manual/en/function.mkdir.php
70
+     * implementations need to implement a recursive mkdir
71
+     *
72
+     * @param string $path
73
+     * @return bool
74
+     * @since 6.0.0
75
+     */
76
+    public function mkdir($path);
77
+
78
+    /**
79
+     * see http://php.net/manual/en/function.rmdir.php
80
+     *
81
+     * @param string $path
82
+     * @return bool
83
+     * @since 6.0.0
84
+     */
85
+    public function rmdir($path);
86
+
87
+    /**
88
+     * see http://php.net/manual/en/function.opendir.php
89
+     *
90
+     * @param string $path
91
+     * @return resource|false
92
+     * @since 6.0.0
93
+     */
94
+    public function opendir($path);
95
+
96
+    /**
97
+     * see http://php.net/manual/en/function.is-dir.php
98
+     *
99
+     * @param string $path
100
+     * @return bool
101
+     * @since 6.0.0
102
+     */
103
+    public function is_dir($path);
104
+
105
+    /**
106
+     * see http://php.net/manual/en/function.is-file.php
107
+     *
108
+     * @param string $path
109
+     * @return bool
110
+     * @since 6.0.0
111
+     */
112
+    public function is_file($path);
113
+
114
+    /**
115
+     * see http://php.net/manual/en/function.stat.php
116
+     * only the following keys are required in the result: size and mtime
117
+     *
118
+     * @param string $path
119
+     * @return array|false
120
+     * @since 6.0.0
121
+     */
122
+    public function stat($path);
123
+
124
+    /**
125
+     * see http://php.net/manual/en/function.filetype.php
126
+     *
127
+     * @param string $path
128
+     * @return string|false
129
+     * @since 6.0.0
130
+     */
131
+    public function filetype($path);
132
+
133
+    /**
134
+     * see http://php.net/manual/en/function.filesize.php
135
+     * The result for filesize when called on a folder is required to be 0
136
+     *
137
+     * @param string $path
138
+     * @return int|false
139
+     * @since 6.0.0
140
+     */
141
+    public function filesize($path);
142
+
143
+    /**
144
+     * check if a file can be created in $path
145
+     *
146
+     * @param string $path
147
+     * @return bool
148
+     * @since 6.0.0
149
+     */
150
+    public function isCreatable($path);
151
+
152
+    /**
153
+     * check if a file can be read
154
+     *
155
+     * @param string $path
156
+     * @return bool
157
+     * @since 6.0.0
158
+     */
159
+    public function isReadable($path);
160
+
161
+    /**
162
+     * check if a file can be written to
163
+     *
164
+     * @param string $path
165
+     * @return bool
166
+     * @since 6.0.0
167
+     */
168
+    public function isUpdatable($path);
169
+
170
+    /**
171
+     * check if a file can be deleted
172
+     *
173
+     * @param string $path
174
+     * @return bool
175
+     * @since 6.0.0
176
+     */
177
+    public function isDeletable($path);
178
+
179
+    /**
180
+     * check if a file can be shared
181
+     *
182
+     * @param string $path
183
+     * @return bool
184
+     * @since 6.0.0
185
+     */
186
+    public function isSharable($path);
187
+
188
+    /**
189
+     * get the full permissions of a path.
190
+     * Should return a combination of the PERMISSION_ constants defined in lib/public/constants.php
191
+     *
192
+     * @param string $path
193
+     * @return int
194
+     * @since 6.0.0
195
+     */
196
+    public function getPermissions($path);
197
+
198
+    /**
199
+     * see http://php.net/manual/en/function.file_exists.php
200
+     *
201
+     * @param string $path
202
+     * @return bool
203
+     * @since 6.0.0
204
+     */
205
+    public function file_exists($path);
206
+
207
+    /**
208
+     * see http://php.net/manual/en/function.filemtime.php
209
+     *
210
+     * @param string $path
211
+     * @return int|false
212
+     * @since 6.0.0
213
+     */
214
+    public function filemtime($path);
215
+
216
+    /**
217
+     * see http://php.net/manual/en/function.file_get_contents.php
218
+     *
219
+     * @param string $path
220
+     * @return string|false
221
+     * @since 6.0.0
222
+     */
223
+    public function file_get_contents($path);
224
+
225
+    /**
226
+     * see http://php.net/manual/en/function.file_put_contents.php
227
+     *
228
+     * @param string $path
229
+     * @param string $data
230
+     * @return bool
231
+     * @since 6.0.0
232
+     */
233
+    public function file_put_contents($path, $data);
234
+
235
+    /**
236
+     * see http://php.net/manual/en/function.unlink.php
237
+     *
238
+     * @param string $path
239
+     * @return bool
240
+     * @since 6.0.0
241
+     */
242
+    public function unlink($path);
243
+
244
+    /**
245
+     * see http://php.net/manual/en/function.rename.php
246
+     *
247
+     * @param string $path1
248
+     * @param string $path2
249
+     * @return bool
250
+     * @since 6.0.0
251
+     */
252
+    public function rename($path1, $path2);
253
+
254
+    /**
255
+     * see http://php.net/manual/en/function.copy.php
256
+     *
257
+     * @param string $path1
258
+     * @param string $path2
259
+     * @return bool
260
+     * @since 6.0.0
261
+     */
262
+    public function copy($path1, $path2);
263
+
264
+    /**
265
+     * see http://php.net/manual/en/function.fopen.php
266
+     *
267
+     * @param string $path
268
+     * @param string $mode
269
+     * @return resource|false
270
+     * @since 6.0.0
271
+     */
272
+    public function fopen($path, $mode);
273
+
274
+    /**
275
+     * get the mimetype for a file or folder
276
+     * The mimetype for a folder is required to be "httpd/unix-directory"
277
+     *
278
+     * @param string $path
279
+     * @return string|false
280
+     * @since 6.0.0
281
+     */
282
+    public function getMimeType($path);
283
+
284
+    /**
285
+     * see http://php.net/manual/en/function.hash-file.php
286
+     *
287
+     * @param string $type
288
+     * @param string $path
289
+     * @param bool $raw
290
+     * @return string|false
291
+     * @since 6.0.0
292
+     */
293
+    public function hash($type, $path, $raw = false);
294
+
295
+    /**
296
+     * see http://php.net/manual/en/function.free_space.php
297
+     *
298
+     * @param string $path
299
+     * @return int|false
300
+     * @since 6.0.0
301
+     */
302
+    public function free_space($path);
303
+
304
+    /**
305
+     * search for occurrences of $query in file names
306
+     *
307
+     * @param string $query
308
+     * @return array|false
309
+     * @since 6.0.0
310
+     */
311
+    public function search($query);
312
+
313
+    /**
314
+     * see http://php.net/manual/en/function.touch.php
315
+     * If the backend does not support the operation, false should be returned
316
+     *
317
+     * @param string $path
318
+     * @param int $mtime
319
+     * @return bool
320
+     * @since 6.0.0
321
+     */
322
+    public function touch($path, $mtime = null);
323
+
324
+    /**
325
+     * get the path to a local version of the file.
326
+     * The local version of the file can be temporary and doesn't have to be persistent across requests
327
+     *
328
+     * @param string $path
329
+     * @return string|false
330
+     * @since 6.0.0
331
+     */
332
+    public function getLocalFile($path);
333
+
334
+    /**
335
+     * check if a file or folder has been updated since $time
336
+     *
337
+     * @param string $path
338
+     * @param int $time
339
+     * @return bool
340
+     * @since 6.0.0
341
+     *
342
+     * hasUpdated for folders should return at least true if a file inside the folder is add, removed or renamed.
343
+     * returning true for other changes in the folder is optional
344
+     */
345
+    public function hasUpdated($path, $time);
346
+
347
+    /**
348
+     * get the ETag for a file or folder
349
+     *
350
+     * @param string $path
351
+     * @return string|false
352
+     * @since 6.0.0
353
+     */
354
+    public function getETag($path);
355
+
356
+    /**
357
+     * Returns whether the storage is local, which means that files
358
+     * are stored on the local filesystem instead of remotely.
359
+     * Calling getLocalFile() for local storages should always
360
+     * return the local files, whereas for non-local storages
361
+     * it might return a temporary file.
362
+     *
363
+     * @return bool true if the files are stored locally, false otherwise
364
+     * @since 7.0.0
365
+     */
366
+    public function isLocal();
367
+
368
+    /**
369
+     * Check if the storage is an instance of $class or is a wrapper for a storage that is an instance of $class
370
+     *
371
+     * @param string $class
372
+     * @return bool
373
+     * @since 7.0.0
374
+     */
375
+    public function instanceOfStorage($class);
376
+
377
+    /**
378
+     * A custom storage implementation can return an url for direct download of a give file.
379
+     *
380
+     * For now the returned array can hold the parameter url - in future more attributes might follow.
381
+     *
382
+     * @param string $path
383
+     * @return array|false
384
+     * @since 8.0.0
385
+     */
386
+    public function getDirectDownload($path);
387
+
388
+    /**
389
+     * @param string $path the path of the target folder
390
+     * @param string $fileName the name of the file itself
391
+     * @return void
392
+     * @throws InvalidPathException
393
+     * @since 8.1.0
394
+     */
395
+    public function verifyPath($path, $fileName);
396
+
397
+    /**
398
+     * @param IStorage $sourceStorage
399
+     * @param string $sourceInternalPath
400
+     * @param string $targetInternalPath
401
+     * @return bool
402
+     * @since 8.1.0
403
+     */
404
+    public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath);
405
+
406
+    /**
407
+     * @param IStorage $sourceStorage
408
+     * @param string $sourceInternalPath
409
+     * @param string $targetInternalPath
410
+     * @return bool
411
+     * @since 8.1.0
412
+     */
413
+    public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath);
414
+
415
+    /**
416
+     * @param string $path The path of the file to acquire the lock for
417
+     * @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
418
+     * @param \OCP\Lock\ILockingProvider $provider
419
+     * @throws \OCP\Lock\LockedException
420
+     * @since 8.1.0
421
+     */
422
+    public function acquireLock($path, $type, ILockingProvider $provider);
423
+
424
+    /**
425
+     * @param string $path The path of the file to acquire the lock for
426
+     * @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
427
+     * @param \OCP\Lock\ILockingProvider $provider
428
+     * @throws \OCP\Lock\LockedException
429
+     * @since 8.1.0
430
+     */
431
+    public function releaseLock($path, $type, ILockingProvider $provider);
432
+
433
+    /**
434
+     * @param string $path The path of the file to change the lock for
435
+     * @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
436
+     * @param \OCP\Lock\ILockingProvider $provider
437
+     * @throws \OCP\Lock\LockedException
438
+     * @since 8.1.0
439
+     */
440
+    public function changeLock($path, $type, ILockingProvider $provider);
441
+
442
+    /**
443
+     * Test a storage for availability
444
+     *
445
+     * @since 8.2.0
446
+     * @return bool
447
+     */
448
+    public function test();
449
+
450
+    /**
451
+     * @since 8.2.0
452
+     * @return array [ available, last_checked ]
453
+     */
454
+    public function getAvailability();
455
+
456
+    /**
457
+     * @since 8.2.0
458
+     * @param bool $isAvailable
459
+     */
460
+    public function setAvailability($isAvailable);
461
+
462
+    public function needsPartFile();
463 463
 }
Please login to merge, or discard this patch.