/** * @param SS_HTTPRequest $r */ public function emailattendees(SS_HTTPRequest $r) { $startTime = microtime(true); $summit = Summit::get_most_recent(); $confirm = $r->getVar('confirm'); $limit = $r->getVar('limit'); $attendees = $summit->Attendees(); $totalBeforeLimit = $attendees->count(); $chunkSize = 100; $offset = 0; $appliedLimit = $confirm ? $chunkSize : ($limit ?: 50); $attendees = $attendees->limit($appliedLimit); while ($offset < $totalBeforeLimit) { echo "----- new chunk ({$offset}) ----" . $this->br(); foreach ($attendees->limit($chunkSize, $offset) as $attendee) { if (!EmailValidator::validEmail($attendee->Member()->Email)) { echo $attendee->Member()->Email . " is not a valid email. Skipping" . $this->br(); continue; } $to = $attendee->Member()->Email; $subject = "Rate OpenStack Summit sessions from {$summit->Title}"; $email = EmailFactory::getInstance()->buildEmail('*****@*****.**', $to, $subject); $email->setUserTemplate("rate-summit-sessions-austin"); $email->populateTemplate(['Name' => $attendee->Member()->FirstName]); if ($confirm) { $email->send(); } else { //echo $email->debug(); } echo 'Email sent to ' . $to . ' (' . $attendee->Member()->getName() . ')' . $this->br(); } echo "---- end chunk ({$offset}) ----" . $this->br(); $offset += $chunkSize; } echo $this->br(3) . "Sent a sample of {$appliedLimit} emails out of {$totalBeforeLimit} total" . $this->br(); $endTime = microtime(true); echo "Elapsed time: " . $endTime - $startTime . $this->br(); }
function ThankYou() { $survey = $this->GetCurrentSurvey(); Requirements::javascript('surveys/js/deployment_survey_thankyou_form.js'); if ($survey->BeenEmailed != TRUE && EmailValidator::validEmail($survey->Member()->Email)) { //Send email to submitter $To = $survey->Member()->Email; $Subject = "The OpenStack User Survey: Thank You!"; $email = EmailFactory::getInstance()->buildEmail(DEPLOYMENT_SURVEY_THANK_U_FROM_EMAIL, $To, $Subject); $email->setTemplate('DeploymentSurveyEmail'); $email->populateTemplate($survey); $email->send(); // Set flag in DB that this user has been emailed $survey->BeenEmailed = TRUE; $survey->UpdateDate = SS_Datetime::now()->Rfc2822(); $survey->write(); } return array(); }