1*a1a3b679SAndreas Boehler<?php 2*a1a3b679SAndreas Boehler 3*a1a3b679SAndreas Boehlernamespace Sabre\DAVACL; 4*a1a3b679SAndreas Boehler 5*a1a3b679SAndreas Boehleruse Sabre\DAV; 6*a1a3b679SAndreas Boehler 7*a1a3b679SAndreas Boehler/** 8*a1a3b679SAndreas Boehler * IPrincipal interface 9*a1a3b679SAndreas Boehler * 10*a1a3b679SAndreas Boehler * Implement this interface to define your own principals 11*a1a3b679SAndreas Boehler * 12*a1a3b679SAndreas Boehler * @copyright Copyright (C) 2007-2015 fruux GmbH (https://fruux.com/). 13*a1a3b679SAndreas Boehler * @author Evert Pot (http://evertpot.com/) 14*a1a3b679SAndreas Boehler * @license http://sabre.io/license/ Modified BSD License 15*a1a3b679SAndreas Boehler */ 16*a1a3b679SAndreas Boehlerinterface IPrincipal extends DAV\INode { 17*a1a3b679SAndreas Boehler 18*a1a3b679SAndreas Boehler /** 19*a1a3b679SAndreas Boehler * Returns a list of alternative urls for a principal 20*a1a3b679SAndreas Boehler * 21*a1a3b679SAndreas Boehler * This can for example be an email address, or ldap url. 22*a1a3b679SAndreas Boehler * 23*a1a3b679SAndreas Boehler * @return array 24*a1a3b679SAndreas Boehler */ 25*a1a3b679SAndreas Boehler function getAlternateUriSet(); 26*a1a3b679SAndreas Boehler 27*a1a3b679SAndreas Boehler /** 28*a1a3b679SAndreas Boehler * Returns the full principal url 29*a1a3b679SAndreas Boehler * 30*a1a3b679SAndreas Boehler * @return string 31*a1a3b679SAndreas Boehler */ 32*a1a3b679SAndreas Boehler function getPrincipalUrl(); 33*a1a3b679SAndreas Boehler 34*a1a3b679SAndreas Boehler /** 35*a1a3b679SAndreas Boehler * Returns the list of group members 36*a1a3b679SAndreas Boehler * 37*a1a3b679SAndreas Boehler * If this principal is a group, this function should return 38*a1a3b679SAndreas Boehler * all member principal uri's for the group. 39*a1a3b679SAndreas Boehler * 40*a1a3b679SAndreas Boehler * @return array 41*a1a3b679SAndreas Boehler */ 42*a1a3b679SAndreas Boehler function getGroupMemberSet(); 43*a1a3b679SAndreas Boehler 44*a1a3b679SAndreas Boehler /** 45*a1a3b679SAndreas Boehler * Returns the list of groups this principal is member of 46*a1a3b679SAndreas Boehler * 47*a1a3b679SAndreas Boehler * If this principal is a member of a (list of) groups, this function 48*a1a3b679SAndreas Boehler * should return a list of principal uri's for it's members. 49*a1a3b679SAndreas Boehler * 50*a1a3b679SAndreas Boehler * @return array 51*a1a3b679SAndreas Boehler */ 52*a1a3b679SAndreas Boehler function getGroupMembership(); 53*a1a3b679SAndreas Boehler 54*a1a3b679SAndreas Boehler /** 55*a1a3b679SAndreas Boehler * Sets a list of group members 56*a1a3b679SAndreas Boehler * 57*a1a3b679SAndreas Boehler * If this principal is a group, this method sets all the group members. 58*a1a3b679SAndreas Boehler * The list of members is always overwritten, never appended to. 59*a1a3b679SAndreas Boehler * 60*a1a3b679SAndreas Boehler * This method should throw an exception if the members could not be set. 61*a1a3b679SAndreas Boehler * 62*a1a3b679SAndreas Boehler * @param array $principals 63*a1a3b679SAndreas Boehler * @return void 64*a1a3b679SAndreas Boehler */ 65*a1a3b679SAndreas Boehler function setGroupMemberSet(array $principals); 66*a1a3b679SAndreas Boehler 67*a1a3b679SAndreas Boehler /** 68*a1a3b679SAndreas Boehler * Returns the displayname 69*a1a3b679SAndreas Boehler * 70*a1a3b679SAndreas Boehler * This should be a human readable name for the principal. 71*a1a3b679SAndreas Boehler * If none is available, return the nodename. 72*a1a3b679SAndreas Boehler * 73*a1a3b679SAndreas Boehler * @return string 74*a1a3b679SAndreas Boehler */ 75*a1a3b679SAndreas Boehler function getDisplayName(); 76*a1a3b679SAndreas Boehler 77*a1a3b679SAndreas Boehler} 78