1*a1a3b679SAndreas Boehler<?php 2*a1a3b679SAndreas Boehler 3*a1a3b679SAndreas Boehlernamespace Sabre\CardDAV; 4*a1a3b679SAndreas Boehler 5*a1a3b679SAndreas Boehleruse Sabre\DAVACL; 6*a1a3b679SAndreas Boehler 7*a1a3b679SAndreas Boehler/** 8*a1a3b679SAndreas Boehler * AddressBook rootnode 9*a1a3b679SAndreas Boehler * 10*a1a3b679SAndreas Boehler * This object lists a collection of users, which can contain addressbooks. 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 Boehlerclass AddressBookRoot extends DAVACL\AbstractPrincipalCollection { 17*a1a3b679SAndreas Boehler 18*a1a3b679SAndreas Boehler /** 19*a1a3b679SAndreas Boehler * Principal Backend 20*a1a3b679SAndreas Boehler * 21*a1a3b679SAndreas Boehler * @var Sabre\DAVACL\PrincipalBackend\BackendInteface 22*a1a3b679SAndreas Boehler */ 23*a1a3b679SAndreas Boehler protected $principalBackend; 24*a1a3b679SAndreas Boehler 25*a1a3b679SAndreas Boehler /** 26*a1a3b679SAndreas Boehler * CardDAV backend 27*a1a3b679SAndreas Boehler * 28*a1a3b679SAndreas Boehler * @var Backend\BackendInterface 29*a1a3b679SAndreas Boehler */ 30*a1a3b679SAndreas Boehler protected $carddavBackend; 31*a1a3b679SAndreas Boehler 32*a1a3b679SAndreas Boehler /** 33*a1a3b679SAndreas Boehler * Constructor 34*a1a3b679SAndreas Boehler * 35*a1a3b679SAndreas Boehler * This constructor needs both a principal and a carddav backend. 36*a1a3b679SAndreas Boehler * 37*a1a3b679SAndreas Boehler * By default this class will show a list of addressbook collections for 38*a1a3b679SAndreas Boehler * principals in the 'principals' collection. If your main principals are 39*a1a3b679SAndreas Boehler * actually located in a different path, use the $principalPrefix argument 40*a1a3b679SAndreas Boehler * to override this. 41*a1a3b679SAndreas Boehler * 42*a1a3b679SAndreas Boehler * @param DAVACL\PrincipalBackend\BackendInterface $principalBackend 43*a1a3b679SAndreas Boehler * @param Backend\BackendInterface $carddavBackend 44*a1a3b679SAndreas Boehler * @param string $principalPrefix 45*a1a3b679SAndreas Boehler */ 46*a1a3b679SAndreas Boehler function __construct(DAVACL\PrincipalBackend\BackendInterface $principalBackend, Backend\BackendInterface $carddavBackend, $principalPrefix = 'principals') { 47*a1a3b679SAndreas Boehler 48*a1a3b679SAndreas Boehler $this->carddavBackend = $carddavBackend; 49*a1a3b679SAndreas Boehler parent::__construct($principalBackend, $principalPrefix); 50*a1a3b679SAndreas Boehler 51*a1a3b679SAndreas Boehler } 52*a1a3b679SAndreas Boehler 53*a1a3b679SAndreas Boehler /** 54*a1a3b679SAndreas Boehler * Returns the name of the node 55*a1a3b679SAndreas Boehler * 56*a1a3b679SAndreas Boehler * @return string 57*a1a3b679SAndreas Boehler */ 58*a1a3b679SAndreas Boehler function getName() { 59*a1a3b679SAndreas Boehler 60*a1a3b679SAndreas Boehler return Plugin::ADDRESSBOOK_ROOT; 61*a1a3b679SAndreas Boehler 62*a1a3b679SAndreas Boehler } 63*a1a3b679SAndreas Boehler 64*a1a3b679SAndreas Boehler /** 65*a1a3b679SAndreas Boehler * This method returns a node for a principal. 66*a1a3b679SAndreas Boehler * 67*a1a3b679SAndreas Boehler * The passed array contains principal information, and is guaranteed to 68*a1a3b679SAndreas Boehler * at least contain a uri item. Other properties may or may not be 69*a1a3b679SAndreas Boehler * supplied by the authentication backend. 70*a1a3b679SAndreas Boehler * 71*a1a3b679SAndreas Boehler * @param array $principal 72*a1a3b679SAndreas Boehler * @return \Sabre\DAV\INode 73*a1a3b679SAndreas Boehler */ 74*a1a3b679SAndreas Boehler function getChildForPrincipal(array $principal) { 75*a1a3b679SAndreas Boehler 76*a1a3b679SAndreas Boehler return new AddressBookHome($this->carddavBackend, $principal['uri']); 77*a1a3b679SAndreas Boehler 78*a1a3b679SAndreas Boehler } 79*a1a3b679SAndreas Boehler 80*a1a3b679SAndreas Boehler} 81