Example #1
0
$membership_level_name = strip_tags($_REQUEST['membership_level_name']);
$membership_level_id = strip_tags($_REQUEST['membership_level_id']);
eMember_log_debug('Received data:' . $email . '|' . $first_name . '|' . $last_name . '|' . $membership_level_name . '|' . $membership_level_id . '|' . $username . '|' . $password, true);
if (emember_wp_username_exists($username) || emember_username_exists($username)) {
    echo "Error!\n";
    echo "Username already in use.";
    eMember_log_debug('That username is already in use', false);
    exit;
}
if (emember_wp_email_exists($email) || emember_email_exists($email)) {
    echo "Error!\n";
    echo "Email address already exists.";
    eMember_log_debug('Email address already used...', false);
    exit;
}
if (is_blocked_email($email)) {
    echo "Error!\n";
    echo "Email address entered is forbidden..";
    eMember_log_debug("Forbidden email address used...", false);
    exit;
}
if (empty($membership_level_id)) {
    if (empty($membership_level_name)) {
        $membership_level_id = $emember_config->getValue('eMember_free_membership_level_id');
    } else {
        $membership_level_resultset = dbAccess::find(WP_EMEMBER_MEMBERSHIP_LEVEL_TABLE, " alias='" . $membership_level_name . "'");
        $membership_level_id = $membership_level_resultset->id;
    }
}
if (empty($username)) {
    $username = substr(uniqid(), 0, 6);
Example #2
0
}
if (!empty($_REQUEST['password'])) {
    $password = $wp_hasher->HashPassword(strip_tags($_REQUEST['password']));
    $fields['password'] = $password;
}
//Level ID to change (if any)
$membership_level_id = strip_tags(isset($_REQUEST['membership_level_id']) ? $_REQUEST['membership_level_id'] : "");
if (!empty($fields['email'])) {
    //Check to make sure the new email is not taken already or blocked
    if (emember_wp_email_exists($fields['email']) || emember_email_exists($fields['email'])) {
        echo "Error!\n";
        echo "Email address already exists.";
        eMember_log_debug('Email address already used...', false);
        exit;
    }
    if (is_blocked_email($fields['email'])) {
        echo "Error!\n";
        echo "Email address entered is blocked.";
        eMember_log_debug("Blocked email address used. This request will fail.", false);
        exit;
    }
}
//Update the corresponding WP User object if needed
$resultset = dbAccess::find(WP_EMEMBER_MEMBERS_TABLE_NAME, ' member_id=' . $member_id);
$wp_user_id = username_exists($resultset->user_name);
if ($wp_user_id) {
    $wp_user_info = array();
    $wp_user_info['first_name'] = strip_tags(isset($_REQUEST['first_name']) ? $_REQUEST['first_name'] : "");
    $wp_user_info['last_name'] = strip_tags(isset($_REQUEST['last_name']) ? $_REQUEST['last_name'] : "");
    $wp_user_info['user_email'] = strip_tags(isset($_REQUEST['email']) ? $_REQUEST['email'] : "");
    $wp_user_info['ID'] = $wp_user_id;
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&trade; 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;
}