/** * @brief Returns the list of addressbooks for a specific user. * @param string $uid * @param boolean $active Only return addressbooks with this $active state, default(=false) is don't care * @param boolean $shared Whether to also return shared addressbook. Defaults to true. * @return array or false. */ public static function all($uid, $active = false, $shared = true) { $values = array($uid); $active_where = ''; if ($active) { $active_where = ' AND `active` = ?'; $values[] = 1; } try { $stmt = \OCP\DB::prepare('SELECT * FROM `*PREFIX*contacts_addressbooks` WHERE `userid` = ? ' . $active_where . ' ORDER BY `displayname`'); $result = $stmt->execute($values); if (\OC_DB::isError($result)) { \OCP\Util::write('contacts', __METHOD__ . 'DB error: ' . \OC_DB::getErrorMessage($result), \OCP\Util::ERROR); return false; } } catch (\Exception $e) { \OCP\Util::writeLog('contacts', __METHOD__ . ' exception: ' . $e->getMessage(), \OCP\Util::ERROR); \OCP\Util::writeLog('contacts', __METHOD__ . ' uid: ' . $uid, \OCP\Util::DEBUG); return false; } $addressbooks = array(); while ($row = $result->fetchRow()) { $row['permissions'] = \OCP\PERMISSION_ALL; $addressbooks[] = $row; } if ($shared === true) { $addressbooks = array_merge($addressbooks, \OCP\Share::getItemsSharedWith('addressbook', Share_Backend_Addressbook::FORMAT_ADDRESSBOOKS)); } if (!$active && !count($addressbooks)) { $id = self::addDefault($uid); return array(self::find($id)); } return $addressbooks; }
/** * @NoAdminRequired */ public function getGroups() { $tags = $this->tags->getTags(); foreach ($tags as &$tag) { try { $ids = $this->tags->getIdsForTag($tag['id']); $tag['contacts'] = $ids; $tag['displayname'] = $this->displayName($tag); } catch(\Exception $e) { \OCP\Util::writeLog('contacts', __METHOD__ . ', ' . $e->getMessage(), \OCP\Util::ERROR); } } $favorites = $this->tags->getFavorites(); $shares = \OCP\Share::getItemsSharedWith('addressbook', \OCA\Contacts\Share\Addressbook::FORMAT_ADDRESSBOOKS); $addressbookShare = new \OCA\Contacts\Share\Addressbook(); foreach ($shares as $key => $share) { $children = $addressbookShare->getChildren($share['id']); // FIXME: This should be cheaper! $shares[$key]['length'] = count($children); } $groups = array( 'categories' => $tags, 'favorites' => $favorites, 'shared' => $shares, 'lastgroup' => \OCP\Config::getUserValue(\OCP\User::getUser(), 'contacts', 'lastgroup', 'all'), 'sortorder' => \OCP\Config::getUserValue(\OCP\User::getUser(), 'contacts', 'groupsort', ''), ); return new JSONResponse($groups); }
/** * @brief Returns the list of calendars for a specific user. * @param string $uid User ID * @param boolean $active Only return calendars with this $active state, default(=false) is don't care * @param boolean $bSubscribe return calendars with this $issubscribe state, default(=true) is don't care * @return array */ public static function allCalendars($uid, $active = false, $bSubscribe = true) { $values = array($uid); $active_where = ''; if ($active === true) { $active_where = ' AND `active` = ?'; $values[] = (int) $active; } $subscribe_where = ''; if ($bSubscribe === false) { $subscribe_where = ' AND `issubscribe` = ?'; $values[] = (int) $bSubscribe; } $stmt = \OCP\DB::prepare('SELECT * FROM `' . App::CldCalendarTable . '` WHERE `userid` = ?' . $active_where . $subscribe_where); $result = $stmt->execute($values); $calendars = array(); while ($row = $result->fetchRow()) { $row['permissions'] = \OCP\PERMISSION_ALL; if ($row['issubscribe']) { $row['permissions'] = \OCP\PERMISSION_SHARE; } $row['description'] = ''; $row['active'] = (int) $row['active']; $calendars[] = $row; } $calendars = array_merge($calendars, \OCP\Share::getItemsSharedWith(App::SHARECALENDAR, ShareCalendar::FORMAT_CALENDAR)); \OCP\Util::emitHook('OCA\\CalendarPlus', 'getCalendars', array('calendar' => &$calendars)); return $calendars; }
/** * @brief Returns the list of calendars for a specific user. * @param string $uid User ID * @param boolean $active Only return calendars with this $active state, default(=false) is don't care * @param boolean $bSubscribe return calendars with this $issubscribe state, default(=true) is don't care * @return array */ public static function allCalendars($uid, $active = false, $bSubscribe = true, $bShared = true) { $dbObject = \OC::$server->getDb(); $calendarDB = new CalendarDAO($dbObject, $uid); $calendars = $calendarDB->all($active, $bSubscribe); if ($bShared === true) { $calendars = array_merge($calendars, \OCP\Share::getItemsSharedWith(App::SHARECALENDAR, ShareCalendar::FORMAT_CALENDAR)); } \OCP\Util::emitHook('OCA\\CalendarPlus', 'getCalendars', array('calendar' => &$calendars)); return $calendars; }
/** * {@inheritdoc} */ public function getAddressBooksForUser(array $options = array()) { // workaround for https://github.com/owncloud/core/issues/2814 $maybeSharedAddressBook = \OCP\Share::getItemsSharedWith('addressbook', Contacts\Share\Addressbook::FORMAT_ADDRESSBOOKS); foreach ($maybeSharedAddressBook as $sharedAddressbook) { if (isset($sharedAddressbook['id'])) { $this->addressBooks[$sharedAddressbook['id']] = $sharedAddressbook; $this->addressBooks[$sharedAddressbook['id']]['backend'] = $this->name; } } return $this->addressBooks; }
/** * @NoAdminRequired */ public function getGroups() { $tags = $this->tags->getTags(); foreach ($tags as &$tag) { try { $ids = $this->tags->getIdsForTag($tag['name']); $tag['contacts'] = $ids; } catch (\Exception $e) { $this->api->log(__METHOD__ . ' ' . $e->getMessage()); } } $favorites = $this->tags->getFavorites(); $groups = array('categories' => $tags, 'favorites' => $favorites, 'shared' => \OCP\Share::getItemsSharedWith('addressbook', \OCA\Contacts\Share\Addressbook::FORMAT_ADDRESSBOOKS), 'lastgroup' => \OCP\Config::getUserValue(\OCP\User::getUser(), 'contacts', 'lastgroup', 'all'), 'sortorder' => \OCP\Config::getUserValue(\OCP\User::getUser(), 'contacts', 'groupsort', '')); return new JSONResponse($groups); }
/** * get the permissions for all files in a folder * * @param int $parentId * @param string $user * @return int[] */ public function getDirectoryPermissions($parentId, $user) { // Root of the Shared folder if ($parentId === -1) { return \OCP\Share::getItemsSharedWith('file', \OC_Share_Backend_File::FORMAT_PERMISSIONS); } $permissions = $this->get($parentId, $user); $query = \OC_DB::prepare('SELECT `fileid` FROM `*PREFIX*filecache` WHERE `parent` = ?'); $result = $query->execute(array($parentId)); $filePermissions = array(); while ($row = $result->fetchRow()) { $filePermissions[$row['fileid']] = $permissions; } return $filePermissions; }
/** * @brief Returns the list of addressbooks for a specific user. * @param string $uid * @param boolean $active Only return addressbooks with this $active state, default(=false) is don't care * @param boolean $shared Whether to also return shared addressbook. Defaults to true. * @return array or false. */ public static function all($uid, $active = false, $shared = true, $sync = false) { $values = array($uid); $active_where = ''; if ($active) { $active_where = ' AND `active` = ?'; $values[] = 1; } $sqlOrder = '`displayname` ASC'; if ($sync === true) { $sqlOrder = '`sync` DESC'; } try { $stmt = \OCP\DB::prepare('SELECT * FROM `' . App::AddrBookTable . '` WHERE `userid` = ? ' . $active_where . ' ORDER BY ' . $sqlOrder); $result = $stmt->execute($values); if (\OCP\DB::isError($result)) { \OCP\Util::write(App::$appname, __METHOD__ . 'DB error: ' . \OCP\DB::getErrorMessage($result), \OCP\Util::ERROR); return false; } } catch (\Exception $e) { \OCP\Util::writeLog(App::$appname, __METHOD__ . ' exception: ' . $e->getMessage(), \OCP\Util::ERROR); \OCP\Util::writeLog(App::$appname, __METHOD__ . ' uid: ' . $uid, \OCP\Util::DEBUG); return false; } $addressbooks = array(); while ($row = $result->fetchRow()) { $row['permissions'] = \OCP\PERMISSION_ALL; $addressbooks[] = $row; } if ($shared === true) { $sharedAddressbooks = \OCP\Share::getItemsSharedWith(App::SHAREADDRESSBOOK, \OCA\ContactsPlus\Share\Backend\Addressbook::FORMAT_ADDRESSBOOKS); // workaround for https://github.com/owncloud/core/issues/2814 foreach ($sharedAddressbooks as $sharedAddressbook) { if (isset($sharedAddressbook['id']) && self::find($sharedAddressbook['id'])) { $addressbooks[] = $sharedAddressbook; } } } if (!$active && !count($addressbooks)) { $id = self::addDefault($uid); return array(self::find($id)); } return $addressbooks; }
/** * test deletion of a folder which contains share mount points. Share mount * points should be unshared before the folder gets deleted so * that the mount point doesn't end up at the trash bin */ function testDeleteParentFolder() { $status = \OC_App::isEnabled('files_trashbin'); \OC_App::enable('files_trashbin'); \OCA\Files_Trashbin\Trashbin::registerHooks(); OC_FileProxy::register(new OCA\Files\Share\Proxy()); $fileinfo = \OC\Files\Filesystem::getFileInfo($this->folder); $this->assertTrue($fileinfo instanceof \OC\Files\FileInfo); \OCP\Share::shareItem('folder', $fileinfo->getId(), \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER2, 31); $this->loginHelper(self::TEST_FILES_SHARING_API_USER2); $view = new \OC\Files\View('/' . self::TEST_FILES_SHARING_API_USER2 . '/files'); // check if user2 can see the shared folder $this->assertTrue($view->file_exists($this->folder)); $foldersShared = \OCP\Share::getItemsSharedWith('folder'); $this->assertSame(1, count($foldersShared)); $view->mkdir("localFolder"); $view->file_put_contents("localFolder/localFile.txt", "local file"); $view->rename($this->folder, 'localFolder/' . $this->folder); // share mount point should now be moved to the subfolder $this->assertFalse($view->file_exists($this->folder)); $this->assertTrue($view->file_exists('localFolder/' . $this->folder)); $view->unlink('localFolder'); $this->loginHelper(self::TEST_FILES_SHARING_API_USER2); // shared folder should be unshared $foldersShared = \OCP\Share::getItemsSharedWith('folder'); $this->assertTrue(empty($foldersShared)); // trashbin should contain the local file but not the mount point $rootView = new \OC\Files\View('/' . self::TEST_FILES_SHARING_API_USER2); $trashContent = \OCA\Files_Trashbin\Helper::getTrashFiles('/', self::TEST_FILES_SHARING_API_USER2); $this->assertSame(1, count($trashContent)); $firstElement = reset($trashContent); $timestamp = $firstElement['mtime']; $this->assertTrue($rootView->file_exists('files_trashbin/files/localFolder.d' . $timestamp . '/localFile.txt')); $this->assertFalse($rootView->file_exists('files_trashbin/files/localFolder.d' . $timestamp . '/' . $this->folder)); //cleanup $rootView->deleteAll('files_trashin'); if ($status === false) { \OC_App::disable('files_trashbin'); } \OC\Files\Filesystem::getLoader()->removeStorageWrapper('oc_trashbin'); }
/** * @medium */ function testpreUnlink() { $fileInfo2 = \OC\Files\Filesystem::getFileInfo($this->folder); $result = \OCP\Share::shareItem('folder', $fileInfo2->getId(), \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER2, 31); $this->assertTrue($result); self::loginHelper(self::TEST_FILES_SHARING_API_USER2); // one folder should be shared with the user $sharedFolders = \OCP\Share::getItemsSharedWith('folder'); $this->assertSame(1, count($sharedFolders)); // move shared folder to 'localDir' \OC\Files\Filesystem::mkdir('localDir'); $result = \OC\Files\Filesystem::rename($this->folder, '/localDir/' . $this->folder); $this->assertTrue($result); \OC\Files\Filesystem::unlink('localDir'); self::loginHelper(self::TEST_FILES_SHARING_API_USER2); // after the parent directory was deleted the share should be unshared $sharedFolders = \OCP\Share::getItemsSharedWith('folder'); $this->assertTrue(empty($sharedFolders)); self::loginHelper(self::TEST_FILES_SHARING_API_USER1); // the folder for the owner should still exists $this->assertTrue(\OC\Files\Filesystem::file_exists($this->folder)); }
/** * get all file ids on the files on the storage * * @return int[] */ public function getAll() { $ids = \OCP\Share::getItemsSharedWith('file', \OC_Share_Backend_File::FORMAT_GET_ALL); $folderBackend = \OCP\Share::getBackend('folder'); if ($folderBackend instanceof Share_Backend_Collection) { foreach ($ids as $file) { /** @var $folderBackend Share_Backend_Collection */ $children = $folderBackend->getChildren($file); foreach ($children as $child) { $ids[] = (int) $child['source']; } } } return $ids; }
public function testShareWithUser() { // Invalid shares $message = 'Sharing test.txt failed, because you can not share with yourself'; try { \OCP\Share::shareItem('test', 'test.txt', \OCP\Share::SHARE_TYPE_USER, $this->user1, \OCP\Constants::PERMISSION_READ); $this->fail('Exception was expected: ' . $message); } catch (\Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } $message = 'Sharing test.txt failed, because the user foobar does not exist'; try { \OCP\Share::shareItem('test', 'test.txt', \OCP\Share::SHARE_TYPE_USER, 'foobar', \OCP\Constants::PERMISSION_READ); $this->fail('Exception was expected: ' . $message); } catch (\Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } $message = 'Sharing foobar failed, because the sharing backend for test could not find its source'; try { \OCP\Share::shareItem('test', 'foobar', \OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ); $this->fail('Exception was expected: ' . $message); } catch (\Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } // Valid share $this->shareUserOneTestFileWithUserTwo(); // Attempt to share again \OC_User::setUserId($this->user1); $message = 'Sharing test.txt failed, because this item is already shared with ' . $this->user2; try { \OCP\Share::shareItem('test', 'test.txt', \OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ); $this->fail('Exception was expected: ' . $message); } catch (\Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } // Attempt to share back \OC_User::setUserId($this->user2); $message = 'Sharing 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\Constants::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_USER, $this->user2)); // Attempt reshare without share permission $this->assertTrue(\OCP\Share::shareItem('test', 'test.txt', \OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ)); \OC_User::setUserId($this->user2); $message = 'Sharing test.txt failed, because resharing is not allowed'; try { \OCP\Share::shareItem('test', 'test.txt', \OCP\Share::SHARE_TYPE_USER, $this->user3, \OCP\Constants::PERMISSION_READ); $this->fail('Exception was expected: ' . $message); } catch (\Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } // Owner grants share and update permission \OC_User::setUserId($this->user1); $this->assertTrue(\OCP\Share::setPermissions('test', 'test.txt', \OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_SHARE)); // Attempt reshare with escalated permissions \OC_User::setUserId($this->user2); $message = 'Sharing test.txt failed, because the permissions exceed permissions granted to ' . $this->user2; try { \OCP\Share::shareItem('test', 'test.txt', \OCP\Share::SHARE_TYPE_USER, $this->user3, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_DELETE); $this->fail('Exception was expected: ' . $message); } catch (\Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } // Valid reshare $this->assertTrue(\OCP\Share::shareItem('test', 'test.txt', \OCP\Share::SHARE_TYPE_USER, $this->user3, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE)); $this->assertEquals(array('test.txt'), \OCP\Share::getItemShared('test', 'test.txt', Backend::FORMAT_SOURCE)); \OC_User::setUserId($this->user3); $this->assertEquals(array('test.txt'), \OCP\Share::getItemSharedWith('test', 'test.txt', Backend::FORMAT_SOURCE)); $this->assertEquals(array(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE), \OCP\Share::getItemSharedWith('test', 'test.txt', Backend::FORMAT_PERMISSIONS)); // Attempt to escalate permissions \OC_User::setUserId($this->user2); $message = 'Setting permissions for test.txt failed, because the permissions exceed permissions granted to ' . $this->user2; try { \OCP\Share::setPermissions('test', 'test.txt', \OCP\Share::SHARE_TYPE_USER, $this->user3, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_DELETE); $this->fail('Exception was expected: ' . $message); } catch (\Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } // Remove update permission \OC_User::setUserId($this->user1); $this->assertTrue(\OCP\Share::setPermissions('test', 'test.txt', \OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE)); \OC_User::setUserId($this->user2); $this->assertEquals(array(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE), \OCP\Share::getItemSharedWith('test', 'test.txt', Backend::FORMAT_PERMISSIONS)); \OC_User::setUserId($this->user3); $this->assertEquals(array(\OCP\Constants::PERMISSION_READ), \OCP\Share::getItemSharedWith('test', 'test.txt', Backend::FORMAT_PERMISSIONS)); // Remove share permission \OC_User::setUserId($this->user1); $this->assertTrue(\OCP\Share::setPermissions('test', 'test.txt', \OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ)); \OC_User::setUserId($this->user2); $this->assertEquals(array(\OCP\Constants::PERMISSION_READ), \OCP\Share::getItemSharedWith('test', 'test.txt', Backend::FORMAT_PERMISSIONS)); \OC_User::setUserId($this->user3); $this->assertSame(array(), \OCP\Share::getItemSharedWith('test', 'test.txt')); // Reshare again, and then have owner unshare \OC_User::setUserId($this->user1); $this->assertTrue(\OCP\Share::setPermissions('test', 'test.txt', \OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE)); \OC_User::setUserId($this->user2); $this->assertTrue(\OCP\Share::shareItem('test', 'test.txt', \OCP\Share::SHARE_TYPE_USER, $this->user3, \OCP\Constants::PERMISSION_READ)); \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->assertSame(array(), \OCP\Share::getItemSharedWith('test', 'test.txt')); \OC_User::setUserId($this->user3); $this->assertSame(array(), \OCP\Share::getItemSharedWith('test', 'test.txt')); // Attempt target conflict \OC_User::setUserId($this->user1); $this->assertTrue(\OCP\Share::shareItem('test', 'test.txt', \OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ)); \OC_User::setUserId($this->user3); $this->assertTrue(\OCP\Share::shareItem('test', 'share.txt', \OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ)); \OC_User::setUserId($this->user2); $to_test = \OCP\Share::getItemsSharedWith('test', 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)); // Unshare from self $this->assertTrue(\OCP\Share::unshareFromSelf('test', 'test.txt')); $this->assertEquals(array('test1.txt'), \OCP\Share::getItemsSharedWith('test', Backend::FORMAT_TARGET)); // Unshare from self via source $this->assertTrue(\OCP\Share::unshareFromSelf('test', 'share.txt', true)); $this->assertEquals(array(), \OCP\Share::getItemsSharedWith('test', Backend::FORMAT_TARGET)); \OC_User::setUserId($this->user1); $this->assertTrue(\OCP\Share::shareItem('test', 'test.txt', \OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ)); \OC_User::setUserId($this->user3); $this->assertTrue(\OCP\Share::shareItem('test', 'share.txt', \OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ)); \OC_User::setUserId($this->user2); $to_test = \OCP\Share::getItemsSharedWith('test', 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)); // Remove user \OC_User::setUserId($this->user1); $user = \OC::$server->getUserManager()->get($this->user1); if ($user !== null) { $user->delete(); } \OC_User::setUserId($this->user2); $this->assertEquals(array('test1.txt'), \OCP\Share::getItemsSharedWith('test', Backend::FORMAT_TARGET)); }
/** * get files shared with the user * @return \OC_OCS_Result */ private static function getFilesSharedWithMe() { try { $shares = \OCP\Share::getItemsSharedWith('file'); foreach ($shares as &$share) { if ($share['item_type'] === 'file') { $share['mimetype'] = \OC_Helper::getFileNameMimeType($share['file_target']); if (\OC::$server->getPreviewManager()->isMimeSupported($share['mimetype'])) { $share['isPreviewAvailable'] = true; } } } $result = new \OC_OCS_Result($shares); } catch (\Exception $e) { $result = new \OC_OCS_Result(null, 403, $e->getMessage()); } return $result; }
public static function setup($options) { $shares = \OCP\Share::getItemsSharedWith('file'); $manager = Filesystem::getMountManager(); $loader = Filesystem::getLoader(); if (!\OCP\User::isLoggedIn() || \OCP\User::getUser() != $options['user'] || $shares) { foreach ($shares as $share) { // don't mount shares where we have no permissions if ($share['permissions'] > 0) { $mount = new SharedMount('\\OC\\Files\\Storage\\Shared', $options['user_dir'] . '/' . $share['file_target'], array('share' => $share), $loader); $manager->addMount($mount); } } } }
/** * get all file ids on the files on the storage * * @return int[] */ public function getAll() { return \OCP\Share::getItemsSharedWith('file', \OC_Share_Backend_File::FORMAT_GET_ALL); }
public function testShareWithGroupUniqueName() { $this->loginHelper(self::TEST_FILES_SHARING_API_USER1); \OC\Files\Filesystem::file_put_contents('test.txt', 'test'); $fileInfo = \OC\Files\Filesystem::getFileInfo('test.txt'); $this->assertTrue(\OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, self::TEST_FILES_SHARING_API_GROUP1, 23)); $this->loginHelper(self::TEST_FILES_SHARING_API_USER2); $items = \OCP\Share::getItemsSharedWith('file'); $this->assertSame('/test.txt', $items[0]['file_target']); $this->assertSame(23, $items[0]['permissions']); \OC\Files\Filesystem::rename('test.txt', 'new test.txt'); $items = \OCP\Share::getItemsSharedWith('file'); $this->assertSame('/new test.txt', $items[0]['file_target']); $this->assertSame(23, $items[0]['permissions']); $this->loginHelper(self::TEST_FILES_SHARING_API_USER1); \OCP\Share::setPermissions('file', $items[0]['item_source'], $items[0]['share_type'], $items[0]['share_with'], 3); $this->loginHelper(self::TEST_FILES_SHARING_API_USER2); $items = \OCP\Share::getItemsSharedWith('file'); $this->assertSame('/new test.txt', $items[0]['file_target']); $this->assertSame(3, $items[0]['permissions']); }
public static function getGroups() { $tagMgr = \OC::$server->getTagManager()->load(self::$appname); $tags = $tagMgr->getTags(); foreach ($tags as &$tag) { try { $ids = $tagMgr->getIdsForTag($tag['name']); \OCP\Util::writeLog(self::$appname, 'ID->NAME' . $tag['name'] . ':' . count($ids), \OCP\Util::DEBUG); foreach ($ids as $key => $val) { \OCP\Util::writeLog(self::$appname, 'ID->NAME' . $tag['name'] . ':' . $key . ':' . $val, \OCP\Util::DEBUG); } $tag['contacts'] = $ids; } catch (\Exception $e) { //$this->api->log(__METHOD__ . ' ' . $e->getMessage()); } } //$favorites = $tagMgr->getFavorites(); $groups = array('categories' => $tags, 'shared' => \OCP\Share::getItemsSharedWith(self::SHAREADDRESSBOOK, \OCA\ContactsPlus\Share\Backend\Addressbook::FORMAT_ADDRESSBOOKS), 'lastgroup' => \OCP\Config::getUserValue(\OCP\User::getUser(), self::$appname, 'lastgroup', 'all'), 'sortorder' => \OCP\Config::getUserValue(\OCP\User::getUser(), self::$appname, 'sortorder', '')); return $groups; }
/** * get files shared with the user * @return \OC_OCS_Result */ private static function getItemsSharedWithMe($sMode) { try { $shares = \OCP\Share::getItemsSharedWith($sMode); $result = new \OC_OCS_Result($shares); } catch (\Exception $e) { $result = new \OC_OCS_Result(null, 403, $e->getMessage()); } return $result; }
public function getItemsSharedWithCalendar() { return Share::getItemsSharedWith(self::SHARECALENDAR, ShareCalendar::FORMAT_CALENDAR); }
/** * @NoAdminRequired */ public function getTasks() { $sMode = (string) $this->params('mode'); $calId = (int) $this->params('calid'); $atasksModeAllowed = array('dayselect' => 1, 'showall' => 1, 'today' => 1, 'tomorrow' => 1, 'actweek' => 1, 'withoutdate' => 1, 'missedactweek' => 1, 'alltasks' => 1, 'alltasksdone' => 1, 'sharedtasks' => 1, 'comingsoon' => 1); $tasks = array(); if (intval($calId) > 0 && $sMode === '') { $cDataTimeLine = new Timeline(); $cDataTimeLine->setTimeLineMode(''); $cDataTimeLine->setCalendarId($calId); $tasks = $cDataTimeLine->generateCalendarSingleOutput(); } // Get Timelined tasks if ($sMode !== '' && $atasksModeAllowed[$sMode] && $sMode !== 'sharedtasks') { $calendars = CalendarCalendar::allCalendars($this->userId, true); $activeCalendars = ''; foreach ($calendars as $calendar) { $isAktiv = $calendar['active']; if ($this->configInfo->getUserValue($this->userId, CalendarApp::$appname, 'calendar_' . $calendar['id']) != '') { $isAktiv = $this->configInfo->getUserValue($this->userId, CalendarApp::$appname, 'calendar_' . $calendar['id']); } if (!array_key_exists('active', $calendar)) { $isAktiv = 1; } if ((int) $isAktiv === 1 && (int) $calendar['issubscribe'] === 0) { $activeCalendars[] = $calendar; } } $cDataTimeLine = new Timeline(); if ($sMode === 'dayselect') { $sDay = $this->params('sday'); $timeStampDay = strtotime($sDay); $cDataTimeLine->setTimeLineDay($timeStampDay); } $cDataTimeLine->setTimeLineMode($sMode); $cDataTimeLine->setCalendars($activeCalendars); $tasks = $cDataTimeLine->generateTasksAllOutput(); } //Get Shared Tasks if ($sMode !== '' && $atasksModeAllowed[$sMode] && $sMode === 'sharedtasks') { $singletodos = \OCP\Share::getItemsSharedWith(CalendarApp::SHARETODO, Vtodo::FORMAT_TODO); if (is_array($singletodos)) { $tasks = $singletodos; } } $response = new JSONResponse(); $response->setData($tasks); return $response; }
public static function setup($options) { if (!\OCP\User::isLoggedIn() || \OCP\User::getUser() != $options['user'] || \OCP\Share::getItemsSharedWith('file')) { $user_dir = $options['user_dir']; \OC\Files\Filesystem::mount('\\OC\\Files\\Storage\\Shared', array('sharedFolder' => '/Shared'), $user_dir . '/Shared/'); } }
/** * @brief analyses the parameter for calendar parameter and returns the objects * @param (string) $calendarid - calendarid * @param (int) $start - unixtimestamp of start * @param (int) $end - unixtimestamp of end * @return (array) $events */ public static function getrequestedEvents($calendarid, $start, $end) { $events = array(); if ($calendarid === 'shared_events') { $checkStart = $start->format('U'); $singleevents = \OCP\Share::getItemsSharedWith(self::SHAREEVENT, ShareEvent::FORMAT_EVENT); foreach ($singleevents as $singleevent) { $startCheck_dt = new \DateTime($singleevent['startdate'], new \DateTimeZone('UTC')); $checkStartSE = $startCheck_dt->format('U'); // \OCP\Util::writeLog('calendar','STARTDATE'.$checkStart.' -> '.$checkStartSE, \OCP\Util::DEBUG); if ($checkStartSE > $checkStart) { $singleevent['summary'] .= ' (' . (string) self::$l10n->t('by') . ' ' . Object::getowner($singleevent['id']) . ')'; $events[] = $singleevent; } } } else { if (is_numeric($calendarid)) { $calendar = self::getCalendar($calendarid); \OCP\Response::enableCaching(0); \OCP\Response::setETagHeader($calendar['ctag']); $events = Object::allInPeriod($calendarid, $start, $end, $calendar['userid'] !== \OCP\User::getUser()); } else { \OCP\Util::emitHook('OCA\\CalendarPlus', 'getEvents', array('calendar_id' => $calendarid, 'events' => &$events)); } } return $events; }
public function generateTasksToCalendarOutput() { $this->aTasksOutput = \OCP\Share::getItemsSharedWith(CalendarApp::SHARETODO, Vtodo::FORMAT_TODO); foreach ($this->aTasks as $task) { if ($task['objecttype'] != 'VTODO') { continue; } if (is_null($task['summary'])) { continue; } $object = VObject::parse($task['calendardata']); $vtodo = $object->VTODO; $isCompleted = $vtodo->COMPLETED; try { if ($this->sMode != '' && $this->sMode != 'alltasksdone') { //if($isCompleted){ //$this->aTasksOutput['done'][] = App::arrayForJSON($task['id'], $vtodo, $this->dUserTimeZone,$this->aCalendar[$task['calendarid']],$task); //}else{ $this->aTasksOutput['open'][] = App::arrayForJSON($task['id'], $vtodo, $this->dUserTimeZone, $this->aCalendar[$task['calendarid']], $task); //} } elseif ($this->sMode != '' && $this->sMode == 'alltasksdone') { if ($isCompleted) { //$dateCompleted=$isCompleted->getDateTime() -> format('d.m.Y'); $this->aTasksOutput['done'][] = App::arrayForJSON($task['id'], $vtodo, $this->dUserTimeZone, $this->aCalendar[$task['calendarid']], $task); } } else { //if($isCompleted){ //$this->aTasksOutput['done'][] = App::arrayForJSON($task['id'], $vtodo, $this->dUserTimeZone,$this->aCalendar[$task['calendarid']],$task); //}else{ $this->aTasksOutput['open'][] = App::arrayForJSON($task['id'], $vtodo, $this->dUserTimeZone, $this->aCalendar[$task['calendarid']], $task); //} } } catch (\Exception $e) { \OCP\Util::writeLog(App::$appname, $e->getMessage(), \OCP\Util::ERROR); } } }