Signup Password / WPMU 2.7

Hi!

I installed WPMU 2.7 together w/ Sign-up Password plugin, but when I registered and typed a password and doesn't save to the database, it still generate a random password..

What would be the problem? Thanks!

  • videowows

    WPMU DEV Staff Note - We strongly advise against editing your core code as advised below - the plugin should work just fine with 2.7.1

    Here's a quick fix for the above problem.
    add following function to /wp-signup.php

    function confirm_direct_user_signup($user_name, $user_email) {
    	?>
    	<h2><?php printf(__('%s is your new username'), $user_name) ?></h2>
    	<h3><?php _e("<a href=" . site_url( 'wp-login.php' ) . ">Click here to login</a>") ?></h3>
    	<?php printf(__('We have also sent copy of your login details to your inbox at <strong>%1$s</strong>.'),  $user_email) ?>
    
    	<?php
    	do_action('signup_finished');
    }

    Add the following before the "return true" i.e. last line of validate_user_signup(). These three lines allow us to get the password from the signup form, skip the email validation and directly activate the user without sending activation confirmation email, send registration/welcome email to the user.

    $user_password = $_POST['password_1'];
    	wpmu_direct_signup_user($user_name, $user_email, apply_filters( "add_signup_meta", array() ), $user_password );
    	confirm_direct_user_signup($user_name, $user_email);

    Open wp-includes/wpmu-functions.php and add the following functions.

    function wpmu_direct_signup_user($user, $user_email, $meta= '', $password) {
    	global $wpdb;
    	// Format data
    	$user = preg_replace( "/\s+/", '', sanitize_user( $user, true ) );
    	$user_email = sanitize_email( $user_email );
    	$key = substr( md5( time() . rand() . $user_email ), 0, 16 );
    	$meta = serialize($meta);
    
    	$wpdb->insert( $wpdb->signups, array(
    		'domain' => '',
    		'path' => '',
    		'title' => '',
    		'user_login' => $user,
    		'user_email' => $user_email,
    		'registered' => current_time('mysql', true),
    		'activation_key' => $key,
    		'meta' => $meta
    	) );
    	wpmu_direct_activate_signup($key, $password);
    	//no need to send activation email.
    	//wpmu_signup_user_notification($user, $user_email, $key, $meta);
    }
    
    function wpmu_direct_activate_signup($key, $password) {
    	global $wpdb;
    	$signup = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->signups WHERE activation_key = %s", $key) );
    
    	if ( empty($signup) )
    		return new WP_Error('invalid_key', __('Invalid activation key.'));
    
    	if ( $signup->active )
    		return new WP_Error('already_active', __('The blog is already active.'), $signup);
    
    	$meta = unserialize($signup->meta);
    	$user_login = $wpdb->escape($signup->user_login);
    	$user_email = $wpdb->escape($signup->user_email);
    	wpmu_validate_user_signup($user_login, $user_email);
    
    	$user_id = username_exists($user_login);
    
    	if ( ! $user_id )
    		$user_id = wpmu_create_user($user_login, $password, $user_email);
    	else
    		$user_already_exists = true;
    
    	if ( ! $user_id )
    		return new WP_Error('create_user', __('Could not create user'), $signup);
    
    	$now = current_time('mysql', true);
    
    	if ( empty($signup->domain) ) {
    		$wpdb->update( $wpdb->signups, array('active' => 1, 'activated' => $now), array('activation_key' => $key) );
    		if ( isset($user_already_exists) )
    			return new WP_Error('user_already_exists', __('That username is already activated.'), $signup);
    		wpmu_welcome_user_notification($user_id, $password, $meta);
    		if ( get_site_option( 'dashboard_blog' ) == false ) {
    			add_user_to_blog( '1', $user_id, get_site_option( 'default_user_role', 'subscriber' ) );
    		} else {
    			add_user_to_blog( get_site_option( 'dashboard_blog' ), $user_id, get_site_option( 'default_user_role', 'subscriber' ) );
    		}
    		add_new_user_to_blog( $user_id, $user_email, $meta );
    		do_action('wpmu_activate_user', $user_id, $password, $meta);
    		return array('user_id' => $user_id, 'password' => $password, 'meta' => $meta);
    	}
    
    	wpmu_validate_blog_signup($signup->domain, $signup->title);
    	$blog_id = wpmu_create_blog($signup->domain, $signup->path, $signup->title, $user_id, $meta, $wpdb->siteid);
    
    	// TODO: What to do if we create a user but cannot create a blog?
    	if ( is_wp_error($blog_id) ) {
    		// If blog is taken, that means a previous attempt to activate this blog failed in between creating the blog and
    		// setting the activation flag.  Let's just set the active flag and instruct the user to reset their password.
    		if ( 'blog_taken' == $blog_id->get_error_code() ) {
    			$blog_id->add_data($signup);
    			$wpdb->update( $wpdb->signups, array('active' => 1, 'activated' => $now), array('activation_key' => $key) );
    		}
    
    		return $blog_id;
    	}
    
    	$wpdb->update( $wpdb->signups, array('active' => 1, 'activated' => $now), array('activation_key' => $key) );
    
    	wpmu_welcome_notification($blog_id, $user_id, $password, $signup->title, $meta);
    
    	do_action('wpmu_activate_blog', $blog_id, $user_id, $password, $signup->title, $meta);
    
    	return array('blog_id' => $blog_id, 'user_id' => $user_id, 'password' => $password, 'title' => $signup->title, 'meta' => $meta);
    }

    This should work in conjunction with the signup plugin that's available on this site.

Thank NAME, for their help.

Let NAME know exactly why they deserved these points.

Gift a custom amount of points.