Esempio n. 1
0
 /**
  * Delete any registred address books (Future)
  */
 public static function addressBookDeletion($parameters)
 {
     // Clean up sharing
     \OCP\Share::unshareAll('addressbook', $parameters['addressbookid']);
     if (count($parameters['contactids'])) {
         // Remove contacts from groups
         $tagMgr = \OC::$server->getTagManager()->load('contact');
         $tagMgr->purgeObjects($parameters['contactids']);
         // Purge property indexes
         Utils\Properties::purgeIndexes($parameters['contactids']);
     }
 }
Esempio n. 2
0
 /**
  * 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');
 }
Esempio n. 3
0
 /**
  * @brief deletes a card
  * @param integer $id id of card
  * @return boolean true on success, otherwise an exception will be thrown
  */
 public static function delete($id)
 {
     $contact = self::find($id);
     if (!$contact) {
         \OCP\Util::writeLog(App::$appname, __METHOD__ . ', id: ' . $id . ' not found.', \OCP\Util::DEBUG);
         throw new \Exception(App::$l10n->t('Could not find the vCard with ID: ' . $id, 404));
     }
     $addressbook = Addressbook::find($contact['addressbookid']);
     if (!$addressbook) {
         throw new \Exception(App::$l10n->t('Could not find the Addressbook with ID: ' . $contact['addressbookid'], 404));
     }
     if ($addressbook['userid'] != \OCP\User::getUser() && !\OC_Group::inGroup(\OCP\User::getUser(), 'admin')) {
         \OCP\Util::writeLog('contacts', __METHOD__ . ', ' . $addressbook['userid'] . ' != ' . \OCP\User::getUser(), \OCP\Util::DEBUG);
         $sharedAddressbook = \OCP\Share::getItemSharedWithBySource(App::SHAREADDRESSBOOK, App::SHAREADDRESSBOOKPREFIX . $contact['addressbookid'], \OCP\Share::FORMAT_NONE, null, true);
         $sharedContact = \OCP\Share::getItemSharedWithBySource(App::SHARECONTACT, App::SHARECONTACTPREFIX . $id, \OCP\Share::FORMAT_NONE, null, true);
         $addressbook_permissions = 0;
         $contact_permissions = 0;
         if ($sharedAddressbook) {
             $addressbook_permissions = $sharedAddressbook['permissions'];
         }
         if ($sharedContact) {
             $contact_permissions = $sharedEvent['permissions'];
         }
         $permissions = max($addressbook_permissions, $contact_permissions);
         if (!($permissions & \OCP\PERMISSION_DELETE)) {
             throw new \Exception(App::$l10n->t('You do not have the permissions to delete this contact.', 403));
         }
     }
     $aid = $contact['addressbookid'];
     //	\OC_Hook::emit('\OCA\ContactsPlus\VCard', 'pre_deleteVCard',
     //		array('aid' => null, 'id' => $id, 'uri' => null)
     //	);
     $favorites = \OC::$server->getTagManager()->load(App::$appname)->getFavorites();
     if (count($favorites) > 0) {
         $favorites = \OC::$server->getTagManager()->load(App::$appname)->removeFromFavorites($id);
     }
     $stmt = \OCP\DB::prepare('DELETE FROM `' . App::ContactsTable . '` WHERE `id` = ?');
     try {
         $stmt->execute(array($id));
     } catch (\Exception $e) {
         \OCP\Util::writeLog(App::$appname, __METHOD__ . ', exception: ' . $e->getMessage(), \OCP\Util::ERROR);
         \OCP\Util::writeLog(App::$appname, __METHOD__ . ', id: ' . $id, \OCP\Util::DEBUG);
         throw new \Exception(App::$l10n->t('There was an error deleting this contact.'));
     }
     App::updateDBProperties($id);
     //App::getVCategories()->purgeObject($id);
     Addressbook::touch($addressbook['id']);
     \OCP\Share::unshareAll(App::SHARECONTACT, $id);
     return true;
 }
