function monitoring_mail_monitoring_run_sensors in Monitoring 8
Implements hook_monitoring_run_sensors().
File
- modules/
monitoring_mail/ monitoring_mail.module, line 74 - Monitoring Mail bootstrap file.
Code
function monitoring_mail_monitoring_run_sensors(array $results) {
// Check configured mail recipient.
$config = \Drupal::config('monitoring_mail.settings');
$recipient = $config
->get('mail');
$severities = $config
->get('severities');
// Skip if no recipient is defined.
if (!$recipient) {
return;
}
// Send a mail if a status change has been detected.
/** @var \Drupal\monitoring\Result\SensorResultInterface $result */
foreach ($results as $result) {
// @todo Make mail configurable per sensor.
// Cached result can not be different that the last result.
if ($result
->isCached()) {
continue;
}
// Try to load the previous log result for this sensor.
$status_old = SensorResultInterface::STATUS_UNKNOWN;
if ($previous_result = $result
->getPreviousResult()) {
$status_old = $previous_result
->getStatus();
}
$status_new = $result
->getStatus();
if (monitoring_mail_needs_mail($result, $severities, $status_old, $status_new)) {
// Prepare mail contexts.
$params = [
'result' => $result,
'sensor_config' => $result
->getSensorConfig(),
'status_old' => $status_old,
'status_new' => $status_new,
];
// Trigger result transition mail.
$mail_manager = \Drupal::service('plugin.manager.mail');
$mail_manager
->mail('monitoring_mail', 'sensor_notification', $recipient, \Drupal::languageManager()
->getDefaultLanguage()
->getId(), $params);
}
}
}