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