public function doInvite($data, Form $form) { $data = $form->getData(); $emails = $data['Emails']['new']; $sent = new DataObjectSet(); if (!$emails) { $form->addErrorMessage('Emails', 'Please enter at least one person to invite.'); } $time = DataObject::get_by_id('RegisterableDateTime', $data['TimeID']); $invite = new Email(); $invite->setSubject(sprintf('Event Invitation For %s (%s)', $time->EventTitle(), SiteConfig::current_site_config()->Title)); $invite->setTemplate('EventInvitationEmail'); $invite->populateTemplate(array('Time' => $time, 'SiteConfig' => SiteConfig::current_site_config(), 'Link' => Director::absoluteURL($time->Link()))); $count = count($emails['Name']); for ($i = 0; $i < $count; $i++) { $name = trim($emails['Name'][$i]); $email = trim($emails['Email'][$i]); if (!$name || !$email) { continue; } $regod = DataObject::get_one('EventRegistration', sprintf('"Email" = \'%s\' AND "TimeID" = \'%d\'', Convert::raw2sql($email), $time->ID)); if ($regod) { $sent->push(new ArrayData(array('Name' => $name, 'Email' => $email, 'Sent' => false, 'Reason' => 'Already registered'))); continue; } $invited = DataObject::get_one('EventInvitation', sprintf('"Email" = \'%s\' AND "TimeID" = \'%d\'', Convert::raw2sql($email), $time->ID)); if ($invited) { $sent->push(new ArrayData(array('Name' => $name, 'Email' => $email, 'Sent' => false, 'Reason' => 'Already invited'))); continue; } $invitation = new EventInvitation(); $invitation->Name = $name; $invitation->Email = $email; $invitation->TimeID = $time->ID; $invitation->EventID = $time->EventID; $invitation->write(); $_invite = clone $invite; $_invite->setTo($email); $_invite->populateTemplate(array('Name' => $name)); $_invite->send(); $sent->push(new ArrayData(array('Name' => $name, 'Email' => $email, 'Sent' => true))); } Requirements::clear(); $controller = $this->customise(array('Result' => $sent)); return $controller->renderWith('EventInvitationField_invite'); }