From 7b8ebd86c7f6047e4a44a9f6bb616cb60f5a7a0f Mon Sep 17 00:00:00 2001
From: Jared Hancock <jared@osticket.com>
Date: Wed, 14 May 2014 12:33:12 -0500
Subject: [PATCH] Implement "Disable alerts" setting for departments

---
 include/class.dept.php   | 10 ++++++++++
 include/class.ticket.php |  8 ++++----
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/include/class.dept.php b/include/class.dept.php
index 1ec4116fb..5a7363a93 100644
--- a/include/class.dept.php
+++ b/include/class.dept.php
@@ -141,6 +141,16 @@ class Dept {
         return $this->getMembers(array('available'=>1));
     }
 
+    function getMembersForAlerts() {
+        if ($this->isGroupMembershipEnabled() == 2) {
+            // Disabled for this department
+            $rv = array();
+        }
+        else {
+            $rv = $this->getAvailableMembers();
+        }
+        return $rv;
+    }
 
     function getSLAId() {
         return $this->ht['sla_id'];
diff --git a/include/class.ticket.php b/include/class.ticket.php
index 4b708707f..27e293523 100644
--- a/include/class.ticket.php
+++ b/include/class.ticket.php
@@ -938,7 +938,7 @@ class Ticket {
 
             //Only alerts dept members if the ticket is NOT assigned.
             if($cfg->alertDeptMembersONNewTicket() && !$this->isAssigned()) {
-                if(($members=$dept->getMembers()))
+                if(($members=$dept->getMembersForAlerts()))
                     $recipients=array_merge($recipients, $members);
             }
 
@@ -1211,8 +1211,8 @@ class Ticket {
                     $recipients=array_merge($recipients, $members);
             } elseif($cfg->alertDeptMembersONOverdueTicket() && !$this->isAssigned()) {
                 //Only alerts dept members if the ticket is NOT assigned.
-                if(($members=$dept->getMembers()))
-                    $recipients=array_merge($recipients, $members);
+                if ($members = $dept->getMembersForAlerts())
+                    $recipients = array_merge($recipients, $members);
             }
             //Always alert dept manager??
             if($cfg->alertDeptManagerONOverdueTicket() && $dept && ($manager=$dept->getManager()))
@@ -1409,7 +1409,7 @@ class Ticket {
                     $recipients = array_merge($recipients, $members);
             } elseif($cfg->alertDeptMembersONTransfer() && !$this->isAssigned()) {
                 //Only alerts dept members if the ticket is NOT assigned.
-                if(($members=$dept->getMembers()))
+                if(($members=$dept->getMembersForAlerts()))
                     $recipients = array_merge($recipients, $members);
             }
 
-- 
GitLab