Passed
Push — master ( 7d5b0c...557c49 )
by Roeland
13:29 queued 12s
created
apps/dav/lib/Avatars/AvatarNode.php 1 patch
Indentation   +59 added lines, -59 removed lines patch added patch discarded remove patch
@@ -27,72 +27,72 @@
 block discarded – undo
27 27
 use Sabre\DAV\File;
28 28
 
29 29
 class AvatarNode extends File {
30
-	private $ext;
31
-	private $size;
32
-	private $avatar;
30
+    private $ext;
31
+    private $size;
32
+    private $avatar;
33 33
 
34
-	/**
35
-	 * AvatarNode constructor.
36
-	 *
37
-	 * @param integer $size
38
-	 * @param string $ext
39
-	 * @param IAvatar $avatar
40
-	 */
41
-	public function __construct($size, $ext, $avatar) {
42
-		$this->size = $size;
43
-		$this->ext = $ext;
44
-		$this->avatar = $avatar;
45
-	}
34
+    /**
35
+     * AvatarNode constructor.
36
+     *
37
+     * @param integer $size
38
+     * @param string $ext
39
+     * @param IAvatar $avatar
40
+     */
41
+    public function __construct($size, $ext, $avatar) {
42
+        $this->size = $size;
43
+        $this->ext = $ext;
44
+        $this->avatar = $avatar;
45
+    }
46 46
 
47
-	/**
48
-	 * Returns the name of the node.
49
-	 *
50
-	 * This is used to generate the url.
51
-	 *
52
-	 * @return string
53
-	 */
54
-	public function getName() {
55
-		return "$this->size.$this->ext";
56
-	}
47
+    /**
48
+     * Returns the name of the node.
49
+     *
50
+     * This is used to generate the url.
51
+     *
52
+     * @return string
53
+     */
54
+    public function getName() {
55
+        return "$this->size.$this->ext";
56
+    }
57 57
 
58
-	public function get() {
59
-		$image = $this->avatar->get($this->size);
60
-		$res = $image->resource();
58
+    public function get() {
59
+        $image = $this->avatar->get($this->size);
60
+        $res = $image->resource();
61 61
 
62
-		ob_start();
63
-		if ($this->ext === 'png') {
64
-			imagepng($res);
65
-		} else {
66
-			imagejpeg($res);
67
-		}
62
+        ob_start();
63
+        if ($this->ext === 'png') {
64
+            imagepng($res);
65
+        } else {
66
+            imagejpeg($res);
67
+        }
68 68
 
69
-		return ob_get_clean();
70
-	}
69
+        return ob_get_clean();
70
+    }
71 71
 
72
-	/**
73
-	 * Returns the mime-type for a file
74
-	 *
75
-	 * If null is returned, we'll assume application/octet-stream
76
-	 *
77
-	 * @return string|null
78
-	 */
79
-	public function getContentType() {
80
-		if ($this->ext === 'png') {
81
-			return 'image/png';
82
-		}
83
-		return 'image/jpeg';
84
-	}
72
+    /**
73
+     * Returns the mime-type for a file
74
+     *
75
+     * If null is returned, we'll assume application/octet-stream
76
+     *
77
+     * @return string|null
78
+     */
79
+    public function getContentType() {
80
+        if ($this->ext === 'png') {
81
+            return 'image/png';
82
+        }
83
+        return 'image/jpeg';
84
+    }
85 85
 
86
-	public function getETag() {
87
-		return $this->avatar->getFile($this->size)->getEtag();
88
-	}
86
+    public function getETag() {
87
+        return $this->avatar->getFile($this->size)->getEtag();
88
+    }
89 89
 
90
-	public function getLastModified() {
91
-		$timestamp = $this->avatar->getFile($this->size)->getMTime();
92
-		if (!empty($timestamp)) {
93
-			return (int)$timestamp;
94
-		}
95
-		return $timestamp;
90
+    public function getLastModified() {
91
+        $timestamp = $this->avatar->getFile($this->size)->getMTime();
92
+        if (!empty($timestamp)) {
93
+            return (int)$timestamp;
94
+        }
95
+        return $timestamp;
96 96
 
97
-	}
97
+    }
98 98
 }
Please login to merge, or discard this patch.
lib/private/Cache/CappedMemoryCache.php 1 patch
Indentation   +62 added lines, -62 removed lines patch added patch discarded remove patch
@@ -31,66 +31,66 @@
 block discarded – undo
31 31
  */
