1<?php
2
3namespace Sabre\CalDAV;
4
5/**
6 * This interface represents a node that may contain calendar objects.
7 *
8 * This is the shared parent for both the Inbox collection and calendars
9 * resources.
10 *
11 * In most cases you will likely want to look at ICalendar instead of this
12 * interface.
13 *
14 * @copyright Copyright (C) fruux GmbH (https://fruux.com/)
15 * @author Evert Pot (http://evertpot.com/)
16 * @license http://sabre.io/license/ Modified BSD License
17 */
18interface ICalendarObjectContainer extends \Sabre\DAV\ICollection {
19
20    /**
21     * Performs a calendar-query on the contents of this calendar.
22     *
23     * The calendar-query is defined in RFC4791 : CalDAV. Using the
24     * calendar-query it is possible for a client to request a specific set of
25     * object, based on contents of iCalendar properties, date-ranges and
26     * iCalendar component types (VTODO, VEVENT).
27     *
28     * This method should just return a list of (relative) urls that match this
29     * query.
30     *
31     * The list of filters are specified as an array. The exact array is
32     * documented by \Sabre\CalDAV\CalendarQueryParser.
33     *
34     * @param array $filters
35     * @return array
36     */
37    function calendarQuery(array $filters);
38
39}
40