public function saveRecord(Record $record, DataDimensions $dataDimensions = null) { if (!$dataDimensions) { $dataDimensions = $this->getCurrentDataDimensions(); } if ($record->getID() == '') { $record->setId($this->getNextId($record->getContentTypeName(), $dataDimensions)); $record->setRevision(1); $toBeSavedRecord = $record; } else { $mergedRecord = $this->mergeExistingRecord($record, $dataDimensions); $mergedRecord->setRevision($mergedRecord->getRevision() + 1); $record->setRevision($mergedRecord->getRevision()); $toBeSavedRecord = $mergedRecord; } $toBeSavedRecord->setLastChangeUserInfo($this->userInfo); $record->setLastChangeUserInfo($this->userInfo); $filename = $this->getConfiguration()->getFolderNameRecords($toBeSavedRecord->getContentTypeName(), $dataDimensions); $filename .= '/' . $toBeSavedRecord->getID() . '.json'; $data = json_encode($toBeSavedRecord, JSON_PRETTY_PRINT); $this->stashRecord($toBeSavedRecord, $dataDimensions); if (!$this->writeData($filename, $data)) { throw new AnyContentClientException('Error when saving record of content type ' . $record->getContentTypeName()); } return $toBeSavedRecord->getID(); }
protected function mergeExistingRecord(Record $record, DataDimensions $dataDimensions) { if ($record->getID() != '') { $existingRecord = $this->getMultiViewRecord($record->getId(), $record->getContentTypeName(), $dataDimensions); if ($existingRecord) { $record->setRevision($existingRecord->getRevision()); $existingProperties = $existingRecord->getProperties(); $mergedProperties = array_merge($existingProperties, $record->getProperties()); $mergedRecord = clone $record; $mergedRecord->setProperties($mergedProperties); return $mergedRecord; } } return $record; }
protected function getDeleteLink(Record $record) { return $this->getUrlGenerator()->generate('deleteRecord', array('contentTypeAccessHash' => $this->getContext()->getCurrentContentTypeAccessHash(), 'recordId' => $record->getID(), 'workspace' => $this->getContext()->getCurrentWorkspace(), 'language' => $this->getContext()->getCurrentLanguage())); }
protected function gotNewerRevision(Repository $repository, Record $record) { if ($record->getID() != null && $record->getRevision() != null) { $records = $this->getRecords($repository); if (isset($records[$record->getID()])) { /** @var Record $effectiveRecord */ $effectiveRecord = $records[$record->getID()]; if ($effectiveRecord->getRevision() > $record->getRevision()) { return true; } } } return false; }