/** * {@inheritDoc} */ public function hasUpdated(IObject $object) { $newObject = $this->find($object->getUri()); return $newObject->getEtag(true) !== $object->getEtag(true); }
/** * Creates an new object * * @param \OCA\Calendar\IObject $object * @throws \OCA\Calendar\BusinessLayer\Exception * @return \OCA\Calendar\IObject */ public function create(IObject $object) { try { if (is_null($object->getUri())) { $object->setUri(ObjectUtility::randomURI()); } $object->setCalendar($this->calendar); // generate an provisional etag, backends can overwrite it if necessary $object->getEtag(true); $this->checkCalendarSupports(Permissions::CREATE); if (!$this->api instanceof BackendUtils\IObjectAPICreate) { throw new Exception('Backend does not support creating objects'); } $this->checkObjectIsValid($object); Util::emitHook('\\OCA\\Calendar', 'preCreateObject', array($object)); $object = $this->api->create($object); if ($this->isCachingEnabled) { $this->updater->propagate($object->getUri()); } Util::emitHook('\\OCA\\Calendar', 'postCreateObject', array($object)); return $object; } catch (BackendUtils\Exception $ex) { throw Exception::fromException($ex); } }
/** * {@inheritDoc} */ public function delete(IObject $object) { $sql = 'DELETE FROM `' . $this->getObjectTableName() . '` '; $sql .= 'WHERE `uri` = ? AND `calendarid` = ?'; $this->query($sql, [$object->getUri(), $this->getCalendarId()]); return true; }
/** * Updates an object from request * * @param \OCA\Calendar\IObject $object * @param string $etag * @throws \OCA\Calendar\BusinessLayer\Exception * @return \OCA\Calendar\IObject */ public function update(IObject $object, $etag) { $oldObject = $this->find($object->getUri()); $this->checkETagsEqual($oldObject->getEtag(), $etag); $oldObject->overwriteWith($object); $object = $oldObject; return parent::update($object); }
/** * @param IObject $object * @return IObject */ public function update(IObject $object) { $calendarId = $this->calendar->getId(); //TODO - (maybe) check uri exists already $sql = 'UPDATE `' . $this->getTableName() . '` SET '; $sql .= '`type` = ?, `etag` = ?, `startdate` = ?, `enddate` = ?, '; $sql .= '`repeating` = ?, `summary` = ?, `calendardata` = ?, '; $sql .= '`lastmodified` = ? WHERE `uri` = ? and `calendarid` = ?'; $stmt = $this->execute($sql, [$object->getType(), $object->getEtag(true), $this->getUTC($object->getStartDate()), $this->getUTC($object->getEndDate()), $object->getRepeating(), $object->getSummary(), $object->getCalendarData(), $this->getUTC($object->getLastModified()), $object->getUri(), $calendarId]); $stmt->closeCursor(); return $object; }
/** * {@inheritDoc} */ public function hasUpdated(IObject $object) { $contact = $this->getContactFromUri($object->getUri()); if (!$contact) { throw new BackendUtils\DoesNotExistException(); } return $object->getEtag() !== $contact['ETAG']; }