storagePath = $storagePath; } /** * Returns the name of the node. * * This is used to generate the url. * * @return string */ function getName() { return $this->collectionName; } /** * Returns a principals' collection of files. * * The passed array contains principal information, and is guaranteed to * at least contain a uri item. Other properties may or may not be * supplied by the authentication backend. * * @param array $principalInfo * @return \Sabre\DAV\INode */ function getChildForPrincipal(array $principalInfo) { $owner = $principalInfo['uri']; $acl = [ [ 'privilege' => '{DAV:}all', 'principal' => '{DAV:}owner', 'protected' => true, ], ]; list(, $principalBaseName) = Uri\split($owner); $path = $this->storagePath . '/' . $principalBaseName; if (!is_dir($path)) { mkdir($path, 0777, true); } return new Collection( $path, $acl, $owner ); } /** * Returns a list of ACE's for this node. * * Each ACE has the following properties: * * 'privilege', a string such as {DAV:}read or {DAV:}write. These are * currently the only supported privileges * * 'principal', a url to the principal who owns the node * * 'protected' (optional), indicating that this ACE is not allowed to * be updated. * * @return array */ function getACL() { return [ [ 'principal' => '{DAV:}authenticated', 'privilege' => '{DAV:}read', 'protected' => true, ] ]; } }