/** * NotifyOwner * This will notify the list owner(s) of job runs. * This will send the appropriate message depending on the state of the job. * If the job is not set to notify the owner, this does nothing. * * @see emailssent * @see jobdetails * @see jobstatus * @see Email_API::ForgetEmail * @see GetUser * @see Email_API::Set * @see Email_API::Subject * @see Email_API::FromName * @see Email_API::FromAddress * @see Email_API::Multipart * @see Email_API::AddBody * @see Email_API::ClearAttachments * @see Email_API::ClearRecipients * @see Email_API::AddRecipient * @see Email_API::Send * @see Sendstudio_Functions::PrintTime * @see Sendstudio_Functions::FormatNumber * * @return Void Doesn't return anything. */ function NotifyOwner() { if (empty($this->jobdetails)) { return; } if (!$this->jobdetails['NotifyOwner']) { return; } if (is_null($this->jobstatus)) { return; } /** * If test mode is enabled, no point doing anything else. */ if (SENDSTUDIO_SEND_TEST_MODE) { return; } if (!class_exists('SS_Email_API', false)) { require_once SENDSTUDIO_API_DIRECTORY . DIRECTORY_SEPARATOR . 'ss_email.php'; } $notify_email = new SS_Email_API; $owner = GetUser($this->jobowner); // Check if each user have SMTP settings specified. // Otherwise use the global SMTP settings. if ($owner->smtpserver) { $notify_email->SetSmtp($owner->smtpserver, $owner->smtpusername, $owner->smtppassword, $owner->smtpport); } else { $notify_email->SetSmtp(SENDSTUDIO_SMTP_SERVER, SENDSTUDIO_SMTP_USERNAME, @base64_decode(SENDSTUDIO_SMTP_PASSWORD), SENDSTUDIO_SMTP_PORT); } $time = $this->sendstudio_functions->PrintTime(); /** * If the notify email subject or message are empty, create them. * This is mainly for backwards compatibility so the jobs_send.php file didn't need to be changed too much. */ if ($this->notify_email['subject'] == '' || $this->notify_email['message'] == '') { switch ($this->jobstatus) { case 'c': $subject = sprintf(GetLang('Job_Subject_Complete'), $this->newsletter['Subject']); if ($this->emailssent == 1) { $message = sprintf(GetLang('Job_Message_Complete_One'), $this->newsletter['Subject'], $time); } else { $message = sprintf(GetLang('Job_Message_Complete_Many'), $this->newsletter['Subject'], $time, $this->sendstudio_functions->FormatNumber($this->emailssent)); } break; case 'p': $subject = sprintf(GetLang('Job_Subject_Paused'), $this->newsletter['Subject']); if ($this->emailssent == 1) { $message = sprintf(GetLang('Job_Message_Paused_One'), $this->newsletter['Subject'], $time); } else { $message = sprintf(GetLang('Job_Message_Paused_Many'), $this->newsletter['Subject'], $time, $this->sendstudio_functions->FormatNumber($this->emailssent)); } break; default: $subject = sprintf(GetLang('Job_Subject_Started'), $this->newsletter['Subject']); $message = sprintf(GetLang('Job_Message_Started'), $this->newsletter['Subject'], $time); } $this->notify_email = array ( 'subject' => $subject, 'message' => $message ); } $subject = $this->notify_email['subject']; $message = $this->notify_email['message']; $notify_email->Set('Subject', $subject); $notify_email->Set('CharSet', SENDSTUDIO_CHARSET); if ($owner->fullname) { $notify_email->Set('FromName', $owner->fullname); } else { $notify_email->Set('FromName', GetLang('SendingSystem')); } if ($owner->emailaddress) { $notify_email->Set('FromAddress', $owner->emailaddress); } else { $notify_email->Set('FromAddress', GetLang('SendingSystem_From')); } $notify_email->Set('Multipart', false); $notify_email->AddBody('text', $message); $query = "SELECT listid, ownername, owneremail FROM " . SENDSTUDIO_TABLEPREFIX . "lists WHERE listid IN(" . implode(',', $this->jobdetails['Lists']) . ")"; $result = $this->Db->Query($query); while ($row = $this->Db->Fetch($result)) { $notify_email->AddRecipient($row['owneremail'], $row['ownername'], 't'); } $notify_email->Send(); $notify_email->ForgetEmail(); unset($notify_email); $this->notify_email['subject'] = ''; $this->notify_email['message'] = ''; }