public function execute()
 {
     if (!$this->validate()) {
         return;
     }
     $comment_id = $this->keys[0];
     $comment = get_comment($comment_id);
     if (!$comment) {
         Prompt_Logging::add_error('register_subscribe_comment_invalid', __('Couldn\'t find the original registration information for a new user.', 'Postmatic'), array('keys' => $this->keys, 'message' => $this->message));
         return;
     }
     $lists = $this->resolve_lists($comment);
     $user_data = get_comment_meta($comment_id, self::$user_data_meta_key, true);
     $email = $comment->comment_author_email;
     $subscriber = get_user_by('email', $email);
     $opted_in_list = $this->opted_in_list($lists);
     if (!$subscriber and !$opted_in_list) {
         if (self::stop_resending($comment)) {
             return;
         }
         Prompt_Subscription_Mailing::send_agreement($lists, $email, $user_data, $resend_command = $this);
         return;
     }
     if (!$opted_in_list) {
         // The user has already been created, probably via a different reply. Just ignore this nonsense reply.
         return;
     }
     $subscriber_id = $subscriber ? $subscriber->ID : Prompt_User_Handling::create_from_email($email);
     if (is_wp_error($subscriber_id)) {
         Prompt_Logging::add_error('register_subscribe_user_creation_failure', __('Failed to create a new user from an agreement reply email.', 'Postmatic'), array('keys' => $this->keys, 'user_data' => $user_data, 'message' => $this->message, 'error' => $subscriber_id));
         return;
     }
     if (!$subscriber and $user_data) {
         $user_data['ID'] = $subscriber_id;
         wp_update_user($user_data);
         $origin = new Prompt_Subscriber_Origin(array('source_label' => $opted_in_list->subscription_object_label(), 'source_url' => $opted_in_list->subscription_url(), 'agreement' => $this->message));
         $prompt_user = new Prompt_User($subscriber_id);
         $prompt_user->set_subscriber_origin($origin);
         do_action('prompt/register_subscribe_command/created_user', $prompt_user->get_wp_user());
     }
     if (!$opted_in_list->is_subscribed($subscriber_id)) {
         $opted_in_list->subscribe($subscriber_id);
         Prompt_Subscription_Mailing::send_subscription_notification($subscriber_id, $opted_in_list);
     }
     // TODO: remove our pre registration comment?
 }
Пример #2
0
 /**
  * Add recipient-specific values to the batch.
  *
  * @since 2.0.0
  *
  * @param Prompt_User $recipient
  * @return $this
  */
 public function add_recipient(Prompt_User $recipient)
 {
     if (!$recipient->get_wp_user()) {
         trigger_error(__('Did not add an invalid post recipient', 'Postmatic'), E_USER_NOTICE);
         return $this;
     }
     $prompt_site = $this->context->get_site();
     $prompt_author = $this->context->get_author();
     $subscribed_object = $prompt_author->is_subscribed($recipient->id()) ? $prompt_author : $prompt_site;
     $unsubscribe_link = new Prompt_Unsubscribe_Link($recipient->get_wp_user());
     $values = array('id' => $recipient->id(), 'to_name' => $recipient->get_wp_user()->display_name, 'to_address' => $recipient->get_wp_user()->user_email, 'subscribed_object_label' => html_entity_decode($subscribed_object->subscription_object_label()), 'unsubscribe_url' => $unsubscribe_link->url());
     if (is_a($subscribed_object, 'Prompt_User') and $prompt_author->id()) {
         $values['from_name'] = get_option('blogname') . ' [' . $prompt_author->get_wp_user()->display_name . ']';
     }
     $values = array_merge($values, $this->mail_command_values($recipient->id(), $subscribed_object));
     return $this->add_individual_message_values($values);
 }
Пример #3
0
 /**
  * Prevent subscribers who were not sent credentials from resetting their password.
  *
  * Hooks allow_password_reset
  *
  * @since 1.3.2
  *
  * @param int $user_id
  * @return boolean
  */
 public static function filter_allow_password_reset($allow, $user_id)
 {
     $prompt_user = new Prompt_User($user_id);
     if (!$prompt_user->get_wp_user()->has_cap('subscriber')) {
         return $allow;
     }
     if (!$prompt_user->get_subscriber_origin()) {
         return $allow;
     }
     if (Prompt_Core::$options->get('send_login_info')) {
         return $allow;
     }
     return false;
 }