Esempio n. 4
0
 /**
  * @NoAdminRequired
  *
  *
  * @param integer $calendarid
  *@return array || null
  */
 public function unshareAllCalendar($calendarid)
 {
     return Share::unshareAll(self::SHARECALENDAR, self::SHARECALENDARPREFIX . $calendarid);
 }
Esempio n. 5
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 = Calendar::find($calid);
     $oldvobject = VObject::parse($oldobject['calendardata']);
     if ($calendar['userid'] != \OCP\User::getUser()) {
         $shareMode = self::checkShareMode($calid);
         if ($shareMode) {
             $sharedCalendar = \OCP\Share::getItemSharedWithBySource(App::SHARECALENDAR, App::SHARECALENDARPREFIX . $calid);
             //calid, not objectid !!!! 1111 one one one eleven
         } else {
             $sharedCalendar = \OCP\Share::getItemSharedWithBySource(App::SHAREEVENT, App::SHAREEVENTPREFIX . $id);
         }
         $sharedAccessClassPermissions = Object::getAccessClassPermissions($oldvobject);
         if (!$sharedCalendar || !($sharedCalendar['permissions'] & \OCP\PERMISSION_DELETE) || !($sharedAccessClassPermissions & \OCP\PERMISSION_DELETE)) {
             throw new \Exception(App::$l10n->t('You do not have the permissions to delete this event.'));
         }
     }
     $stmt = \OCP\DB::prepare('DELETE FROM `' . App::CldObjectTable . '` WHERE `id` = ?');
     $stmt->execute(array($id));
     //DELETE SHARED ONLY EVENT
     if (\OCP\Share::unshareAll(App::SHAREEVENT, App::SHAREEVENTPREFIX . $id)) {
         //if($delId=Object::checkSharedEvent($id)){
         $stmt = \OCP\DB::prepare('DELETE FROM `' . App::CldObjectTable . '` WHERE `org_objid` = ?');
         $stmt->execute(array($id));
         //}
     }
     Calendar::touchCalendar($oldobject['calendarid']);
     $app = new Application();
     $c = $app->getContainer();
     $repeatController = $c->query('RepeatController');
     $repeatController->cleanEvent($id);
     //\OCP\Util::emitHook('\OCA\CalendarPlus', 'deleteEvent', $id);
     $params = array('mode' => 'deleted', 'link' => '', 'trans_type' => App::$l10n->t($oldobject['objecttype']), 'summary' => $oldobject['summary'], 'cal_user' => $calendar['userid'], 'cal_displayname' => $calendar['displayname']);
     ActivityData::logEventActivity($params);
     //App::getVCategories()->purgeObject($id);
     return true;
 }
Esempio n. 6
0
 /**
  * @brief removes a calendar
  * @param integer $id
  * @return boolean
  */
 public static function deleteCalendar($id)
 {
     $calendar = self::find($id);
     //\OCP\Util::writeLog('DAV', 'DEL ID-> '.$id, \OCP\Util::DEBUG);
     $group = \OC::$server->getGroupManager()->get('admin');
     $user = \OCP\User::getUser();
     if ($calendar['userid'] != $user && !$group->inGroup($user)) {
         $sharedCalendar = \OCP\Share::getItemSharedWithBySource(App::SHARECALENDAR, App::SHARECALENDARPREFIX . $id);
         if (!$sharedCalendar || !($sharedCalendar['permissions'] & \OCP\PERMISSION_DELETE)) {
             throw new \Exception(App::$l10n->t('You do not have the permissions to delete this calendar.'));
         }
     }
     $stmt = \OCP\DB::prepare('DELETE FROM `' . App::CldCalendarTable . '` WHERE `id` = ?');
     $stmt->execute(array($id));
     $stmt = \OCP\DB::prepare('DELETE FROM `' . App::CldObjectTable . '` WHERE `calendarid` = ?');
     $stmt->execute(array($id));
     \OCP\Share::unshareAll(App::SHARECALENDAR, App::SHARECALENDARPREFIX . $id);
     \OCP\Util::emitHook('\\OCA\\CalendarPlus', 'deleteCalendar', $id);
     $calendars = self::allCalendars(\OCP\USER::getUser(), false, false);
     if (\OCP\USER::isLoggedIn() && count($calendars) === 0 || count($calendars) == 1 && $calendars[0]['id'] == 'birthday_' . \OCP\USER::getUser()) {
         self::addDefaultCalendars(\OCP\USER::getUser());
     }
     $link = \OC::$server->getURLGenerator()->linkToRoute(App::$appname . '.page.index');
     $params = array('mode' => 'deleted', 'link' => $link, 'trans_type' => '', 'summary' => $calendar['displayname'], 'cal_user' => $user, 'cal_displayname' => $calendar['displayname']);
     ActivityData::logEventActivity($params, false, true);
     return true;
 }
