|
|
|
|
@ -532,6 +532,8 @@ class Manager {
|
|
|
|
|
* @return IShare The share object
|
|
|
|
|
*/
|
|
|
|
|
public function updateShare(IShare $share) {
|
|
|
|
|
$expirationDateUpdated = false;
|
|
|
|
|
|
|
|
|
|
if (!$this->canShare($share)) {
|
|
|
|
|
throw new \Exception('The Share API is disabled');
|
|
|
|
|
}
|
|
|
|
|
@ -540,13 +542,13 @@ class Manager {
|
|
|
|
|
|
|
|
|
|
// We can't change the share type!
|
|
|
|
|
if ($share->getShareType() !== $originalShare->getShareType()) {
|
|
|
|
|
//Throw exception
|
|
|
|
|
throw new \Exception('Can\'t change share type');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// We can only change the recipient on user shares
|
|
|
|
|
if ($share->getSharedWith() !== $originalShare->getSharedWith() &&
|
|
|
|
|
$share->getShareType() !== \OCP\Share::SHARE_TYPE_USER) {
|
|
|
|
|
// Throw exception
|
|
|
|
|
throw new \Exception('Can only update recipient on user shares');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Cannot share with the owner
|
|
|
|
|
@ -574,15 +576,29 @@ class Manager {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Verify the expiration date
|
|
|
|
|
$share->setExpirationDate($this->validateExpiredate($share->getExpirationDate()));
|
|
|
|
|
if ($share->getExpirationDate() !== $originalShare->getExpirationDate()) {
|
|
|
|
|
//Verify the expiration date
|
|
|
|
|
$share->setExpirationDate($this->validateExpiredate($share->getExpirationDate()));
|
|
|
|
|
$expirationDateUpdated = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$this->pathCreateChecks($share->getPath());
|
|
|
|
|
|
|
|
|
|
// Now update the share!
|
|
|
|
|
$provider = $this->factory->getProviderForType($share->getShareType());
|
|
|
|
|
return $provider->update($share);
|
|
|
|
|
$share = $provider->update($share);
|
|
|
|
|
|
|
|
|
|
if ($expirationDateUpdated === true) {
|
|
|
|
|
\OC_Hook::emit('OCP\Share', 'post_set_expiration_date', [
|
|
|
|
|
'itemType' => $share->getPath() instanceof \OCP\Files\File ? 'file' : 'folder',
|
|
|
|
|
'itemSource' => $share->getPath()->getId(),
|
|
|
|
|
'date' => $share->getExpirationDate(),
|
|
|
|
|
'uidOwner' => $share->getSharedBy()->getUID(),
|
|
|
|
|
]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $share;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|