diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2016-01-27 09:36:41 +0100 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2016-01-27 09:36:41 +0100 |
commit | 5b7a1b13f3514f60650e1da41d8dc046ee0252c5 (patch) | |
tree | db4df1735f235f153e209792be0e5bbac2693866 /lib/private/share20/defaultshareprovider.php | |
parent | c274f03e1287b735d732396fb7d668e6b4099429 (diff) | |
parent | d11682dcb4123c3086787e9002614de8fd3b6b08 (diff) | |
download | nextcloud-server-5b7a1b13f3514f60650e1da41d8dc046ee0252c5.tar.gz nextcloud-server-5b7a1b13f3514f60650e1da41d8dc046ee0252c5.zip |
Merge pull request #21887 from owncloud/share2_updateShare
[Sharing 2.0] update share
Diffstat (limited to 'lib/private/share20/defaultshareprovider.php')
-rw-r--r-- | lib/private/share20/defaultshareprovider.php | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/lib/private/share20/defaultshareprovider.php b/lib/private/share20/defaultshareprovider.php index f2072fe21cd..fb2acb56a73 100644 --- a/lib/private/share20/defaultshareprovider.php +++ b/lib/private/share20/defaultshareprovider.php @@ -183,6 +183,69 @@ class DefaultShareProvider implements IShareProvider { * @return IShare The share object */ public function update(IShare $share) { + if ($share->getShareType() === \OCP\Share::SHARE_TYPE_USER) { + /* + * We allow updating the recipient on user shares. + */ + $qb = $this->dbConn->getQueryBuilder(); + $qb->update('share') + ->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId()))) + ->set('share_with', $qb->createNamedParameter($share->getSharedWith()->getUID())) + ->set('uid_owner', $qb->createNamedParameter($share->getShareOwner()->getUID())) + ->set('uid_initiator', $qb->createNamedParameter($share->getSharedBy()->getUID())) + ->set('permissions', $qb->createNamedParameter($share->getPermissions())) + ->set('item_source', $qb->createNamedParameter($share->getPath()->getId())) + ->set('file_source', $qb->createNamedParameter($share->getPath()->getId())) + ->execute(); + } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) { + $qb = $this->dbConn->getQueryBuilder(); + $qb->update('share') + ->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId()))) + ->set('uid_owner', $qb->createNamedParameter($share->getShareOwner()->getUID())) + ->set('uid_initiator', $qb->createNamedParameter($share->getSharedBy()->getUID())) + ->set('permissions', $qb->createNamedParameter($share->getPermissions())) + ->set('item_source', $qb->createNamedParameter($share->getPath()->getId())) + ->set('file_source', $qb->createNamedParameter($share->getPath()->getId())) + ->execute(); + + /* + * Update all user defined group shares + */ + $qb = $this->dbConn->getQueryBuilder(); + $qb->update('share') + ->where($qb->expr()->eq('parent', $qb->createNamedParameter($share->getId()))) + ->set('uid_owner', $qb->createNamedParameter($share->getShareOwner()->getUID())) + ->set('uid_initiator', $qb->createNamedParameter($share->getSharedBy()->getUID())) + ->set('item_source', $qb->createNamedParameter($share->getPath()->getId())) + ->set('file_source', $qb->createNamedParameter($share->getPath()->getId())) + ->execute(); + + /* + * Now update the permissions for all children that have not set it to 0 + */ + $qb = $this->dbConn->getQueryBuilder(); + $qb->update('share') + ->where($qb->expr()->eq('parent', $qb->createNamedParameter($share->getId()))) + ->andWhere($qb->expr()->neq('permissions', $qb->createNamedParameter(0))) + ->set('permissions', $qb->createNamedParameter($share->getPermissions())) + ->execute(); + + } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) { + $qb = $this->dbConn->getQueryBuilder(); + $qb->update('share') + ->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId()))) + ->set('share_with', $qb->createNamedParameter($share->getPassword())) + ->set('uid_owner', $qb->createNamedParameter($share->getShareOwner()->getUID())) + ->set('uid_initiator', $qb->createNamedParameter($share->getSharedBy()->getUID())) + ->set('permissions', $qb->createNamedParameter($share->getPermissions())) + ->set('item_source', $qb->createNamedParameter($share->getPath()->getId())) + ->set('file_source', $qb->createNamedParameter($share->getPath()->getId())) + ->set('token', $qb->createNamedParameter($share->getToken())) + ->set('expiration', $qb->createNamedParameter($share->getExpirationDate(), IQueryBuilder::PARAM_DATE)) + ->execute(); + } + + return $share; } /** |