1<?php 2 3namespace Sabre\CalDAV; 4 5use Sabre\DAVACL\PrincipalBackend; 6 7/** 8 * Calendars collection 9 * 10 * This object is responsible for generating a list of calendar-homes for each 11 * user. 12 * 13 * This is the top-most node for the calendars tree. In most servers this class 14 * represents the "/calendars" path. 15 * 16 * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 17 * @author Evert Pot (http://evertpot.com/) 18 * @license http://sabre.io/license/ Modified BSD License 19 */ 20class CalendarRoot extends \Sabre\DAVACL\AbstractPrincipalCollection { 21 22 /** 23 * CalDAV backend 24 * 25 * @var Backend\BackendInterface 26 */ 27 protected $caldavBackend; 28 29 /** 30 * Constructor 31 * 32 * This constructor needs both an authentication and a caldav backend. 33 * 34 * By default this class will show a list of calendar collections for 35 * principals in the 'principals' collection. If your main principals are 36 * actually located in a different path, use the $principalPrefix argument 37 * to override this. 38 * 39 * @param PrincipalBackend\BackendInterface $principalBackend 40 * @param Backend\BackendInterface $caldavBackend 41 * @param string $principalPrefix 42 */ 43 function __construct(PrincipalBackend\BackendInterface $principalBackend, Backend\BackendInterface $caldavBackend, $principalPrefix = 'principals') { 44 45 parent::__construct($principalBackend, $principalPrefix); 46 $this->caldavBackend = $caldavBackend; 47 48 } 49 50 /** 51 * Returns the nodename 52 * 53 * We're overriding this, because the default will be the 'principalPrefix', 54 * and we want it to be Sabre\CalDAV\Plugin::CALENDAR_ROOT 55 * 56 * @return string 57 */ 58 function getName() { 59 60 return Plugin::CALENDAR_ROOT; 61 62 } 63 64 /** 65 * This method returns a node for a principal. 66 * 67 * The passed array contains principal information, and is guaranteed to 68 * at least contain a uri item. Other properties may or may not be 69 * supplied by the authentication backend. 70 * 71 * @param array $principal 72 * @return \Sabre\DAV\INode 73 */ 74 function getChildForPrincipal(array $principal) { 75 76 return new CalendarHome($this->caldavBackend, $principal); 77 78 } 79 80} 81