function send_message($user_id, $sub_id = false, $level_id = false)
 {
     global $wp_better_emails;
     $member = Membership_Plugin::factory()->get_member($user_id);
     if (!filter_var($member->user_email, FILTER_VALIDATE_EMAIL)) {
         return;
     }
     $this->comm = $this->get_communication();
     $commdata = apply_filters('membership_comm_constants_list', $this->commconstants);
     foreach (array_keys($commdata) as $key) {
         switch ($key) {
             case '%blogname%':
                 $commdata[$key] = get_option('blogname');
                 break;
             case '%blogurl%':
                 $commdata[$key] = get_option('home');
                 break;
             case '%username%':
                 $commdata[$key] = $member->user_login;
                 break;
             case '%usernicename%':
                 $commdata[$key] = $member->user_nicename;
                 break;
             case '%userdisplayname%':
                 $commdata[$key] = $member->display_name;
                 break;
             case '%userfirstname%':
                 $commdata[$key] = $member->user_firstname;
                 break;
             case '%userlastname%':
                 $commdata[$key] = $member->user_lastname;
                 break;
             case '%networkname%':
                 $commdata[$key] = get_site_option('site_name');
                 break;
             case '%networkurl%':
                 $commdata[$key] = get_site_option('siteurl');
                 break;
             case '%subscriptionname%':
                 if (!$sub_id) {
                     $ids = $member->get_subscription_ids();
                     if (!empty($ids)) {
                         $sub_id = $ids[0];
                     }
                 }
                 if (!empty($sub_id)) {
                     $sub = Membership_Plugin::factory()->get_subscription($sub_id);
                     $commdata[$key] = $sub->sub_name();
                 } else {
                     $commdata[$key] = '';
                 }
                 break;
             case '%levelname%':
                 if (!$level_id) {
                     $ids = $member->get_level_ids();
                     if (!empty($ids)) {
                         $level_id = $ids[0]->level_id;
                     }
                 }
                 if (!empty($level_id)) {
                     $level = Membership_Plugin::factory()->get_level($level_id);
                     $commdata[$key] = $level->level_title();
                 } else {
                     $commdata[$key] = '';
                 }
                 break;
             case '%accounturl%':
                 $commdata[$key] = M_get_account_permalink();
                 break;
             default:
                 $commdata[$key] = apply_filters('membership_commfield_' . $key, '', $user_id);
                 break;
         }
     }
     // Globally replace the values in the ping and then make it into an array to send
     $original_commmessage = str_replace(array_keys($commdata), array_values($commdata), stripslashes($this->comm->message));
     $original_subject = str_replace(array_keys($commdata), array_values($commdata), stripslashes($this->comm->subject));
     $html_message = wpautop($original_commmessage);
     $text_message = strip_tags(preg_replace('/\\<a .*?href="(.*?)".*?\\>.*?\\<\\/a\\>/is', '$0 [$1]', $original_commmessage));
     add_filter('wp_mail_content_type', 'M_Communications_set_html_content_type');
     $lambda_function = false;
     if ($wp_better_emails) {
         $html_message = apply_filters('wpbe_html_body', $wp_better_emails->template_vars_replacement($wp_better_emails->set_email_template($html_message, 'template')));
         $text_message = apply_filters('wpbe_plaintext_body', $wp_better_emails->template_vars_replacement($wp_better_emails->set_email_template($text_message, 'plaintext_template')));
         // lets use WP Better Email to wrap communication content if the plugin is used
         $lambda_function = create_function('', sprintf('return "%s";', addslashes($text_message)));
         add_filter('wpbe_plaintext_body', $lambda_function);
         add_filter('wpbe_plaintext_body', 'stripslashes', 11);
     } elseif (!defined('MEMBERSHIP_DONT_WRAP_COMMUNICATION')) {
         $html_message = "<html><head></head><body>{$html_message}</body></html>";
     }
     @wp_mail($member->user_email, stripslashes($original_subject), $html_message);
     remove_filter('wp_mail_content_type', 'M_Communications_set_html_content_type');
     if ($lambda_function) {
         remove_filter('wpbe_plaintext_body', $lambda_function);
         remove_filter('wpbe_plaintext_body', 'stripslashes', 11);
     }
 }