32 32
 class CappedMemoryCache implements ICache, \ArrayAccess {
33 33
 
34
-	private $capacity;
35
-	private $cache = [];
36
-
37
-	public function __construct($capacity = 512) {
38
-		$this->capacity = $capacity;
39
-	}
40
-
41
-	public function hasKey($key) {
42
-		return isset($this->cache[$key]);
43
-	}
44
-
45
-	public function get($key) {
46
-		return isset($this->cache[$key]) ? $this->cache[$key] : null;
47
-	}
48
-
49
-	public function set($key, $value, $ttl = 0) {
50
-		if (is_null($key)) {
51
-			$this->cache[] = $value;
52
-		} else {
53
-			$this->cache[$key] = $value;
54
-		}
55
-		$this->garbageCollect();
56
-	}
57
-
58
-	public function remove($key) {
59
-		unset($this->cache[$key]);
60
-		return true;
61
-	}
62
-
63
-	public function clear($prefix = '') {
64
-		$this->cache = [];
65
-		return true;
66
-	}
67
-
68
-	public function offsetExists($offset) {
69
-		return $this->hasKey($offset);
70
-	}
71
-
72
-	public function &offsetGet($offset) {
73
-		return $this->cache[$offset];
74
-	}
75
-
76
-	public function offsetSet($offset, $value) {
77
-		$this->set($offset, $value);
78
-	}
79
-
80
-	public function offsetUnset($offset) {
81
-		$this->remove($offset);
82
-	}
83
-
84
-	public function getData() {
85
-		return $this->cache;
86
-	}
87
-
88
-
89
-	private function garbageCollect() {
90
-		while (count($this->cache) > $this->capacity) {
91
-			reset($this->cache);
92
-			$key = key($this->cache);
93
-			$this->remove($key);
94
-		}
95
-	}
34
+    private $capacity;
35
+    private $cache = [];
36
+
37
+    public function __construct($capacity = 512) {
38
+        $this->capacity = $capacity;
39
+    }
40
+
41
+    public function hasKey($key) {
42
+        return isset($this->cache[$key]);
43
+    }
44
+
45
+    public function get($key) {
46
+        return isset($this->cache[$key]) ? $this->cache[$key] : null;
47
+    }
48
+
49
+    public function set($key, $value, $ttl = 0) {
50
+        if (is_null($key)) {
51
+            $this->cache[] = $value;
52
+        } else {
53
+            $this->cache[$key] = $value;
54
+        }
55
+        $this->garbageCollect();
56
+    }
57
+
58
+    public function remove($key) {
59
+        unset($this->cache[$key]);
60
+        return true;
61
+    }
62
+
63
+    public function clear($prefix = '') {
64
+        $this->cache = [];
65
+        return true;
66
+    }
67
+
68
+    public function offsetExists($offset) {
69
+        return $this->hasKey($offset);
70
+    }
71
+
72
+    public function &offsetGet($offset) {
73
+        return $this->cache[$offset];
74
+    }
75
+
76
+    public function offsetSet($offset, $value) {
77
+        $this->set($offset, $value);
78
+    }
79
+
80
+    public function offsetUnset($offset) {
81
+        $this->remove($offset);
82
+    }
83
+
84
+    public function getData() {
85
+        return $this->cache;
86
+    }
87
+
88
+
89
+    private function garbageCollect() {
90
+        while (count($this->cache) > $this->capacity) {
91
+            reset($this->cache);
92
+            $key = key($this->cache);
93
+            $this->remove($key);
94
+        }
95
+    }
96 96
 }
Please login to merge, or discard this patch.
lib/private/Contacts/ContactsMenu/ActionProviderStore.php 1 patch
Indentation   +75 added lines, -75 removed lines patch added patch discarded remove patch
@@ -35,80 +35,80 @@
 block discarded – undo
35 35
 
