diff --git a/modules/opencase_entities/src/Entity/OCEvent.php b/modules/opencase_entities/src/Entity/OCEvent.php index 31360d5..fae714b 100644 --- a/modules/opencase_entities/src/Entity/OCEvent.php +++ b/modules/opencase_entities/src/Entity/OCEvent.php @@ -2,6 +2,7 @@ namespace Drupal\opencase_entities\Entity; +use Drupal\Core\Entity\EntityStorageInterface; use Drupal\Core\Field\BaseFieldDefinition; use Drupal\Core\Entity\ContentEntityBase; use Drupal\Core\Entity\EntityChangedTrait; @@ -44,6 +45,7 @@ use Drupal\Core\Datetime\DrupalDateTime; * "bundle" = "type", * "label" = "name", * "uuid" = "uuid", + * "uid" = "user_id", * "langcode" = "langcode", * "published" = "status", * }, @@ -94,6 +96,45 @@ class OCEvent extends ContentEntityBase implements OCEventInterface { return $this; } + /** + * {@inheritdoc} + */ + public function getOwner() { + return $this->get('user_id')->entity; + } + + /** + * {@inheritdoc} + */ + public function getOwnerId() { + return $this->get('user_id')->target_id; + } + + /** + * {@inheritdoc} + */ + public function setOwnerId($uid) { + $this->set('user_id', $uid); + return $this; + } + + /** + * {@inheritdoc} + */ + public static function preCreate(EntityStorageInterface $storage_controller, array &$values) { + parent::preCreate($storage_controller, $values); + $values += [ + 'user_id' => \Drupal::currentUser()->id(), + ]; + } + /** + * {@inheritdoc} + */ + public function setOwner(UserInterface $account) { + $this->set('user_id', $account->id()); + return $this; + } + /** * {@inheritdoc} */ @@ -103,6 +144,19 @@ class OCEvent extends ContentEntityBase implements OCEventInterface { // Add the published field. $fields += static::publishedBaseFieldDefinitions($entity_type); + $fields['user_id'] = BaseFieldDefinition::create('entity_reference') + ->setLabel(t('Entered by')) + ->setDescription(t('The user ID of author of the Event entity.')) + ->setRevisionable(TRUE) + ->setSetting('target_type', 'user') + ->setSetting('handler', 'default') + ->setTranslatable(TRUE) + ->setDisplayOptions('view', [ + 'label' => 'inline', + 'type' => 'author', + 'weight' => -4, + ]); + $fields['name'] = BaseFieldDefinition::create('string') ->setLabel(t('Name')) ->setDescription(t('The name of the Event entity.')) @@ -172,6 +226,23 @@ class OCEvent extends ContentEntityBase implements OCEventInterface { ]) ->setRequired(FALSE); + $fields['attendees'] = BaseFieldDefinition::create('entity_reference') + ->setLabel(t('Attendees')) + ->setDescription(t('People attending this event.')) + ->setSetting('target_type', 'oc_actor') + ->setSetting('handler', 'default') + ->setTranslatable(TRUE) + ->setCardinality(BaseFieldDefinition::CARDINALITY_UNLIMITED) + ->setDisplayOptions('view', [ + 'type' => 'string', + 'weight' => 50, + ]) + ->setDisplayOptions('form', [ + 'type' => 'entity_reference_autocomplete_tags', + 'weight' => 50, + ]) + ->setRequired(FALSE); + return $fields; }