in synergy/server/controller/RunNotificationCtrl.php [104:164]
public function sendNotifications($testRunId) {
if (!$this->emailsEnabled) {
return 0;
}
$processed = array();
$meta = $this->getRunEndDateAndNotificationLimit($testRunId);
$deadline = $meta[0];
date_default_timezone_set('UTC');
$now = time();
$runEnd = strtotime($deadline);
$daysLeft = round(($runEnd - $now ) / (60 * 60 * 24));
if (round(($runEnd - $now ) / (60 * 60)) > ($meta[1] * 24) || $daysLeft < 0 || $meta[1] < 0) {
return 0;
}
$allAssignmentsIds = array();
$allReviewsIds = array();
$assignments = $this->getUnfinishedAssignmentsWONotif($testRunId);
$reviewCtrl = new ReviewCtrl();
$reviews = $reviewCtrl->getAssignments($testRunId);
foreach ($assignments as $assignment) {
if (!array_key_exists($assignment->username, $processed)) {
$n = new RunNotification($assignment->username, $assignment->runTitle, $testRunId);
$n->email = $assignment->getEmail();
$processed[$n->username] = $n;
}
$n->addAssignment($assignment);
array_push($allAssignmentsIds, $assignment->id);
}
foreach ($reviews as $review) {
if (!array_key_exists($review->username, $processed)) {
$n = new RunNotification($review->username, $review->runTitle, $testRunId);
$n->email = $review->getEmail();
$processed[$n->username] = $n;
}
$n->addReview($review);
array_push($allReviewsIds, $review->id);
}
$notified = 0;
$ctrl = new UserCtrl();
foreach ($processed as $user) {
if ($ctrl->getUser($user->username)->emailNotifications) {
$body = ($this->emailProvider->useHTML) ? $user->getEmailBodyHTML($daysLeft, $deadline) : $user->getEmailBody($daysLeft, $deadline);
if (!is_null($user->email) && strlen($user->email) > 0) {
$this->emailProvider->send($this->emailProvider->compose($body, $user->getEmailSubject($daysLeft), $user->email));
} else {
$this->emailProvider->send($this->emailProvider->compose($body, $user->getEmailSubject($daysLeft), $user->username . "@" . DOMAIN));
}
$notified++;
}
}
$this->markAssignmentsNotified($allAssignmentsIds);
return $notified;
}