6 * Implement this interface to define your own principals
10 * @copyright Copyright (C) 2007-2012 Rooftop Solutions. All rights reserved.
11 * @author Evert Pot (http://www.rooftopsolutions.nl/)
12 * @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
14 interface Sabre_DAVACL_IPrincipal extends Sabre_DAV_INode {
17 * Returns a list of alternative urls for a principal
19 * This can for example be an email address, or ldap url.
23 function getAlternateUriSet();
26 * Returns the full principal url
30 function getPrincipalUrl();
33 * Returns the list of group members
35 * If this principal is a group, this function should return
36 * all member principal uri's for the group.
40 function getGroupMemberSet();
43 * Returns the list of groups this principal is member of
45 * If this principal is a member of a (list of) groups, this function
46 * should return a list of principal uri's for it's members.
50 function getGroupMembership();
53 * Sets a list of group members
55 * If this principal is a group, this method sets all the group members.
56 * The list of members is always overwritten, never appended to.
58 * This method should throw an exception if the members could not be set.
60 * @param array $principals
63 function setGroupMemberSet(array $principals);
66 * Returns the displayname
68 * This should be a human readable name for the principal.
69 * If none is available, return the nodename.
73 function getDisplayName();