Completed
Pull Request — master (#9773)
by Georg
16:52
created
apps/dav/lib/Connector/Sabre/BlockLegacyClientPlugin.php 2 patches
Indentation   +38 added lines, -38 removed lines patch added patch discarded remove patch
@@ -35,47 +35,47 @@
 block discarded – undo
35 35
  * @package OCA\DAV\Connector\Sabre
36 36
  */
37 37
 class BlockLegacyClientPlugin extends ServerPlugin {
38
-	/** @var \Sabre\DAV\Server */
39
-	protected $server;
40
-	/** @var IConfig */
41
-	protected $config;
38
+    /** @var \Sabre\DAV\Server */
39
+    protected $server;
40
+    /** @var IConfig */
41
+    protected $config;
42 42
 
43
-	/**
44
-	 * @param IConfig $config
45
-	 */
46
-	public function __construct(IConfig $config) {
47
-		$this->config = $config;
48
-	}
43
+    /**
44
+     * @param IConfig $config
45
+     */
46
+    public function __construct(IConfig $config) {
47
+        $this->config = $config;
48
+    }
49 49
 
50
-	/**
51
-	 * @param \Sabre\DAV\Server $server
52
-	 * @return void
53
-	 */
54
-	public function initialize(\Sabre\DAV\Server $server) {
55
-		$this->server = $server;
56
-		$this->server->on('beforeMethod', [$this, 'beforeHandler'], 200);
57
-	}
50
+    /**
51
+     * @param \Sabre\DAV\Server $server
52
+     * @return void
53
+     */
54
+    public function initialize(\Sabre\DAV\Server $server) {
55
+        $this->server = $server;
56
+        $this->server->on('beforeMethod', [$this, 'beforeHandler'], 200);
57
+    }
58 58
 
59
-	/**
60
-	 * Detects all unsupported clients and throws a \Sabre\DAV\Exception\Forbidden
61
-	 * exception which will result in a 403 to them.
62
-	 * @param RequestInterface $request
63
-	 * @throws \Sabre\DAV\Exception\Forbidden If the client version is not supported
64
-	 */
65
-	public function beforeHandler(RequestInterface $request) {
66
-		$userAgent = $request->getHeader('User-Agent');
67
-		if($userAgent === null) {
68
-			return;
69
-		}
59
+    /**
60
+     * Detects all unsupported clients and throws a \Sabre\DAV\Exception\Forbidden
61
+     * exception which will result in a 403 to them.
62
+     * @param RequestInterface $request
63
+     * @throws \Sabre\DAV\Exception\Forbidden If the client version is not supported
64
+     */
65
+    public function beforeHandler(RequestInterface $request) {
66
+        $userAgent = $request->getHeader('User-Agent');
67
+        if($userAgent === null) {
68
+            return;
69
+        }
70 70
 
71
-		$minimumSupportedDesktopVersion = $this->config->getSystemValue('minimum.supported.desktop.version', '2.0.0');
71
+        $minimumSupportedDesktopVersion = $this->config->getSystemValue('minimum.supported.desktop.version', '2.0.0');
72 72
 
73
-		// Match on the mirall version which is in scheme "Mozilla/5.0 (%1) mirall/%2" or
74
-		// "mirall/%1" for older releases
75
-		preg_match("/(?:mirall\\/)([\d.]+)/i", $userAgent, $versionMatches);
76
-		if(isset($versionMatches[1]) &&
77
-			version_compare($versionMatches[1], $minimumSupportedDesktopVersion) === -1) {
78
-			throw new \Sabre\DAV\Exception\Forbidden('Unsupported client version.');
79
-		}
80
-	}
73
+        // Match on the mirall version which is in scheme "Mozilla/5.0 (%1) mirall/%2" or
74
+        // "mirall/%1" for older releases
75
+        preg_match("/(?:mirall\\/)([\d.]+)/i", $userAgent, $versionMatches);
76
+        if(isset($versionMatches[1]) &&
77
+            version_compare($versionMatches[1], $minimumSupportedDesktopVersion) === -1) {
78
+            throw new \Sabre\DAV\Exception\Forbidden('Unsupported client version.');
79
+        }
80
+    }
81 81
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -64,7 +64,7 @@  discard block
 block discarded – undo
64 64
 	 */
65 65
 	public function beforeHandler(RequestInterface $request) {
66 66
 		$userAgent = $request->getHeader('User-Agent');
67
-		if($userAgent === null) {
67
+		if ($userAgent === null) {
68 68
 			return;
69 69
 		}
70 70
 
@@ -73,7 +73,7 @@  discard block
 block discarded – undo
73 73
 		// Match on the mirall version which is in scheme "Mozilla/5.0 (%1) mirall/%2" or
74 74
 		// "mirall/%1" for older releases
75 75
 		preg_match("/(?:mirall\\/)([\d.]+)/i", $userAgent, $versionMatches);
76
-		if(isset($versionMatches[1]) &&
76
+		if (isset($versionMatches[1]) &&
77 77
 			version_compare($versionMatches[1], $minimumSupportedDesktopVersion) === -1) {
78 78
 			throw new \Sabre\DAV\Exception\Forbidden('Unsupported client version.');
79 79
 		}
Please login to merge, or discard this patch.
apps/dav/lib/Connector/Sabre/LockPlugin.php 1 patch
Indentation   +46 added lines, -46 removed lines patch added patch discarded remove patch
@@ -34,53 +34,53 @@
 block discarded – undo
34 34
 use Sabre\HTTP\RequestInterface;
35 35
 
36 36
 class LockPlugin extends ServerPlugin {
37
-	/**
38
-	 * Reference to main server object
39
-	 *
40
-	 * @var \Sabre\DAV\Server
41
-	 */
42
-	private $server;
37
+    /**
38
+     * Reference to main server object
39
+     *
40
+     * @var \Sabre\DAV\Server
41
+     */
42
+    private $server;
43 43
 
44
-	/**
45
-	 * {@inheritdoc}
46
-	 */
47
-	public function initialize(\Sabre\DAV\Server $server) {
48
-		$this->server = $server;
49
-		$this->server->on('beforeMethod', [$this, 'getLock'], 50);
50
-		$this->server->on('afterMethod', [$this, 'releaseLock'], 50);
51
-	}
44
+    /**
45
+     * {@inheritdoc}
46
+     */
47
+    public function initialize(\Sabre\DAV\Server $server) {
48
+        $this->server = $server;
49
+        $this->server->on('beforeMethod', [$this, 'getLock'], 50);
50
+        $this->server->on('afterMethod', [$this, 'releaseLock'], 50);
51
+    }
52 52
 
53
-	public function getLock(RequestInterface $request) {
54
-		// we can't listen on 'beforeMethod:PUT' due to order of operations with setting up the tree
55
-		// so instead we limit ourselves to the PUT method manually
56
-		if ($request->getMethod() !== 'PUT' || isset($_SERVER['HTTP_OC_CHUNKED'])) {
57
-			return;
58
-		}
59
-		try {
60
-			$node = $this->server->tree->getNodeForPath($request->getPath());
61
-		} catch (NotFound $e) {
62
-			return;
63
-		}
64
-		if ($node instanceof Node) {
65
-			try {
66
-				$node->acquireLock(ILockingProvider::LOCK_SHARED);
67
-			} catch (LockedException $e) {
68
-				throw new FileLocked($e->getMessage(), $e->getCode(), $e);
69
-			}
70
-		}
71
-	}
53
+    public function getLock(RequestInterface $request) {
54
+        // we can't listen on 'beforeMethod:PUT' due to order of operations with setting up the tree
55
+        // so instead we limit ourselves to the PUT method manually
56
+        if ($request->getMethod() !== 'PUT' || isset($_SERVER['HTTP_OC_CHUNKED'])) {
57
+            return;
58
+        }
59
+        try {
60
+            $node = $this->server->tree->getNodeForPath($request->getPath());
61
+        } catch (NotFound $e) {
62
+            return;
63
+        }
64
+        if ($node instanceof Node) {
65
+            try {
66
+                $node->acquireLock(ILockingProvider::LOCK_SHARED);
67
+            } catch (LockedException $e) {
68
+                throw new FileLocked($e->getMessage(), $e->getCode(), $e);
69
+            }
70
+        }
71
+    }
72 72
 
73
-	public function releaseLock(RequestInterface $request) {
74
-		if ($request->getMethod() !== 'PUT' || isset($_SERVER['HTTP_OC_CHUNKED'])) {
75
-			return;
76
-		}
77
-		try {
78
-			$node = $this->server->tree->getNodeForPath($request->getPath());
79
-		} catch (NotFound $e) {
80
-			return;
81
-		}
82
-		if ($node instanceof Node) {
83
-			$node->releaseLock(ILockingProvider::LOCK_SHARED);
84
-		}
85
-	}
73
+    public function releaseLock(RequestInterface $request) {
74
+        if ($request->getMethod() !== 'PUT' || isset($_SERVER['HTTP_OC_CHUNKED'])) {
75
+            return;
76
+        }
77
+        try {
78
+            $node = $this->server->tree->getNodeForPath($request->getPath());
79
+        } catch (NotFound $e) {
80
+            return;
81
+        }
82
+        if ($node instanceof Node) {
83
+            $node->releaseLock(ILockingProvider::LOCK_SHARED);
84
+        }
85
+    }
86 86
 }
Please login to merge, or discard this patch.
apps/dav/lib/Connector/Sabre/Exception/Forbidden.php 2 patches
Indentation   +32 added lines, -32 removed lines patch added patch discarded remove patch
@@ -24,42 +24,42 @@
 block discarded – undo
24 24
 
25 25
 class Forbidden extends \Sabre\DAV\Exception\Forbidden {
26 26
 
27
-	const NS_OWNCLOUD = 'http://owncloud.org/ns';
27
+    const NS_OWNCLOUD = 'http://owncloud.org/ns';
28 28
 
29
-	/**
30
-	 * @var bool
31
-	 */
32
-	private $retry;
29
+    /**
30
+     * @var bool
31
+     */
32
+    private $retry;
33 33
 
34
-	/**
35
-	 * @param string $message
36
-	 * @param bool $retry
37
-	 * @param \Exception $previous
38
-	 */
39
-	public function __construct($message, $retry = false, \Exception $previous = null) {
40
-		parent::__construct($message, 0, $previous);
41
-		$this->retry = $retry;
42
-	}
34
+    /**
35
+     * @param string $message
36
+     * @param bool $retry
37
+     * @param \Exception $previous
38
+     */
39
+    public function __construct($message, $retry = false, \Exception $previous = null) {
40
+        parent::__construct($message, 0, $previous);
41
+        $this->retry = $retry;
42
+    }
43 43
 
44
-	/**
45
-	 * This method allows the exception to include additional information
46
-	 * into the WebDAV error response
47
-	 *
48
-	 * @param \Sabre\DAV\Server $server
49
-	 * @param \DOMElement $errorNode
50
-	 * @return void
51
-	 */
52
-	public function serialize(\Sabre\DAV\Server $server,\DOMElement $errorNode) {
44
+    /**
45
+     * This method allows the exception to include additional information
46
+     * into the WebDAV error response
47
+     *
48
+     * @param \Sabre\DAV\Server $server
49
+     * @param \DOMElement $errorNode
50
+     * @return void
51
+     */
52
+    public function serialize(\Sabre\DAV\Server $server,\DOMElement $errorNode) {
53 53
 
54
-		// set ownCloud namespace
55
-		$errorNode->setAttribute('xmlns:o', self::NS_OWNCLOUD);
54
+        // set ownCloud namespace
55
+        $errorNode->setAttribute('xmlns:o', self::NS_OWNCLOUD);
56 56
 
57
-		// adding the retry node
58
-		$error = $errorNode->ownerDocument->createElementNS('o:','o:retry', var_export($this->retry, true));
59
-		$errorNode->appendChild($error);
57
+        // adding the retry node
58
+        $error = $errorNode->ownerDocument->createElementNS('o:','o:retry', var_export($this->retry, true));
59
+        $errorNode->appendChild($error);
60 60
 
61
-		// adding the message node
62
-		$error = $errorNode->ownerDocument->createElementNS('o:','o:reason', $this->getMessage());
63
-		$errorNode->appendChild($error);
64
-	}
61
+        // adding the message node
62
+        $error = $errorNode->ownerDocument->createElementNS('o:','o:reason', $this->getMessage());
63
+        $errorNode->appendChild($error);
64
+    }
65 65
 }
Please login to merge, or discard this patch.
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -49,17 +49,17 @@
 block discarded – undo
49 49
 	 * @param \DOMElement $errorNode
50 50
 	 * @return void
51 51
 	 */
52
-	public function serialize(\Sabre\DAV\Server $server,\DOMElement $errorNode) {
52
+	public function serialize(\Sabre\DAV\Server $server, \DOMElement $errorNode) {
53 53
 
54 54
 		// set ownCloud namespace
55 55
 		$errorNode->setAttribute('xmlns:o', self::NS_OWNCLOUD);
56 56
 
57 57
 		// adding the retry node
58
-		$error = $errorNode->ownerDocument->createElementNS('o:','o:retry', var_export($this->retry, true));
58
+		$error = $errorNode->ownerDocument->createElementNS('o:', 'o:retry', var_export($this->retry, true));
59 59
 		$errorNode->appendChild($error);
60 60
 
61 61
 		// adding the message node
62
-		$error = $errorNode->ownerDocument->createElementNS('o:','o:reason', $this->getMessage());
62
+		$error = $errorNode->ownerDocument->createElementNS('o:', 'o:reason', $this->getMessage());
63 63
 		$errorNode->appendChild($error);
64 64
 	}
65 65
 }
Please login to merge, or discard this patch.
apps/dav/lib/Connector/Sabre/Exception/InvalidPath.php 2 patches
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -61,17 +61,17 @@
 block discarded – undo
61 61
 	 * @param \DOMElement $errorNode
62 62
 	 * @return void
63 63
 	 */
64
-	public function serialize(\Sabre\DAV\Server $server,\DOMElement $errorNode) {
64
+	public function serialize(\Sabre\DAV\Server $server, \DOMElement $errorNode) {
65 65
 
66 66
 		// set ownCloud namespace
67 67
 		$errorNode->setAttribute('xmlns:o', self::NS_OWNCLOUD);
68 68
 
69 69
 		// adding the retry node
70
-		$error = $errorNode->ownerDocument->createElementNS('o:','o:retry', var_export($this->retry, true));
70
+		$error = $errorNode->ownerDocument->createElementNS('o:', 'o:retry', var_export($this->retry, true));
71 71
 		$errorNode->appendChild($error);
72 72
 
73 73
 		// adding the message node
74
-		$error = $errorNode->ownerDocument->createElementNS('o:','o:reason', $this->getMessage());
74
+		$error = $errorNode->ownerDocument->createElementNS('o:', 'o:reason', $this->getMessage());
75 75
 		$errorNode->appendChild($error);
76 76
 	}
77 77
 
Please login to merge, or discard this patch.
Indentation   +40 added lines, -40 removed lines patch added patch discarded remove patch
@@ -26,54 +26,54 @@
 block discarded – undo
26 26
 
27 27
 class InvalidPath extends Exception {
28 28
 
29
-	const NS_OWNCLOUD = 'http://owncloud.org/ns';
29
+    const NS_OWNCLOUD = 'http://owncloud.org/ns';
30 30
 
31
-	/**
32
-	 * @var bool
33
-	 */
34
-	private $retry;
31
+    /**
32
+     * @var bool
33
+     */
34
+    private $retry;
35 35
 
36
-	/**
37
-	 * @param string $message
38
-	 * @param bool $retry
39
-	 * @param \Exception|null $previous
40
-	 */
41
-	public function __construct($message, $retry = false, \Exception $previous = null) {
42
-		parent::__construct($message, 0, $previous);
43
-		$this->retry = $retry;
44
-	}
36
+    /**
37
+     * @param string $message
38
+     * @param bool $retry
39
+     * @param \Exception|null $previous
40
+     */
41
+    public function __construct($message, $retry = false, \Exception $previous = null) {
42
+        parent::__construct($message, 0, $previous);
43
+        $this->retry = $retry;
44
+    }
45 45
 
46
-	/**
47
-	 * Returns the HTTP status code for this exception
48
-	 *
49
-	 * @return int
50
-	 */
51
-	public function getHTTPCode() {
46
+    /**
47
+     * Returns the HTTP status code for this exception
48
+     *
49
+     * @return int
50
+     */
51
+    public function getHTTPCode() {
52 52
 
53
-		return 400;
53
+        return 400;
54 54
 
55
-	}
55
+    }
56 56
 
57
-	/**
58
-	 * This method allows the exception to include additional information
59
-	 * into the WebDAV error response
60
-	 *
61
-	 * @param \Sabre\DAV\Server $server
62
-	 * @param \DOMElement $errorNode
63
-	 * @return void
64
-	 */
65
-	public function serialize(\Sabre\DAV\Server $server,\DOMElement $errorNode) {
57
+    /**
58
+     * This method allows the exception to include additional information
59
+     * into the WebDAV error response
60
+     *
61
+     * @param \Sabre\DAV\Server $server
62
+     * @param \DOMElement $errorNode
63
+     * @return void
64
+     */
65
+    public function serialize(\Sabre\DAV\Server $server,\DOMElement $errorNode) {
66 66
 
67
-		// set ownCloud namespace
68
-		$errorNode->setAttribute('xmlns:o', self::NS_OWNCLOUD);
67
+        // set ownCloud namespace
68
+        $errorNode->setAttribute('xmlns:o', self::NS_OWNCLOUD);
69 69
 
70
-		// adding the retry node
71
-		$error = $errorNode->ownerDocument->createElementNS('o:','o:retry', var_export($this->retry, true));
72
-		$errorNode->appendChild($error);
70
+        // adding the retry node
71
+        $error = $errorNode->ownerDocument->createElementNS('o:','o:retry', var_export($this->retry, true));
72
+        $errorNode->appendChild($error);
73 73
 
74
-		// adding the message node
75
-		$error = $errorNode->ownerDocument->createElementNS('o:','o:reason', $this->getMessage());
76
-		$errorNode->appendChild($error);
77
-	}
74
+        // adding the message node
75
+        $error = $errorNode->ownerDocument->createElementNS('o:','o:reason', $this->getMessage());
76
+        $errorNode->appendChild($error);
77
+    }
78 78
 
79 79
 }
Please login to merge, or discard this patch.
apps/dav/lib/Connector/Sabre/Exception/PasswordLoginForbidden.php 1 patch
Indentation   +22 added lines, -22 removed lines patch added patch discarded remove patch
@@ -29,27 +29,27 @@
 block discarded – undo
29 29
 
30 30
 class PasswordLoginForbidden extends NotAuthenticated {
31 31
 
32
-	const NS_OWNCLOUD = 'http://owncloud.org/ns';
33
-
34
-	public function getHTTPCode() {
35
-		return 401;
36
-	}
37
-
38
-	/**
39
-	 * This method allows the exception to include additional information
40
-	 * into the WebDAV error response
41
-	 *
42
-	 * @param Server $server
43
-	 * @param DOMElement $errorNode
44
-	 * @return void
45
-	 */
46
-	public function serialize(Server $server, DOMElement $errorNode) {
47
-
48
-		// set ownCloud namespace
49
-		$errorNode->setAttribute('xmlns:o', self::NS_OWNCLOUD);
50
-
51
-		$error = $errorNode->ownerDocument->createElementNS('o:', 'o:hint', 'password login forbidden');
52
-		$errorNode->appendChild($error);
53
-	}
32
+    const NS_OWNCLOUD = 'http://owncloud.org/ns';
33
+
34
+    public function getHTTPCode() {
35
+        return 401;
36
+    }
37
+
38
+    /**
39
+     * This method allows the exception to include additional information
40
+     * into the WebDAV error response
41
+     *
42
+     * @param Server $server
43
+     * @param DOMElement $errorNode
44
+     * @return void
45
+     */
46
+    public function serialize(Server $server, DOMElement $errorNode) {
47
+
48
+        // set ownCloud namespace
49
+        $errorNode->setAttribute('xmlns:o', self::NS_OWNCLOUD);
50
+
51
+        $error = $errorNode->ownerDocument->createElementNS('o:', 'o:hint', 'password login forbidden');
52
+        $errorNode->appendChild($error);
53
+    }
54 54
 
55 55
 }
Please login to merge, or discard this patch.
apps/dav/lib/Connector/Sabre/Exception/FileLocked.php 2 patches
Indentation   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -30,20 +30,20 @@
 block discarded – undo
30 30
 
31 31
 class FileLocked extends \Sabre\DAV\Exception {
32 32
 
33
-	public function __construct($message = "", $code = 0, Exception $previous = null) {
34
-		if($previous instanceof \OCP\Files\LockNotAcquiredException) {
35
-			$message = sprintf('Target file %s is locked by another process.', $previous->path);
36
-		}
37
-		parent::__construct($message, $code, $previous);
38
-	}
33
+    public function __construct($message = "", $code = 0, Exception $previous = null) {
34
+        if($previous instanceof \OCP\Files\LockNotAcquiredException) {
35
+            $message = sprintf('Target file %s is locked by another process.', $previous->path);
36
+        }
37
+        parent::__construct($message, $code, $previous);
38
+    }
39 39
 
40
-	/**
41
-	 * Returns the HTTP status code for this exception
42
-	 *
43
-	 * @return int
44
-	 */
45
-	public function getHTTPCode() {
40
+    /**
41
+     * Returns the HTTP status code for this exception
42
+     *
43
+     * @return int
44
+     */
45
+    public function getHTTPCode() {
46 46
 
47
-		return 423;
48
-	}
47
+        return 423;
48
+    }
49 49
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -31,7 +31,7 @@
 block discarded – undo
31 31
 class FileLocked extends \Sabre\DAV\Exception {
32 32
 
33 33
 	public function __construct($message = "", $code = 0, Exception $previous = null) {
34
-		if($previous instanceof \OCP\Files\LockNotAcquiredException) {
34
+		if ($previous instanceof \OCP\Files\LockNotAcquiredException) {
35 35
 			$message = sprintf('Target file %s is locked by another process.', $previous->path);
36 36
 		}
37 37
 		parent::__construct($message, $code, $previous);
Please login to merge, or discard this patch.
apps/dav/lib/Connector/Sabre/Exception/UnsupportedMediaType.php 1 patch
Indentation   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -31,15 +31,15 @@
 block discarded – undo
31 31
  */
32 32
 class UnsupportedMediaType extends \Sabre\DAV\Exception {
33 33
 
34
-	/**
35
-	 * Returns the HTTP status code for this exception
36
-	 *
37
-	 * @return int
38
-	 */
39
-	public function getHTTPCode() {
34
+    /**
35
+     * Returns the HTTP status code for this exception
36
+     *
37
+     * @return int
38
+     */
39
+    public function getHTTPCode() {
40 40
 
41
-		return 415;
41
+        return 415;
42 42
 
43
-	}
43
+    }
44 44
 
45 45
 }
Please login to merge, or discard this patch.
apps/dav/lib/Connector/Sabre/Exception/EntityTooLarge.php 1 patch
Indentation   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -31,15 +31,15 @@
 block discarded – undo
31 31
  */
32 32
 class EntityTooLarge extends \Sabre\DAV\Exception {
33 33
 
34
-	/**
35
-	 * Returns the HTTP status code for this exception
36
-	 *
37
-	 * @return int
38
-	 */
39
-	public function getHTTPCode() {
34
+    /**
35
+     * Returns the HTTP status code for this exception
36
+     *
37
+     * @return int
38
+     */
39
+    public function getHTTPCode() {
40 40
 
41
-		return 413;
41
+        return 413;
42 42
 
43
-	}
43
+    }
44 44
 
45 45
 }
Please login to merge, or discard this patch.
apps/dav/lib/Connector/Sabre/SharesPlugin.php 2 patches
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -148,7 +148,7 @@  discard block
 block discarded – undo
148 148
 
149 149
 		$shareTypesByFileId = [];
150 150
 
151
-		foreach($shares as $fileId => $sharesForFile) {
151
+		foreach ($shares as $fileId => $sharesForFile) {
152 152
 			$types = array_map(function(IShare $share) {
153 153
 				return $share->getShareType();
154 154
 			}, $sharesForFile);
@@ -189,7 +189,7 @@  discard block
 block discarded – undo
189 189
 			}
190 190
 		}
191 191
 
192
-		$propFind->handle(self::SHARETYPES_PROPERTYNAME, function () use ($sabreNode) {
192
+		$propFind->handle(self::SHARETYPES_PROPERTYNAME, function() use ($sabreNode) {
193 193
 			if (isset($this->cachedShareTypes[$sabreNode->getId()])) {
194 194
 				$shareTypes = $this->cachedShareTypes[$sabreNode->getId()];
195 195
 			} else {
Please login to merge, or discard this patch.
Indentation   +177 added lines, -177 removed lines patch added patch discarded remove patch
@@ -34,181 +34,181 @@
 block discarded – undo
34 34
  */
35 35
 class SharesPlugin extends \Sabre\DAV\ServerPlugin {
36 36
 
37
-	const NS_OWNCLOUD = 'http://owncloud.org/ns';
38
-	const SHARETYPES_PROPERTYNAME = '{http://owncloud.org/ns}share-types';
39
-
40
-	/**
41
-	 * Reference to main server object
42
-	 *
43
-	 * @var \Sabre\DAV\Server
44
-	 */
45
-	private $server;
46
-
47
-	/**
48
-	 * @var \OCP\Share\IManager
49
-	 */
50
-	private $shareManager;
51
-
52
-	/**
53
-	 * @var \Sabre\DAV\Tree
54
-	 */
55
-	private $tree;
56
-
57
-	/**
58
-	 * @var string
59
-	 */
60
-	private $userId;
61
-
62
-	/**
63
-	 * @var \OCP\Files\Folder
64
-	 */
65
-	private $userFolder;
66
-
67
-	/**
68
-	 * @var IShare[]
69
-	 */
70
-	private $cachedShareTypes;
71
-
72
-	private $cachedFolders = [];
73
-
74
-	/**
75
-	 * @param \Sabre\DAV\Tree $tree tree
76
-	 * @param IUserSession $userSession user session
77
-	 * @param \OCP\Files\Folder $userFolder user home folder
78
-	 * @param \OCP\Share\IManager $shareManager share manager
79
-	 */
80
-	public function __construct(
81
-		\Sabre\DAV\Tree $tree,
82
-		IUserSession $userSession,
83
-		\OCP\Files\Folder $userFolder,
84
-		\OCP\Share\IManager $shareManager
85
-	) {
86
-		$this->tree = $tree;
87
-		$this->shareManager = $shareManager;
88
-		$this->userFolder = $userFolder;
89
-		$this->userId = $userSession->getUser()->getUID();
90
-		$this->cachedShareTypes = [];
91
-	}
92
-
93
-	/**
94
-	 * This initializes the plugin.
95
-	 *
96
-	 * This function is called by \Sabre\DAV\Server, after
97
-	 * addPlugin is called.
98
-	 *
99
-	 * This method should set up the required event subscriptions.
100
-	 *
101
-	 * @param \Sabre\DAV\Server $server
102
-	 */
103
-	public function initialize(\Sabre\DAV\Server $server) {
104
-		$server->xml->namespacesMap[self::NS_OWNCLOUD] = 'oc';
105
-		$server->xml->elementMap[self::SHARETYPES_PROPERTYNAME] = ShareTypeList::class;
106
-		$server->protectedProperties[] = self::SHARETYPES_PROPERTYNAME;
107
-
108
-		$this->server = $server;
109
-		$this->server->on('propFind', array($this, 'handleGetProperties'));
110
-	}
111
-
112
-	/**
113
-	 * Return a list of share types for outgoing shares
114
-	 *
115
-	 * @param \OCP\Files\Node $node file node
116
-	 *
117
-	 * @return int[] array of share types
118
-	 */
119
-	private function getShareTypes(\OCP\Files\Node $node) {
120
-		$shareTypes = [];
121
-		$requestedShareTypes = [
122
-			\OCP\Share::SHARE_TYPE_USER,
123
-			\OCP\Share::SHARE_TYPE_GROUP,
124
-			\OCP\Share::SHARE_TYPE_LINK,
125
-			\OCP\Share::SHARE_TYPE_REMOTE,
126
-			\OCP\Share::SHARE_TYPE_EMAIL,
127
-		];
128
-		foreach ($requestedShareTypes as $requestedShareType) {
129
-			// one of each type is enough to find out about the types
130
-			$shares = $this->shareManager->getSharesBy(
131
-				$this->userId,
132
-				$requestedShareType,
133
-				$node,
134
-				false,
135
-				1
136
-			);
137
-			if (!empty($shares)) {
138
-				$shareTypes[] = $requestedShareType;
139
-			}
140
-		}
141
-		return $shareTypes;
142
-	}
143
-
144
-	private function getSharesTypesInFolder(\OCP\Files\Folder $node) {
145
-		$shares = $this->shareManager->getSharesInFolder(
146
-			$this->userId,
147
-			$node,
148
-			true
149
-		);
150
-
151
-		$shareTypesByFileId = [];
152
-
153
-		foreach($shares as $fileId => $sharesForFile) {
154
-			$types = array_map(function(IShare $share) {
155
-				return $share->getShareType();
156
-			}, $sharesForFile);
157
-			$types = array_unique($types);
158
-			sort($types);
159
-			$shareTypesByFileId[$fileId] = $types;
160
-		}
161
-
162
-		return $shareTypesByFileId;
163
-	}
164
-
165
-	/**
166
-	 * Adds shares to propfind response
167
-	 *
168
-	 * @param PropFind $propFind propfind object
169
-	 * @param \Sabre\DAV\INode $sabreNode sabre node
170
-	 */
171
-	public function handleGetProperties(
172
-		PropFind $propFind,
173
-		\Sabre\DAV\INode $sabreNode
174
-	) {
175
-		if (!($sabreNode instanceof \OCA\DAV\Connector\Sabre\Node)) {
176
-			return;
177
-		}
178
-
179
-		// need prefetch ?
180
-		if ($sabreNode instanceof \OCA\DAV\Connector\Sabre\Directory
181
-			&& $propFind->getDepth() !== 0
182
-			&& !is_null($propFind->getStatus(self::SHARETYPES_PROPERTYNAME))
183
-		) {
184
-			$folderNode = $this->userFolder->get($sabreNode->getPath());
185
-
186
-			$childShares = $this->getSharesTypesInFolder($folderNode);
187
-			$this->cachedFolders[] = $sabreNode->getPath();
188
-			$this->cachedShareTypes[$folderNode->getId()] = $this->getShareTypes($folderNode);
189
-			foreach ($childShares as $id => $shares) {
190
-				$this->cachedShareTypes[$id] = $shares;
191
-			}
192
-		}
193
-
194
-		$propFind->handle(self::SHARETYPES_PROPERTYNAME, function () use ($sabreNode) {
195
-			if (isset($this->cachedShareTypes[$sabreNode->getId()])) {
196
-				$shareTypes = $this->cachedShareTypes[$sabreNode->getId()];
197
-			} else {
198
-				list($parentPath,) = \Sabre\Uri\split($sabreNode->getPath());
199
-				if ($parentPath === '') {
200
-					$parentPath = '/';
201
-				}
202
-				// if we already cached the folder this file is in we know there are no shares for this file
203
-				if (array_search($parentPath, $this->cachedFolders) === false) {
204
-					$node = $this->userFolder->get($sabreNode->getPath());
205
-					$shareTypes = $this->getShareTypes($node);
206
-				} else {
207
-					return [];
208
-				}
209
-			}
210
-
211
-			return new ShareTypeList($shareTypes);
212
-		});
213
-	}
37
+    const NS_OWNCLOUD = 'http://owncloud.org/ns';
38
+    const SHARETYPES_PROPERTYNAME = '{http://owncloud.org/ns}share-types';
39
+
40
+    /**
41
+     * Reference to main server object
42
+     *
43
+     * @var \Sabre\DAV\Server
44
+     */
45
+    private $server;
46
+
47
+    /**
48
+     * @var \OCP\Share\IManager
49
+     */
50
+    private $shareManager;
51
+
52
+    /**
53
+     * @var \Sabre\DAV\Tree
54
+     */
55
+    private $tree;
56
+
57
+    /**
58
+     * @var string
59
+     */
60
+    private $userId;
61
+
62
+    /**
63
+     * @var \OCP\Files\Folder
64
+     */
65
+    private $userFolder;
66
+
67
+    /**
68
+     * @var IShare[]
69
+     */
70
+    private $cachedShareTypes;
71
+
72
+    private $cachedFolders = [];
73
+
74
+    /**
75
+     * @param \Sabre\DAV\Tree $tree tree
76
+     * @param IUserSession $userSession user session
77
+     * @param \OCP\Files\Folder $userFolder user home folder
78
+     * @param \OCP\Share\IManager $shareManager share manager
79
+     */
80
+    public function __construct(
81
+        \Sabre\DAV\Tree $tree,
82
+        IUserSession $userSession,
83
+        \OCP\Files\Folder $userFolder,
84
+        \OCP\Share\IManager $shareManager
85
+    ) {
86
+        $this->tree = $tree;
87
+        $this->shareManager = $shareManager;
88
+        $this->userFolder = $userFolder;
89
+        $this->userId = $userSession->getUser()->getUID();
90
+        $this->cachedShareTypes = [];
91
+    }
92
+
93
+    /**
94
+     * This initializes the plugin.
95
+     *
96
+     * This function is called by \Sabre\DAV\Server, after
97
+     * addPlugin is called.
98
+     *
99
+     * This method should set up the required event subscriptions.
100
+     *
101
+     * @param \Sabre\DAV\Server $server
102
+     */
103
+    public function initialize(\Sabre\DAV\Server $server) {
104
+        $server->xml->namespacesMap[self::NS_OWNCLOUD] = 'oc';
105
+        $server->xml->elementMap[self::SHARETYPES_PROPERTYNAME] = ShareTypeList::class;
106
+        $server->protectedProperties[] = self::SHARETYPES_PROPERTYNAME;
107
+
108
+        $this->server = $server;
109
+        $this->server->on('propFind', array($this, 'handleGetProperties'));
110
+    }
111
+
112
+    /**
113
+     * Return a list of share types for outgoing shares
114
+     *
115
+     * @param \OCP\Files\Node $node file node
116
+     *
117
+     * @return int[] array of share types
118
+     */
119
+    private function getShareTypes(\OCP\Files\Node $node) {
120
+        $shareTypes = [];
121
+        $requestedShareTypes = [
122
+            \OCP\Share::SHARE_TYPE_USER,
123
+            \OCP\Share::SHARE_TYPE_GROUP,
124
+            \OCP\Share::SHARE_TYPE_LINK,
125
+            \OCP\Share::SHARE_TYPE_REMOTE,
126
+            \OCP\Share::SHARE_TYPE_EMAIL,
127
+        ];
128
+        foreach ($requestedShareTypes as $requestedShareType) {
129
+            // one of each type is enough to find out about the types
130
+            $shares = $this->shareManager->getSharesBy(
131
+                $this->userId,
132
+                $requestedShareType,
133
+                $node,
134
+                false,
135
+                1
136
+            );
137
+            if (!empty($shares)) {
138
+                $shareTypes[] = $requestedShareType;
139
+            }
140
+        }
141
+        return $shareTypes;
142
+    }
143
+
144
+    private function getSharesTypesInFolder(\OCP\Files\Folder $node) {
145
+        $shares = $this->shareManager->getSharesInFolder(
146
+            $this->userId,
147
+            $node,
148
+            true
149
+        );
150
+
151
+        $shareTypesByFileId = [];
152
+
153
+        foreach($shares as $fileId => $sharesForFile) {
154
+            $types = array_map(function(IShare $share) {
155
+                return $share->getShareType();
156
+            }, $sharesForFile);
157
+            $types = array_unique($types);
158
+            sort($types);
159
+            $shareTypesByFileId[$fileId] = $types;
160
+        }
161
+
162
+        return $shareTypesByFileId;
163
+    }
164
+
165
+    /**
166
+     * Adds shares to propfind response
167
+     *
168
+     * @param PropFind $propFind propfind object
169
+     * @param \Sabre\DAV\INode $sabreNode sabre node
170
+     */
171
+    public function handleGetProperties(
172
+        PropFind $propFind,
173
+        \Sabre\DAV\INode $sabreNode
174
+    ) {
175
+        if (!($sabreNode instanceof \OCA\DAV\Connector\Sabre\Node)) {
176
+            return;
177
+        }
178
+
179
+        // need prefetch ?
180
+        if ($sabreNode instanceof \OCA\DAV\Connector\Sabre\Directory
181
+            && $propFind->getDepth() !== 0
182
+            && !is_null($propFind->getStatus(self::SHARETYPES_PROPERTYNAME))
183
+        ) {
184
+            $folderNode = $this->userFolder->get($sabreNode->getPath());
185
+
186
+            $childShares = $this->getSharesTypesInFolder($folderNode);
187
+            $this->cachedFolders[] = $sabreNode->getPath();
188
+            $this->cachedShareTypes[$folderNode->getId()] = $this->getShareTypes($folderNode);
189
+            foreach ($childShares as $id => $shares) {
190
+                $this->cachedShareTypes[$id] = $shares;
191
+            }
192
+        }
193
+
194
+        $propFind->handle(self::SHARETYPES_PROPERTYNAME, function () use ($sabreNode) {
195
+            if (isset($this->cachedShareTypes[$sabreNode->getId()])) {
196
+                $shareTypes = $this->cachedShareTypes[$sabreNode->getId()];
197
+            } else {
198
+                list($parentPath,) = \Sabre\Uri\split($sabreNode->getPath());
199
+                if ($parentPath === '') {
200
+                    $parentPath = '/';
201
+                }
202
+                // if we already cached the folder this file is in we know there are no shares for this file
203
+                if (array_search($parentPath, $this->cachedFolders) === false) {
204
+                    $node = $this->userFolder->get($sabreNode->getPath());
205
+                    $shareTypes = $this->getShareTypes($node);
206
+                } else {
207
+                    return [];
208
+                }
209
+            }
210
+
211
+            return new ShareTypeList($shareTypes);
212
+        });
213
+    }
214 214
 }
Please login to merge, or discard this patch.