function sharemessage_entity_view in Share Message 8
Implements hook_entity_view().
File
- ./
sharemessage.module, line 286  - New Sharing Module.
 
Code
function sharemessage_entity_view(array &$build, EntityInterface $entity, EntityViewDisplayInterface $display, $view_mode) {
  foreach ($display
    ->getComponents() as $name => $component) {
    if (strstr($name, 'sharemessage__') !== FALSE) {
      list(, $id) = explode('__', $name, 2);
      // Ensure that there is a Share Message with the detected ID to load and
      // that the context's bundle is one of the extra field's list.
      // This is needed because the Share Message settings can be changed and
      // that might not be immediately reflected in the view display.
      /** @var \Drupal\sharemessage\ShareMessageInterface $sharemessage */
      if ($sharemessage = ShareMessage::load($id)) {
        if ($sharemessage
          ->getExtraFieldEntityType() == $entity
          ->getEntityTypeId() && (!$sharemessage
          ->getExtraFieldBundles() || in_array($entity
          ->bundle(), $sharemessage
          ->getExtraFieldBundles()))) {
          // Default to the entity type ID for the token type.
          $entity_type_id = $entity
            ->getEntityTypeId();
          // Some entity types have token types that do not match their entity
          // type ID. If the token module is available, use it to get the
          // correct token type. This is necessary for taxonomy_term/term, for
          // example.
          if (\Drupal::moduleHandler()
            ->moduleExists('token')) {
            $entity_type_id = \Drupal::service('token.entity_mapper')
              ->getTokenTypeForEntityType($entity
              ->getEntityTypeId());
          }
          // Add the runtime context to get the correct token context.
          $sharemessage
            ->setRuntimeContext([
            $entity_type_id => $entity,
          ]);
          $build[$name] = \Drupal::entityTypeManager()
            ->getViewBuilder('sharemessage')
            ->view($sharemessage);
        }
      }
    }
  }
}