예제 #1
0
파일: share.php 프로젝트: TylerTemp/core
 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"');
 }
예제 #2
0
	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;
	}