public function Create(NewsletterSubscriber &$subscriber) { $email = $subscriber->getEmail(); $unregisterToken = $subscriber->getUnregisterToken(); $token = $subscriber->getToken(); if ($this->instance->query("SELECT COUNT(*) FROM NewsletterSubscriber WHERE Email = '" . $email . "'")->fetchColumn() > 0) { return Constants::EMAIL_ALREADY_EXIST; } else { $statement = $this->instance->prepare("INSERT INTO NewsletterSubscriber (Email, UnregisterToken, Token) VALUES (:email, :unregisterToken, :token)"); $statement->bindParam(':email', $email); $statement->bindParam(':unregisterToken', $unregisterToken); $statement->bindParam(':token', $token); return $statement->execute(); } }
public function confirm() { $instance = NewsletterSubscriber::getInstanceByEmail($this->request->get('email')); if ($instance && $instance->confirmationCode->get() == $this->request->get('code')) { $instance->isEnabled->set(true); $instance->save(); } return new ActionResponse('subscriber', $instance->toArray()); }
public function isApplicable() { $user = $this->getContext()->getUser(); if (!$user) { return; } if (is_null($user->_isSubscriber)) { $user->load(); $subscriber = NewsletterSubscriber::getInstanceByEmail($user->email->get()); if ($subscriber && !$subscriber->isEnabled->get()) { $user->_isSubscriber = false; } else { $user->_isSubscriber = true; } } return $user->_isSubscriber; }
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; }
protected function insert() { $res = parent::insert(); if ($subscriber = NewsletterSubscriber::getInstanceByEmail($this->email->get())) { $subscriber->user->set($this); } else { $subscriber = NewsletterSubscriber::getNewInstanceByUser($this); $subscriber->isEnabled->set(false); $subscriber->save(); } $subscriber->confirmationCode->set(''); $subscriber->save(); return $res; }
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; }
/** * Returns the data model based on the primary key given in the GET variable. * If the data model is not found, an HTTP exception will be raised. * @param integer the ID of the model to be loaded */ public function loadModel($id) { $model = NewsletterSubscriber::model()->findByPk($id); if ($model === null) { throw new CHttpException(404, 'The requested page does not exist.'); } return $model; }