Example #1
0
function wp_emember_generate_and_mail_password($email)
{
    global $wpdb;
    if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
        if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
            return array('status_code' => false, 'msg' => EMEMBER_EMAIL_NOT_EXIST);
        }
    }
    $emember_config = Emember_Config::getInstance();
    $emailId = esc_sql(trim($email));
    $user = dbAccess::find(WP_EMEMBER_MEMBERS_TABLE_NAME, 'email=\'' . $emailId . '\'');
    if ($user) {
        require_once 'rand_pass.php';
        include_once ABSPATH . WPINC . '/class-phpass.php';
        $wp_hasher = new PasswordHash(8, TRUE);
        $reset_pass = utility::generate_password();
        //send mail from here with user name & password
        $wp_user_id = username_exists($user->user_name);
        if ($wp_user_id) {
            $wp_user_info = array();
            $wp_user_info['user_pass'] = $reset_pass;
            $wp_user_info['ID'] = $wp_user_id;
            wp_update_user($wp_user_info);
        }
        $fields = array();
        $password = $wp_hasher->HashPassword($reset_pass);
        $fields['password'] = esc_sql($password);
        dbAccess::update(WP_EMEMBER_MEMBERS_TABLE_NAME, 'member_id = ' . $user->member_id, $fields);
        $email_body = $emember_config->getValue('eMember_fogot_pass_email_body');
        $email_subject = $emember_config->getValue('eMember_fogot_pass_email_subject');
        $tags1 = array("{first_name}", "{last_name}", "{user_name}", "{password}");
        $vals1 = array($user->first_name, $user->last_name, $user->user_name, $reset_pass);
        $email_body = str_replace($tags1, $vals1, $email_body);
        $from_address = $emember_config->getValue('eMember_fogot_pass_senders_email_address');
        $headers = 'From: ' . $from_address . "\r\n";
        wp_mail($emailId, $email_subject, $email_body, $headers);
        eMember_log_debug("Member password reset email sent to : " . $emailId, true);
        //Update the affiliate profile password if applicable
        eMember_handle_affiliate_password_reset($emailId, $password);
        return array('status_code' => true, 'msg' => EMEMBER_PASS_EMAILED_MSG);
    } else {
        return array('status_code' => false, 'msg' => EMEMBER_EMAIL_NOT_EXIST);
    }
}