Esempio n. 1
0
 /**
  * Returns a list of ACE's for this node.
  *
  * Each ACE has the following properties:
  *   * 'privilege', a string such as {DAV:}read or {DAV:}write. These are
  *     currently the only supported privileges
  *   * 'principal', a url to the principal who owns the node
  *   * 'protected' (optional), indicating that this ACE is not allowed to
  *      be updated.
  *
  * @return array
  */
 public function getACL()
 {
     $readprincipal = $this->getOwner();
     $writeprincipal = $this->getOwner();
     $uid = CalendarCalendar::extractUserID($this->getOwner());
     if ($uid != \OCP\USER::getUser()) {
         $object = VObject::parse($this->objectData['calendardata']);
         $sharedCalendar = \OCP\Share::getItemSharedWithBySource(CalendarApp::SHARECALENDAR, CalendarApp::SHARECALENDARPREFIX . $this->calendarInfo['id']);
         $sharedAccessClassPermissions = Object::getAccessClassPermissions($object);
         if ($sharedCalendar && $sharedCalendar['permissions'] & \OCP\PERMISSION_READ && $sharedAccessClassPermissions & \OCP\PERMISSION_READ) {
             $readprincipal = 'principals/' . \OCP\USER::getUser();
         }
         if ($sharedCalendar && $sharedCalendar['permissions'] & \OCP\PERMISSION_UPDATE && $sharedAccessClassPermissions & \OCP\PERMISSION_UPDATE) {
             $writeprincipal = 'principals/' . \OCP\USER::getUser();
         } else {
             $writeprincipal = '';
         }
     }
     return array(array('privilege' => '{DAV:}read', 'principal' => $readprincipal, 'protected' => true), array('privilege' => '{DAV:}write', 'principal' => $writeprincipal, 'protected' => true), array('privilege' => '{DAV:}read', 'principal' => $readprincipal . '/calendar-proxy-write', 'protected' => true), array('privilege' => '{DAV:}write', 'principal' => $writeprincipal . '/calendar-proxy-write', 'protected' => true), array('privilege' => '{DAV:}read', 'principal' => $readprincipal . '/calendar-proxy-read', 'protected' => true));
 }
Esempio n. 2
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. 3
0
 /**
  * @brief edits an object
  * @param integer $id id of object
  * @param string $data  object
  * @return boolean
  */
 public static function edit($id, $data, $orgid = 0)
 {
     $oldobject = Object::find($id);
     $calid = Object::getCalendarid($id);
     $calendar = Calendar::find($calid);
     $oldvobject = VObject::parse($oldobject['calendardata']);
     if ($calendar['userid'] !== \OCP\User::getUser()) {
         $shareMode = Object::checkShareMode($calid);
         if ($shareMode) {
             $sharedCalendar = \OCP\Share::getItemSharedWithBySource(CalendarApp::SHARECALENDAR, CalendarApp::SHARECALENDARPREFIX . $calid);
             //calid, not objectid !!!! 1111 one one one eleven
         } else {
             $sharedCalendar = \OCP\Share::getItemSharedWithBySource(CalendarApp::SHARETODO, CalendarApp::SHARETODOPREFIX . $id);
         }
         $sharedAccessClassPermissions = Object::getAccessClassPermissions($oldvobject);
         if (!$sharedCalendar || !($sharedCalendar['permissions'] & \OCP\PERMISSION_UPDATE) || !($sharedAccessClassPermissions & \OCP\PERMISSION_UPDATE)) {
             throw new \Exception(CalendarApp::$l10n->t('You do not have the permissions to edit this todo. Fehler' . $sharedCalendar . $id));
         }
     }
     $object = VObject::parse($data);
     CalendarApp::loadCategoriesFromVCalendar($id, $object);
     list($type, $startdate, $enddate, $summary, $repeating, $uid, $isAlarm, $relatedTo) = Object::extractData($object);
     //check Share
     if ($orgid > 0) {
         $stmtShareUpdate = \OCP\DB::prepare("UPDATE `*PREFIX*share` SET `item_target`= ? WHERE `item_source` = ? AND `item_type` = ? ");
         $stmtShareUpdate->execute(array($summary, CalendarApp::SHARETODOPREFIX . $orgid, CalendarApp::SHARETODO));
         $stmt = \OCP\DB::prepare('UPDATE `' . CalendarApp::CldObjectTable . '` SET `objecttype`=?,`startdate`=?,`enddate`=?,`repeating`=?,`summary`=?,`calendardata`=?,`lastmodified`= ? ,`isalarm`= ? ,`eventuid`= ?,`relatedto`= ?   WHERE `id` = ?');
         $stmt->execute(array($type, $startdate, $enddate, $repeating, $summary, $data, time(), $isAlarm, $uid, $relatedTo, $orgid));
     }
     $stmtShare = \OCP\DB::prepare("SELECT COUNT(*) AS COUNTSHARE FROM `*PREFIX*share` WHERE `item_source` = ? AND `item_type`= ? ");
     $result = $stmtShare->execute(array(CalendarApp::SHARETODOPREFIX . $id, CalendarApp::SHARETODO));
     $row = $result->fetchRow();
     if ($row['COUNTSHARE'] >= 1) {
         $stmtShareUpdate = \OCP\DB::prepare("UPDATE `*PREFIX*share` SET `item_target`= ? WHERE `item_source` = ? AND `item_type` = ? ");
         $stmtShareUpdate->execute(array($summary, CalendarApp::SHARETODOPREFIX . $id, CalendarApp::SHARETODO));
         $stmt = \OCP\DB::prepare('UPDATE `' . CalendarApp::CldObjectTable . '` SET `objecttype`=?,`startdate`=?,`enddate`=?,`repeating`=?,`summary`=?,`calendardata`=?,`lastmodified`= ?,`isalarm`= ? WHERE `org_objid` = ?');
         $stmt->execute(array($type, $startdate, $enddate, $repeating, $summary, $data, time(), $isAlarm, $id));
     }
     $stmt = \OCP\DB::prepare('UPDATE `' . CalendarApp::CldObjectTable . '` SET `objecttype`=?,`startdate`=?,`enddate`=?,`repeating`=?,`summary`=?,`calendardata`=?,`lastmodified`= ? ,`isalarm`= ?,`eventuid`= ?,`relatedto`= ?  WHERE `id` = ?');
     $stmt->execute(array($type, $startdate, $enddate, $repeating, $summary, $data, time(), $isAlarm, $uid, $relatedTo, $id));
     Calendar::touchCalendar($oldobject['calendarid']);
     //\OCP\Util::emitHook('OC_Calendar', 'editTodo', $id);
     /****Activity New ***/
     $link = \OC::$server->getURLGenerator()->linkToRoute(self::$appname . '.page.index') . '#' . urlencode($id);
     $params = array('mode' => 'edited', 'link' => $link, 'trans_type' => App::$l10n->t($type), 'summary' => $summary, 'cal_user' => $calendar['userid'], 'cal_displayname' => $calendar['displayname']);
     ActivityData::logEventActivity($params);
     /**END***/
     return true;
 }