Esempio n. 7
0
 /**
  * @brief removes an address book
  * @param integer $id
  * @return boolean true on success, otherwise an exception will be thrown
  */
 public static function delete($id)
 {
     $addressbook = self::find($id);
     if ($addressbook['userid'] != \OCP\User::getUser() && !\OC_Group::inGroup(OCP\User::getUser(), 'admin')) {
         $sharedAddressbook = \OCP\Share::getItemSharedWithBySource('addressbook', $id);
         if (!$sharedAddressbook || !($sharedAddressbook['permissions'] & \OCP\PERMISSION_DELETE)) {
             throw new Exception(App::$l10n->t('You do not have the permissions to delete this addressbook.'));
         }
     }
     // First delete cards belonging to this addressbook.
     $cards = VCard::all($id);
     foreach ($cards as $card) {
         try {
             VCard::delete($card['id']);
         } catch (Exception $e) {
             \OCP\Util::writeLog('contacts', __METHOD__ . ', exception deleting vCard ' . $card['id'] . ': ' . $e->getMessage(), \OCP\Util::ERROR);
         }
     }
     try {
         $stmt = \OCP\DB::prepare('DELETE FROM `*PREFIX*contacts_addressbooks` WHERE `id` = ?');
         $stmt->execute(array($id));
     } catch (\Exception $e) {
         \OCP\Util::writeLog('contacts', __METHOD__ . ', exception for ' . $id . ': ' . $e->getMessage(), \OCP\Util::ERROR);
         throw new Exception(App::$l10n->t('There was an error deleting this addressbook.'));
     }
     \OCP\Share::unshareAll('addressbook', $id);
     if (count(self::all(\OCP\User::getUser())) == 0) {
         self::addDefault();
     }
     return true;
 }
