Determine if notifications are suppressed when handeling events

This commit is contained in:
Nico Stapelbroek
2018-01-21 13:05:46 +01:00
parent f53f88f950
commit e358332048
5 changed files with 15 additions and 25 deletions

View File

@@ -55,15 +55,10 @@ class SendComponentUpdateEmailNotificationHandler
*/
public function handle(ComponentStatusWasChangedEvent $event)
{
// Don't send component status updates if we're under maintenance.
if ($this->system->underMaintenance()) {
return false;
}
$component = $event->component;
// If we're silent, then don't send this.
if ($event->silent) {
// If we're silent or the notifications are suppressed don't send this.
if ($event->silent || !$this->system->canNotifySubscribers()) {
return;
}

View File

@@ -55,14 +55,9 @@ class SendIncidentEmailNotificationHandler
*/
public function handle(IncidentWasCreatedEvent $event)
{
// Don't send incident updates if we're under maintenance.
if ($this->system->underMaintenance()) {
return false;
}
$incident = $event->incident;
if (!$event->notify) {
if (!$event->notify || !$this->system->canNotifySubscribers()) {
return false;
}

View File

@@ -55,16 +55,11 @@ class SendIncidentUpdateEmailNotificationHandler
*/
public function handle(IncidentUpdateWasReportedEvent $event)
{
// Don't send incident updates if we're under maintenance.
if ($this->system->underMaintenance()) {
return false;
}
$update = $event->update;
$incident = $update->incident;
// Only send emails for public incidents.
if (!$incident->visible) {
// Only send emails for public incidents while the system is not under scheduled maintenance.
if (!$incident->visible || !$this->system->canNotifySubscribers()) {
return;
}

View File

@@ -26,11 +26,11 @@ interface System
public function getStatus();
/**
* Determine if Cachet has any open maintenance windows.
* Determine if Cachet is allowed to send notifications to users, subscribers or third party tools.
*
* @return bool
*/
public function underMaintenance();
public function canNotifySubscribers();
/**
* Get the cachet version.

View File

@@ -104,13 +104,18 @@ class System implements SystemContract
}
/**
* Determine if Cachet has any open maintenance windows.
* Determine if Cachet is allowed to send notifications to users, subscribers or third party tools.
*
* @return bool
*/
public function underMaintenance()
public function canNotifySubscribers()
{
return Schedule::inProgress()->count() > 0;
$maintenancePeriods = Schedule::inProgress()->count();
if ($maintenancePeriods === 0) {
return true;
}
return !$this->config->get('suppress_notifications_in_maintenance');
}
/**