MailSafetyController.php in Mail Safety 8
File
src/Controller/MailSafetyController.php
View source
<?php
namespace Drupal\mail_safety\Controller;
class MailSafetyController {
public function view($mail_safety) {
$system = $this
->getMailSystem($mail_safety['mail']);
$mail_safety['mail'] = $system
->format($mail_safety['mail']);
return [
'#theme' => 'mail_safety_mail',
'#mail' => $mail_safety['mail'],
];
}
public function details($mail_safety) {
return [
'#theme' => 'mail_safety_details',
'#mail' => $mail_safety['mail'],
'#details' => print_r($mail_safety['mail'], TRUE),
];
}
public static function load($mail_id = NULL) {
$mails = [];
$connection = \Drupal::database();
$query = $connection
->select('mail_safety_dashboard', 'msd');
$query
->fields('msd', [
'mail_id',
'sent',
'mail',
]);
if (!is_null($mail_id)) {
$query
->condition('mail_id', $mail_id);
}
$query
->orderBy('sent', 'DESC');
$result = $query
->execute();
while ($row = $result
->fetchAssoc()) {
$mails[$row['mail_id']] = [
'mail' => unserialize($row['mail']),
'sent' => $row['sent'],
'mail_id' => $row['mail_id'],
];
}
$modules = \Drupal::moduleHandler()
->getImplementations('mail_safety_load');
foreach ($mails as $key => $mail) {
foreach ($modules as $module) {
$mail['mail'] = \Drupal::moduleHandler()
->invoke($module, 'mail_safety_load', $mail['mail']);
}
$mails[$key] = $mail;
}
if (!is_null($mail_id) && !empty($mails[$mail_id])) {
return $mails[$mail_id];
}
elseif (!empty($mails)) {
return $mails;
}
return $mails;
}
public static function delete($mail_id) {
$connection = \Drupal::database();
$connection
->delete('mail_safety_dashboard')
->condition('mail_id', $mail_id)
->execute();
}
public static function insert(array $message) {
\Drupal::moduleHandler()
->alter('mail_safety_pre_insert', $message);
$mail = [
'sent' => time(),
'mail' => serialize($message),
];
$connection = \Drupal::database();
$connection
->insert('mail_safety_dashboard')
->fields($mail)
->execute();
}
public static function getMailSystem(array $mail) {
$mail_manager = \Drupal::service('plugin.manager.mail');
return $mail_manager
->getInstance([
'module' => $mail['module'],
'key' => $mail['key'],
]);
}
}