You are here

function template_preprocess_easy_email in Easy Email 8

Same name and namespace in other branches
  1. 2.0.x easy_email.page.inc \template_preprocess_easy_email()

Prepares variables for Email entities.

Default template: easy_email.html.twig.

Parameters

array $variables: An associative array containing:

  • elements: An associative array containing the user information and any
  • attributes: HTML attributes for the containing element.

File

./easy_email.page.inc, line 24
Contains easy_email.page.inc.

Code

function template_preprocess_easy_email(array &$variables) {

  // Fetch EasyEmail Entity Object.

  /** @var \Drupal\easy_email\Entity\EasyEmailInterface $easy_email */
  $easy_email = $variables['elements']['#easy_email'];

  // Helpful $content variable for templates.
  foreach (Element::children($variables['elements']) as $key) {
    $variables['content'][$key] = $variables['elements'][$key];
  }
  if ($easy_email
    ->hasField('body_html') && !empty($easy_email
    ->getHtmlBody())) {
    $variables['preview_html_url'] = Url::fromRoute('entity.easy_email.preview', [
      'easy_email' => $easy_email
        ->id(),
    ]);
  }

  /** @var \Drupal\easy_email\Entity\EasyEmailTypeInterface $easy_email_type */
  $easy_email_type = \Drupal::entityTypeManager()
    ->getStorage('easy_email_type')
    ->load($easy_email
    ->bundle());
  if ($easy_email
    ->hasField('body_plain') && (!empty($easy_email_type
    ->getGenerateBodyPlain()) || !empty($easy_email
    ->getPlainBody()))) {
    $variables['preview_plain_url'] = Url::fromRoute('entity.easy_email.preview_plain', [
      'easy_email' => $easy_email
        ->id(),
    ]);
  }
  $variables['headers'] = [];

  /** @var \Drupal\easy_email\Service\EmailHandlerInterface $email_handler */
  $email_handler = \Drupal::service('easy_email.handler');
  $message = $email_handler
    ->preview($easy_email);
  if (!empty($message['headers'])) {
    foreach ($message['headers'] as $header => $value) {
      $variables['headers'][] = [
        'name' => $header,
        'value' => $value,
      ];
    }
  }
  $variables['headers'][] = [
    'name' => 'To',
    'value' => implode(', ', $easy_email
      ->getRecipientAddresses()),
  ];
  $variables['headers'][] = [
    'name' => 'Subject',
    'value' => $easy_email
      ->getSubject(),
  ];
  $variables['is_sent'] = $easy_email
    ->isSent();
  $variables['sent_time'] = $easy_email
    ->getSentTime();
  $variables['inbox_preview'] = [
    '#theme' => 'easy_email_inbox_preview_view',
    '#easy_email' => $easy_email,
  ];
  if ($attachments = $easy_email
    ->getAttachments()) {
    foreach ($attachments as $i => $attachment) {
      $attachments[$i] = Link::fromTextAndUrl($attachment
        ->getFilename(), Url::fromUri(file_create_url($attachment
        ->getFileUri()), [
        'attributes' => [
          'target' => '_blank',
        ],
      ]));
    }
  }
  if (!empty($attachments)) {
    $variables['attachments'] = [
      '#theme' => 'item_list',
      '#items' => $attachments,
    ];
  }
}