From 4cc2230c58f0b607c1de51d34925450e3e7d25f2 Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Wed, 13 Jan 2016 21:48:53 +0100 Subject: [PATCH] [Share 2.0] Fix pre_share and post_share hooks --- lib/private/share20/manager.php | 18 +++++++++++++++++- tests/lib/share20/managertest.php | 7 +++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/lib/private/share20/manager.php b/lib/private/share20/manager.php index 0c6f9cb59db..035026b47ea 100644 --- a/lib/private/share20/manager.php +++ b/lib/private/share20/manager.php @@ -452,6 +452,16 @@ class Manager { $target = \OC\Files\Filesystem::normalizePath($target); $share->setTarget($target); + //Get sharewith for hooks + $sharedWith = null; + if ($share->getShareType() === \OCP\Share::SHARE_TYPE_USER) { + $sharedWith = $share->getSharedWith()->getUID(); + } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) { + $sharedWith = $share->getSharedWith()->getGID(); + } else { + $sharedWith = $share->getSharedWith(); + } + // Pre share hook $run = true; $error = ''; @@ -464,8 +474,10 @@ class Manager { 'fileSource' => $share->getPath()->getId(), 'expiration' => $share->getExpirationDate(), 'token' => $share->getToken(), + 'itemTarget' => $share->getTarget(), + 'shareWith' => $sharedWith, 'run' => &$run, - 'error' => &$error + 'error' => &$error, ]; \OC_Hook::emit('OCP\Share', 'pre_shared', $preHookData); @@ -488,7 +500,11 @@ class Manager { 'expiration' => $share->getExpirationDate(), 'token' => $share->getToken(), 'id' => $share->getId(), + 'shareWith' => $sharedWith, + 'itemTarget' => $share->getTarget(), + 'fileTarget' => $share->getTarget(), ]; + \OC_Hook::emit('OCP\Share', 'post_shared', $postHookData); return $share; diff --git a/tests/lib/share20/managertest.php b/tests/lib/share20/managertest.php index 170a1d02af2..bfee9c39593 100644 --- a/tests/lib/share20/managertest.php +++ b/tests/lib/share20/managertest.php @@ -1364,6 +1364,8 @@ class ManagerTest extends \Test\TestCase { $share->expects($this->once()) ->method('setTarget') ->with('/target'); + $share->method('getTarget') + ->willReturn('/target'); $share->expects($this->once()) ->method('setExpirationDate') ->with($date); @@ -1388,6 +1390,8 @@ class ManagerTest extends \Test\TestCase { 'token' => 'token', 'run' => true, 'error' => '', + 'itemTarget' => '/target', + 'shareWith' => null, ]; $hookListnerExpectsPost = [ @@ -1400,6 +1404,9 @@ class ManagerTest extends \Test\TestCase { 'expiration' => $date, 'token' => 'token', 'id' => 42, + 'itemTarget' => '/target', + 'fileTarget' => '/target', + 'shareWith' => null, ]; $share->method('getId')->willReturn(42);