Esempio n. 8
0
 /**
  * @brief deletes a card
  * @param integer $id id of card
  * @return boolean true on success, otherwise an exception will be thrown
  */
 public static function delete($id)
 {
     $contact = self::find($id);
     if (!$contact) {
         \OCP\Util::writeLog('contacts', __METHOD__ . ', id: ' . $id . ' not found.', \OCP\Util::DEBUG);
         throw new \Exception(App::$l10n->t('Could not find the vCard with ID: ' . $id, 404));
     }
     $addressbook = Addressbook::find($contact['addressbookid']);
     if (!$addressbook) {
         throw new \Exception(App::$l10n->t('Could not find the Addressbook with ID: ' . $contact['addressbookid'], 404));
     }
     if ($addressbook['userid'] != \OCP\User::getUser() && !\OC_Group::inGroup(\OCP\User::getUser(), 'admin')) {
         \OCP\Util::writeLog('contacts', __METHOD__ . ', ' . $addressbook['userid'] . ' != ' . \OCP\User::getUser(), \OCP\Util::DEBUG);
         $sharedAddressbook = \OCP\Share::getItemSharedWithBySource('addressbook', $contact['addressbookid'], \OCP\Share::FORMAT_NONE, null, true);
         $sharedContact = \OCP\Share::getItemSharedWithBySource('contact', $id, \OCP\Share::FORMAT_NONE, null, true);
         $addressbook_permissions = 0;
         $contact_permissions = 0;
         if ($sharedAddressbook) {
             $addressbook_permissions = $sharedAddressbook['permissions'];
         }
         if ($sharedContact) {
             $contact_permissions = $sharedEvent['permissions'];
         }
         $permissions = max($addressbook_permissions, $contact_permissions);
         if (!($permissions & \OCP\PERMISSION_DELETE)) {
             throw new \Exception(App::$l10n->t('You do not have the permissions to delete this contact.', 403));
         }
     }
     $aid = $contact['addressbookid'];
     \OC_Hook::emit('\\OCA\\Contacts\\VCard', 'pre_deleteVCard', array('aid' => null, 'id' => $id, 'uri' => null));
     $stmt = \OCP\DB::prepare('DELETE FROM `*PREFIX*contacts_cards` WHERE `id` = ?');
     try {
         $stmt->execute(array($id));
     } catch (\Exception $e) {
         \OCP\Util::writeLog('contacts', __METHOD__ . ', exception: ' . $e->getMessage(), \OCP\Util::ERROR);
         \OCP\Util::writeLog('contacts', __METHOD__ . ', id: ' . $id, \OCP\Util::DEBUG);
         throw new \Exception(App::$l10n->t('There was an error deleting this contact.'));
     }
     App::updateDBProperties($id);
     App::getVCategories()->purgeObject($id);
     Addressbook::touch($addressbook['id']);
     \OCP\Share::unshareAll('contact', $id);
     return true;
 }
Esempio n. 9
0
 /**
  * @brief removes a calendar
  * @param integer $id
  * @return boolean
  */
 public static function deleteCalendar($id)
 {
     $calendar = self::find($id);
     //\OCP\Util::writeLog('DAV', 'DEL ID-> '.$id, \OCP\Util::DEBUG);
     $group = \OC::$server->getGroupManager()->get('admin');
     $user = \OCP\User::getUser();
     if ($calendar['userid'] != $user && !$group->inGroup(\OC::$server->getUserSession()->getUser())) {
         $sharedCalendar = \OCP\Share::getItemSharedWithBySource(App::SHARECALENDAR, App::SHARECALENDARPREFIX . $id);
         if (!$sharedCalendar || !($sharedCalendar['permissions'] & \OCP\PERMISSION_DELETE)) {
             throw new \Exception(App::$l10n->t('You do not have the permissions to delete this calendar.'));
         }
     }
     $dbObject = \OC::$server->getDb();
     $calendarDB = new CalendarDAO($dbObject, $user);
     $bDeleteCalendar = $calendarDB->delete($id);
     if ($bDeleteCalendar === true) {
         $stmt = \OCP\DB::prepare('DELETE FROM `' . App::CldObjectTable . '` WHERE `calendarid` = ?');
         $stmt->execute(array($id));
         \OCP\Share::unshareAll(App::SHARECALENDAR, App::SHARECALENDARPREFIX . $id);
         //\OCP\Util::emitHook('\OCA\CalendarPlus', 'deleteCalendar', $id);
         $app = new Application();
         $c = $app->getContainer();
         $repeatController = $c->query('RepeatController');
         $repeatController->cleanCalendar($id);
         $link = \OC::$server->getURLGenerator()->linkToRoute(App::$appname . '.page.index');
         $params = array('mode' => 'deleted', 'link' => $link, 'trans_type' => '', 'summary' => $calendar['displayname'], 'cal_user' => $user, 'cal_displayname' => $calendar['displayname']);
         ActivityData::logEventActivity($params, false, true);
         return $bDeleteCalendar;
     } else {
         return $bDeleteCalendar;
     }
 }
