d3fb8fcdd3
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
tags/v14.0.0beta1
@@ -203,7 +203,7 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable { | |||
} | |||
$this->caldavBackend->updateShares($this, [], [ | |||
'href' => $principal | |||
$principal | |||
]); | |||
return; | |||
} |
@@ -181,7 +181,7 @@ class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable { | |||
} | |||
$this->carddavBackend->updateShares($this, [], [ | |||
'href' => $principal | |||
$principal | |||
]); | |||
return; | |||
} |
@@ -324,6 +324,13 @@ class Principal implements BackendInterface { | |||
return $this->principalPrefix . '/' . $user->getUID(); | |||
} | |||
} | |||
if (substr($uri, 0, 10) === 'principal:') { | |||
$principal = substr($uri, 10); | |||
$principal = $this->getPrincipalByPath($principal); | |||
if ($principal !== null) { | |||
return $principal['uri']; | |||
} | |||
} | |||
return null; | |||
} |
@@ -67,12 +67,18 @@ class Backend { | |||
* @param string[] $add | |||
* @param string[] $remove | |||
*/ | |||
public function updateShares($shareable, $add, $remove) { | |||
public function updateShares(IShareable $shareable, array $add, array $remove) { | |||
foreach($add as $element) { | |||
$this->shareWith($shareable, $element); | |||
$principal = $this->principalBackend->findByUri($element['href'], ''); | |||
if ($principal !== '') { | |||
$this->shareWith($shareable, $element); | |||
} | |||
} | |||
foreach($remove as $element) { | |||
$this->unshare($shareable, $element); | |||
$principal = $this->principalBackend->findByUri($element, ''); | |||
if ($principal !== '') { | |||
$this->unshare($shareable, $element); | |||
} | |||
} | |||
} | |||