public function testGetShareFromOutsideFilesFolder() { OC_User::setUserId($this->user1); $view = new \OC\Files\View('/' . $this->user1 . '/'); $view->mkdir('files/test'); $view->mkdir('files/test/sub'); $view->mkdir('files_trashbin'); $view->mkdir('files_trashbin/files'); $fileInfo = $view->getFileInfo('files/test/sub'); $fileId = $fileInfo->getId(); $this->assertTrue(OCP\Share::shareItem('folder', $fileId, OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ), 'Failed asserting that user 1 successfully shared "test/sub" with user 2.'); $result = OCP\Share::getItemShared('folder', $fileId, Test_Share_Backend::FORMAT_SOURCE); $this->assertNotEmpty($result); $result = OCP\Share::getItemSharedWithUser('folder', $fileId, $this->user2); $this->assertNotEmpty($result); $result = OCP\Share::getItemsSharedWithUser('folder', $this->user2); $this->assertNotEmpty($result); // move to trash (keeps file id) $view->rename('files/test', 'files_trashbin/files/test'); $result = OCP\Share::getItemShared('folder', $fileId, Test_Share_Backend::FORMAT_SOURCE); $this->assertEmpty($result, 'Share must not be returned for files outside of "files"'); $result = OCP\Share::getItemSharedWithUser('folder', $fileId, $this->user2); $this->assertEmpty($result, 'Share must not be returned for files outside of "files"'); $result = OCP\Share::getItemsSharedWithUser('folder', $this->user2); $this->assertEmpty($result, 'Share must not be returned for files outside of "files"'); }
private static function isItemSharedWithGroup($type, $path, $share_with, $owner, $recursiv) { if ( empty($path) || $path == "files" ) return false; \OC_Util::setupFS($owner); \OC\Files\Filesystem::initMountPoints($owner); $view = new \OC\Files\View('/' . $owner . '/files'); $fileinfo = $view->getFileInfo( substr($path, strpos($path, "/") ) ); //get fileinfo from path (remove root folder) $room = explode(":", self::getRoom()); $share_type = ( $room[0] == "group" ) ? OCP\Share::SHARE_TYPE_GROUP : OCP\Share::SHARE_TYPE_USER; $result = OCP\Share::getItemSharedWithUser($type, $fileinfo['fileid'], $share_with); if ( empty($result) ) { // item not shared, is parent folder shared? if ( $recursiv ) { $parent_path = substr($fileinfo['path'], 0, strrpos($fileinfo['path'], "/") ); return self::isItemSharedWithGroup('folder', $parent_path, $share_with, $owner, true); } return false; } return true; }