function image_field_caption_entity_update in Image Field Caption 8
Implements hook_entity_update().
1 call to image_field_caption_entity_update()
- image_field_caption_entity_insert in ./
image_field_caption.module  - Implements hook_entity_insert().
 
File
- ./
image_field_caption.module, line 202  - Provides a caption textarea for image fields.
 
Code
function image_field_caption_entity_update(EntityInterface $entity) {
  $imageCaption = Drupal::service('image_field_caption.storage');
  // For a fieldable entity.
  if ($entity instanceof FieldableEntityInterface) {
    // Get the field names of all image fields.
    $field_names = _image_field_caption_get_image_field_names($entity);
    foreach ($field_names as $field_name) {
      // Get the current field settings.
      $settings = $entity
        ->get($field_name)
        ->getSettings();
      // If the caption is not enabled => pass this field.
      if (empty($settings['caption_field'])) {
        continue;
      }
      // Delete the caption associated to this field.
      $imageCaption
        ->deleteCaption($entity
        ->getEntityTypeId(), $entity
        ->bundle(), $field_name, $entity
        ->id(), $entity
        ->language()
        ->getId());
      // Delete the caption revision associated to this field.
      /*
      $imageCaption->deleteCaptionRevision($entity->getEntityTypeId(), $entity->bundle(), $field_name, $entity->id(), $entity->getRevisionId(), $entity->language()->getId());
      */
      // Get the current field values.
      $values = $entity
        ->get($field_name)
        ->getValue();
      foreach ($values as $delta => $value) {
        // If a caption text is defined.
        if (!empty($value['image_field_caption']['value'])) {
          // Insert the caption associated to this field.
          // @todo Do the insertion using a multiple query instead several queries into a foreach;
          $revision_id = empty($entity
            ->getRevisionId()) ? $entity
            ->id() : $entity
            ->getRevisionId();
          $imageCaption
            ->insertCaption($entity
            ->getEntityTypeId(), $entity
            ->bundle(), $field_name, $entity
            ->id(), $revision_id, $entity
            ->language()
            ->getId(), $delta, $value['image_field_caption']['value'], $value['image_field_caption']['format']);
          // Insert the caption revision associated to this field.
          /*
          if ($entity->isNewRevision()) {
            $imageCaption->insertCaptionRevision(
              $entity->getEntityTypeId(),
              $entity->bundle(),
              $field_name,
              $entity->id(),
              $revision_id,
              $entity->language()->getId(),
              $delta,
              $value['image_field_caption']['value'],
              $value['image_field_caption']['format']
            );
          }
          */
        }
      }
    }
  }
}