Index: assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/BaseAssignmentService.java =================================================================== --- assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/BaseAssignmentService.java (revision 115004) +++ assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/BaseAssignmentService.java (working copy) @@ -32,6 +32,7 @@ import java.util.Collection; import java.util.Comparator; import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Locale; @@ -2406,23 +2407,40 @@ } // commitEdit(Submission) - protected void sendGradeReleaseNotification(boolean released, String notificationSetting, User[] submitters, AssignmentSubmission s) + protected void sendGradeReleaseNotification(boolean released, String notificationSetting, User[] allSubmitters, AssignmentSubmission s) { + if (allSubmitters == null) return; + + // SAK-19916 need to filter submitters against list of valid users still in site + Set filteredSubmitters = new HashSet(); + try { + String siteId = s.getAssignment().getContext(); + Set siteUsers = SiteService.getSite(siteId).getUsers(); + + for (int x = 0; x < allSubmitters.length; x++) + { + User u = (User) allSubmitters[x]; + String userId = u.getEid(); + if (siteUsers.contains(userId)) { + filteredSubmitters.add(u); + } + } + } catch (IdUnusedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + User[] submitters = new User[filteredSubmitters.size()]; + filteredSubmitters.toArray(submitters); + if (released && notificationSetting != null && notificationSetting.equals(Assignment.ASSIGNMENT_RELEASEGRADE_NOTIFICATION_EACH)) { - // send email to every submitters - if (submitters != null) - { // send the message immidiately EmailService.sendToUsers(new ArrayList(Arrays.asList(submitters)), getHeaders(null, "releasegrade"), getNotificationMessage(s, "releasegrade")); - } } if (notificationSetting != null && notificationSetting.equals(Assignment.ASSIGNMENT_RELEASERESUBMISSION_NOTIFICATION_EACH)){ - // send email to every submitters - if (submitters != null){ // send the message immidiately EmailService.sendToUsers(new ArrayList(Arrays.asList(submitters)), getHeaders(null, "releaseresumbission"), getNotificationMessage(s, "releaseresumbission")); - } } }