Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F1817571
MockSharing.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Size
4 KB
Subscribers
None
MockSharing.php
View Options
<?php
namespace
Sabre\CalDAV\Backend
;
use
Sabre\DAV
;
use
Sabre\CalDAV
;
use
Sabre\CalDAV\Xml\Notification\NotificationInterface
;
class
MockSharing
extends
Mock
implements
NotificationSupport
,
SharingSupport
{
private
$shares
=
[];
private
$notifications
;
function
__construct
(
array
$calendars
=
[],
array
$calendarData
=
[],
array
$notifications
=
[])
{
parent
::
__construct
(
$calendars
,
$calendarData
);
$this
->
notifications
=
$notifications
;
}
/**
* Returns a list of notifications for a given principal url.
*
* The returned array should only consist of implementations of
* Sabre\CalDAV\Notifications\INotificationType.
*
* @param string $principalUri
* @return array
*/
function
getNotificationsForPrincipal
(
$principalUri
)
{
if
(
isset
(
$this
->
notifications
[
$principalUri
]))
{
return
$this
->
notifications
[
$principalUri
];
}
return
[];
}
/**
* This deletes a specific notifcation.
*
* This may be called by a client once it deems a notification handled.
*
* @param string $principalUri
* @param NotificationInterface $notification
* @return void
*/
function
deleteNotification
(
$principalUri
,
NotificationInterface
$notification
)
{
foreach
(
$this
->
notifications
[
$principalUri
]
as
$key
=>
$value
)
{
if
(
$notification
===
$value
)
{
unset
(
$this
->
notifications
[
$principalUri
][
$key
]);
}
}
}
/**
* Updates the list of shares.
*
* The first array is a list of people that are to be added to the
* calendar.
*
* Every element in the add array has the following properties:
* * href - A url. Usually a mailto: address
* * commonName - Usually a first and last name, or false
* * summary - A description of the share, can also be false
* * readOnly - A boolean value
*
* Every element in the remove array is just the address string.
*
* Note that if the calendar is currently marked as 'not shared' by and
* this method is called, the calendar should be 'upgraded' to a shared
* calendar.
*
* @param mixed $calendarId
* @param array $add
* @param array $remove
* @return void
*/
function
updateShares
(
$calendarId
,
array
$add
,
array
$remove
)
{
if
(!
isset
(
$this
->
shares
[
$calendarId
]))
{
$this
->
shares
[
$calendarId
]
=
[];
}
foreach
(
$add
as
$val
)
{
$val
[
'status'
]
=
CalDAV\SharingPlugin
::
STATUS_NORESPONSE
;
$this
->
shares
[
$calendarId
][]
=
$val
;
}
foreach
(
$this
->
shares
[
$calendarId
]
as
$k
=>
$share
)
{
if
(
in_array
(
$share
[
'href'
],
$remove
))
{
unset
(
$this
->
shares
[
$calendarId
][
$k
]);
}
}
// Re-numbering keys
$this
->
shares
[
$calendarId
]
=
array_values
(
$this
->
shares
[
$calendarId
]);
}
/**
* Returns the list of people whom this calendar is shared with.
*
* Every element in this array should have the following properties:
* * href - Often a mailto: address
* * commonName - Optional, for example a first + last name
* * status - See the Sabre\CalDAV\SharingPlugin::STATUS_ constants.
* * readOnly - boolean
* * summary - Optional, a description for the share
*
* @param mixed $calendarId
* @return array
*/
function
getShares
(
$calendarId
)
{
if
(!
isset
(
$this
->
shares
[
$calendarId
]))
{
return
[];
}
return
$this
->
shares
[
$calendarId
];
}
/**
* This method is called when a user replied to a request to share.
*
* @param string href The sharee who is replying (often a mailto: address)
* @param int status One of the SharingPlugin::STATUS_* constants
* @param string $calendarUri The url to the calendar thats being shared
* @param string $inReplyTo The unique id this message is a response to
* @param string $summary A description of the reply
* @return void
*/
function
shareReply
(
$href
,
$status
,
$calendarUri
,
$inReplyTo
,
$summary
=
null
)
{
// This operation basically doesn't do anything yet
if
(
$status
===
CalDAV\SharingPlugin
::
STATUS_ACCEPTED
)
{
return
'calendars/blabla/calendar'
;
}
}
/**
* Publishes a calendar
*
* @param mixed $calendarId
* @param bool $value
* @return void
*/
function
setPublishStatus
(
$calendarId
,
$value
)
{
foreach
(
$this
->
calendars
as
$k
=>
$cal
)
{
if
(
$cal
[
'id'
]
===
$calendarId
)
{
if
(!
$value
)
{
unset
(
$cal
[
'{http://calendarserver.org/ns/}publish-url'
]);
}
else
{
$cal
[
'{http://calendarserver.org/ns/}publish-url'
]
=
'http://example.org/public/ '
.
$calendarId
.
'.ics'
;
}
return
;
}
}
throw
new
DAV\Exception
(
'Calendar with id "'
.
$calendarId
.
'" not found'
);
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, Dec 21, 3:28 AM (3 w, 1 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
914086
Default Alt Text
MockSharing.php (4 KB)
Attached To
rDAVCAL DokuWiki DAVCal PlugIn
Event Timeline
Log In to Comment