Skip to content

Commit

Permalink
Merge pull request #48616 from nextcloud/backport/48597/stable28
Browse files Browse the repository at this point in the history
[stable28] Fix email share transfer accross storages
  • Loading branch information
come-nc authored Oct 15, 2024
2 parents c321efd + 441ca8b commit c980842
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 1 deletion.
2 changes: 2 additions & 0 deletions apps/files/lib/Service/OwnershipTransferService.php
Original file line number Diff line number Diff line change
Expand Up @@ -439,6 +439,7 @@ private function restoreShares(

foreach ($shares as ['share' => $share, 'suffix' => $suffix]) {
try {
$output->writeln('Transfering share ' . $share->getId() . ' of type ' . $share->getShareType(), OutputInterface::VERBOSITY_VERBOSE);
if ($share->getShareType() === IShare::TYPE_USER &&
$share->getSharedWith() === $destinationUid) {
// Unmount the shares before deleting, so we don't try to get the storage later on.
Expand Down Expand Up @@ -476,6 +477,7 @@ private function restoreShares(
// Try to get the new ID from the target path and suffix of the share
$node = $rootFolder->get(Filesystem::normalizePath($targetLocation . '/' . $suffix));
$newNodeId = $node->getId();
$output->writeln('Had to change node id to ' . $newNodeId, OutputInterface::VERBOSITY_VERY_VERBOSE);
}
$share->setNodeId($newNodeId);

Expand Down
5 changes: 4 additions & 1 deletion apps/sharebymail/lib/ShareByMailProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -673,11 +673,14 @@ public function update(IShare $share, ?string $plainTextPassword = null): IShare
}

/*
* We allow updating the permissions and password of mail shares
* We allow updating mail shares
*/
$qb = $this->dbConnection->getQueryBuilder();
$qb->update('share')
->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId())))
->set('item_source', $qb->createNamedParameter($share->getNodeId()))
->set('file_source', $qb->createNamedParameter($share->getNodeId()))
->set('share_with', $qb->createNamedParameter($share->getSharedWith()))
->set('permissions', $qb->createNamedParameter($share->getPermissions()))
->set('uid_owner', $qb->createNamedParameter($share->getShareOwner()))
->set('uid_initiator', $qb->createNamedParameter($share->getSharedBy()))
Expand Down
2 changes: 2 additions & 0 deletions apps/sharebymail/tests/ShareByMailProviderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -643,6 +643,8 @@ public function testUpdate() {
$this->share->expects($this->once())->method('getSharedBy')->willReturn($sharedBy);
$this->share->expects($this->any())->method('getNote')->willReturn($note);
$this->share->expects($this->atLeastOnce())->method('getId')->willReturn($id);
$this->share->expects($this->atLeastOnce())->method('getNodeId')->willReturn($itemSource);
$this->share->expects($this->once())->method('getSharedWith')->willReturn($shareWith);

$this->assertSame($this->share,
$instance->update($this->share)
Expand Down

0 comments on commit c980842

Please sign in to comment.