/** * @brief deletes an object * @param integer $id id of object * @return boolean */ public static function delete($id) { $oldobject = self::find($id); $calid = self::getCalendarid($id); $calendar = OC_Calendar_Calendar::find($calid); $oldvobject = OC_VObject::parse($oldobject['calendardata']); if ($calendar['userid'] != OCP\User::getUser()) { $sharedCalendar = OCP\Share::getItemSharedWithBySource('calendar', $calid); $sharedAccessClassPermissions = OC_Calendar_Object::getAccessClassPermissions($oldvobject); if (!$sharedCalendar || !($sharedCalendar['permissions'] & OCP\PERMISSION_DELETE) || !($sharedAccessClassPermissions & OCP\PERMISSION_DELETE)) { throw new Exception(OC_Calendar_App::$l10n->t('You do not have the permissions to delete this event.')); } } $stmt = OCP\DB::prepare('DELETE FROM `*PREFIX*clndr_objects` WHERE `id` = ?'); $stmt->execute(array($id)); OC_Calendar_Calendar::touchCalendar($oldobject['calendarid']); OCP\Share::unshareAll('event', $id); OCP\Util::emitHook('OC_Calendar', 'deleteEvent', $id); return true; }
/** * @brief removes a calendar * @param integer $id * @return boolean */ public static function deleteCalendar($id) { $calendar = self::find($id); if (!self::isAllowedToDeleteCalendar($calendar)) { $sharedCalendar = OCP\Share::getItemSharedWithBySource('calendar', $id); if (!$sharedCalendar || !($sharedCalendar['permissions'] & OCP\PERMISSION_DELETE)) { throw new Exception(OC_Calendar_App::$l10n->t('You do not have the permissions to delete this calendar.')); } } $stmt = OCP\DB::prepare('DELETE FROM `*PREFIX*clndr_calendars` WHERE `id` = ?'); $stmt->execute(array($id)); $stmt = OCP\DB::prepare('DELETE FROM `*PREFIX*clndr_objects` WHERE `calendarid` = ?'); $stmt->execute(array($id)); OCP\Share::unshareAll('calendar', $id); OCP\Util::emitHook('OC_Calendar', 'deleteCalendar', $id); if (OCP\USER::isLoggedIn() and count(self::allCalendars(OCP\USER::getUser())) == 0) { self::addDefaultCalendars(OCP\USER::getUser()); } return true; }
/** * 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'); }
public function testUnshareAll() { $this->shareUserTestFileWithUser($this->user1, $this->user2); $this->shareUserTestFileWithUser($this->user2, $this->user3); $this->shareUserTestFileWithUser($this->user3, $this->user4); $this->shareUserOneTestFileWithGroupOne(); OC_User::setUserId($this->user1); $this->assertEquals(array('test.txt', 'test.txt'), OCP\Share::getItemsShared('test', Test_Share_Backend::FORMAT_SOURCE), 'Failed asserting that the test.txt file is shared exactly two times by user1.'); OC_User::setUserId($this->user2); $this->assertEquals(array('test.txt'), OCP\Share::getItemsShared('test', Test_Share_Backend::FORMAT_SOURCE), 'Failed asserting that the test.txt file is shared exactly once by user2.'); OC_User::setUserId($this->user3); $this->assertEquals(array('test.txt'), OCP\Share::getItemsShared('test', Test_Share_Backend::FORMAT_SOURCE), 'Failed asserting that the test.txt file is shared exactly once by user3.'); $this->assertTrue(OCP\Share::unshareAll('test', 'test.txt'), 'Failed asserting that user 3 successfully unshared all shares of the test.txt share.'); $this->assertEquals(array(), OCP\Share::getItemsShared('test'), 'Failed asserting that the share of the test.txt file by user 3 has been removed.'); OC_User::setUserId($this->user1); $this->assertEquals(array(), OCP\Share::getItemsShared('test'), 'Failed asserting that both shares of the test.txt file by user 1 have been removed.'); OC_User::setUserId($this->user2); $this->assertEquals(array(), OCP\Share::getItemsShared('test'), 'Failed asserting that the share of the test.txt file by user 2 has been removed.'); }