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();
     }
 }
예제 #2
0
 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;
 }
예제 #5
0
파일: User.php 프로젝트: saiber/livecart
 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;
 }
예제 #6
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;
 }
 /**
  * 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;
 }