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