Source of file EmailMessagingService.php
Size: 2,813 Bytes - Last Modified: 2021-12-23T10:29:15+00:00
/var/www/docs.ssmods.com/process/src/code/control/EmailMessagingService.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 | <?php /** * @package deploynaut * @subpackage control */ class EmailMessagingService implements ConfirmationMessagingService { /** * @config * @var string */ private static $default_from = 'deploynaut@silverstripe.com'; /** * @config * @var string */ private static $default_subject = 'Deploynaut notification'; public function sendMessage($source, $message, $recipients, $arguments = array()) { $from = empty($arguments['from']) ? Config::inst()->get(get_class($this), 'default_from') : $arguments['from']; $subject = empty($arguments['subject']) ? Config::inst()->get(get_class($this), 'default_subject') : $arguments['subject']; // Split users and send individually $this->sendIndividualMessages($source, $message, $recipients, $from, $subject); } /** * Separates recipients into individual users * * @param PipelineStep $source Source client step * @param string $message Plain text message * @param mixed $recipients Either a Member object, string, or array of strings or Member objects * @param string $from * @param string $subject * @return boolean True if success */ protected function sendIndividualMessages($source, $message, $recipients, $from, $subject) { // Split recipients that are comma separated if(is_string($recipients) && stripos($recipients, ',')) { $recipients = explode(',', $recipients); return $this->sendIndividualMessages($source, $message, $recipients, $from, $subject); } // Iterate through arrays if(is_array($recipients) || $recipients instanceof SS_List) { foreach($recipients as $recipient) { $this->sendIndividualMessages($source, $message, $recipient, $from, $subject); } return true; } if($recipients) { $this->sendMessageTo($source, $from, $recipients, $subject, $message); return true; } // Can't send to empty recipient return false; } /** * Send an message to a single recipient * * @param PipelineStep $source Client step * @param string $from * @param string|Member $to * @param string $subject * @param string $body */ protected function sendMessageTo($source, $from, $to, $subject, $body) { if($to instanceof Member) $to = $to->Email; $this->sendViaEmail($source, $from, $to, $subject, $body); } /** * Send an email to a single recipient * * @param PipelineStep $source Client step * @param string $from * @param string|Member $to * @param string $subject * @param string $body */ protected function sendViaEmail($source, $from, $to, $subject, $body) { $email = new Email($from, $to, $subject, $body); if($source->getDryRun()) { $source->log("[Skipped] Sent message to $to (subject: $subject)"); } else { $email->sendPlain(); $source->log("Sent message to $to (subject: $subject)"); } } } |