Esempio n. 1
0
 /**
  * @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;
 }
Esempio n. 2
0
	/**
	 * @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);
	}
Esempio n. 3
0
 /**
  * @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;
 }
Esempio n. 4
0
 /**
  * @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;
 }
Esempio n. 5
0
 /**
  * {@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;
 }
Esempio n. 6
0
 /**
  * @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);
 }
Esempio n. 7
0
 /**
  * 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;
 }
Esempio n. 8
0
 /**
  * @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;
 }
Esempio n. 9
0
 /**
  * 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');
 }
Esempio n. 10
0
 /**
  * @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));
 }
Esempio n. 11
0
 /**
  * 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;
 }
Esempio n. 12
0
 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));
 }
Esempio n. 13
0
 /**
  * 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);
             }
         }
     }
 }
Esempio n. 15
0
 /**
  * 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);
 }
Esempio n. 16
0
 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']);
 }
Esempio n. 17
0
 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;
 }
Esempio n. 18
0
 /**
  * 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;
 }
Esempio n. 19
0
 public function getItemsSharedWithCalendar()
 {
     return Share::getItemsSharedWith(self::SHARECALENDAR, ShareCalendar::FORMAT_CALENDAR);
 }
Esempio n. 20
0
 /**
  * @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;
 }
Esempio n. 21
0
 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/');
     }
 }
Esempio n. 22
0
 /**
  * @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;
 }
Esempio n. 23
0
 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);
         }
     }
 }