principalInfo = $principalInfo; $this->principalBackend = $principalBackend; } /** * Returns this principals name. * * @return string */ function getName() { return 'calendar-proxy-write'; } /** * Returns the last modification time * * @return null */ function getLastModified() { return null; } /** * Deletes the current node * * @throws DAV\Exception\Forbidden * @return void */ function delete() { throw new DAV\Exception\Forbidden('Permission denied to delete node'); } /** * Renames the node * * @param string $name The new name * @throws DAV\Exception\Forbidden * @return void */ function setName($name) { throw new DAV\Exception\Forbidden('Permission denied to rename file'); } /** * Returns a list of alternative urls for a principal * * This can for example be an email address, or ldap url. * * @return array */ function getAlternateUriSet() { return []; } /** * Returns the full principal url * * @return string */ function getPrincipalUrl() { return $this->principalInfo['uri'] . '/' . $this->getName(); } /** * Returns the list of group members * * If this principal is a group, this function should return * all member principal uri's for the group. * * @return array */ function getGroupMemberSet() { return $this->principalBackend->getGroupMemberSet($this->getPrincipalUrl()); } /** * Returns the list of groups this principal is member of * * If this principal is a member of a (list of) groups, this function * should return a list of principal uri's for it's members. * * @return array */ function getGroupMembership() { return $this->principalBackend->getGroupMembership($this->getPrincipalUrl()); } /** * Sets a list of group members * * If this principal is a group, this method sets all the group members. * The list of members is always overwritten, never appended to. * * This method should throw an exception if the members could not be set. * * @param array $principals * @return void */ function setGroupMemberSet(array $principals) { $this->principalBackend->setGroupMemberSet($this->getPrincipalUrl(), $principals); } /** * Returns the displayname * * This should be a human readable name for the principal. * If none is available, return the nodename. * * @return string */ function getDisplayName() { return $this->getName(); } }