Chris@0: translation = $translation; Chris@0: $this->handler = $handler; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function getSource() { Chris@0: return $this->translation->get('content_translation_source')->value; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function setSource($source) { Chris@0: $this->translation->set('content_translation_source', $source); Chris@0: return $this; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function isOutdated() { Chris@0: return (bool) $this->translation->get('content_translation_outdated')->value; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function setOutdated($outdated) { Chris@0: $this->translation->set('content_translation_outdated', $outdated); Chris@0: return $this; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function getAuthor() { Chris@0: return $this->translation->hasField('content_translation_uid') ? $this->translation->get('content_translation_uid')->entity : $this->translation->getOwner(); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function setAuthor(UserInterface $account) { Chris@0: $field_name = $this->translation->hasField('content_translation_uid') ? 'content_translation_uid' : 'uid'; Chris@0: $this->setFieldOnlyIfTranslatable($field_name, $account->id()); Chris@0: return $this; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function isPublished() { Chris@0: $field_name = $this->translation->hasField('content_translation_status') ? 'content_translation_status' : 'status'; Chris@0: return (bool) $this->translation->get($field_name)->value; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function setPublished($published) { Chris@0: $field_name = $this->translation->hasField('content_translation_status') ? 'content_translation_status' : 'status'; Chris@0: $this->setFieldOnlyIfTranslatable($field_name, $published); Chris@0: return $this; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function getCreatedTime() { Chris@0: $field_name = $this->translation->hasField('content_translation_created') ? 'content_translation_created' : 'created'; Chris@0: return $this->translation->get($field_name)->value; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function setCreatedTime($timestamp) { Chris@0: $field_name = $this->translation->hasField('content_translation_created') ? 'content_translation_created' : 'created'; Chris@0: $this->setFieldOnlyIfTranslatable($field_name, $timestamp); Chris@0: return $this; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function getChangedTime() { Chris@0: return $this->translation->hasField('content_translation_changed') ? $this->translation->get('content_translation_changed')->value : $this->translation->getChangedTime(); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function setChangedTime($timestamp) { Chris@0: $field_name = $this->translation->hasField('content_translation_changed') ? 'content_translation_changed' : 'changed'; Chris@0: $this->setFieldOnlyIfTranslatable($field_name, $timestamp); Chris@0: return $this; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Updates a field value, only if the field is translatable. Chris@0: * Chris@0: * @param string $field_name Chris@0: * The name of the field. Chris@0: * @param mixed $value Chris@0: * The field value to be set. Chris@0: */ Chris@0: protected function setFieldOnlyIfTranslatable($field_name, $value) { Chris@0: if ($this->translation->getFieldDefinition($field_name)->isTranslatable()) { Chris@0: $this->translation->set($field_name, $value); Chris@0: } Chris@0: } Chris@0: Chris@0: }