mail_safety.api.php in Mail Safety 8
Same filename and directory in other branches
Hooks provided by the Mail Safety module.
File
mail_safety.api.phpView source
<?php
/**
* @file
* Hooks provided by the Mail Safety module.
*/
/**
* Respond to a mail being inserted to the dashboard.
*
* @param array $message
* The message array.
*
* @return array
* Return the message array after any changes.
*/
function hook_mail_safety_pre_insert(array $message) {
// Check to see if there are attachments.
if (!empty($message['params']['attachments'])) {
// Loop through the attachments and save the files.
foreach ($message['params']['attachments'] as $key => $attachment) {
$file = file_save_data($attachment['content'], 'public://' . time() . '-' . $attachment['filename']);
$message['attachments'][$key] = $file;
}
// Remove the attachments from the e-mail.
unset($message['params']['attachments']);
}
return $message;
}
/**
* Respond to a mail being loaded.
*
* @param array $message
* The message array.
*
* @return array
* Return the message array after any changes.
*/
function hook_mail_safety_load(array $message) {
if (!empty($message['attachments'])) {
$message['has_attachments'] = TRUE;
}
return $message;
}
/**
* Respond to a mail before it is being send.
*
* @param array $message
* The message array.
*
* @return array
* Return the message array after any changes.
*/
function hook_mail_safety_pre_send(array $message) {
// Loop through the attachments in a message.
foreach ($message['attachments'] as $key => $attachment) {
// Return the attachment to the e-mail to send it again.
$message['params']['attachments'][$key] = [
'content' => file_get_contents($attachment->uri),
'mime' => $attachment->filemime,
'filename' => $attachment->filename,
];
}
return $message;
}
/**
* Alter the table structure of the mail safety dashboard.
*
* @param array $table_structure
* The table structure that will be rendered as table.
*/
function hook_mail_safety_table_structure_alter(array $table_structure) {
// Add a new column.
$table_structure['header'][] = [
'data' => t('Files'),
];
// Loop through the mails to add the attachments in the table.
foreach ($table_structure['rows'] as $mail_id => $row) {
$mail = mail_safety_load($mail_id);
if (!empty($mail['mail']['attachments'])) {
$attachments = [];
foreach ($mail['mail']['attachments'] as $attachment) {
$attachments[] = [
'#theme' => 'file_link',
'#file' => $attachment,
];
}
}
$table_structure['rows'][$mail_id]['data'][] = $attachments;
}
return $table_structure;
}
Functions
Name | Description |
---|---|
hook_mail_safety_load | Respond to a mail being loaded. |
hook_mail_safety_pre_insert | Respond to a mail being inserted to the dashboard. |
hook_mail_safety_pre_send | Respond to a mail before it is being send. |
hook_mail_safety_table_structure_alter | Alter the table structure of the mail safety dashboard. |