36 36
 class ActionProviderStore {
37 37
 
38
-	/** @var IServerContainer */
39
-	private $serverContainer;
40
-
41
-	/** @var AppManager */
42
-	private $appManager;
43
-
44
-	/** @var ILogger */
45
-	private $logger;
46
-
47
-	/**
48
-	 * @param IServerContainer $serverContainer
49
-	 * @param AppManager $appManager
50
-	 * @param ILogger $logger
51
-	 */
52
-	public function __construct(IServerContainer $serverContainer, AppManager $appManager, ILogger $logger) {
53
-		$this->serverContainer = $serverContainer;
54
-		$this->appManager = $appManager;
55
-		$this->logger = $logger;
56
-	}
57
-
58
-	/**
59
-	 * @param IUser $user
60
-	 * @return IProvider[]
61
-	 * @throws Exception
62
-	 */
63
-	public function getProviders(IUser $user) {
64
-		$appClasses = $this->getAppProviderClasses($user);
65
-		$providerClasses = $this->getServerProviderClasses();
66
-		$allClasses = array_merge($providerClasses, $appClasses);
67
-		$providers = [];
68
-
69
-		foreach ($allClasses as $class) {
70
-			try {
71
-				$providers[] = $this->serverContainer->query($class);
72
-			} catch (QueryException $ex) {
73
-				$this->logger->logException($ex, [
74
-					'message' => "Could not load contacts menu action provider $class",
75
-					'app' => 'core',
76
-				]);
77
-				throw new Exception("Could not load contacts menu action provider");
78
-			}
79
-		}
80
-
81
-		return $providers;
82
-	}
83
-
84
-	/**
85
-	 * @return string[]
86
-	 */
87
-	private function getServerProviderClasses() {
88
-		return [
89
-			EMailProvider::class,
90
-		];
91
-	}
92
-
93
-	/**
94
-	 * @param IUser $user
95
-	 * @return string[]
96
-	 */
97
-	private function getAppProviderClasses(IUser $user) {
98
-		return array_reduce($this->appManager->getEnabledAppsForUser($user), function($all, $appId) {
99
-			$info = $this->appManager->getAppInfo($appId);
100
-
101
-			if (!isset($info['contactsmenu']) || !isset($info['contactsmenu'])) {
102
-				// Nothing to add
103
-				return $all;
104
-			}
105
-
106
-			$providers = array_reduce($info['contactsmenu'], function($all, $provider) {
107
-				return array_merge($all, [$provider]);
108
-			}, []);
109
-
110
-			return array_merge($all, $providers);
111
-		}, []);
112
-	}
38
+    /** @var IServerContainer */
39
+    private $serverContainer;
40
+
41
+    /** @var AppManager */
42
+    private $appManager;
43
+
44
+    /** @var ILogger */
45
+    private $logger;
46
+
47
+    /**
48
+     * @param IServerContainer $serverContainer
49
+     * @param AppManager $appManager
50
+     * @param ILogger $logger
51
+     */
52
+    public function __construct(IServerContainer $serverContainer, AppManager $appManager, ILogger $logger) {
53
+        $this->serverContainer = $serverContainer;
54
+        $this->appManager = $appManager;
55
+        $this->logger = $logger;
56
+    }
57
+
58
+    /**
59
+     * @param IUser $user
60
+     * @return IProvider[]
61
+     * @throws Exception
62
+     */
63
+    public function getProviders(IUser $user) {
64
+        $appClasses = $this->getAppProviderClasses($user);
65
+        $providerClasses = $this->getServerProviderClasses();
66
+        $allClasses = array_merge($providerClasses, $appClasses);
67
+        $providers = [];
68
+
69
+        foreach ($allClasses as $class) {
70
+            try {
71
+                $providers[] = $this->serverContainer->query($class);
72
+            } catch (QueryException $ex) {
73
+                $this->logger->logException($ex, [
74
+                    'message' => "Could not load contacts menu action provider $class",
75
+                    'app' => 'core',
76
+                ]);
77
+                throw new Exception("Could not load contacts menu action provider");
78
+            }
79
+        }
80
+
81
+        return $providers;
82
+    }
83
+
84
+    /**
85
+     * @return string[]
86
+     */
87
+    private function getServerProviderClasses() {
88
+        return [
89
+            EMailProvider::class,
90
+        ];
91
+    }
92
+
93
+    /**
94
+     * @param IUser $user
95
+     * @return string[]
96
+     */
97
+    private function getAppProviderClasses(IUser $user) {
98
+        return array_reduce($this->appManager->getEnabledAppsForUser($user), function($all, $appId) {
99
+            $info = $this->appManager->getAppInfo($appId);
100
+
101
+            if (!isset($info['contactsmenu']) || !isset($info['contactsmenu'])) {
102
+                // Nothing to add
103
+                return $all;
104
+            }
105
+
106
+            $providers = array_reduce($info['contactsmenu'], function($all, $provider) {
107
+                return array_merge($all, [$provider]);
108
+            }, []);
109
+
110
+            return array_merge($all, $providers);
111
+        }, []);
112
+    }
113 113
 
114 114
 }
Please login to merge, or discard this patch.
lib/private/Lockdown/LockdownManager.php 1 patch
Indentation   +43 added lines, -43 removed lines patch added patch discarded remove patch
@@ -24,56 +24,56 @@
 block discarded – undo
24 24
 use OCP\Lockdown\ILockdownManager;
25 25
 
26 26
 class LockdownManager implements ILockdownManager {
27
-	/** @var ISession */
28
-	private $sessionCallback;
27
+    /** @var ISession */
28
+    private $sessionCallback;
29 29
 
30
-	private $enabled = false;
30
+    private $enabled = false;
31 31
 
32
-	/** @var array|null */
33
-	private $scope;
32
+    /** @var array|null */
33
+    private $scope;
34 34
 
35
-	/**
36
-	 * LockdownManager constructor.
37
-	 *
38
-	 * @param callable $sessionCallback we need to inject the session lazily to avoid dependency loops
39
-	 */
40
-	public function __construct(callable $sessionCallback) {
41
-		$this->sessionCallback = $sessionCallback;
42
-	}
35
+    /**
36
+     * LockdownManager constructor.
37
+     *
38
+     * @param callable $sessionCallback we need to inject the session lazily to avoid dependency loops
39
+     */
40
+    public function __construct(callable $sessionCallback) {
41
+        $this->sessionCallback = $sessionCallback;
42
+    }
43 43
 
44 44
 
45
-	public function enable() {
46
-		$this->enabled = true;
47
-	}
45
+    public function enable() {
46
+        $this->enabled = true;
47
+    }
48 48
 
49
-	/**
50
-	 * @return ISession
51
-	 */
52
-	private function getSession() {
53
-		$callback = $this->sessionCallback;
54
-		return $callback();
55
-	}
49
+    /**
50
+     * @return ISession
51
+     */
52
+    private function getSession() {
53
+        $callback = $this->sessionCallback;
54
+        return $callback();
55
+    }
56 56
 
57
-	private function getScopeAsArray() {
58
-		if (!$this->scope) {
59
-			$session = $this->getSession();
60
-			$sessionScope = $session->get('token_scope');
61
-			if ($sessionScope) {
62
-				$this->scope = $sessionScope;
63
-			}
64
-		}
65
-		return $this->scope;
66
-	}
57
+    private function getScopeAsArray() {
58
+        if (!$this->scope) {
59
+            $session = $this->getSession();
60
+            $sessionScope = $session->get('token_scope');
61
+            if ($sessionScope) {
62
+                $this->scope = $sessionScope;
63
+            }
64
+        }
65
+        return $this->scope;
66
+    }
67 67
 
68
-	public function setToken(IToken $token) {
69
-		$this->scope = $token->getScopeAsArray();
70
-		$session = $this->getSession();
71
-		$session->set('token_scope', $this->scope);
72
-		$this->enable();
73
-	}
68
+    public function setToken(IToken $token) {
69
+        $this->scope = $token->getScopeAsArray();
70
+        $session = $this->getSession();
71
+        $session->set('token_scope', $this->scope);
72
+        $this->enable();
73
+    }
74 74
 
75
-	public function canAccessFilesystem() {
76
-		$scope = $this->getScopeAsArray();
77
-		return !$scope || $scope['filesystem'];
78
-	}
75
+    public function canAccessFilesystem() {
76
+        $scope = $this->getScopeAsArray();
77
+        return !$scope || $scope['filesystem'];
78
+    }
79 79
 }
