%PDF- %PDF-
Direktori : /www/varak.net/mail2.varak.net_old/libraries/afterlogic/DAV/CalDAV/ |
Current File : /www/varak.net/mail2.varak.net_old/libraries/afterlogic/DAV/CalDAV/SharedCalendar.php |
<?php /* * Copyright 2004-2014, AfterLogic Corp. * Licensed under AGPLv3 license or AfterLogic license * if commercial version of the product was purchased. * See the LICENSE file for a full license statement. */ namespace afterlogic\DAV\CalDAV; class SharedCalendar extends \Sabre\CalDAV\SharedCalendar{ protected $principalInfo; /** * Constructor * * @param Backend\BackendInterface $caldavBackend * @param array $calendarInfo * @param array $principalInfo */ public function __construct(\Sabre\CalDAV\Backend\BackendInterface $caldavBackend, $calendarInfo, $principalInfo) { $this->principalInfo = $principalInfo; parent::__construct($caldavBackend, $calendarInfo); } /** * Returns a list of ACE's for this node. * * Each ACE has the following properties: * * 'privilege', a string such as {DAV:}read or {DAV:}write. These are * currently the only supported privileges * * 'principal', a url to the principal who owns the node * * 'protected' (optional), indicating that this ACE is not allowed to * be updated. * * @return array */ public function getACL() { $sTenantPrincipalUri = \afterlogic\DAV\Utils::getTenantPrincipalUri($this->principalInfo['uri']); // The top-level ACL only contains access information for the true // owner of the calendar, so we need to add the information for the // sharee. $acl = parent::getACL(); $acl[] = array( 'privilege' => '{DAV:}read', 'principal' => $this->calendarInfo['principaluri'], 'protected' => true, ); if (!$this->calendarInfo['{http://sabredav.org/ns}read-only']) { $acl[] = array( 'privilege' => '{DAV:}write', 'principal' => $this->calendarInfo['principaluri'], 'protected' => true, ); } if ($sTenantPrincipalUri === $this->calendarInfo['principaluri']) { $acl[] = array( 'privilege' => '{DAV:}read', 'principal' => $this->principalInfo['uri'], 'protected' => true, ); if (!$this->calendarInfo['{http://sabredav.org/ns}read-only']) { $acl[] = array( 'privilege' => '{DAV:}write', 'principal' => $this->principalInfo['uri'], 'protected' => true, ); } } return $acl; } /** * Updates properties such as the display name and description * * @param array $mutations * @return array */ public function updateProperties($mutations) { if (isset($mutations['href'])) { return $this->caldavBackend->updateShares($this->calendarInfo['id'], array($mutations)); } else { return $this->caldavBackend->updateCalendar($this->calendarInfo['id'], $mutations); } } /** * Deletes the calendar. * * @return void */ public function delete() { $sTenantPrincipalUri = \afterlogic\DAV\Utils::getTenantPrincipalUri($this->principalInfo['uri']); if ($sTenantPrincipalUri !== $this->calendarInfo['principaluri']) { $sEmail = basename($this->principalInfo['uri']); $this->caldavBackend->updateShares($this->calendarInfo['id'], array(), array($sEmail)); } } }