function popover_register_process() { global $M_options; //include_once(ABSPATH . WPINC . '/registration.php'); $error = new WP_Error(); if (!wp_verify_nonce($_POST['nonce'], 'membership_register')) { $error->add('invalid', __('Invalid form submission.', 'membership')); } if (!validate_username($_POST['user_login'])) { $error->add('usernamenotvalid', __('The username is not valid, sorry.', 'membership')); } if (username_exists(sanitize_user($_POST['user_login']))) { $error->add('usernameexists', __('That username is already taken, sorry.', 'membership')); } if (!is_email($_POST['email'])) { $error->add('emailnotvalid', __('The email address is not valid, sorry.', 'membership')); } if (email_exists($_POST['email'])) { $error->add('emailexists', __('That email address is already taken, sorry.', 'membership')); } $error = apply_filters('membership_subscription_form_before_registration_process', $error); if (is_wp_error($error)) { $anyerrors = $error->get_error_messages(); } else { $anyerrors = array(); } if (empty($anyerrors)) { // Pre - error reporting check for final add user $user_id = wp_create_user(sanitize_user($_POST['user_login']), $_POST['password'], $_POST['email']); if (is_wp_error($user_id) && method_exists($user_id, 'get_error_message')) { $error->add('userid', $user_id->get_error_message()); } else { $member = new M_Membership($user_id); if (defined('MEMBERSHIP_DEACTIVATE_USER_ON_REGISTRATION') && MEMBERSHIP_DEACTIVATE_USER_ON_REGISTRATION == true) { $member->deactivate(); } else { $creds = array('user_login' => $_POST['user_login'], 'user_password' => $_POST['password'], 'remember' => true); $is_ssl = isset($_SERVER['https']) && strtolower($_SERVER['https']) == 'on' ? true : false; $user = wp_signon($creds, $is_ssl); if (is_wp_error($user) && method_exists($user, 'get_error_message')) { $error->add('userlogin', $user->get_error_message()); } else { // Set the current user up wp_set_current_user($user_id); } } if (has_action('membership_susbcription_form_registration_notification')) { do_action('membership_susbcription_form_registration_notification', $user_id, $_POST['password']); } else { /*wp_new_user_notification($user_id, $_POST['password']);*/ } do_action('membership_subscription_form_registration_process', $error, $user_id); } } else { do_action('membership_subscription_form_registration_process', $error, 0); } $anyerrors = $error->get_error_code(); if (is_wp_error($error) && !empty($anyerrors)) { // we have an error - output $messages = $error->get_error_messages(); //sendback error echo json_encode(array('errormsg' => $messages[0])); } else { // everything seems fine (so far), so we have our queued user so let's // move to picking a subscription - so send back the form. echo $this->popover_sendpayment_form($user_id); } exit; }
function do_subscription_form() { global $wp_query, $M_options, $bp; if (isset($_REQUEST['action'])) { $page = addslashes($_REQUEST['action']); } if (empty($page)) { $page = 'subscriptionform'; } $content = ''; switch ($page) { case 'subscriptionform': $content = $this->output_subscriptionform(); break; case 'registeruser': if (!is_user_logged_in()) { $content = $this->output_registeruser(); } else { $content = $this->output_paymentpage(); } break; case 'subscriptionsignup': if (!is_user_logged_in()) { $content = $this->output_registeruser(); } else { $content = $this->output_paymentpage(); } break; case 'validatepage1': // Page 1 of the form has been submitted - validate //include_once(ABSPATH . WPINC . '/registration.php'); $required = array('user_login' => __('Username', 'membership'), 'user_email' => __('Email address', 'membership'), 'password' => __('Password', 'membership'), 'password2' => __('Password confirmation', 'membership')); $error = new WP_Error(); foreach ($required as $key => $message) { if (empty($_POST[$key])) { $error->add($key, __('Please ensure that the ', 'membership') . "<strong>" . $message . "</strong>" . __(' information is completed.', 'membership')); } } if ($_POST['password'] != $_POST['password2']) { $error->add('passmatch', __('Please ensure the passwords match.', 'membership')); } if (!validate_username($_POST['user_login'])) { $error->add('usernamenotvalid', __('The username is not valid, sorry.', 'membership')); } if (username_exists(sanitize_user($_POST['user_login']))) { $error->add('usernameexists', __('That username is already taken, sorry.', 'membership')); } if (!is_email($_POST['user_email'])) { $error->add('emailnotvalid', __('The email address is not valid, sorry.', 'membership')); } if (email_exists($_POST['user_email'])) { $error->add('emailexists', __('That email address is already taken, sorry.', 'membership')); } $error = apply_filters('membership_subscription_form_before_registration_process', $error); $result = array('user_name' => $_POST['user_login'], 'orig_username' => $_POST['user_login'], 'user_email' => $_POST['user_email'], 'errors' => $error); $result = apply_filters('wpmu_validate_user_signup', $result); $error = $result['errors']; // Hack for now - eeek $anyerrors = $error->get_error_code(); if (empty($anyerrors)) { // No errors so far - error reporting check for final add user *note $error should always be an error object becuase we created it as such. $user_id = wp_create_user(sanitize_user($_POST['user_login']), $_POST['password'], $_POST['user_email']); if (is_wp_error($user_id) && method_exists($userid, 'get_error_message')) { $error->add('userid', $user_id->get_error_message()); } else { $member = new M_Membership($user_id); if (defined('MEMBERSHIP_DEACTIVATE_USER_ON_REGISTRATION') && MEMBERSHIP_DEACTIVATE_USER_ON_REGISTRATION == true) { $member->deactivate(); } else { $creds = array('user_login' => $_POST['user_login'], 'user_password' => $_POST['password'], 'remember' => true); if (!headers_sent()) { $is_ssl = isset($_SERVER['https']) && strtolower($_SERVER['https']) == 'on' ? true : false; $user = @wp_signon($creds, $is_ssl); if (is_wp_error($user) && method_exists($user, 'get_error_message')) { $error->add('userlogin', $user->get_error_message()); } else { // Set the current user up wp_set_current_user($user_id); } } else { // Set the current user up wp_set_current_user($user_id); } } if (has_action('membership_susbcription_form_registration_notification')) { do_action('membership_susbcription_form_registration_notification', $user_id, $_POST['password']); } else { wp_new_user_notification($user_id, $_POST['password']); } } do_action('membership_subscription_form_registration_process', $error, $user_id); } else { do_action('membership_subscription_form_registration_process', $error, 0); } // Hack for now - eeek $anyerrors = $error->get_error_code(); if (!empty($anyerrors)) { // we have an error - output // Show the page again so that it can display the errors $content = $this->output_registeruser($error); } else { $content = $this->output_paymentpage($user_id); } break; case 'validatepage1bp': global $bp; //include_once(ABSPATH . WPINC . '/registration.php'); $required = array('signup_username' => __('Username', 'membership'), 'signup_email' => __('Email address', 'membership'), 'signup_password' => __('Password', 'membership'), 'signup_password_confirm' => __('Password confirmation', 'membership')); $error = new WP_Error(); foreach ($required as $key => $message) { if (empty($_POST[$key])) { $error->add($key, __('Please ensure that the ', 'membership') . "<strong>" . $message . "</strong>" . __(' information is completed.', 'membership')); } } if ($_POST['signup_password'] != $_POST['signup_password_confirm']) { $error->add('passmatch', __('Please ensure the passwords match.', 'membership')); } if (!validate_username($_POST['signup_username'])) { $error->add('usernamenotvalid', __('The username is not valid, sorry.', 'membership')); } if (username_exists(sanitize_user($_POST['signup_username']))) { $error->add('usernameexists', __('That username is already taken, sorry.', 'membership')); } if (!is_email($_POST['signup_email'])) { $error->add('emailnotvalid', __('The email address is not valid, sorry.', 'membership')); } if (email_exists($_POST['signup_email'])) { $error->add('emailexists', __('That email address is already taken, sorry.', 'membership')); } // Initial fix provided by user: cmurtagh - modified to add extra checks and rejigged a bit // Run the buddypress validation do_action('bp_signup_validate'); // Add any errors to the action for the field in the template for display. if (!empty($bp->signup->errors)) { foreach ((array) $bp->signup->errors as $fieldname => $error_message) { $error->add($fieldname, $error_message); } } $meta_array = array(); // xprofile required fields /* Now we've checked account details, we can check profile information */ //if ( function_exists( 'xprofile_check_is_required_field' ) ) { if (function_exists('bp_is_active') && bp_is_active('xprofile')) { /* Make sure hidden field is passed and populated */ if (isset($_POST['signup_profile_field_ids']) && !empty($_POST['signup_profile_field_ids'])) { /* Let's compact any profile field info into an array */ $profile_field_ids = explode(',', $_POST['signup_profile_field_ids']); /* Loop through the posted fields formatting any datebox values then validate the field */ foreach ((array) $profile_field_ids as $field_id) { if (!isset($_POST['field_' . $field_id])) { if (isset($_POST['field_' . $field_id . '_day'])) { $_POST['field_' . $field_id] = strtotime($_POST['field_' . $field_id . '_day'] . $_POST['field_' . $field_id . '_month'] . $_POST['field_' . $field_id . '_year']); } } /* Create errors for required fields without values */ if (xprofile_check_is_required_field($field_id) && empty($_POST['field_' . $field_id])) { $field = new BP_Xprofile_Field($field_id); $error->add($field->name, __('Please ensure that the ', 'membership') . "<strong>" . $field->name . "</strong>" . __(' information is completed.', 'membership')); } $meta_array[$field_id] = $_POST['field_' . $field_id]; } } } $error = apply_filters('membership_subscription_form_before_registration_process', $error); // Hack for now - eeek $anyerrors = $error->get_error_code(); if (empty($anyerrors)) { // No errors so far - error reporting check for final add user *note $error should always be an error object becuase we created it as such. $user_id = wp_create_user(sanitize_user($_POST['signup_username']), $_POST['signup_password'], $_POST['signup_email']); if (is_wp_error($user_id) && method_exists($userid, 'get_error_message')) { $error->add('userid', $user_id->get_error_message()); } else { $member = new M_Membership($user_id); if (defined('MEMBERSHIP_DEACTIVATE_USER_ON_REGISTRATION') && MEMBERSHIP_DEACTIVATE_USER_ON_REGISTRATION == true) { $member->deactivate(); } else { $creds = array('user_login' => $_POST['signup_username'], 'user_password' => $_POST['signup_password'], 'remember' => true); if (!headers_sent()) { $is_ssl = isset($_SERVER['https']) && strtolower($_SERVER['https']) == 'on' ? true : false; $user = @wp_signon($creds, $is_ssl); if (is_wp_error($user) && method_exists($user, 'get_error_message')) { $error->add('userlogin', $user->get_error_message()); } else { // Set the current user up wp_set_current_user($user_id); } } else { // Set the current user up wp_set_current_user($user_id); } } if (has_action('membership_susbcription_form_registration_notification')) { do_action('membership_susbcription_form_registration_notification', $user_id, $_POST['signup_password']); } else { wp_new_user_notification($user_id, $_POST['signup_password']); } // Add the bp filter for usermeta signup $meta_array = apply_filters('bp_signup_usermeta', $meta_array); foreach ((array) $meta_array as $field_id => $field_content) { if (function_exists('xprofile_set_field_data')) { xprofile_set_field_data($field_id, $user_id, $field_content); } } } do_action('membership_subscription_form_registration_process', $error, $user_id); } else { do_action('membership_subscription_form_registration_process', $error, 0); } // Hack for now - eeek $anyerrors = $error->get_error_code(); if (!empty($anyerrors)) { // Show the page so that it can display the errors $content = $this->output_registeruser($error); } else { // everything seems fine (so far), so we have our queued user so let's // run the bp complete signup action do_action('bp_complete_signup'); // display the payment forms $content = $this->output_paymentpage($user_id); } break; } return $content; }
function handle_paypal_return() { // PayPal IPN handling code if ((isset($_POST['payment_status']) || isset($_POST['txn_type'])) && isset($_POST['custom'])) { if (get_option($this->gateway . "_paypal_status") == 'live') { $domain = 'https://www.paypal.com'; } else { $domain = 'https://www.sandbox.paypal.com'; } $req = 'cmd=_notify-validate'; if (!isset($_POST)) { $_POST = $HTTP_POST_VARS; } foreach ($_POST as $k => $v) { if (get_magic_quotes_gpc()) { $v = stripslashes($v); } $req .= '&' . $k . '=' . $v; } $header = 'POST /cgi-bin/webscr HTTP/1.0' . "\r\n" . 'Content-Type: application/x-www-form-urlencoded' . "\r\n" . 'Content-Length: ' . strlen($req) . "\r\n" . "\r\n"; @set_time_limit(60); if ($conn = @fsockopen($domain, 80, $errno, $errstr, 30)) { fputs($conn, $header . $req); socket_set_timeout($conn, 30); $response = ''; $close_connection = false; while (true) { if (feof($conn) || $close_connection) { fclose($conn); break; } $st = @fgets($conn, 4096); if ($st === false) { $close_connection = true; continue; } $response .= $st; } $error = ''; $lines = explode("\n", str_replace("\r\n", "\n", $response)); // looking for: HTTP/1.1 200 OK if (count($lines) == 0) { $error = 'Response Error: Header not found'; } else { if (substr($lines[0], -7) != ' 200 OK') { $error = 'Response Error: Unexpected HTTP response'; } else { // remove HTTP header while (count($lines) > 0 && trim($lines[0]) != '') { array_shift($lines); } // first line will be empty, second line will have the result if (count($lines) < 2) { $error = 'Response Error: No content found in transaction response'; } else { if (strtoupper(trim($lines[1])) != 'VERIFIED') { $error = 'Response Error: Unexpected transaction response'; } } } } if ($error != '') { echo $error; exit; } } // handle cases that the system must ignore //if ($_POST['payment_status'] == 'In-Progress' || $_POST['payment_status'] == 'Partially-Refunded') exit; $new_status = false; // process PayPal response switch ($_POST['payment_status']) { case 'Partially-Refunded': break; case 'In-Progress': break; case 'Completed': case 'Processed': // case: successful payment $amount = $_POST['mc_gross']; $currency = $_POST['mc_currency']; list($timestamp, $user_id, $sub_id, $key) = explode(':', $_POST['custom']); $this->record_transaction($user_id, $sub_id, $amount, $currency, $timestamp, $_POST['txn_id'], $_POST['payment_status'], ''); // Added for affiliate system link do_action('membership_payment_processed', $user_id, $sub_id, $amount, $currency, $_POST['txn_id']); break; case 'Reversed': // case: charge back $note = 'Last transaction has been reversed. Reason: Payment has been reversed (charge back)'; $amount = $_POST['mc_gross']; $currency = $_POST['mc_currency']; list($timestamp, $user_id, $sub_id, $key) = explode(':', $_POST['custom']); $this->record_transaction($user_id, $sub_id, $amount, $currency, $timestamp, $_POST['txn_id'], $_POST['payment_status'], $note); $member = new M_Membership($user_id); if ($member) { $member->expire_subscription($sub_id); $member->deactivate(); } do_action('membership_payment_reversed', $user_id, $sub_id, $amount, $currency, $_POST['txn_id']); break; case 'Refunded': // case: refund $note = 'Last transaction has been reversed. Reason: Payment has been refunded'; $amount = $_POST['mc_gross']; $currency = $_POST['mc_currency']; list($timestamp, $user_id, $sub_id, $key) = explode(':', $_POST['custom']); $this->record_transaction($user_id, $sub_id, $amount, $currency, $timestamp, $_POST['txn_id'], $_POST['payment_status'], $note); $member = new M_Membership($user_id); if ($member) { $member->expire_subscription($sub_id); } do_action('membership_payment_refunded', $user_id, $sub_id, $amount, $currency, $_POST['txn_id']); break; case 'Denied': // case: denied $note = 'Last transaction has been reversed. Reason: Payment Denied'; $amount = $_POST['mc_gross']; $currency = $_POST['mc_currency']; list($timestamp, $user_id, $sub_id, $key) = explode(':', $_POST['custom']); $this->record_transaction($user_id, $sub_id, $amount, $currency, $timestamp, $_POST['txn_id'], $_POST['payment_status'], $note); $member = new M_Membership($user_id); if ($member) { $member->expire_subscription($sub_id); $member->deactivate(); } do_action('membership_payment_denied', $user_id, $sub_id, $amount, $currency, $_POST['txn_id']); break; case 'Pending': // case: payment is pending $pending_str = array('address' => 'Customer did not include a confirmed shipping address', 'authorization' => 'Funds not captured yet', 'echeck' => 'eCheck that has not cleared yet', 'intl' => 'Payment waiting for aproval by service provider', 'multi-currency' => 'Payment waiting for service provider to handle multi-currency process', 'unilateral' => 'Customer did not register or confirm his/her email yet', 'upgrade' => 'Waiting for service provider to upgrade the PayPal account', 'verify' => 'Waiting for service provider to verify his/her PayPal account', '*' => ''); $reason = @$_POST['pending_reason']; $note = 'Last transaction is pending. Reason: ' . (isset($pending_str[$reason]) ? $pending_str[$reason] : $pending_str['*']); $amount = $_POST['mc_gross']; $currency = $_POST['mc_currency']; list($timestamp, $user_id, $sub_id, $key) = explode(':', $_POST['custom']); $this->record_transaction($user_id, $sub_id, $amount, $currency, $timestamp, $_POST['txn_id'], $_POST['payment_status'], $note); do_action('membership_payment_pending', $user_id, $sub_id, $amount, $currency, $_POST['txn_id']); break; default: // case: various error cases } //check for subscription details switch ($_POST['txn_type']) { case 'subscr_signup': // start the subscription list($timestamp, $user_id, $sub_id, $key) = explode(':', $_POST['custom']); // create_subscription $member = new M_Membership($user_id); if ($member) { $member->create_subscription($sub_id, $this->gateway); } do_action('membership_payment_subscr_signup', $user_id, $sub_id); break; case 'subscr_modify': // modify the subscription list($timestamp, $user_id, $sub_id, $key) = explode(':', $_POST['custom']); // create_subscription $member = new M_Membership($user_id); if ($member) { // Remove the old subscription $member->drop_subscription($sub_id); // Join the new subscription $member->create_subscription((int) $_POST['item_number'], $this->gateway); // Timestamp the update update_user_meta($user_id, '_membership_last_upgraded', time()); } do_action('membership_payment_subscr_signup', $user_id, $sub_id); break; case 'subscr_cancel': // mark for removal list($timestamp, $user_id, $sub_id, $key) = explode(':', $_POST['custom']); $member = new M_Membership($user_id); if ($member) { $member->mark_for_expire($sub_id); } do_action('membership_payment_subscr_cancel', $user_id, $sub_id); break; case 'new_case': // a dispute if ($_POST['case_type'] == 'dispute') { // immediately suspend the account $member = new M_Membership($user_id); if ($member) { $member->deactivate(); } } do_action('membership_payment_new_case', $user_id, $sub_id, $_POST['case_type']); break; } } else { // Did not find expected POST variables. Possible access attempt from a non PayPal site. header('Status: 404 Not Found'); echo 'Error: Missing POST variables. Identification is not possible.'; exit; } }
function handle_bitpay_return() { try { $post = file_get_contents("php://input"); if (!$post) { return 'No post data'; } $response = json_decode($post, true); if (is_string($response)) { return $response; } // error if (!array_key_exists('posData', $response)) { return 'No posData'; } $posData = json_decode($response['posData'], true); if ($bpOptions['verifyPos'] and $posData['hash'] != bpHash(serialize($posData['posData']), $bpOptions['apiKey'])) { return 'Authentication failed (bad hash)'; } $response['posData'] = $posData['posData']; } catch (Exception $e) { if ($bpOptions['useLogging']) { bpLog('Error: ' . $e->getMessage()); } return array('error' => $e->getMessage()); } if (isset($response['status'])) { switch ($response['status']) { case 'new': // invoice just created, skip break; case 'paid': case 'complete': case 'confirmed': // payment has been paid, confirmed or marked complete $note = 'Payment ' . $response['status'] . '! BitPay Invoice ID: ' . $response['id']; $amount = $response['price']; $currency = $response['currency']; list($timestamp, $user_id, $sub_id, $key) = explode(':', $response['posData']); // // Update to work with latest 3.5.x Membership version // // and keep backward compatibility with older versions as well // if (!class_exists('Membership_Gateway')) // $isDuplicate = $this->duplicate_transaction($user_id, $sub_id, $amount, $currency, $timestamp, $response['id'], $response['status'], $note); // else // $isDuplicate = $this->_check_duplicate_transaction($user_id, $sub_id, $amount, $currency, $timestamp, $response['id'], $response['status'], $note); // if(!$isDuplicate) { // Update to work with latest 3.5.x Membership version // and keep backward compatibility with older versions as well if (!class_exists('Membership_Gateway')) { $this->record_transaction($user_id, $sub_id, $amount, $currency, $timestamp, $response['id'], $response['status'], $note); } else { $this->_record_transaction($user_id, $sub_id, $amount, $currency, $timestamp, $response['id'], $response['status'], $note); } do_action('membership_payment_processed', $user_id, $sub_id, $amount, $currency, $response['id']); // create_subscription $member = new M_Membership($user_id); if ($member) { $member->create_subscription($sub_id, $this->gateway); } do_action('membership_payment_subscr_signup', $user_id, $sub_id); // } break; case 'invalid': // payment has been deemed invalid. bad transaction! $note = 'This payment has been marked as invalid. Do not process membership! BitPay Invoice ID: ' . $response['id']; $amount = $response['price']; $currency = $response['currency']; list($timestamp, $user_id, $sub_id, $key) = explode(':', $response['posData']); // Update to work with latest 3.5.x Membership version // and keep backward compatibility with older versions as well if (!class_exists('Membership_Gateway')) { $this->record_transaction($user_id, $sub_id, $amount, $currency, $timestamp, $response['id'], $response['status'], $note); } else { $this->_record_transaction($user_id, $sub_id, $amount, $currency, $timestamp, $response['id'], $response['status'], $note); } $member = new M_Membership($user_id); if ($member) { $member->expire_subscription($sub_id); $member->deactivate(); } do_action('membership_payment_denied', $user_id, $sub_id, $amount, $currency, $response['id']); break; // Since we want instant membership activation, the paid status is combined with the confirmed // and completed statuses above. In the future if you want to change that, remove the paid: switch // above and uncomment this code: /*case 'paid': // payment has been made but confirmation pending $pending_str = 'BitPay payment received. Awaiting confirmation. BitPay Invoice ID: ' . $response['id']; $reason = 'paid'; $note = $pending_str; $amount = $response['price']; $currency = $response['currency']; $timestamp = $response['currentTime']; // Update to work with latest 3.5.x Membership version // and keep backward compatibility with older versions as well if (!class_exists('Membership_Gateway')) $this->record_transaction($user_id, $sub_id, $amount, $currency, $timestamp, $response['id'], $response['status'], $note); else $this->_record_transaction($user_id, $sub_id, $amount, $currency, $timestamp, $response['id'], $response['status'], $note); do_action('membership_payment_pending', $user_id, $sub_id, $amount, $currency, $response['id']); break; */ // Since we want instant membership activation, the paid status is combined with the confirmed // and completed statuses above. In the future if you want to change that, remove the paid: switch // above and uncomment this code: /*case 'paid': // payment has been made but confirmation pending $pending_str = 'BitPay payment received. Awaiting confirmation. BitPay Invoice ID: ' . $response['id']; $reason = 'paid'; $note = $pending_str; $amount = $response['price']; $currency = $response['currency']; $timestamp = $response['currentTime']; // Update to work with latest 3.5.x Membership version // and keep backward compatibility with older versions as well if (!class_exists('Membership_Gateway')) $this->record_transaction($user_id, $sub_id, $amount, $currency, $timestamp, $response['id'], $response['status'], $note); else $this->_record_transaction($user_id, $sub_id, $amount, $currency, $timestamp, $response['id'], $response['status'], $note); do_action('membership_payment_pending', $user_id, $sub_id, $amount, $currency, $response['id']); break; */ default: // case: various error cases break; } } else { // Did not find expected POST variables. Possible access attempt from a non BitPay site. header('Status: 404 Not Found'); echo 'Error: Missing POST variables. Identification is not possible.'; exit; } }
function popover_register_process() { global $M_options; //include_once(ABSPATH . WPINC . '/registration.php'); $error = array(); if (!wp_verify_nonce($_POST['nonce'], 'membership_register')) { $error[] = __('Invalid form submission.', 'membership'); } if (username_exists(sanitize_user($_POST['user_login']))) { $error[] = __('That username is already taken, sorry.', 'membership'); } if (email_exists($_POST['email'])) { $error[] = __('That email address is already taken, sorry.', 'membership'); } $error = apply_filters('membership_subscription_form_before_registration_process', $error); if (empty($error)) { // Pre - error reporting check for final add user $user = wp_create_user(sanitize_user($_POST['user_login']), $_POST['password'], $_POST['email']); if (is_wp_error($user) && method_exists($user, 'get_error_message')) { $error[] = $user->get_error_message(); } else { $member = new M_Membership($user); if (empty($M_options['enableincompletesignups']) || $M_options['enableincompletesignups'] != 'yes') { $member->deactivate(); } $creds = array('user_login' => $_POST['user_login'], 'user_password' => $_POST['password'], 'remember' => true); $is_ssl = isset($_SERVER['https']) && $_SERVER['https'] == 'on' ? true : false; $user = wp_signon($creds, $is_ssl); if (is_wp_error($user) && method_exists($user, 'get_error_message')) { $error[] = $user->get_error_message(); } if (has_action('membership_susbcription_form_registration_notification')) { do_action('membership_susbcription_form_registration_notification', $user->ID, $_POST['password']); } else { wp_new_user_notification($user->ID, $_POST['password']); } } } do_action('membership_subscription_form_registration_process', $error, $user->ID); if (!empty($error)) { //sendback error echo json_encode(array('errormsg' => $error[0])); } else { // everything seems fine (so far), so we have our queued user so let's // move to picking a subscription - so send back the form. echo $this->popover_sendpayment_form($user->ID); } exit; }
function do_subscription_shortcode($atts, $content = null, $code = "") { global $nxt_query; $error = array(); $page = addslashes($_REQUEST['action']); $M_options = get_option('membership_options', array()); switch ($page) { case 'validatepage1': // Page 1 of the form has been submitted - validate include_once ABSPATH . nxtINC . '/registration.php'; $required = array('user_login' => __('Username', 'membership'), 'user_email' => __('Email address', 'membership'), 'user_email2' => __('Email address confirmation', 'membership'), 'password' => __('Password', 'membership'), 'password2' => __('Password confirmation', 'membership')); $error = array(); foreach ($required as $key => $message) { if (empty($_POST[$key])) { $error[] = __('Please ensure that the ', 'membership') . "<strong>" . $message . "</strong>" . __(' information is completed.', 'membership'); } } if ($_POST['user_email'] != $_POST['user_email2']) { $error[] = __('Please ensure the email addresses match.', 'membership'); } if ($_POST['password'] != $_POST['password2']) { $error[] = __('Please ensure the passwords match.', 'membership'); } if (username_exists(sanitize_user($_POST['user_login']))) { $error[] = __('That username is already taken, sorry.', 'membership'); } if (email_exists($_POST['user_email'])) { $error[] = __('That email address is already taken, sorry.', 'membership'); } if (function_exists('get_site_option')) { $terms = get_site_option('signup_tos_data'); } else { $terms = ''; } if (!empty($terms)) { if (empty($_POST['tosagree'])) { $error[] = __('You need to agree to the terms of service to register.', 'membership'); } } $error = apply_filters('membership_subscription_form_before_registration_process', $error); if (empty($error)) { // Pre - error reporting check for final add user $user_id = nxt_create_user(sanitize_user($_POST['user_login']), $_POST['password'], $_POST['user_email']); if (is_nxt_error($user_id) && method_exists($userid, 'get_error_message')) { $error[] = $userid->get_error_message(); } else { $member = new M_Membership($user_id); if (empty($M_options['enableincompletesignups']) || $M_options['enableincompletesignups'] != 'yes') { $member->deactivate(); } if (has_action('membership_susbcription_form_registration_notification')) { do_action('membership_susbcription_form_registration_notification', $user_id, $_POST['password']); } else { nxt_new_user_notification($user_id, $_POST['password']); } } } do_action('membership_subscription_form_registration_process', $error, $user_id); if (!empty($error)) { $content .= "<div class='error'>"; $content .= implode('<br/>', $error); $content .= "</div>"; $content .= $this->show_subpage_one(true); } else { // everything seems fine (so far), so we have our queued user so let's // look at picking a subscription. $content .= $this->show_subpage_two($user_id); } break; case 'validatepage1bp': global $bp; include_once ABSPATH . nxtINC . '/registration.php'; $required = array('signup_username' => __('Username', 'membership'), 'signup_email' => __('Email address', 'membership'), 'signup_password' => __('Password', 'membership'), 'signup_password_confirm' => __('Password confirmation', 'membership')); $error = array(); foreach ($required as $key => $message) { if (empty($_POST[$key])) { $error[] = __('Please ensure that the ', 'membership') . "<strong>" . $message . "</strong>" . __(' information is completed.', 'membership'); } } if ($_POST['signup_password'] != $_POST['signup_password_confirm']) { $error[] = __('Please ensure the passwords match.', 'membership'); } if (username_exists(sanitize_user($_POST['signup_username']))) { $error[] = __('That username is already taken, sorry.', 'membership'); } if (email_exists($_POST['signup_email'])) { $error[] = __('That email address is already taken, sorry.', 'membership'); } $meta_array = array(); // xprofile required fields /* Now we've checked account details, we can check profile information */ if (function_exists('xprofile_check_is_required_field')) { /* Make sure hidden field is passed and populated */ if (isset($_POST['signup_profile_field_ids']) && !empty($_POST['signup_profile_field_ids'])) { /* Let's compact any profile field info into an array */ $profile_field_ids = explode(',', $_POST['signup_profile_field_ids']); /* Loop through the posted fields formatting any datebox values then validate the field */ foreach ((array) $profile_field_ids as $field_id) { if (!isset($_POST['field_' . $field_id])) { if (isset($_POST['field_' . $field_id . '_day'])) { $_POST['field_' . $field_id] = strtotime($_POST['field_' . $field_id . '_day'] . $_POST['field_' . $field_id . '_month'] . $_POST['field_' . $field_id . '_year']); } } /* Create errors for required fields without values */ if (xprofile_check_is_required_field($field_id) && empty($_POST['field_' . $field_id])) { $field = new BP_Xprofile_Field($field_id); $error[] = __('Please ensure that the ', 'membership') . "<strong>" . $field->name . "</strong>" . __(' information is completed.', 'membership'); } $meta_array[$field_id] = $_POST['field_' . $field_id]; } } } $error = apply_filters('membership_subscription_form_before_registration_process', $error); if (empty($error)) { // Pre - error reporting check for final add user $user_id = nxt_create_user(sanitize_user($_POST['signup_username']), $_POST['signup_password'], $_POST['signup_email']); if (is_nxt_error($user_id) && method_exists($userid, 'get_error_message')) { $error[] = $userid->get_error_message(); } else { $member = new M_Membership($user_id); if (empty($M_options['enableincompletesignups']) || $M_options['enableincompletesignups'] != 'yes') { $member->deactivate(); } if (has_action('membership_susbcription_form_registration_notification')) { do_action('membership_susbcription_form_registration_notification', $user_id, $_POST['password']); } else { nxt_new_user_notification($user_id, $_POST['signup_password']); } foreach ((array) $meta_array as $field_id => $field_content) { if (function_exists('xprofile_set_field_data')) { xprofile_set_field_data($field_id, $user_id, $field_content); } } } } do_action('membership_subscription_form_registration_process', $error, $user_id); if (!empty($error)) { $content .= "<div class='error'>"; $content .= implode('<br/>', $error); $content .= "</div>"; $content .= $this->show_subpage_one(true); } else { // everything seems fine (so far), so we have our queued user so let's // look at picking a subscription. $content .= $this->show_subpage_two($user_id); } break; case 'validatepage2': $content = apply_filters('membership_subscription_form_subscription_process', $content, $error); break; case 'page2': case 'page1': default: if (!is_user_logged_in()) { $content .= $this->show_subpage_one(); } else { // logged in check for sub $user = nxt_get_current_user(); $member = new M_Membership($user->ID); if ($member->is_member()) { // This person is a member - display already registered stuff $content .= $this->show_subpage_member(); } else { // Show page two; $content .= $this->show_subpage_two($user->ID); } } break; } $content = apply_filters('membership_subscription_form', $content); return $content; }