<?php $calid = isset($_['calendar']) ? $_['calendar'] : null; $eventid = isset($_['eventid']) ? $_['eventid'] : null; $calsharees = array(); $eventsharees = array(); $sharedwithByCalendar = OCP\Share::getItemShared('calendar', $calid); $sharedwithByEvent = OCP\Share::getItemShared('event', $eventid); if (is_array($sharedwithByCalendar)) { foreach ($sharedwithByCalendar as $share) { if ($share['share_type'] == OCP\Share::SHARE_TYPE_USER || $share['share_type'] == OCP\Share::SHARE_TYPE_GROUP) { $calsharees[] = $share; } } } if (is_array($sharedwithByEvent)) { foreach ($sharedwithByEvent as $share) { if ($share['share_type'] == OCP\Share::SHARE_TYPE_USER || $share['share_type'] == OCP\Share::SHARE_TYPE_GROUP) { $eventsharees[] = $share; } } } ?> <label for="sharewith"><?php p($l->t('Share with:')); ?> </label> <input type="text" id="sharewith" data-item-source="<?php p($eventid); ?>
switch ($_GET['fetch']) { case 'getItemsSharedStatuses': if (isset($_GET['itemType'])) { $return = OCP\Share::getItemsShared((string) $_GET['itemType'], OCP\Share::FORMAT_STATUSES); is_array($return) ? OC_JSON::success(array('data' => $return)) : OC_JSON::error(); } break; case 'getItem': if (isset($_GET['itemType']) && isset($_GET['itemSource']) && isset($_GET['checkReshare']) && isset($_GET['checkShares'])) { if ($_GET['checkReshare'] == 'true') { $reshare = OCP\Share::getItemSharedWithBySource((string) $_GET['itemType'], (string) $_GET['itemSource'], OCP\Share::FORMAT_NONE, null, true); } else { $reshare = false; } if ($_GET['checkShares'] == 'true') { $shares = OCP\Share::getItemShared((string) $_GET['itemType'], (string) $_GET['itemSource'], OCP\Share::FORMAT_NONE, null, true); } else { $shares = false; } OC_JSON::success(array('data' => array('reshare' => $reshare, 'shares' => $shares))); } break; case 'getShareWithEmail': $result = array(); if (isset($_GET['search'])) { $cm = OC::$server->getContactsManager(); if (!is_null($cm) && $cm->isEnabled()) { $contacts = $cm->search((string) $_GET['search'], array('FN', 'EMAIL')); foreach ($contacts as $contact) { if (!isset($contact['EMAIL'])) { continue;
$RUNTIME_APPTYPES = array('filesystem', 'authentication', 'share'); // OC_App::loadApps($RUNTIME_APPTYPES); $normalize_path = str_replace('\\', '/', OC_APP::getAppPath('user_wordpress')); $path_array = explode('/', $normalize_path); array_pop($path_array); $app_folder = array_pop($path_array); require_once $app_folder . '/lib/autoauth.php'; //require_once('apps/user_wordpress/lib/autoauth.php'); if (isset($_REQUEST['share_link'])) { if (OC_App::isEnabled('files_sharing')) { $file_path = urldecode(substr(implode('/', array_slice($vars, 5)), 0, -11)); $file_infos = OC_Files::getFileInfo($file_path); $token = ''; // is the file allready shared ? $shares = OCP\Share::getItemShared('file', $file_infos['id'], OCP\Share::FORMAT_NONE, null, true); foreach ($shares as $share) { if ($share['path'] == $file_infos['path']) { $token = $share['token']; } } // if not, let's share the file if (empty($token)) { $token = OCP\Share::shareItem('file', $file_infos['id'], 3, NULL, 1); } // return token echo trim($token); } exit; } if (isset($_REQUEST['back'])) {
/** * Test case for #19119 */ public function testReshareWithLinkDefaultExpirationDate() { $config = \OC::$server->getConfig(); $config->setAppValue('core', 'shareapi_default_expire_date', 'yes'); $config->setAppValue('core', 'shareapi_expire_after_n_days', '2'); // Expiration date $expireAt = time() + 2 * 24 * 60 * 60; $date = new DateTime(); $date->setTimestamp($expireAt); $date->setTime(0, 0, 0); //Share a file from user 1 to user 2 $this->shareUserTestFileWithUser($this->user1, $this->user2); //User 2 shares as link OC_User::setUserId($this->user2); $result = OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_LINK, null, \OCP\Constants::PERMISSION_READ); $this->assertTrue(is_string($result)); //Check if expire date is correct $result = OCP\Share::getItemShared('test', 'test.txt'); $this->assertCount(1, $result); $result = reset($result); $this->assertNotEmpty($result['expiration']); $expireDate = new DateTime($result['expiration']); $this->assertEquals($date, $expireDate); //Unshare $this->assertTrue(OCP\Share::unshareAll('test', 'test.txt')); //Reset config $config->deleteAppValue('core', 'shareapi_default_expire_date'); $config->deleteAppValue('core', 'shareapi_expire_after_n_days'); }
/** * Test case for #17560 */ public function testAccesToSharedSubFolder() { OC_User::setUserId($this->user1); $view = new \OC\Files\View('/' . $this->user1 . '/'); $view->mkdir('files/folder1'); $fileInfo = $view->getFileInfo('files/folder1'); $this->assertInstanceOf('\\OC\\Files\\FileInfo', $fileInfo); $fileId = $fileInfo->getId(); $this->assertTrue(OCP\Share::shareItem('folder', $fileId, OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_ALL), 'Failed asserting that user 1 successfully shared "test" with user 2.'); $this->assertTrue(OCP\Share::shareItem('folder', $fileId, OCP\Share::SHARE_TYPE_USER, $this->user3, \OCP\Constants::PERMISSION_ALL), 'Failed asserting that user 1 successfully shared "test" with user 3.'); $view->mkdir('files/folder1/folder2'); $fileInfo = $view->getFileInfo('files/folder1/folder2'); $this->assertInstanceOf('\\OC\\Files\\FileInfo', $fileInfo); $fileId = $fileInfo->getId(); $this->assertTrue(OCP\Share::shareItem('folder', $fileId, OCP\Share::SHARE_TYPE_USER, $this->user4, \OCP\Constants::PERMISSION_ALL), 'Failed asserting that user 1 successfully shared "test" with user 4.'); $res = OCP\Share::getItemShared('folder', $fileId, OCP\Share::FORMAT_NONE, null, true); $this->assertCount(3, $res); $this->assertTrue(OCP\Share::shareItem('folder', $fileId, OCP\Share::SHARE_TYPE_USER, $this->user5, \OCP\Constants::PERMISSION_ALL), 'Failed asserting that user 1 successfully shared "test" with user 5.'); $res = OCP\Share::getItemShared('folder', $fileId, OCP\Share::FORMAT_NONE, null, true); $this->assertCount(4, $res); }
protected function shareUserOneTestFileWithGroupOne() { OC_User::setUserId($this->user1); $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, \OCP\Constants::PERMISSION_READ), 'Failed asserting that user 1 successfully shared text.txt with group 1.'); $this->assertContains('test.txt', OCP\Share::getItemShared('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE), 'Failed asserting that test.txt is a shared file of user 1.'); OC_User::setUserId($this->user2); $this->assertContains('test.txt', OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE), 'Failed asserting that user 2 has access to test.txt after initial sharing.'); OC_User::setUserId($this->user3); $this->assertContains('test.txt', OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE), 'Failed asserting that user 3 has access to test.txt after initial sharing.'); }
public function testShareWithGroup() { // Invalid shares $message = 'Sharing test.txt failed, because the group foobar does not exist'; try { OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, 'foobar', OCP\PERMISSION_READ); $this->fail('Exception was expected: ' . $message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } $policy = OC_Appconfig::getValue('core', 'shareapi_share_policy', 'global'); OC_Appconfig::setValue('core', 'shareapi_share_policy', 'groups_only'); $message = 'Sharing test.txt failed, because ' . $this->user1 . ' is not a member of the group ' . $this->group2; try { OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group2, OCP\PERMISSION_READ); $this->fail('Exception was expected: ' . $message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } OC_Appconfig::setValue('core', 'shareapi_share_policy', $policy); // Valid share $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\PERMISSION_READ)); $this->assertEquals(array('test.txt'), OCP\Share::getItemShared('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE)); OC_User::setUserId($this->user2); $this->assertEquals(array('test.txt'), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE)); OC_User::setUserId($this->user3); $this->assertEquals(array('test.txt'), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE)); // Attempt to share again OC_User::setUserId($this->user1); $message = 'Sharing test.txt failed, because this item is already shared with ' . $this->group1; try { OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\PERMISSION_READ); $this->fail('Exception was expected: ' . $message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } // Attempt to share back to owner of group share OC_User::setUserId($this->user2); $message = 'Sharing test.txt failed, because the user ' . $this->user1 . ' is the original sharer'; try { OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user1, OCP\PERMISSION_READ); $this->fail('Exception was expected: ' . $message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } // Attempt to share back to group $message = 'Sharing test.txt failed, because this item is already shared with ' . $this->group1; try { OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\PERMISSION_READ); $this->fail('Exception was expected: ' . $message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } // Attempt to share back to member of group $message = 'Sharing test.txt failed, because this item is already shared with ' . $this->user3; try { OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\PERMISSION_READ); $this->fail('Exception was expected: ' . $message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } // Unshare OC_User::setUserId($this->user1); $this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1)); // Valid share with same person - user then group $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ | OCP\PERMISSION_DELETE | OCP\PERMISSION_SHARE)); $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE)); OC_User::setUserId($this->user2); $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); $this->assertEquals(array(OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE | OCP\PERMISSION_DELETE | OCP\PERMISSION_SHARE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); OC_User::setUserId($this->user3); $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); $this->assertEquals(array(OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); // Valid reshare OC_User::setUserId($this->user2); $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user4, OCP\PERMISSION_READ)); OC_User::setUserId($this->user4); $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); // Unshare from user only OC_User::setUserId($this->user1); $this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2)); OC_User::setUserId($this->user2); $this->assertEquals(array(OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); OC_User::setUserId($this->user4); $this->assertEquals(array(), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); // Valid share with same person - group then user OC_User::setUserId($this->user1); $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ | OCP\PERMISSION_DELETE)); OC_User::setUserId($this->user2); $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); $this->assertEquals(array(OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE | OCP\PERMISSION_DELETE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); // Unshare from group only OC_User::setUserId($this->user1); $this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1)); OC_User::setUserId($this->user2); $this->assertEquals(array(OCP\PERMISSION_READ | OCP\PERMISSION_DELETE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); // Attempt user specific target conflict OC_User::setUserId($this->user3); $this->assertTrue(OCP\Share::shareItem('test', 'share.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\PERMISSION_READ | OCP\PERMISSION_SHARE)); OC_User::setUserId($this->user2); $to_test = OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET); $this->assertEquals(2, count($to_test)); $this->assertTrue(in_array('test.txt', $to_test)); $this->assertTrue(in_array('test1.txt', $to_test)); // Valid reshare $this->assertTrue(OCP\Share::shareItem('test', 'share.txt', OCP\Share::SHARE_TYPE_USER, $this->user4, OCP\PERMISSION_READ | OCP\PERMISSION_SHARE)); OC_User::setUserId($this->user4); $this->assertEquals(array('test1.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); // Remove user from group OC_Group::removeFromGroup($this->user2, $this->group1); OC_User::setUserId($this->user2); $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); OC_User::setUserId($this->user4); $this->assertEquals(array(), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); // Add user to group OC_Group::addToGroup($this->user4, $this->group1); $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); // Unshare from self $this->assertTrue(OCP\Share::unshareFromSelf('test', 'test.txt')); $this->assertEquals(array(), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); OC_User::setUserId($this->user2); $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); // Remove group OC_Group::deleteGroup($this->group1); OC_User::setUserId($this->user4); $this->assertEquals(array(), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); OC_User::setUserId($this->user3); $this->assertEquals(array(), OCP\Share::getItemsShared('test')); }