Example #1
0
 /**
  * Function called from ESPublic. This function is triggered everytime a user subscribes via email.
  * 
  * @param String $email
  * @param String $ip
  */
 public function subscribe($email, $ip)
 {
     $options = get_option($this->pluginname . '_options');
     $sanemail = sanitize_email($email);
     //Check if email is already subscribed.
     $subscriber = $this->getSubscriber($sanemail);
     if (isset($subscriber)) {
         //Email is already present.
         //Check status of email
         if ($subscriber->status == self::ES_STAT_SUB_CONF) {
             //TODO
             //Subscriber is present and confirmed
             //Send info email and show success message
         } elseif ($subscriber->status == self::ES_STAT_SUB_NOTCONF) {
             //Subscriber is present and not confirmed
             //Send re-confirmation email, update confirmations and show success message
             //Get ID of added subscriber
             $subscriberId = $this->getSubscriberId($sanemail);
             //Regenerate hash
             $hash = md5(uniqid(rand(), TRUE));
             //Resend confirmation
             $res = $this->emailVerification($sanemail, $hash, $subscriberId);
             if (!$res) {
                 //Error sending confirmation email.
                 ice_log("error sending email");
                 return ESMessageCode::ES_ERROR_SYSTEM;
             }
             //Update confirmation
             $res = $this->updateConfirmation($subscriberId, self::ES_STAT_CONF_SENT, $hash);
             if (false == $res) {
                 //Error inserting into database
                 ice_log("error updating confirmation into database");
                 return ESMessageCode::ES_ERROR_SYSTEM;
             }
             //All okay. Return success
             return ESMessageCode::ES_SUCCESS_SUB_ADDED;
         } elseif ($subscriber->status == self::ES_STAT_UNSUB_CONF) {
             //TODO
             //Subscribed is present but unconfirmed
             //Send re-confirmation email, update confirmations and show success message
         } elseif ($subscriber->status == self::ES_STAT_UNSUB_NOTCONF) {
             //TODO
             //Subscriber is present, had unsubscribed but not confirmed unsubscribe
             //Send re-confirmation email, update confirmations and show success message
         } else {
             //Invalid value. Log error and exit gracefully
         }
     } else {
         //Subscriber is not present. Add subscriber, send confirmation email and return success message
         $res = $this->addSubscriber($sanemail, $ip);
         if (!$res) {
             //Error inserting into database
             ice_log("error inserting subscriber into database");
             return ESMessageCode::ES_ERROR_SYSTEM;
         }
         //Get ID of added subscriber
         $subscriberId = $this->getSubscriberId($sanemail);
         //Generate hash
         $hash = md5(uniqid(rand(), TRUE));
         $res = $this->emailVerification($sanemail, $hash, $subscriberId);
         if (!$res) {
             //Error sending confirmation email.
             ice_log("error inserting into database");
             return ESMessageCode::ES_ERROR_SYSTEM;
         }
         //Add confirmation
         $res = $this->addConfirmation($subscriberId, self::ES_STAT_CONF_SENT, $hash);
         if (!$res) {
             //Error inserting into database
             ice_log("error inserting confirmation into database");
             return ESMessageCode::ES_ERROR_SYSTEM;
         }
         //All okay. Return success
         return ESMessageCode::ES_SUCCESS_SUB_ADDED;
     }
 }
Example #2
0
 public function subscribe()
 {
     $result = '';
     if (!$_POST || !wp_verify_nonce($_POST[$this->pluginname . "_form_nonce"], $this->pluginname . "_form_submit")) {
         $result = json_encode(array("status" => false, "type" => "request", "reason" => "Bad request"));
     } else {
         $email = $_POST['es-email'];
         if (isset($email) && is_email($email)) {
             // Register and reply with confirmation message
             $ip = $_SERVER['REMOTE_ADDR'];
             //Check IP to make sure it is valid and not spam
             $saneip = filter_var($ip, FILTER_VALIDATE_IP);
             if ($saneip) {
                 $res = $this->manager->subscribe($email, $saneip);
                 if ($res == ESMessageCode::ES_SUCCESS_SUB_ADDED) {
                     $result = json_encode(array("status" => true, "type" => "", "reason" => ""));
                 } else {
                     $result = json_encode(array("status" => false, "type" => "system", "reason" => "System error."));
                 }
             } else {
                 ice_log("in subscribe - bad ip error");
                 $result = json_encode(array("status" => false, "type" => "ip", "reason" => "Invalid IP."));
             }
         } else {
             // Reply with error
             $result = json_encode(array("status" => false, "type" => "data", "reason" => "Invalid email."));
         }
     }
     header("Content-Type: application/json");
     echo $result;
     die;
 }
 /**
  * Register EasySubscribe widget.
  *
  * @since    0.1
  * @access   private
  */
 public function registerESWidget()
 {
     ice_log("registering widget");
     register_widget('ESWidget');
 }