1*a1a3b679SAndreas Boehler<?php 2*a1a3b679SAndreas Boehler 3*a1a3b679SAndreas Boehlernamespace Sabre\CalDAV; 4*a1a3b679SAndreas Boehler 5*a1a3b679SAndreas Boehleruse Sabre\DAVACL\PrincipalBackend; 6*a1a3b679SAndreas Boehler 7*a1a3b679SAndreas Boehler/** 8*a1a3b679SAndreas Boehler * Calendars collection 9*a1a3b679SAndreas Boehler * 10*a1a3b679SAndreas Boehler * This object is responsible for generating a list of calendar-homes for each 11*a1a3b679SAndreas Boehler * user. 12*a1a3b679SAndreas Boehler * 13*a1a3b679SAndreas Boehler * This is the top-most node for the calendars tree. In most servers this class 14*a1a3b679SAndreas Boehler * represents the "/calendars" path. 15*a1a3b679SAndreas Boehler * 16*a1a3b679SAndreas Boehler * @copyright Copyright (C) 2007-2015 fruux GmbH (https://fruux.com/). 17*a1a3b679SAndreas Boehler * @author Evert Pot (http://evertpot.com/) 18*a1a3b679SAndreas Boehler * @license http://sabre.io/license/ Modified BSD License 19*a1a3b679SAndreas Boehler */ 20*a1a3b679SAndreas Boehlerclass CalendarRoot extends \Sabre\DAVACL\AbstractPrincipalCollection { 21*a1a3b679SAndreas Boehler 22*a1a3b679SAndreas Boehler /** 23*a1a3b679SAndreas Boehler * CalDAV backend 24*a1a3b679SAndreas Boehler * 25*a1a3b679SAndreas Boehler * @var Sabre\CalDAV\Backend\BackendInterface 26*a1a3b679SAndreas Boehler */ 27*a1a3b679SAndreas Boehler protected $caldavBackend; 28*a1a3b679SAndreas Boehler 29*a1a3b679SAndreas Boehler /** 30*a1a3b679SAndreas Boehler * Constructor 31*a1a3b679SAndreas Boehler * 32*a1a3b679SAndreas Boehler * This constructor needs both an authentication and a caldav backend. 33*a1a3b679SAndreas Boehler * 34*a1a3b679SAndreas Boehler * By default this class will show a list of calendar collections for 35*a1a3b679SAndreas Boehler * principals in the 'principals' collection. If your main principals are 36*a1a3b679SAndreas Boehler * actually located in a different path, use the $principalPrefix argument 37*a1a3b679SAndreas Boehler * to override this. 38*a1a3b679SAndreas Boehler * 39*a1a3b679SAndreas Boehler * @param PrincipalBackend\BackendInterface $principalBackend 40*a1a3b679SAndreas Boehler * @param Backend\BackendInterface $caldavBackend 41*a1a3b679SAndreas Boehler * @param string $principalPrefix 42*a1a3b679SAndreas Boehler */ 43*a1a3b679SAndreas Boehler function __construct(PrincipalBackend\BackendInterface $principalBackend, Backend\BackendInterface $caldavBackend, $principalPrefix = 'principals') { 44*a1a3b679SAndreas Boehler 45*a1a3b679SAndreas Boehler parent::__construct($principalBackend, $principalPrefix); 46*a1a3b679SAndreas Boehler $this->caldavBackend = $caldavBackend; 47*a1a3b679SAndreas Boehler 48*a1a3b679SAndreas Boehler } 49*a1a3b679SAndreas Boehler 50*a1a3b679SAndreas Boehler /** 51*a1a3b679SAndreas Boehler * Returns the nodename 52*a1a3b679SAndreas Boehler * 53*a1a3b679SAndreas Boehler * We're overriding this, because the default will be the 'principalPrefix', 54*a1a3b679SAndreas Boehler * and we want it to be Sabre\CalDAV\Plugin::CALENDAR_ROOT 55*a1a3b679SAndreas Boehler * 56*a1a3b679SAndreas Boehler * @return string 57*a1a3b679SAndreas Boehler */ 58*a1a3b679SAndreas Boehler function getName() { 59*a1a3b679SAndreas Boehler 60*a1a3b679SAndreas Boehler return Plugin::CALENDAR_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 CalendarHome($this->caldavBackend, $principal); 77*a1a3b679SAndreas Boehler 78*a1a3b679SAndreas Boehler } 79*a1a3b679SAndreas Boehler 80*a1a3b679SAndreas Boehler} 81