/** * @param mixed $subject * @throws Exception */ public function send($subject) { if (!is_array($subject)) { return; } if (!isset($subject['Summit']) || !isset($subject['Speaker']) || !isset($subject['PromoCode'])) { return; } $summit = $subject['Summit']; $speaker = $subject['Speaker']; $role = $subject['Role']; $promo_code = $subject['PromoCode']; if (!$speaker instanceof IPresentationSpeaker) { return; } if (!$summit instanceof ISummit) { return; } if (!$promo_code instanceof SpeakerSummitRegistrationPromoCode) { return; } $email = PermamailTemplate::get()->filter('Identifier', PRESENTATION_SPEAKER_ALTERNATE_ONLY_EMAIL)->first(); if (is_null($email)) { throw new Exception(sprintf('Email Template %s does not exists on DB!', PRESENTATION_SPEAKER_ALTERNATE_ONLY_EMAIL)); } $speaker->registerAnnouncementEmailTypeSent(IPresentationSpeaker::AnnouncementEmailAlternate, $summit->ID); $email = EmailFactory::getInstance()->buildEmail(PRESENTATION_SPEAKER_NOTIFICATION_ACCEPTANCE_EMAIL_FROM, $speaker->getEmail()); $schedule_page = SummitAppSchedPage::getBy($summit); if (is_null($schedule_page)) { throw new Exception('Summit Schedule page does not exists!'); } $email->setUserTemplate(PRESENTATION_SPEAKER_ALTERNATE_ONLY_EMAIL)->populateTemplate(array('Speaker' => $speaker, 'Role' => $role, 'ConfirmationLink' => $speaker->getSpeakerConfirmationLink($summit->ID), 'PromoCode' => $promo_code->getCode(), 'Summit' => $summit, 'ScheduleMainPageLink' => $schedule_page->getAbsoluteLiveLink(false)))->send(); }