Please login to merge, or discard this patch.
lib/public/Contacts/ContactsMenu/IProvider.php 1 patch
Indentation   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -29,10 +29,10 @@
 block discarded – undo
29 29
  */
30 30
 interface IProvider {
31 31
 
32
-	/**
33
-	 * @since 12.0
34
-	 * @param IEntry $entry
35
-	 * @return void
36
-	 */
37
-	public function process(IEntry $entry);
32
+    /**
33
+     * @since 12.0
34
+     * @param IEntry $entry
35
+     * @return void
36
+     */
37
+    public function process(IEntry $entry);
38 38
 }
Please login to merge, or discard this patch.
lib/public/Share/IShareHelper.php 1 patch
Indentation   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -32,10 +32,10 @@
 block discarded – undo
32 32
  */
33 33
 interface IShareHelper {
34 34
 
35
-	/**
36
-	 * @param Node $node
37
-	 * @return array [ users => [Mapping $uid => $pathForUser], remotes => [Mapping $cloudId => $pathToMountRoot]]
38
-	 * @since 12
39
-	 */
40
-	public function getPathsForAccessList(Node $node);
35
+    /**
36
+     * @param Node $node
37
+     * @return array [ users => [Mapping $uid => $pathForUser], remotes => [Mapping $cloudId => $pathToMountRoot]]
38
+     * @since 12
39
+     */
40
+    public function getPathsForAccessList(Node $node);
41 41
 }
Please login to merge, or discard this patch.
apps/sharebymail/lib/Capabilities.php 1 patch
Indentation   +20 added lines, -20 removed lines patch added patch discarded remove patch
@@ -27,24 +27,24 @@
 block discarded – undo
27 27
 
28 28
 class Capabilities implements ICapability {
29 29
 
30
-	/**
31
-	 * Function an app uses to return the capabilities
32
-	 *
33
-	 * @return array Array containing the apps capabilities
34
-	 * @since 8.2.0
35
-	 */
36
-	public function getCapabilities() {
37
-		return [
38
-			'files_sharing' =>
39
-				[
40
-					'sharebymail' =>
41
-						[
42
-							'enabled' => true,
43
-							'upload_files_drop' => ['enabled' => true],
44
-							'password' => ['enabled' => true],
45
-							'expire_date' => ['enabled' => true]
46
-						]
47
-				]
48
-		];
49
-	}
30
+    /**
31
+     * Function an app uses to return the capabilities
32
+     *
33
+     * @return array Array containing the apps capabilities
34
+     * @since 8.2.0
35
+     */
36
+    public function getCapabilities() {
37
+        return [
38
+            'files_sharing' =>
39
+                [
40
+                    'sharebymail' =>
41
+                        [
42
+                            'enabled' => true,
43
+                            'upload_files_drop' => ['enabled' => true],
44
+                            'password' => ['enabled' => true],
45
+                            'expire_date' => ['enabled' => true]
46
+                        ]
47
+                ]
48
+        ];
49
+    }
50 50
 }
Please login to merge, or discard this patch.
lib/private/Encryption/File.php 1 patch
Indentation   +90 added lines, -90 removed lines patch added patch discarded remove patch
@@ -31,95 +31,95 @@
 block discarded – undo
31 31
 
