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; }
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()); }
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; }