Esempio n. 10
0
 /**
  * @brief removes an address book
  * @param integer $id
  * @return boolean true on success, otherwise an exception will be thrown
  */
 public static function delete($id)
 {
     $addressbook = self::find($id);
     if ($addressbook['userid'] !== \OCP\User::getUser() && !\OC_Group::inGroup(\OCP\User::getUser(), 'admin')) {
         $sharedAddressbook = \OCP\Share::getItemSharedWithBySource(App::SHAREADDRESSBOOK, App::SHAREADDRESSBOOKPREFIX . $id);
         if (!$sharedAddressbook || !($sharedAddressbook['permissions'] & \OCP\PERMISSION_DELETE)) {
             throw new \Exception(App::$l10n->t('You do not have the permissions to delete this addressbook.'));
         }
     }
     // First delete cards belonging to this addressbook.
     $cards = VCard::all($id);
     foreach ($cards as $card) {
         try {
             VCard::delete($card['id']);
         } catch (\Exception $e) {
             \OCP\Util::writeLog(App::$appname, __METHOD__ . ', exception deleting vCard ' . $card['id'] . ': ' . $e->getMessage(), \OCP\Util::ERROR);
         }
     }
     try {
         $stmt = \OCP\DB::prepare('DELETE FROM `' . App::AddrBookTable . '` WHERE `id` = ?');
         $stmt->execute(array($id));
     } catch (\Exception $e) {
         \OCP\Util::writeLog(App::$appname, __METHOD__ . ', exception for ' . $id . ': ' . $e->getMessage(), \OCP\Util::ERROR);
         throw new \Exception(App::$l10n->t('There was an error deleting this addressbook.'));
     }
     \OCP\Share::unshareAll(App::SHAREADDRESSBOOK, App::SHAREADDRESSBOOKPREFIX . $id);
     \OCP\Util::emitHook('\\OCA\\ContactsPlus', 'deleteAddressbook', $id);
     return true;
 }
Esempio n. 11
0
 /**
  * @brief deletes a card with the data provided by sabredav
  * @param integer $aid Addressbook id
  * @param string $uri the uri of the card
  * @return boolean
  */
 public static function deleteFromDAVData($aid, $uri)
 {
     $id = null;
     $addressbook = Addressbook::find($aid);
     if ($addressbook['userid'] != \OCP\User::getUser()) {
         $query = \OCP\DB::prepare('SELECT `id` FROM `*PREFIX*contacts_cards` WHERE `addressbookid` = ? AND `uri` = ?');
         $id = $query->execute(array($aid, $uri))->fetchOne();
         if (!$id) {
             return false;
         }
         $sharedContact = \OCP\Share::getItemSharedWithBySource('contact', $id, \OCP\Share::FORMAT_NONE, null, true);
         if (!$sharedContact || !($sharedContact['permissions'] & \OCP\PERMISSION_DELETE)) {
             return false;
         }
     }
     \OC_Hook::emit('\\OCA\\Contacts\\VCard', 'pre_deleteVCard', array('aid' => $aid, 'id' => null, 'uri' => $uri));
     $stmt = \OCP\DB::prepare('DELETE FROM `*PREFIX*contacts_cards` WHERE `addressbookid` = ? AND `uri`=?');
     try {
         $stmt->execute(array($aid, $uri));
     } catch (\Exception $e) {
         \OCP\Util::writeLog('contacts', __METHOD__ . ', exception: ' . $e->getMessage(), \OCP\Util::ERROR);
         \OCP\Util::writeLog('contacts', __METHOD__ . ', aid: ' . $aid . ' uri: ' . $uri, \OCP\Util::DEBUG);
         return false;
     }
     Addressbook::touch($aid);
     if (!is_null($id)) {
         App::getVCategories()->purgeObject($id);
         App::updateDBProperties($id);
         \OCP\Share::unshareAll('contact', $id);
     } else {
         \OCP\Util::writeLog('contacts', __METHOD__ . ', Could not find id for ' . $uri, \OCP\Util::DEBUG);
     }
     return true;
 }