private function checkPermissions($eventId, $cPERMISSIONS) { $calid = Object::getCalendarid($eventId); $calendar = CalendarCalendar::find($calid); if ($calendar['userid'] === $this->userId) { $return = ['status' => 'success', 'msg' => 'All good']; return $return; } if ($calendar['userid'] !== $this->userId) { $shareMode = Object::checkShareMode($calid); if ($shareMode) { $sharedCalendar = $this->shareConnector->getItemSharedWithBySourceCalendar($calid); } else { $sharedCalendar = $this->shareConnector->getItemSharedWithBySourceEvent($id); } if (!$sharedCalendar || !($sharedCalendar['permissions'] & $cPERMISSIONS)) { $return = ['status' => 'error', 'msg' => (string) $this->l10n->t('You do not have the permissions to edit this event.')]; return $return; } else { $return = ['status' => 'success', 'msg' => 'All good']; return $return; } } }
/** * @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; }