pet.module in Previewable email templates 8.3
Same filename and directory in other branches
Previewable Email Template module.
File
pet.moduleView source
<?php
/**
* @file
* Previewable Email Template module.
*/
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\pet\Utility\PetHelper;
/**
* Implements hook_hook_info().
*/
function pet_hook_info() {
$hooks = [
'pet_substitutions_alter',
];
$info = [
'group' => 'pet',
];
return array_fill_keys($hooks, $info);
}
/**
* Implements hook_mail().
*
* To customize, e.g. to change the content type to text/html etc,
* you can use hook_mail_alter() in one of your modules.
*
* @see https://api.drupal.org/api/drupal/core%21core.api.php/function/hook_mail/8.3.x
* @see https://api.drupal.org/api/drupal/core%21core.api.php/function/hook_mail_alter/8.3.x
*/
function pet_mail($key, &$message, $params) {
/** @var \Drupal\pet\Entity\PetInterface $pet */
$pet = $params['pet'];
$context = $params['context'];
$substitutions = PetHelper::getSubstitutions($context);
$token = \Drupal::token();
if ($cc = $pet
->getCc()) {
$message['headers']['Cc'] = $cc;
}
if ($bcc = $pet
->getBcc()) {
$message['headers']['Bcc'] = $bcc;
}
// Make sure the 'From' header uses the site name in pet's language.
$language_manager = \Drupal::service('language_manager');
$langcode = $pet
->get('langcode')
->getValue()[0]['value'];
$language = $language_manager
->getLanguage($langcode);
$original_language = $language_manager
->getConfigOverrideLanguage();
$language_manager
->setConfigOverrideLanguage($language);
$site_config = \Drupal::config('system.site');
$site_mail = $site_config
->get('mail');
$message['headers']['From'] = $site_config
->get('name') . ' <' . $site_mail . '>';
$language_manager
->setConfigOverrideLanguage($original_language);
// Set subject and body.
$message['subject'] = $token
->replace($pet
->getSubject(), $substitutions, [
'clear' => TRUE,
]);
// MimeMail integration.
if (PetHelper::hasMimeMail()) {
$message['body'][] = $token
->replace($pet
->getBodyHtml(), $substitutions, [
'clear' => TRUE,
]);
$mail_body = trim($pet
->getBody());
if ($mail_body) {
$message['params']['plaintext'] = $token
->replace($mail_body, $substitutions, [
'clear' => TRUE,
]);
}
$message['params']['plain'] = $pet
->getSendPlain();
}
else {
$message['body'][] = $token
->replace($pet
->getBody(), $substitutions, [
'clear' => TRUE,
]);
}
}
/*
* Helper functions.
*/
/**
* Token help for template construction form and template use form.
*/
function pet_token_help() {
if (\Drupal::moduleHandler()
->moduleExists('token')) {
$tokens = [
'#title' => new TranslatableMarkup('Replacement patterns'),
'#type' => 'details',
'#open' => TRUE,
'#description' => new TranslatableMarkup('Make sure that the tokens you choose are available to your template when previewed. The list below includes the standard Nodes and Users, as well as global tokens.'),
];
$tokens['token_tree'] = [
'#theme' => 'token_tree_link',
'#token_types' => [
'node',
'user',
],
];
}
else {
$tokens = [
'#markup' => '<p>' . new TranslatableMarkup('Enable the <a href="@token" target="_blank">Token module</a> to view the available token browser.', [
'@token' => '/admin/modules#module-token',
]) . '</p>',
];
}
return $tokens;
}
/**
* Implements hook_local_tasks_alter().
*/
function pet_local_tasks_alter(&$local_tasks) {
// Remove additional 'Revisions' tab added by entity module.
if (isset($local_tasks['entity.revisions_overview:pet'])) {
unset($local_tasks['entity.revisions_overview:pet']);
}
}
Functions
Name | Description |
---|---|
pet_hook_info | Implements hook_hook_info(). |
pet_local_tasks_alter | Implements hook_local_tasks_alter(). |
pet_mail | Implements hook_mail(). |
pet_token_help | Token help for template construction form and template use form. |