mailer = $mailer; $this->subscriber = $subscriber; } /** * Handle the event. * * @param \CachetHQ\Cachet\Bus\Events\Incident\IncidentHasReportedEvent $event * * @return void */ public function handle(IncidentWasReportedEvent $event) { if (!$event->incident->notify) { return false; } $incident = AutoPresenter::decorate($event->incident); $component = AutoPresenter::decorate($event->incident->component); // Only send emails for public incidents. if ($event->incident->visible === 1) { foreach ($this->subscriber->isVerified()->get() as $subscriber) { $mail = [ 'email' => $subscriber->email, 'subject' => 'New incident reported.', 'has_component' => ($event->incident->component) ? true : false, 'component_name' => $component ? $component->name : null, 'status' => $incident->human_status, 'html_content' => $incident->formattedMessage, 'text_content' => $incident->message, 'token' => $subscriber->token, 'manage_link' => route('subscribe.manage', ['code' => $subscriber->verify_code]), 'unsubscribe_link' => route('subscribe.unsubscribe', ['code' => $subscriber->verify_code]), ]; $this->mailer->queue([ 'html' => 'emails.incidents.new-html', 'text' => 'emails.incidents.new-text', ], $mail, function (Message $message) use ($mail) { $message->to($mail['email'])->subject($mail['subject']); }); } } } }