protected function getInstance($record, CsvImportProfile $profile)
 {
     $fields = $profile->getSortedFields();
     if (isset($fields['NewsletterSubscriber']['ID'])) {
         $instance = ActiveRecordModel::getInstanceByID('NewsletterSubscriber', $record[$fields['NewsletterSubscriber']['ID']], true);
     } else {
         if (isset($fields['NewsletterSubscriber']['email'])) {
             $instance = NewsletterSubscriber::getInstanceByEmail($record[$fields['NewsletterSubscriber']['email']]);
         } else {
             return;
         }
     }
     if (empty($instance)) {
         $instance = NewsletterSubscriber::getNewInstanceByEmail($record[$fields['NewsletterSubscriber']['email']]);
     }
     $this->setLastImportedRecordName($instance->email->get());
     return $instance;
 }
示例#2
0
 public function subscribe()
 {
     $email = $this->request->get('email');
     if (!$this->user->isAnonymous() || User::getInstanceByEmail($email)) {
         return new ActionRedirectResponse('newsletter', 'alreadySubscribed');
     }
     $validator = $this->getSubscribeValidator();
     if (!$validator->isValid()) {
         return new ActionRedirectResponse('index', 'index');
     }
     $instance = NewsletterSubscriber::getInstanceByEmail($email);
     if (!$instance) {
         $instance = NewsletterSubscriber::getNewInstanceByEmail($email);
     }
     $instance->save();
     $mail = new Email($this->application);
     $mail->setTo($email);
     $mail->setTemplate('newsletter/confirm');
     $mail->set('subscriber', $instance->toArray());
     $mail->set('email', $email);
     $mail->send();
     return new ActionResponse('subscriber', $instance->toArray());
 }
示例#3
0
 public function getNextNewsletterSubscriber()
 {
     if (!($data = $this->loadRecord('SELECT * FROM ' . $this->getTablePrefix() . 'subscribers LEFT JOIN ' . $this->getTablePrefix() . 'customers ON ' . $this->getTablePrefix() . 'customers.customerID=' . $this->getTablePrefix() . 'subscribers.customerID WHERE ' . $this->getTablePrefix() . 'subscribers.customerID IS NULL OR (' . $this->getTablePrefix() . 'customers.customerID IS NOT NULL)'))) {
         return null;
     }
     if (empty($data['Email'])) {
         return $this->getNextNewsletterSubscriber();
     }
     $subscriber = NewsletterSubscriber::getNewInstanceByEmail($data['Email']);
     if ($data['customerID']) {
         if ($user = ActiveRecordModel::getInstanceByIDIfExists('User', $this->getRealId('User', $data['customerID'], false))) {
             if ($user->isExistingRecord()) {
                 $subscriber->user->set($user);
             }
         }
     } else {
         if ($user = User::getInstanceByEmail($data['Email'])) {
             $subscriber->user->set($user);
         }
     }
     $subscriber->isEnabled->set(true);
     return $subscriber;
 }