/**
  * Creates an email instance from a registration object.
  *
  * @param  EventRegistration $registration
  * @return EventRegistrationDetailsEmail
  */
 public static function factory(EventRegistration $registration)
 {
     $email = new self();
     $siteconfig = SiteConfig::current_site_config();
     $email->setTo($registration->Email);
     $email->setSubject(sprintf('Registration Details For %s (%s)', $registration->Time()->EventTitle(), $siteconfig->Title));
     $email->populateTemplate(array('Registration' => $registration, 'SiteConfig' => $siteconfig));
     if ($generator = $registration->Time()->Event()->TicketGenerator) {
         $generator = new $generator();
         $path = $generator->generateTicketFileFor($registration);
         $name = $generator->getTicketFilenameFor($registration);
         $mime = $generator->getTicketMimeTypeFor($registration);
         if ($path) {
             $email->attachFile($path, $name, $mime);
         }
     }
     singleton(get_class())->extend('updateEmail', $email, $registration);
     return $email;
 }