示例#2
0
 function popover_sendpayment_form($user_id = false)
 {
     global $M_options;
     $sub = $to_sub_id = false;
     $logged_in = is_user_logged_in();
     $subscription = isset($_REQUEST['subscription']) ? $_REQUEST['subscription'] : 0;
     // free subscription processing
     if ($logged_in && $subscription) {
         $sub = Membership_Plugin::factory()->get_subscription($subscription);
         if ($sub->is_free()) {
             $to_sub_id = $subscription;
         }
     }
     // coupon processing
     $coupon = filter_input(INPUT_POST, 'coupon_code');
     if ($logged_in && $coupon && $subscription) {
         $coupon = new M_Coupon($coupon);
         $coupon_obj = $coupon->get_coupon();
         if ($coupon->valid_coupon() && $coupon_obj->discount >= 100 && $coupon_obj->discount_type == 'pct') {
             $to_sub_id = $subscription;
             $coupon->increment_coupon_used();
         }
     }
     if ($to_sub_id) {
         $membership = Membership_Plugin::factory()->get_member(get_current_user_id());
         $membership->create_subscription($to_sub_id);
         if (!empty($M_options['registrationcompleted_message'])) {
             $html = '<div class="header"><h1>';
             $html .= sprintf(__('Subscription %s has been added.', 'membership'), $sub ? $sub->sub_name() : '');
             $html .= '</h1></div><div class="fullwidth">';
             $html .= stripslashes(wpautop($M_options['registrationcompleted_message']));
             $html .= '<a class="button button-primary ' . esc_attr(apply_filters('membership_subscription_button_color', '')) . '" href="' . M_get_account_permalink() . '">' . __('Go to your account', 'membership') . '</a>';
             $html .= '</div>';
             echo $html;
         } else {
             wp_send_json(array('redirect' => strpos(home_url(), 'https://') === 0 ? str_replace('https:', 'http:', M_get_registrationcompleted_permalink()) : M_get_registrationcompleted_permalink()));
         }
         exit;
     }
     // render template
     ob_start();
     echo apply_filters('membership_popover_sendpayment_form_before_content', '');
     if (defined('MEMBERSHIP_POPOVER_SENDPAYMENT_FORM') && is_readable(MEMBERSHIP_POPOVER_SENDPAYMENT_FORM)) {
         include MEMBERSHIP_POPOVER_SENDPAYMENT_FORM;
     } else {
         $filename = apply_filters('membership_override_popover_sendpayment_form', membership_dir('membershipincludes/includes/popover_payment.form.php'));
         if (is_readable($filename)) {
             include $filename;
         }
     }
     echo apply_filters('membership_popover_sendpayment_form_after_content', ob_get_clean());
     exit;
 }
 function send_message($user_id, $sub_id = false, $level_id = false)
 {
     $this->comm = $this->get_communication();
     $M_options = get_option('membership_options');
     $commdata = apply_filters('membership_comm_constants_list', $this->commconstants);
     $member = new M_Membership($user_id);
     foreach ($commdata as $key => $value) {
         switch ($key) {
             case '%blogname%':
                 $commdata[$key] = get_option('blogname');
                 break;
             case '%blogurl%':
                 $commdata[$key] = get_option('home');
                 break;
             case '%username%':
                 $commdata[$key] = $member->user_login;
                 break;
             case '%usernicename%':
                 $commdata[$key] = $member->user_nicename;
                 break;
             case '%networkname%':
                 $commdata[$key] = get_site_option('site_name');
                 break;
             case '%networkurl%':
                 $commdata[$key] = get_site_option('siteurl');
                 break;
             case '%subscriptionname%':
                 if (!$sub_id) {
                     $ids = $member->get_subscription_ids();
                     if (!empty($ids)) {
                         $sub_id = $ids[0];
                     }
                 }
                 if (!empty($sub_id)) {
                     $sub =& new M_Subscription($sub_id);
                     $commdata[$key] = $sub->sub_name();
                 } else {
                     $commdata[$key] = '';
                 }
                 break;
             case '%levelname%':
                 if (!$level_id) {
                     $ids = $member->get_level_ids();
                     if (!empty($ids)) {
                         $level_id = $ids[0]->level_id;
                     }
                 }
                 if (!empty($level_id)) {
                     $level =& new M_Level($level_id);
                     $commdata[$key] = $level->level_title();
                 } else {
                     $commdata[$key] = '';
                 }
                 break;
             case '%accounturl%':
                 $commdata[$key] = M_get_account_permalink();
                 break;
             default:
                 $commdata[$key] = apply_filters('membership_commfield_' . $key, '', $user_id);
                 break;
         }
     }
     // Globally replace the values in the ping and then make it into an array to send
     $commmessage = str_replace(array_keys($commdata), array_values($commdata), stripslashes($this->comm->message));
     if (!empty($member->user_email)) {
         $res = @wp_mail($member->user_email, stripslashes($this->comm->subject), stripslashes($commmessage));
     }
 }