diff --git a/apps/files_sharing/tests/api.php b/apps/files_sharing/tests/api.php index e2bbb548182498f8c08b6d3c551cefb45fd3a91f..4ada0118d37ed5a2a8af8bd8c5699e795c6c6cf8 100644 --- a/apps/files_sharing/tests/api.php +++ b/apps/files_sharing/tests/api.php @@ -477,89 +477,6 @@ class Test_Files_Sharing_Api extends Test_Files_Sharing_Base { } - /** - * @brief test multiple shared folder if the path gets constructed correctly - * @medium - */ - function testGetShareMultipleSharedFolder() { - - self::loginHelper(self::TEST_FILES_SHARING_API_USER1); - - $fileInfo1 = $this->view->getFileInfo($this->folder); - $fileInfo2 = $this->view->getFileInfo($this->folder . $this->subfolder); - - - // share sub-folder to user2 - $result = \OCP\Share::shareItem('folder', $fileInfo2['fileid'], \OCP\Share::SHARE_TYPE_USER, - \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2, 31); - - // share was successful? - $this->assertTrue($result); - - // share folder to user2 - $result = \OCP\Share::shareItem('folder', $fileInfo1['fileid'], \OCP\Share::SHARE_TYPE_USER, - \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2, 31); - - // share was successful? - $this->assertTrue($result); - - - // login as user2 - self::loginHelper(self::TEST_FILES_SHARING_API_USER2); - - $result = \OCP\Share::shareItem('folder', $fileInfo2['fileid'], \OCP\Share::SHARE_TYPE_LINK, null, 1); - // share was successful? - $this->assertTrue(is_string($result)); - - - // ask for shared/subfolder - $expectedPath1 = '/Shared' . $this->subfolder; - $_GET['path'] = $expectedPath1; - - $result1 = Share\Api::getAllShares(array()); - - $this->assertTrue($result1->succeeded()); - - // test should return one share within $this->folder - $data1 = $result1->getData(); - $share1 = reset($data1); - - // ask for shared/folder/subfolder - $expectedPath2 = '/Shared' . $this->folder . $this->subfolder; - $_GET['path'] = $expectedPath2; - - $result2 = Share\Api::getAllShares(array()); - - $this->assertTrue($result2->succeeded()); - - // test should return one share within $this->folder - $data2 = $result2->getData(); - $share2 = reset($data2); - - - // validate results - // we should get exactly one result each time - $this->assertEquals(1, count($data1)); - $this->assertEquals(1, count($data2)); - - $this->assertEquals($expectedPath1, $share1['path']); - $this->assertEquals($expectedPath2, $share2['path']); - - - // cleanup - $result = \OCP\Share::unshare('folder', $fileInfo2['fileid'], \OCP\Share::SHARE_TYPE_LINK, null); - $this->assertTrue($result); - - self::loginHelper(self::TEST_FILES_SHARING_API_USER1); - $result = \OCP\Share::unshare('folder', $fileInfo1['fileid'], \OCP\Share::SHARE_TYPE_USER, - \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2); - $this->assertTrue($result); - $result = \OCP\Share::unshare('folder', $fileInfo2['fileid'], \OCP\Share::SHARE_TYPE_USER, - \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2); - $this->assertTrue($result); - - } - /** * @brief test re-re-share of folder if the path gets constructed correctly * @medium diff --git a/lib/private/share/share.php b/lib/private/share/share.php index ae7b6f5fbc74158eae6eb1a6eeb5701d74fc1eec..e4886abd2b52be8f84ead0f2c20f9b0cdddc22c1 100644 --- a/lib/private/share/share.php +++ b/lib/private/share/share.php @@ -1087,18 +1087,23 @@ class Share extends \OC\Share\Constants { if (isset($row['parent'])) { $query = \OC_DB::prepare('SELECT `file_target` FROM `*PREFIX*share` WHERE `id` = ?'); $parentResult = $query->execute(array($row['parent'])); + //$query = \OC_DB::prepare('SELECT `file_target` FROM `*PREFIX*share` WHERE `id` = ?'); + //$parentResult = $query->execute(array($row['id'])); if (\OC_DB::isError($result)) { \OC_Log::write('OCP\Share', 'Can\'t select parent: ' . \OC_DB::getErrorMessage($result) . ', select=' . $select . ' where=' . $where, \OC_Log::ERROR); } else { $parentRow = $parentResult->fetchRow(); - $splitPath = explode('/', $row['path']); $tmpPath = '/Shared' . $parentRow['file_target']; + // find the right position where the row path continues from the target path + $pos = strrpos($row['path'], $parentRow['file_target']); + $subPath = substr($row['path'], $pos); + $splitPath = explode('/', $subPath); foreach (array_slice($splitPath, 2) as $pathPart) { $tmpPath = $tmpPath . '/' . $pathPart; } - $row['path'] = $tmpPath; + $row['path'] = $tmpPath; } } else { if (!isset($mounts[$row['storage']])) {