You are here

public function EncryptedFieldValueManager::createEncryptedFieldValue in Field Encryption 8.2

Create an encrypted field value, or update an existing one.

Parameters

\Drupal\Core\Entity\ContentEntityInterface $entity: The entity to process.

string $field_name: The field name to save.

int $delta: The field delta to save.

string $property: The field property to save.

string $encrypted_value: The encrypted value to save.

Return value

\Drupal\field_encrypt\Entity\EncryptedFieldValueInterface The created EncryptedFieldValue entity.

Overrides EncryptedFieldValueManagerInterface::createEncryptedFieldValue

File

src/EncryptedFieldValueManager.php, line 35

Class

EncryptedFieldValueManager
Manager containing common functions to manage EncryptedFieldValue entities.

Namespace

Drupal\field_encrypt

Code

public function createEncryptedFieldValue(ContentEntityInterface $entity, $field_name, $delta, $property, $encrypted_value) {
  $langcode = $entity
    ->language()
    ->getId();
  if ($encrypted_field_value = $this
    ->getExistingEntity($entity, $field_name, $delta, $property)) {
    $encrypted_field_value
      ->setEncryptedValue($encrypted_value);
    $encrypted_field_value
      ->save();
  }
  else {

    // Create a new EncryptedFieldValue entity. The parent entity's (revision)
    // id might not be known yet, so the EncryptedFieldValue will be saved
    // by saveEncryptedFieldValues() later on.
    $encrypted_field_value = $this->entityManager
      ->getStorage('encrypted_field_value')
      ->create([
      'entity_type' => $entity
        ->getEntityTypeId(),
      'entity_id' => !$entity
        ->isNew() ? $entity
        ->id() : NULL,
      'entity_revision_id' => $this
        ->getEntityRevisionId($entity),
      'field_name' => $field_name,
      'field_property' => $property,
      'field_delta' => $delta,
      'encrypted_value' => $encrypted_value,
      'langcode' => $langcode,
    ]);
    $entity->encrypted_field_values[] = $encrypted_field_value;
  }
  return $encrypted_field_value;
}