32 32
 class File implements \OCP\Encryption\IFile {
33 33
 
34
-	/** @var Util */
35
-	protected $util;
36
-
37
-	/** @var IRootFolder */
38
-	private $rootFolder;
39
-
40
-	/** @var IManager */
41
-	private $shareManager;
42
-
43
-	/**
44
-	 * cache results of already checked folders
45
-	 *
46
-	 * @var array
47
-	 */
48
-	protected $cache;
49
-
50
-	public function __construct(Util $util,
51
-								IRootFolder $rootFolder,
52
-								IManager $shareManager) {
53
-		$this->util = $util;
54
-		$this->cache = new CappedMemoryCache();
55
-		$this->rootFolder = $rootFolder;
56
-		$this->shareManager = $shareManager;
57
-	}
58
-
59
-
60
-	/**
61
-	 * get list of users with access to the file
62
-	 *
63
-	 * @param string $path to the file
64
-	 * @return array  ['users' => $uniqueUserIds, 'public' => $public]
65
-	 */
66
-	public function getAccessList($path) {
67
-
68
-		// Make sure that a share key is generated for the owner too
69
-		list($owner, $ownerPath) = $this->util->getUidAndFilename($path);
70
-
71
-		// always add owner to the list of users with access to the file
72
-		$userIds = array($owner);
73
-
74
-		if (!$this->util->isFile($owner . '/' . $ownerPath)) {
75
-			return array('users' => $userIds, 'public' => false);
76
-		}
77
-
78
-		$ownerPath = substr($ownerPath, strlen('/files'));
79
-		$userFolder = $this->rootFolder->getUserFolder($owner);
80
-		try {
81
-			$file = $userFolder->get($ownerPath);
82
-		} catch (NotFoundException $e) {
83
-			$file = null;
84
-		}
85
-		$ownerPath = $this->util->stripPartialFileExtension($ownerPath);
86
-
87
-		// first get the shares for the parent and cache the result so that we don't
88
-		// need to check all parents for every file
89
-		$parent = dirname($ownerPath);
90
-		$parentNode = $userFolder->get($parent);
91
-		if (isset($this->cache[$parent])) {
92
-			$resultForParents = $this->cache[$parent];
93
-		} else {
94
-			$resultForParents = $this->shareManager->getAccessList($parentNode);
95
-			$this->cache[$parent] = $resultForParents;
96
-		}
97
-		$userIds = array_merge($userIds, $resultForParents['users']);
98
-		$public = $resultForParents['public'] || $resultForParents['remote'];
99
-
100
-
101
-		// Find out who, if anyone, is sharing the file
102
-		if ($file !== null) {
103
-			$resultForFile = $this->shareManager->getAccessList($file, false);
104
-			$userIds = array_merge($userIds, $resultForFile['users']);
105
-			$public = $resultForFile['public'] || $resultForFile['remote'] || $public;
106
-		}
107
-
108
-		// check if it is a group mount
109
-		if (\OCP\App::isEnabled("files_external")) {
110
-			$mounts = \OC_Mount_Config::getSystemMountPoints();
111
-			foreach ($mounts as $mount) {
112
-				if ($mount['mountpoint'] == substr($ownerPath, 1, strlen($mount['mountpoint']))) {
113
-					$mountedFor = $this->util->getUserWithAccessToMountPoint($mount['applicable']['users'], $mount['applicable']['groups']);
114
-					$userIds = array_merge($userIds, $mountedFor);
115
-				}
116
-			}
117
-		}
118
-
119
-		// Remove duplicate UIDs
120
-		$uniqueUserIds = array_unique($userIds);
121
-
122
-		return array('users' => $uniqueUserIds, 'public' => $public);
123
-	}
34
+    /** @var Util */
35
+    protected $util;
36
+
37
+    /** @var IRootFolder */
38
+    private $rootFolder;
39
+
40
+    /** @var IManager */
41
+    private $shareManager;
42
+
43
+    /**
44
+     * cache results of already checked folders
45
+     *
46
+     * @var array
47
+     */
48
+    protected $cache;
49
+
50
+    public function __construct(Util $util,
51
+                                IRootFolder $rootFolder,
52
+                                IManager $shareManager) {
53
+        $this->util = $util;
54
+        $this->cache = new CappedMemoryCache();
55
+        $this->rootFolder = $rootFolder;
56
+        $this->shareManager = $shareManager;
57
+    }
58
+
59
+
60
+    /**
61
+     * get list of users with access to the file
62
+     *
63
+     * @param string $path to the file
64
+     * @return array  ['users' => $uniqueUserIds, 'public' => $public]
65
+     */
66
+    public function getAccessList($path) {
67
+
68
+        // Make sure that a share key is generated for the owner too
69
+        list($owner, $ownerPath) = $this->util->getUidAndFilename($path);
70
+
71
+        // always add owner to the list of users with access to the file
72
+        $userIds = array($owner);
73
+
74
+        if (!$this->util->isFile($owner . '/' . $ownerPath)) {
75
+            return array('users' => $userIds, 'public' => false);
76
+        }
77
+
78
+        $ownerPath = substr($ownerPath, strlen('/files'));
79
+        $userFolder = $this->rootFolder->getUserFolder($owner);
80
+        try {
81
+            $file = $userFolder->get($ownerPath);
82
+        } catch (NotFoundException $e) {
83
+            $file = null;
84
+        }
85
+        $ownerPath = $this->util->stripPartialFileExtension($ownerPath);
86
+
87
+        // first get the shares for the parent and cache the result so that we don't
88
+        // need to check all parents for every file
89
+        $parent = dirname($ownerPath);
90
+        $parentNode = $userFolder->get($parent);
91
+        if (isset($this->cache[$parent])) {
92
+            $resultForParents = $this->cache[$parent];
93
+        } else {
94
+            $resultForParents = $this->shareManager->getAccessList($parentNode);
95
+            $this->cache[$parent] = $resultForParents;
96
+        }
97
+        $userIds = array_merge($userIds, $resultForParents['users']);
98
+        $public = $resultForParents['public'] || $resultForParents['remote'];
99
+
100
+
101
+        // Find out who, if anyone, is sharing the file
102
+        if ($file !== null) {
103
+            $resultForFile = $this->shareManager->getAccessList($file, false);
104
+            $userIds = array_merge($userIds, $resultForFile['users']);
105
+            $public = $resultForFile['public'] || $resultForFile['remote'] || $public;
106
+        }
107
+
108
+        // check if it is a group mount
109
+        if (\OCP\App::isEnabled("files_external")) {
110
+            $mounts = \OC_Mount_Config::getSystemMountPoints();
111
+            foreach ($mounts as $mount) {
112
+                if ($mount['mountpoint'] == substr($ownerPath, 1, strlen($mount['mountpoint']))) {
113
+                    $mountedFor = $this->util->getUserWithAccessToMountPoint($mount['applicable']['users'], $mount['applicable']['groups']);
114
+                    $userIds = array_merge($userIds, $mountedFor);
115
+                }
116
+            }
117
+        }
118
+
119
+        // Remove duplicate UIDs
120
+        $uniqueUserIds = array_unique($userIds);
121
+
122
+        return array('users' => $uniqueUserIds, 'public' => $public);
123
+    }
124 124
 
125 125
 }
