xref: /plugin/davcal/vendor/sabre/dav/lib/CalDAV/CalendarRoot.php (revision a1a3b6794e0e143a4a8b51d3185ce2d339be61ab)
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