Source of file EventReminderEmailJob.php
Size: 1,880 Bytes - Last Modified: 2022-02-21T10:00:53+00:00
/var/www/docs.ssmods.com/process/src/code/jobs/EventReminderEmailJob.php
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 | <?php /** * Sends out a reminder email to all people registered to attent an event. * * @package silverstripe-eventmanagement */ class EventReminderEmailJob extends AbstractQueuedJob { public function __construct($datetime = null) { if ($datetime) { $this->datetimeID = $datetime->ID; $registrations = $datetime->Registrations('"Status" = \'Valid\''); $this->emails = $registrations->map('Email', 'Name'); $this->totalSteps = count($this->emails); } } public function getTitle() { return 'Event Registration Reminder Email Job'; } /** * @return RegistrableDateTime */ public function getDatetime() { return DataObject::get_by_id('RegisterbleDateTime', $this->datetimeID); } public function setup() { parent::setup(); $datetime = $this->getDatetime(); $registrations = $datetime->Registrations('"Status" = \'Valid\''); $this->emails = $registrations->map('Email', 'Name'); $this->totalSteps = count($this->emails); } public function process() { $config = SiteConfig::current_site_config(); $datetime = $this->getDatetime(); $emails = $this->emails; if (!count($emails)) { $this->isComplete = true; return; } $email = new Email(); $email->setSubject(sprintf( _t('EventManagement.EVENTREMINDERSUBJECT', 'Event Reminder For %s (%s)'), $datetime->EventTitle(), $config->Title )); $email->setTemplate('EventReminderEmail'); $email->populateTemplate(array( 'SiteConfig' => $config, 'Datetime' => $datetime )); foreach ($emails as $addr => $name) { $_email = clone $email; $_email->setTo($addr); $_email->populateTemplate(array('Name' => $name)); $_email->send(); unset($emails[$addr]); $this->emails = $emails; ++$this->currentStep; } if (!count($emails)) { $this->isComplete = true; } } } |