Please login to merge, or discard this patch.
lib/private/Share20/ShareHelper.php 1 patch
Indentation   +183 added lines, -183 removed lines patch added patch discarded remove patch
@@ -31,187 +31,187 @@
 block discarded – undo
31 31
 
32 32
 class ShareHelper implements IShareHelper {
33 33
 
34
-	/** @var IManager */
35
-	private $shareManager;
36
-
37
-	public function __construct(IManager $shareManager) {
38
-		$this->shareManager = $shareManager;
39
-	}
40
-
41
-	/**
42
-	 * @param Node $node
43
-	 * @return array [ users => [Mapping $uid => $pathForUser], remotes => [Mapping $cloudId => $pathToMountRoot]]
44
-	 */
45
-	public function getPathsForAccessList(Node $node) {
46
-		$result = [
47
-			'users' => [],
48
-			'remotes' => [],
49
-		];
50
-
51
-		$accessList = $this->shareManager->getAccessList($node, true, true);
52
-		if (!empty($accessList['users'])) {
53
-			$result['users'] = $this->getPathsForUsers($node, $accessList['users']);
54
-		}
55
-		if (!empty($accessList['remote'])) {
56
-			$result['remotes'] = $this->getPathsForRemotes($node, $accessList['remote']);
57
-		}
58
-
59
-		return $result;
60
-	}
61
-
62
-	/**
63
-	 * Sample:
64
-	 * $users = [
65
-	 *   'test1' => ['node_id' => 16, 'node_path' => '/foo'],
66
-	 *   'test2' => ['node_id' => 23, 'node_path' => '/bar'],
67
-	 *   'test3' => ['node_id' => 42, 'node_path' => '/cat'],
68
-	 *   'test4' => ['node_id' => 48, 'node_path' => '/dog'],
69
-	 * ];
70
-	 *
71
-	 * Node tree:
72
-	 * - SixTeen is the parent of TwentyThree
73
-	 * - TwentyThree is the parent of FortyTwo
74
-	 * - FortyEight does not exist
75
-	 *
76
-	 * $return = [
77
-	 *   'test1' => '/foo/TwentyThree/FortyTwo',
78
-	 *   'test2' => '/bar/FortyTwo',
79
-	 *   'test3' => '/cat',
80
-	 * ],
81
-	 *
82
-	 * @param Node $node
83
-	 * @param array[] $users
84
-	 * @return array
85
-	 */
86
-	protected function getPathsForUsers(Node $node, array $users) {
87
-		/** @var array[] $byId */
88
-		$byId = [];
89
-		/** @var array[] $results */
90
-		$results = [];
91
-
92
-		foreach ($users as $uid => $info) {
93
-			if (!isset($byId[$info['node_id']])) {
94
-				$byId[$info['node_id']] = [];
95
-			}
96
-			$byId[$info['node_id']][$uid] = $info['node_path'];
97
-		}
98
-
99
-		try {
100
-			if (isset($byId[$node->getId()])) {
101
-				foreach ($byId[$node->getId()] as $uid => $path) {
102
-					$results[$uid] = $path;
103
-				}
104
-				unset($byId[$node->getId()]);
105
-			}
106
-		} catch (NotFoundException $e) {
107
-			return $results;
108
-		} catch (InvalidPathException $e) {
109
-			return $results;
110
-		}
111
-
112
-		if (empty($byId)) {
113
-			return $results;
114
-		}
115
-
116
-		$item = $node;
117
-		$appendix = '/' . $node->getName();
118
-		while (!empty($byId)) {
119
-			try {
120
-				/** @var Node $item */
121
-				$item = $item->getParent();
122
-
123
-				if (!empty($byId[$item->getId()])) {
124
-					foreach ($byId[$item->getId()] as $uid => $path) {
125
-						$results[$uid] = $path . $appendix;
126
-					}
127
-					unset($byId[$item->getId()]);
128
-				}
129
-
130
-				$appendix = '/' . $item->getName() . $appendix;
131
-			} catch (NotFoundException $e) {
132
-				return $results;
133
-			} catch (InvalidPathException $e) {
134
-				return $results;
135
-			} catch (NotPermittedException $e) {
136
-				return $results;
137
-			}
138
-		}
139
-
140
-		return $results;
141
-	}
142
-
143
-	/**
144
-	 * Sample:
145
-	 * $remotes = [
146
-	 *   'test1' => ['node_id' => 16, 'token' => 't1'],
147
-	 *   'test2' => ['node_id' => 23, 'token' => 't2'],
148
-	 *   'test3' => ['node_id' => 42, 'token' => 't3'],
149
-	 *   'test4' => ['node_id' => 48, 'token' => 't4'],
150
-	 * ];
151
-	 *
152
-	 * Node tree:
153
-	 * - SixTeen is the parent of TwentyThree
154
-	 * - TwentyThree is the parent of FortyTwo
155
-	 * - FortyEight does not exist
156
-	 *
157
-	 * $return = [
158
-	 *   'test1' => ['token' => 't1', 'node_path' => '/SixTeen'],
159
-	 *   'test2' => ['token' => 't2', 'node_path' => '/SixTeen/TwentyThree'],
160
-	 *   'test3' => ['token' => 't3', 'node_path' => '/SixTeen/TwentyThree/FortyTwo'],
161
-	 * ],
162
-	 *
163
-	 * @param Node $node
164
-	 * @param array[] $remotes
165
-	 * @return array
166
-	 */
167
-	protected function getPathsForRemotes(Node $node, array $remotes) {
168
-		/** @var array[] $byId */
169
-		$byId = [];
170
-		/** @var array[] $results */
171
-		$results = [];
172
-
173
-		foreach ($remotes as $cloudId => $info) {
174
-			if (!isset($byId[$info['node_id']])) {
175
-				$byId[$info['node_id']] = [];
176
-			}
177
-			$byId[$info['node_id']][$cloudId] = $info['token'];
178
-		}
179
-
180
-		$item = $node;
181
-		while (!empty($byId)) {
182
-			try {
183
-				if (!empty($byId[$item->getId()])) {
184
-					$path = $this->getMountedPath($item);
185
-					foreach ($byId[$item->getId()] as $uid => $token) {
186
-						$results[$uid] = [
187
-							'node_path' => $path,
188
-							'token' => $token,
189
-						];
190
-					}
191
-					unset($byId[$item->getId()]);
192
-				}
193
-
194
-				/** @var Node $item */
195
-				$item = $item->getParent();
196
-			} catch (NotFoundException $e) {
197
-				return $results;
198
-			} catch (InvalidPathException $e) {
199
-				return $results;
200
-			} catch (NotPermittedException $e) {
201
-				return $results;
202
-			}
203
-		}
204
-
205
-		return $results;
206
-	}
207
-
208
-	/**
209
-	 * @param Node $node
210
-	 * @return string
211
-	 */
212
-	protected function getMountedPath(Node $node) {
213
-		$path = $node->getPath();
214
-		$sections = explode('/', $path, 4);
215
-		return '/' . $sections[3];
216
-	}
34
+    /** @var IManager */
35
+    private $shareManager;
36
+
37
+    public function __construct(IManager $shareManager) {
38
+        $this->shareManager = $shareManager;
39
+    }
40
+
41
+    /**
42
+     * @param Node $node
43
+     * @return array [ users => [Mapping $uid => $pathForUser], remotes => [Mapping $cloudId => $pathToMountRoot]]
44
+     */
45
+    public function getPathsForAccessList(Node $node) {
46
+        $result = [
47
+            'users' => [],
48
+            'remotes' => [],
49
+        ];
50
+
51
+        $accessList = $this->shareManager->getAccessList($node, true, true);
52
+        if (!empty($accessList['users'])) {
53
+            $result['users'] = $this->getPathsForUsers($node, $accessList['users']);
54
+        }
55
+        if (!empty($accessList['remote'])) {
56
+            $result['remotes'] = $this->getPathsForRemotes($node, $accessList['remote']);
57
+        }
58
+
59
+        return $result;
60
+    }
61
+
62
+    /**
63
+     * Sample:
64
+     * $users = [
65
+     *   'test1' => ['node_id' => 16, 'node_path' => '/foo'],
66
+     *   'test2' => ['node_id' => 23, 'node_path' => '/bar'],
67
+     *   'test3' => ['node_id' => 42, 'node_path' => '/cat'],
68
+     *   'test4' => ['node_id' => 48, 'node_path' => '/dog'],
69
+     * ];
70
+     *
71
+     * Node tree:
72
+     * - SixTeen is the parent of TwentyThree
73
+     * - TwentyThree is the parent of FortyTwo
74
+     * - FortyEight does not exist
75
+     *
76
+     * $return = [
77
+     *   'test1' => '/foo/TwentyThree/FortyTwo',
78
+     *   'test2' => '/bar/FortyTwo',
79
+     *   'test3' => '/cat',
80
+     * ],
81
+     *
82
+     * @param Node $node
83
+     * @param array[] $users
84
+     * @return array
85
+     */
86
+    protected function getPathsForUsers(Node $node, array $users) {
87
+        /** @var array[] $byId */
88
+        $byId = [];
89
+        /** @var array[] $results */
90
+        $results = [];
91
+
92
+        foreach ($users as $uid => $info) {
93
+            if (!isset($byId[$info['node_id']])) {
94
+                $byId[$info['node_id']] = [];
95
+            }
96
+            $byId[$info['node_id']][$uid] = $info['node_path'];
97
+        }
98
+
99
+        try {
100
+            if (isset($byId[$node->getId()])) {
101
+                foreach ($byId[$node->getId()] as $uid => $path) {
102
+                    $results[$uid] = $path;
103
+                }
104
+                unset($byId[$node->getId()]);
105
+            }
106
+        } catch (NotFoundException $e) {
107
+            return $results;
108
+        } catch (InvalidPathException $e) {
109
+            return $results;
110
+        }
111
+
112
+        if (empty($byId)) {
113
+            return $results;
114
+        }
115
+
116
+        $item = $node;
117
+        $appendix = '/' . $node->getName();
118
+        while (!empty($byId)) {
119
+            try {
120
+                /** @var Node $item */
121
+                $item = $item->getParent();
122
+
123
+                if (!empty($byId[$item->getId()])) {
124
+                    foreach ($byId[$item->getId()] as $uid => $path) {
125
+                        $results[$uid] = $path . $appendix;
126
+                    }
127
+                    unset($byId[$item->getId()]);
128
+                }
129
+
130
+                $appendix = '/' . $item->getName() . $appendix;
131
+            } catch (NotFoundException $e) {
132
+                return $results;
133
+            } catch (InvalidPathException $e) {
134
+                return $results;
135
+            } catch (NotPermittedException $e) {
136
+                return $results;
137
+            }
138
+        }
139
+
140
+        return $results;
141
+    }
142
+
143
+    /**
144
+     * Sample:
145
+     * $remotes = [
146
+     *   'test1' => ['node_id' => 16, 'token' => 't1'],
147
+     *   'test2' => ['node_id' => 23, 'token' => 't2'],
148
+     *   'test3' => ['node_id' => 42, 'token' => 't3'],
149
+     *   'test4' => ['node_id' => 48, 'token' => 't4'],
150
+     * ];
151
+     *
152
+     * Node tree:
153
+     * - SixTeen is the parent of TwentyThree
154
+     * - TwentyThree is the parent of FortyTwo
155
+     * - FortyEight does not exist
156
+     *
157
+     * $return = [
158
+     *   'test1' => ['token' => 't1', 'node_path' => '/SixTeen'],
159
+     *   'test2' => ['token' => 't2', 'node_path' => '/SixTeen/TwentyThree'],
160
+     *   'test3' => ['token' => 't3', 'node_path' => '/SixTeen/TwentyThree/FortyTwo'],
161
+     * ],
162
+     *
163
+     * @param Node $node
164
+     * @param array[] $remotes
165
+     * @return array
166
+     */
167
+    protected function getPathsForRemotes(Node $node, array $remotes) {
168
+        /** @var array[] $byId */
169
+        $byId = [];
170
+        /** @var array[] $results */
171
+        $results = [];
172
+
173
+        foreach ($remotes as $cloudId => $info) {
174
+            if (!isset($byId[$info['node_id']])) {
175
+                $byId[$info['node_id']] = [];
176
+            }
177
+            $byId[$info['node_id']][$cloudId] = $info['token'];
178
+        }
179
+
180
+        $item = $node;
181
+        while (!empty($byId)) {
182
+            try {
183
+                if (!empty($byId[$item->getId()])) {
184
+                    $path = $this->getMountedPath($item);
185
+                    foreach ($byId[$item->getId()] as $uid => $token) {
186
+                        $results[$uid] = [
187
+                            'node_path' => $path,
188
+                            'token' => $token,
189
+                        ];
190
+                    }
191
+                    unset($byId[$item->getId()]);
192
+                }
193
+
194
+                /** @var Node $item */
195
+                $item = $item->getParent();
196
+            } catch (NotFoundException $e) {
197
+                return $results;
198
+            } catch (InvalidPathException $e) {
199
+                return $results;
200
+            } catch (NotPermittedException $e) {
201
+                return $results;
202
+            }
203
+        }
204
+
205
+        return $results;
206
+    }
207
+
208
+    /**
209
+     * @param Node $node
210
+     * @return string
211
+     */
212
+    protected function getMountedPath(Node $node) {
213
+        $path = $node->getPath();
214
+        $sections = explode('/', $path, 4);
215
+        return '/' . $sections[3];
216
+    }
217 217
 }
Please login to merge, or discard this patch.