From cc551b085103edf895673f6cc08d0a55152d303c Mon Sep 17 00:00:00 2001 From: naomi Date: Fri, 21 Jan 2022 15:00:26 +0000 Subject: [PATCH] Added Provider field to cases, auto-completed from actor linked to logged-in user. DB update required --- .../opencase_entities/opencase_entities.install | 14 ++++++++++++++ .../opencase_entities/src/Entity/OCActivity.php | 15 ++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/modules/opencase_entities/opencase_entities.install b/modules/opencase_entities/opencase_entities.install index a341cfd..bd7941e 100644 --- a/modules/opencase_entities/opencase_entities.install +++ b/modules/opencase_entities/opencase_entities.install @@ -149,3 +149,17 @@ function opencase_entities_update_8003() { \Drupal::entityDefinitionUpdateManager() ->installFieldStorageDefinition('activity_date_time', 'oc_activity', 'oc_activity', $storage_definition); } + + +function opencase_entities_update_90001() { + $storage_definition = \Drupal\Core\Field\BaseFieldDefinition::create('entity_reference') + ->setLabel(t('Provider')) + ->setRevisionable(TRUE) + ->setSetting('target_type', 'oc_actor') + ->setSetting('handler', 'default') + ->setDefaultValueCallback('\Drupal\opencase_entities\Entity\OCActivity::loggedInActorId') + ->setDisplayConfigurable('form', true) + ->setDisplayConfigurable('view', true); + \Drupal::entityDefinitionUpdateManager() + ->installFieldStorageDefinition('oc_provider', 'oc_activity', 'oc_activity', $storage_definition); +} diff --git a/modules/opencase_entities/src/Entity/OCActivity.php b/modules/opencase_entities/src/Entity/OCActivity.php index d859317..14f7404 100644 --- a/modules/opencase_entities/src/Entity/OCActivity.php +++ b/modules/opencase_entities/src/Entity/OCActivity.php @@ -93,6 +93,11 @@ class OCActivity extends RevisionableContentEntityBase implements OCActivityInte $formatted = $current_time->format('Y-m-d'); return $formatted; } + public static function loggedInActorId() { + $linked_actor = \Drupal\user\Entity\User::load(\Drupal::currentUser()->id())->field_linked_opencase_actor; + if (empty($linked_actor)) return []; + else return $linked_actor->target_id ; + } /** * {@inheritdoc} */ @@ -231,7 +236,15 @@ class OCActivity extends RevisionableContentEntityBase implements OCActivityInte ->setSettings([ 'datetime_type' => 'date' ]); - + $fields['oc_provider'] = BaseFieldDefinition::create('entity_reference') + ->setLabel(t('Provider')) + ->setRevisionable(TRUE) + ->setSetting('target_type', 'oc_actor') + ->setSetting('handler', 'default') + ->setDefaultValueCallback('\Drupal\opencase_entities\Entity\OCActivity::loggedInActorId') + ->setDisplayConfigurable('form', true) + ->setDisplayConfigurable('view', true); + $fields['status'] = BaseFieldDefinition::create('boolean') ->setLabel(t('Visible')) ->setDescription('If this box is not ticked this record will be hidden from view for most users. Users with access to unpublished entities will be able to restore it if needed.')