function wp_eMember_upgrade_membership_level_to_handler($atts) { extract(shortcode_atts(array('level' => '', 'button_text' => 'Upgrade', 'redirect_to' => '', 'reset_start_date' => ''), $atts)); if (empty($level)) { return '<div class="emember_error">Error! You must specify a membership level in the level parameter.</div>'; } $emember_auth = Emember_Auth::getInstance(); $user_id = $emember_auth->getUserInfo('member_id'); if (!empty($user_id)) { $output = ""; $output .= '<div class="eMember_level_upgrade_form">'; if (isset($_POST['eMember_level_upgrade_submit']) && $_POST['emember_form_key_value'] == $level && emember_multi_submit_check()) { $member_id = $_POST['eMember_level_upgrade']; $target_membership_level = $level; emember_update_membership_level($member_id, $target_membership_level); if (isset($_POST['emember_reset_start_date']) && !empty($_POST['emember_reset_start_date'])) { //Update the subscription start date too emember_update_subsc_start_date($member_id); } $firstname = $emember_auth->getUserInfo('first_name'); $lastname = $emember_auth->getUserInfo('last_name'); $emailaddress = $emember_auth->getUserInfo('email'); eMember_level_specific_autoresponder_signup($target_membership_level, $firstname, $lastname, $emailaddress); if (!empty($redirect_to)) { wp_emember_redirect_to_url($redirect_to); } $output .= '<p>' . EMEMBER_LEVEL_UPDATED . '</p>'; } else { $output .= '<form name="eMember_level_upgrade_form" method="post" action="">'; $output .= '<input type="hidden" name="eMember_level_upgrade" value="' . $user_id . '" />'; $output .= '<input type="hidden" name="emember_form_time_value" value="' . strtotime("now") . '" />'; $output .= '<input type="hidden" name="emember_form_key_value" value="' . $level . '" />'; $output .= '<input type="hidden" name="emember_reset_start_date" value="' . $reset_start_date . '" />'; $output .= '<input type="submit" name="eMember_level_upgrade_submit" class="eMember_level_upgrade_submit" value="' . $button_text . '" />'; $output .= '</form>'; } $output .= '</div>'; return $output; } else { return '<p>' . EMEMBER_MUST_BE_LOGGED_IN_TO_UPDATE_LEVEL . '</p>'; } }
function wp_emember_redirect_to_non_logout_url() { //redirect to the URL without the "member_logout" GET Parameter $parsed_url = explode('?', wp_emember_get_current_url()); $url = $parsed_url[0]; if (isset($parsed_url[1])) { $parsed_query = array(); parse_str($parsed_url[1], $parsed_query); unset($parsed_query['member_logout']); $parsed_url = http_build_query($parsed_query); if ($parsed_url) { $url .= '?' . $parsed_url; } } wp_emember_redirect_to_url($url); }
function emember_after_logout() { $emember_config = Emember_Config::getInstance(); $sign_in_wp = $emember_config->getValue('eMember_signin_wp_user'); if ($sign_in_wp && is_user_logged_in()) { wp_clear_auth_cookie(); } $eMember_auto_affiliate_account_login = $emember_config->getValue('eMember_auto_affiliate_account_login'); if ($eMember_auto_affiliate_account_login && function_exists('wp_aff_platform_install')) { //logout the affiliate account unset($_SESSION['user_id']); setcookie("user_id", "", time() - 60 * 60 * 24 * 7, "/", COOKIE_DOMAIN); } $logout_page = $emember_config->getValue('after_logout_page'); if ($logout_page) { wp_emember_redirect_to_url($logout_page); } else { //do redirection to self if member_logout query parameter is present $logout_alt = filter_input(INPUT_GET, 'member_logout'); if ($logout_alt == 1) { wp_emember_redirect_to_non_logout_url(); } $wpurl = get_bloginfo("wpurl"); wp_emember_redirect_to_url($wpurl); } }
function emember_login_init($redirect = true) { do_action('eMember_user_login_init'); $emember_auth = Emember_Auth::getInstance(); $emember_config = Emember_Config::getInstance(); $user = strip_tags($_POST['login_user_name']); $clientip = $_SERVER['REMOTE_ADDR']; if ($emember_config->getValue('eMember_multiple_logins') == '1') { unset($_POST['rememberme']); } eMember_log_debug("Authenticating login request for username: "******". Request came from IP Address: " . $clientip, true); if ($emember_auth->isLoggedIn()) { eMember_log_debug("Authentication completed for username: "******". IP Address: " . $clientip, true); $_SESSION['membership_level_name'] = $emember_auth->permitted->primary_level->get('alias'); do_action('eMember_login_authentication_completed'); if (isset($_REQUEST['no-redirect']) && $_REQUEST['no-redirect'] == '1') { //No redirect argument is set in this request. Do not do any after login redirect } else { //Do after login redirection according to the settings $enable_after_login_redirect = $emember_config->getValue('eMember_enable_redirection'); if ($redirect && $enable_after_login_redirect) { eMember_log_debug("Redirecting member to the after login redirection page.", true); $separate_home_page = emember_get_after_login_page_url_of_current_user(); if (!empty($separate_home_page)) { wp_emember_redirect_to_url($separate_home_page); exit; } } } } }
function emember_process_reg_form() { $emember_config = Emember_Config::getInstance(); if (is_blocked_ip(get_real_ip_addr())) { $message = '<span class="emember_error">' . EMEMBER_IP_BLACKLISTED . ' </span>'; $emember_config->set_stacked_message('emember_full_registration', array('type' => 'warning', 'message' => $message)); return; } if (!function_exists('recaptcha_check_answer')) { require_once WP_PLUGIN_DIR . '/' . WP_EMEMBER_FOLDER . '/recaptchalib.php'; } $output = ''; $eMember_id = strip_tags(isset($_GET["member_id"]) ? $_GET["member_id"] : ""); $code = strip_tags(isset($_GET["code"]) ? $_GET["code"] : ""); $recaptcha_error = null; $resp = null; global $wpdb; $is_reg_successfull = false; if (isset($_POST['eMember_Register'])) { $nonce = $_REQUEST['_wpnonce']; if (!wp_verify_nonce($nonce, 'emember-plain-registration-nonce')) { eMember_log_debug("Registration nonce check failed ", true); die("Security check failed on registration"); } $_POST['wp_emember_email'] = strip_tags($_POST['wp_emember_email']); $_POST['wp_emember_user_name'] = strip_tags($_POST['wp_emember_user_name']); $_POST['wp_emember_pwd'] = strip_tags($_POST['wp_emember_pwd']); if ($emember_config->getValue('eMember_show_terms_conditions')) { if (!isset($_POST['emember_terms_conditions'])) { $output .= '<span class="emember_error">' . EMEMBER_TERMS_WARNING . '</span>'; $emember_config->set_stacked_message('emember_full_registration', array('type' => 'warning', 'message' => $output)); return; } } eMember_log_debug("Processing signup request of membership for: " . $_POST['wp_emember_email'], true); if (is_blocked_email($_POST['wp_emember_email'])) { $output .= '<span class="emember_error"> ' . EMEMBER_EMAIL_BLACKLISTED . ' </span>'; $emember_config->set_stacked_message('emember_full_registration', array('type' => 'warning', 'message' => $output)); return; } $enable_recaptcha = $emember_config->getValue('emember_enable_recaptcha'); if ($enable_recaptcha) { $_POST["recaptcha_challenge_field"] = strip_tags($_POST["recaptcha_challenge_field"]); $_POST["recaptcha_response_field"] = strip_tags($_POST["recaptcha_response_field"]); if (isset($_POST["recaptcha_response_field"])) { $recaptcha_private_key = $emember_config->getValue('emember_recaptcha_private'); $resp = recaptcha_check_answer($recaptcha_private_key, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]); if (!$resp->is_valid) { $emember_config->set_stacked_message('emember_full_registration_captcha', $resp->error); $output .= '<div class="emember_error">' . EMEMBER_CAPTCHA_VERIFICATION_FAILED . '</div>'; $emember_config->set_stacked_message('emember_full_registration', array('type' => 'error', 'message' => $output)); } } else { $output .= '<span class="emember_error">reCAPTCHA™ service encountered error. please Contact Admin. </span>'; $emember_config->set_stacked_message('emember_full_registration', array('type' => 'warning', 'message' => $output)); } } if (!$enable_recaptcha || $resp && $resp->is_valid) { eMember_log_debug("reCAPTCHA is valid... creating membership account: " . $_POST['wp_emember_email'], true); include_once ABSPATH . WPINC . '/class-phpass.php'; $wp_hasher = new PasswordHash(8, TRUE); $password = $wp_hasher->HashPassword($_POST['wp_emember_pwd']); include_once 'emember_validator.php'; $validator = new Emember_Validator(); $validator->add(array('value' => $_POST['wp_emember_user_name'], 'label' => EMEMBER_USERNAME, 'rules' => array('user_required', 'user_minlength', 'user_name', 'user_unavail'))); $validator->add(array('value' => $_POST['wp_emember_email'], 'label' => EMEMBER_EMAIL, 'rules' => array('email_required', 'email', 'email_unavail'))); $validator->add(array('value' => $_POST['wp_emember_pwd'], 'label' => EMEMBER_PASSWORD, 'rules' => array('pass_required'))); $messages = $validator->validate(); $show_confirm_pass = $emember_config->getValue('eMember_show_confirm_pass_field'); if ($show_confirm_pass) { if ($_POST['wp_emember_pwd'] != $_POST['wp_emember_pwd_re']) { $messages[] = EMEMBER_PASSWORD . ':' . EMEMBER_PASSWORD_MISMATCH; } } $valid_captcha = apply_filters('emember_captcha_varify', true); // create new member account and send the registration completion email if (!$valid_captcha) { $output .= "<p class='emember_error'><strong>" . EMEMBER_CAPTCHA_FAILED . "</strong></p>"; $emember_config->set_stacked_message('emember_full_registration', array('type' => 'error', 'message' => $output)); } else { if (count($messages) > 0) { $output .= '<span class="emember_error">' . implode('<br/>', $messages) . '</span>'; $emember_config->set_stacked_message('emember_full_registration', array('type' => 'error', 'message' => $output)); } else { $fields = array(); $custom_fields = array(); /* === Common registration fields value === */ if (isset($_COOKIE['ap_id'])) { $fields['referrer'] = $_COOKIE['ap_id']; } else { $fields['referrer'] = ''; } if (isset($_POST['emember_custom']) && is_array($_POST['emember_custom'])) { $referrer_field_key = "Referrer"; if (array_key_exists($referrer_field_key, $_POST['emember_custom'])) { $fields['referrer'] = strip_tags(trim($_POST['emember_custom'][$referrer_field_key])); } } //if (!empty($_SESSION['eMember_id']) && !empty($_SESSION['reg_code'])) if (isset($_POST['eMember_id']) && isset($_POST['eMember_reg_code'])) { //Update the membership data with the registration complete details (this path is exercised when the unique link is clicked from the email to do the registration complete action) eMember_log_debug("Completing the registration for premium membership account. Member Email: " . $_POST['wp_emember_email'] . " eMember ID: " . $eMember_id, true); $mresultset = $wpdb->get_row("SELECT reg_code,membership_level FROM " . WP_EMEMBER_MEMBERS_TABLE_NAME . " where member_id='{$eMember_id}'", ARRAY_A); /* * ********************** */ $fields['user_name'] = $_POST['wp_emember_user_name']; $fields['password'] = $password; $fields['membership_level'] = $mresultset['membership_level']; $fields['reg_code'] = ''; if (isset($_POST['wp_emember_title'])) { $fields['title'] = strip_tags($_POST['wp_emember_title']); } if (isset($_POST['wp_emember_firstname'])) { $fields['first_name'] = strip_tags($_POST['wp_emember_firstname']); } if (isset($_POST['wp_emember_lastname'])) { $fields['last_name'] = strip_tags($_POST['wp_emember_lastname']); } if (isset($_POST['wp_emember_phone'])) { $fields['phone'] = strip_tags($_POST['wp_emember_phone']); } if (isset($_POST['wp_emember_street'])) { $fields['address_street'] = strip_tags($_POST['wp_emember_street']); } if (isset($_POST['wp_emember_city'])) { $fields['address_city'] = strip_tags($_POST['wp_emember_city']); } if (isset($_POST['wp_emember_state'])) { $fields['address_state'] = strip_tags($_POST['wp_emember_state']); } if (isset($_POST['wp_emember_zipcode'])) { $fields['address_zipcode'] = strip_tags($_POST['wp_emember_zipcode']); } if (isset($_POST['wp_emember_country'])) { $fields['country'] = strip_tags($_POST['wp_emember_country']); } if (isset($_POST['wp_emember_gender'])) { $fields['gender'] = strip_tags($_POST['wp_emember_gender']); } if (isset($_POST['wp_emember_company_name'])) { $fields['company_name'] = strip_tags($_POST['wp_emember_company_name']); } $fields['member_since'] = date("Y-m-d"); $fields['subscription_starts'] = date("Y-m-d"); //No need to update the membership level as it has already been set for this member when the unique rego complete link was sent out $eMember_manually_approve_member_registration = $emember_config->getValue('eMember_manually_approve_member_registration'); if ($eMember_manually_approve_member_registration) { $fields['account_state'] = 'pending'; } else { $fields['account_state'] = 'active'; } $fields['email'] = $_POST['wp_emember_email']; $fields['last_accessed_from_ip'] = get_real_ip_addr(); $reg_code = strip_tags($_POST['eMember_reg_code']); if (md5($mresultset['reg_code']) == $reg_code) { $ret = dbAccess::update(WP_EMEMBER_MEMBERS_TABLE_NAME, ' member_id=' . esc_sql($eMember_id), $fields); eMember_log_debug("Updating premium member account data. eMember ID: " . $eMember_id, true); /* * ********************** */ $lastid = $eMember_id; if (isset($_POST['emember_custom'])) { foreach ($_POST['emember_custom'] as $key => $value) { $custom_fields[$key] = $value; } $wpdb->query("INSERT INTO " . WP_EMEMBER_MEMBERS_META_TABLE . '( user_id, meta_key, meta_value ) VALUES(' . $lastid . ',\'custom_field\',' . '\'' . addslashes(serialize($_POST['emember_custom'])) . '\')'); } if ($ret === false) { $output .= '<br />' . ' DB Error.'; $emember_config->set_stacked_message('emember_full_registration', array('type' => 'error', 'message' => $output)); $is_reg_successfull = false; } else { $is_reg_successfull = true; unset($_SESSION['eMember_id']); unset($_SESSION['reg_code']); } } else { $output .= '<span class="emember_error">Error! Unique registration code do not match!</span>'; $emember_config->set_stacked_message('emember_full_registration', array('type' => 'warning', 'message' => $output)); } } else { //Create a new account for a free member or the level specified in the shortcode. This path is exercised when someone directly goes to the registration page and submits the details. eMember_log_debug("Creating a new account for free membership or for the level specified in the shortcode. Member Email: " . $_POST['wp_emember_email'], true); $fields['user_name'] = $_POST['wp_emember_user_name']; $fields['password'] = $password; if (isset($_POST['wp_emember_title'])) { $fields['title'] = strip_tags($_POST['wp_emember_title']); } if (isset($_POST['wp_emember_firstname'])) { $fields['first_name'] = strip_tags($_POST['wp_emember_firstname']); } if (isset($_POST['wp_emember_lastname'])) { $fields['last_name'] = strip_tags($_POST['wp_emember_lastname']); } if (isset($_POST['wp_emember_phone'])) { $fields['phone'] = strip_tags($_POST['wp_emember_phone']); } if (isset($_POST['wp_emember_street'])) { $fields['address_street'] = strip_tags($_POST['wp_emember_street']); } if (isset($_POST['wp_emember_city'])) { $fields['address_city'] = strip_tags($_POST['wp_emember_city']); } if (isset($_POST['wp_emember_state'])) { $fields['address_state'] = strip_tags($_POST['wp_emember_state']); } if (isset($_POST['wp_emember_zipcode'])) { $fields['address_zipcode'] = strip_tags($_POST['wp_emember_zipcode']); } if (isset($_POST['wp_emember_country'])) { $fields['country'] = strip_tags($_POST['wp_emember_country']); } if (isset($_POST['wp_emember_gender'])) { $fields['gender'] = strip_tags($_POST['wp_emember_gender']); } if (isset($_POST['wp_emember_company_name'])) { $fields['company_name'] = strip_tags($_POST['wp_emember_company_name']); } $fields['member_since'] = date("Y-m-d"); $fields['subscription_starts'] = date("Y-m-d"); if (isset($_POST['custom_member_level_shortcode'])) { $fields['membership_level'] = $_POST['custom_member_level_shortcode']; //$fields['initial_membership_level'] = $_POST['custom_member_level_shortcode']; } else { $fields['membership_level'] = $emember_config->getValue('eMember_free_membership_level_id'); //$fields['initial_membership_level'] = $emember_config->getValue('eMember_free_membership_level_id'); } $eMember_manually_approve_member_registration = $emember_config->getValue('eMember_manually_approve_member_registration'); if ($eMember_manually_approve_member_registration) { $fields['account_state'] = 'pending'; } else { $fields['account_state'] = 'active'; } $fields['email'] = $_POST['wp_emember_email']; $fields['last_accessed_from_ip'] = get_real_ip_addr(); $ret = dbAccess::insert(WP_EMEMBER_MEMBERS_TABLE_NAME, $fields); $lastid = $wpdb->insert_id; $fields['member_id'] = $lastid; if (isset($_POST['emember_custom'])) { foreach ($_POST['emember_custom'] as $key => $value) { $custom_fields[$key] = $value; } $wpdb->query("INSERT INTO " . WP_EMEMBER_MEMBERS_META_TABLE . '( user_id, meta_key, meta_value ) VALUES(' . $lastid . ',\'custom_field\',' . '\'' . addslashes(serialize($_POST['emember_custom'])) . '\')'); } if ($ret === false) { $output .= '<br />' . ' DB Error.'; $emember_config->set_stacked_message('emember_full_registration', array('type' => 'error', 'message' => $output)); $is_reg_successfull = false; } else { $is_reg_successfull = true; } } if ($is_reg_successfull) { eMember_log_debug("Processing registration submission...", true); //Send notification to any other plugin listening for the eMember registration complete event. do_action('eMember_registration_complete', $fields, $custom_fields); //Query the membership level table to get a handle for the level $membership_level_resultset = dbAccess::find(WP_EMEMBER_MEMBERSHIP_LEVEL_TABLE, " id='" . $fields['membership_level'] . "'"); // Create the corresponding wordpress user $should_create_wp_user = $emember_config->getValue('eMember_create_wp_user'); if ($should_create_wp_user) { $role_names = array(1 => 'Administrator', 2 => 'Editor', 3 => 'Author', 4 => 'Contributor', 5 => 'Subscriber'); $wp_user_info = array(); $wp_user_info['user_nicename'] = implode('-', explode(' ', $_POST['wp_emember_user_name'])); $wp_user_info['display_name'] = $_POST['wp_emember_user_name']; $wp_user_info['nickname'] = $_POST['wp_emember_user_name']; $wp_user_info['first_name'] = strip_tags($_POST['wp_emember_firstname']); $wp_user_info['last_name'] = strip_tags($_POST['wp_emember_lastname']); $wp_user_info['role'] = $membership_level_resultset->role; $wp_user_info['user_registered'] = date('Y-m-d H:i:s'); //$wp_user_id = wp_create_user($_POST['wp_emember_user_name'], $_POST['wp_emember_pwd'], $_POST['wp_emember_email']); $wp_user_id = eMember_wp_create_user($_POST['wp_emember_user_name'], $_POST['wp_emember_pwd'], $_POST['wp_emember_email'], $wp_user_info); //do_action( 'set_user_role', $wp_user_id, $membership_level_resultset->role ); } //----------------- $subject_rego_complete = $emember_config->getValue('eMember_email_subject_rego_complete'); $body_rego_complete = $emember_config->getValue('eMember_email_body_rego_complete'); $from_address = $emember_config->getValue('senders_email_address'); $login_link = $emember_config->getValue('login_page_url'); //Do the full dynamic member details replacement $curr_member_id = $lastid; $additional_params = array('password' => $_POST['wp_emember_pwd'], 'login_link' => $login_link); $email_body1 = emember_dynamically_replace_member_details_in_message($curr_member_id, $body_rego_complete, $additional_params); //The filter for email notification body $email_body1 = apply_filters('eMember_notification_email_body_filter', $email_body1, $curr_member_id); $headers = 'From: ' . $from_address . "\r\n"; $member_email = $_POST['wp_emember_email']; wp_mail($member_email, $subject_rego_complete, $email_body1, $headers); eMember_log_debug("Member registration complete email successfully sent to: " . $member_email, true); if ($emember_config->getValue('eMember_admin_notification_after_registration')) { $admin_email = $emember_config->getValue('eMember_admin_notification_email_address'); $notify_emails_array = explode(",", $admin_email); foreach ($notify_emails_array as $notify_email_address) { if (!empty($notify_email_address)) { $admin_notification_subject = EMEMBER_NEW_ACCOUNT_MAIL_HEAD; $admin_email_body = EMEMBER_NEW_ACCOUNT_MAIL_BODY . "\n\n-------Member Email----------\n" . $email_body1 . "\n\n------End------\n"; wp_mail($notify_email_address, $admin_notification_subject, $admin_email_body, $headers); eMember_log_debug("Admin notification email successfully sent to: " . $admin_email, true); } } } //Create the corresponding affliate account if ($emember_config->getValue('eMember_auto_affiliate_account')) { eMember_log_debug("Creating affiliate account for this member.", true); eMember_handle_affiliate_signup($_POST['wp_emember_user_name'], $_POST['wp_emember_pwd'], $_POST['wp_emember_firstname'], $_POST['wp_emember_lastname'], $_POST['wp_emember_email'], eMember_get_aff_referrer()); } /* * * Signup the member to Autoresponder List (Autoresponder integration) ** */ eMember_log_debug("===> Performing autoresponder signup if needed <===", true); $membership_level_id = $fields['membership_level']; $firstname = isset($_POST['wp_emember_firstname']) ? $_POST['wp_emember_firstname'] : ""; $lastname = isset($_POST['wp_emember_lastname']) ? $_POST['wp_emember_lastname'] : ""; $emailaddress = $_POST['wp_emember_email']; eMember_level_specific_autoresponder_signup($membership_level_id, $firstname, $lastname, $emailaddress); eMember_global_autoresponder_signup($firstname, $lastname, $emailaddress); /* * * end of autoresponder integration ** */ /* * * check redirection options and redirect accordingly ** */ $after_rego_page = $emember_config->getValue('eMember_after_registration_page'); $redirect_page = $emember_config->getValue('login_page_url'); $auto_login_after_rego = $emember_config->getValue('eMember_enable_auto_login_after_rego'); if ($auto_login_after_rego) { if (!empty($redirect_page)) { $separator = wp_emember_get_query_separator_for_url($redirect_page); $encoded_pass = base64_encode($_POST['wp_emember_pwd']); $redirect_page = $redirect_page . $separator . "doLogin=1&pwd_encoded=1&emember_u_name=" . urlencode($_POST['wp_emember_user_name']) . "&emember_pwd=" . urlencode($encoded_pass); //$redirect_page = wp_nonce_url($redirect_page,'emember-login-nonce'); $login_nonce = wp_create_nonce('emember-login-nonce'); $redirect_page = $redirect_page . "&_wpnonce=" . $login_nonce; wp_emember_redirect_to_url($redirect_page); } else { $output .= '<div class="emember_error">Error! The "Login Page URL" field value is missing! Go to the Pages/Forms settings menu and correct the mistake.</div>'; $emember_config->set_stacked_message('emember_full_registration', array('type' => 'warning', 'message' => $output)); } } else { if (!empty($after_rego_page)) { wp_emember_redirect_to_url($after_rego_page); } else { if ($eMember_manually_approve_member_registration) { $output .= '<p>' . EMEMBER_REG_COMPLETE_PENDING_APPROVAL . '</p>'; } else { $output .= '<p>' . EMEMBER_REG_COMPLETE . EMEMBER_PLEASE . ' <a href="' . $redirect_page . '">' . EMEMBER_LOGIN . '</a></p>'; } $emember_config->set_stacked_message('emember_full_registration', array('type' => 'success', 'message' => $output)); } } /* * * End of redirection stuff ** */ } else { $output .= "<b><br/>Something went wrong. Please Contact <a href='mailto:" . get_bloginfo('admin_email') . "'>Admin.</a></b>"; $emember_config->set_stacked_message('emember_full_registration', array('type' => 'warning', 'message' => $output)); } } } //End no error on submission } //End recaptcha valid block } //End POST register submission return; }