' . __( 'Site Name (subdirectory only):' ) . '';
	} else {
		echo '
';
	}
	$errmsg_blogname      = $errors->get_error_message( 'blogname' );
	$errmsg_blogname_aria = '';
	if ( $errmsg_blogname ) {
		$errmsg_blogname_aria = 'wp-signup-blogname-error ';
		echo '
' . $errmsg_blogname . '
';
	}
	if ( ! is_subdomain_install() ) {
		echo '
' . $current_network->domain . $current_network->path . '
';
	} else {
		$site_domain = preg_replace( '|^www\.|', '', $current_network->domain );
		echo '
.' . esc_html( $site_domain ) . '
';
	}
	if ( ! is_user_logged_in() ) {
		if ( ! is_subdomain_install() ) {
			$site = $current_network->domain . $current_network->path . __( 'sitename' );
		} else {
			$site = __( 'domain' ) . '.' . $site_domain . $current_network->path;
		}
		printf(
			'
(%s) %s
',
			/* translators: %s: Site address. */
			sprintf( __( 'Your address will be %s.' ), $site ),
			__( 'Must be at least 4 characters, letters and numbers only. It cannot be changed, so choose carefully!' )
		);
	}
	// Site Title.
	?>
	
	get_error_message( 'blog_title' );
	$errmsg_blog_title_aria = '';
	if ( $errmsg_blog_title ) {
		$errmsg_blog_title_aria = ' aria-describedby="wp-signup-blog-title-error"';
		echo '
' . $errmsg_blog_title . '
';
	}
	echo '
';
	?>
	
		
			
			 'WPLANG',
					'id'                          => 'site-language',
					'selected'                    => $lang,
					'languages'                   => $languages,
					'show_available_translations' => false,
				)
			);
			?>
		
		
	
	' . __( 'Username:' ) . '';
	$errmsg_username      = $errors->get_error_message( 'user_name' );
	$errmsg_username_aria = '';
	if ( $errmsg_username ) {
		$errmsg_username_aria = 'wp-signup-username-error ';
		echo '
' . $errmsg_username . '
';
	}
	?>
	
	
	' . __( 'Email Address:' ) . '';
	$errmsg_email      = $errors->get_error_message( 'user_email' );
	$errmsg_email_aria = '';
	if ( $errmsg_email ) {
		$errmsg_email_aria = 'wp-signup-email-error ';
		echo '
' . $errmsg_email . '
';
	}
	?>
	
	
	get_error_message( 'generic' );
	if ( $errmsg_generic ) {
		echo '
' . $errmsg_generic . '
';
	}
	/**
	 * Fires at the end of the new user account registration form.
	 *
	 * @since 3.0.0
	 *
	 * @param WP_Error $errors A WP_Error object containing 'user_name' or 'user_email' errors.
	 */
	do_action( 'signup_extra_fields', $errors );
}
/**
 * Validates user sign-up name and email.
 *
 * @since MU (3.0.0)
 *
 * @return array Contains username, email, and error messages.
 *               See wpmu_validate_user_signup() for details.
 */
function validate_user_form() {
	return wpmu_validate_user_signup( $_POST['user_name'], $_POST['user_email'] );
}
/**
 * Shows a form for returning users to sign up for another site.
 *
 * @since MU (3.0.0)
 *
 * @param string          $blogname   The new site name
 * @param string          $blog_title The new site title.
 * @param WP_Error|string $errors     A WP_Error object containing existing errors. Defaults to empty string.
 */
function signup_another_blog( $blogname = '', $blog_title = '', $errors = '' ) {
	$current_user = wp_get_current_user();
	if ( ! is_wp_error( $errors ) ) {
		$errors = new WP_Error();
	}
	$signup_defaults = array(
		'blogname'   => $blogname,
		'blog_title' => $blog_title,
		'errors'     => $errors,
	);
	/**
	 * Filters the default site sign-up variables.
	 *
	 * @since 3.0.0
	 *
	 * @param array $signup_defaults {
	 *     An array of default site sign-up variables.
	 *
	 *     @type string   $blogname   The site blogname.
	 *     @type string   $blog_title The site title.
	 *     @type WP_Error $errors     A WP_Error object possibly containing 'blogname' or 'blog_title' errors.
	 * }
	 */
	$filtered_results = apply_filters( 'signup_another_blog_init', $signup_defaults );
	$blogname   = $filtered_results['blogname'];
	$blog_title = $filtered_results['blog_title'];
	$errors     = $filtered_results['errors'];
	/* translators: %s: Network title. */
	echo '
' . sprintf( __( 'Get another %s site in seconds' ), get_network()->site_name ) . '
';
	if ( $errors->has_errors() ) {
		echo '
' . __( 'There was a problem, please correct the form below and try again.' ) . '
';
	}
	?>
	
		add another site to your account. There is no limit to the number of sites you can have, so create to your heart’s content, but write responsibly!' ),
			$current_user->display_name
		);
		?>
	
	ID );
	if ( ! empty( $blogs ) ) {
		?>
			
			
	
	
	
	has_errors() ) {
		signup_another_blog( $blogname, $blog_title, $errors );
		return false;
	}
	$public = (int) $_POST['blog_public'];
	$blog_meta_defaults = array(
		'lang_id' => 1,
		'public'  => $public,
	);
	// Handle the language setting for the new site.
	if ( ! empty( $_POST['WPLANG'] ) ) {
		$languages = signup_get_available_languages();
		if ( in_array( $_POST['WPLANG'], $languages, true ) ) {
			$language = wp_unslash( sanitize_text_field( $_POST['WPLANG'] ) );
			if ( $language ) {
				$blog_meta_defaults['WPLANG'] = $language;
			}
		}
	}
	/**
	 * Filters the new site meta variables.
	 *
	 * Use the {@see 'add_signup_meta'} filter instead.
	 *
	 * @since MU (3.0.0)
	 * @deprecated 3.0.0 Use the {@see 'add_signup_meta'} filter instead.
	 *
	 * @param array $blog_meta_defaults An array of default blog meta variables.
	 */
	$meta_defaults = apply_filters_deprecated( 'signup_create_blog_meta', array( $blog_meta_defaults ), '3.0.0', 'add_signup_meta' );
	/**
	 * Filters the new default site meta variables.
	 *
	 * @since 3.0.0
	 *
	 * @param array $meta {
	 *     An array of default site meta variables.
	 *
	 *     @type int $lang_id     The language ID.
	 *     @type int $blog_public Whether search engines should be discouraged from indexing the site. 1 for true, 0 for false.
	 * }
	 */
	$meta = apply_filters( 'add_signup_meta', $meta_defaults );
	$blog_id = wpmu_create_blog( $domain, $path, $blog_title, $current_user->ID, $meta, get_current_network_id() );
	if ( is_wp_error( $blog_id ) ) {
		return false;
	}
	confirm_another_blog_signup( $domain, $path, $blog_title, $current_user->user_login, $current_user->user_email, $meta, $blog_id );
	return true;
}
/**
 * Shows a message confirming that the new site has been created.
 *
 * @since MU (3.0.0)
 * @since 4.4.0 Added the `$blog_id` parameter.
 *
 * @param string $domain     The domain URL.
 * @param string $path       The site root path.
 * @param string $blog_title The site title.
 * @param string $user_name  The username.
 * @param string $user_email The user's email address.
 * @param array  $meta       Any additional meta from the {@see 'add_signup_meta'} filter in validate_blog_signup().
 * @param int    $blog_id    The site ID.
 */
function confirm_another_blog_signup( $domain, $path, $blog_title, $user_name, $user_email = '', $meta = array(), $blog_id = 0 ) {
	if ( $blog_id ) {
		switch_to_blog( $blog_id );
		$home_url  = home_url( '/' );
		$login_url = wp_login_url();
		restore_current_blog();
	} else {
		$home_url  = 'http://' . $domain . $path;
		$login_url = 'http://' . $domain . $path . 'wp-login.php';
	}
	$site = sprintf(
		'
%2$s',
		esc_url( $home_url ),
		$blog_title
	);
	?>
	
	
	
	
		Log in as “%3$s” using your existing password.' ),
			sprintf(
				'%s',
				esc_url( $home_url ),
				untrailingslashit( $domain . $path )
			),
			esc_url( $login_url ),
			$user_name
		);
		?>
	
	 $user_name,
		'user_email' => $user_email,
		'errors'     => $errors,
	);
	/**
	 * Filters the default user variables used on the user sign-up form.
	 *
	 * @since 3.0.0
	 *
	 * @param array $signup_user_defaults {
	 *     An array of default user variables.
	 *
	 *     @type string   $user_name  The user username.
	 *     @type string   $user_email The user email address.
	 *     @type WP_Error $errors     A WP_Error object with possible errors relevant to the sign-up user.
	 * }
	 */
	$filtered_results = apply_filters( 'signup_user_init', $signup_user_defaults );
	$user_name        = $filtered_results['user_name'];
	$user_email       = $filtered_results['user_email'];
	$errors           = $filtered_results['errors'];
	?>
	
	site_name );
	?>
	
	
	has_errors() ) {
		signup_user( $user_name, $user_email, $errors );
		return false;
	}
	if ( 'blog' === $_POST['signup_for'] ) {
		signup_blog( $user_name, $user_email );
		return false;
	}
	/** This filter is documented in wp-signup.php */
	wpmu_signup_user( $user_name, $user_email, apply_filters( 'add_signup_meta', array() ) );
	confirm_user_signup( $user_name, $user_email );
	return true;
}
/**
 * Shows a message confirming that the new user has been registered and is awaiting activation.
 *
 * @since MU (3.0.0)
 *
 * @param string $user_name  The username.
 * @param string $user_email The user's email address.
 */
function confirm_user_signup( $user_name, $user_email ) {
	?>
	
	
	
	you must activate it.' ); ?>
	
	' . $user_email . '' );
	?>
	
	
	 $user_name,
		'user_email' => $user_email,
		'blogname'   => $blogname,
		'blog_title' => $blog_title,
		'errors'     => $errors,
	);
	/**
	 * Filters the default site creation variables for the site sign-up form.
	 *
	 * @since 3.0.0
	 *
	 * @param array $signup_blog_defaults {
	 *     An array of default site creation variables.
	 *
	 *     @type string   $user_name  The user username.
	 *     @type string   $user_email The user email address.
	 *     @type string   $blogname   The blogname.
	 *     @type string   $blog_title The title of the site.
	 *     @type WP_Error $errors     A WP_Error object with possible errors relevant to new site creation variables.
	 * }
	 */
	$filtered_results = apply_filters( 'signup_blog_init', $signup_blog_defaults );
	$user_name  = $filtered_results['user_name'];
	$user_email = $filtered_results['user_email'];
	$blogname   = $filtered_results['blogname'];
	$blog_title = $filtered_results['blog_title'];
	$errors     = $filtered_results['errors'];
	if ( empty( $blogname ) ) {
		$blogname = $user_name;
	}
	?>
	
	has_errors() ) {
		signup_user( $user_name, $user_email, $user_errors );
		return false;
	}
	$result     = wpmu_validate_blog_signup( $_POST['blogname'], $_POST['blog_title'] );
	$domain     = $result['domain'];
	$path       = $result['path'];
	$blogname   = $result['blogname'];
	$blog_title = $result['blog_title'];
	$errors     = $result['errors'];
	if ( $errors->has_errors() ) {
		signup_blog( $user_name, $user_email, $blogname, $blog_title, $errors );
		return false;
	}
	$public      = (int) $_POST['blog_public'];
	$signup_meta = array(
		'lang_id' => 1,
		'public'  => $public,
	);
	// Handle the language setting for the new site.
	if ( ! empty( $_POST['WPLANG'] ) ) {
		$languages = signup_get_available_languages();
		if ( in_array( $_POST['WPLANG'], $languages, true ) ) {
			$language = wp_unslash( sanitize_text_field( $_POST['WPLANG'] ) );
			if ( $language ) {
				$signup_meta['WPLANG'] = $language;
			}
		}
	}
	/** This filter is documented in wp-signup.php */
	$meta = apply_filters( 'add_signup_meta', $signup_meta );
	wpmu_signup_blog( $domain, $path, $blog_title, $user_name, $user_email, $meta );
	confirm_blog_signup( $domain, $path, $blog_title, $user_name, $user_email, $meta );
	return true;
}
/**
 * Shows a message confirming that the new site has been registered and is awaiting activation.
 *
 * @since MU (3.0.0)
 *
 * @param string $domain     The domain or subdomain of the site.
 * @param string $path       The path of the site.
 * @param string $blog_title The title of the new site.
 * @param string $user_name  The user's username.
 * @param string $user_email The user's email address.
 * @param array  $meta       Any additional meta from the {@see 'add_signup_meta'} filter in validate_blog_signup().
 */
function confirm_blog_signup( $domain, $path, $blog_title, $user_name = '', $user_email = '', $meta = array() ) {
	?>
	
	{$blog_title}" )
	?>
	
	you must activate it.' ); ?>
	
	' . $user_email . '' );
	?>
	
	
	
	
	
	';
	_e( 'Greetings Network Administrator!' );
	echo ' ';
	switch ( $active_signup ) {
		case 'none':
			_e( 'The network currently disallows registrations.' );
			break;
		case 'blog':
			_e( 'The network currently allows site registrations.' );
			break;
		case 'user':
			_e( 'The network currently allows user registrations.' );
			break;
		default:
			_e( 'The network currently allows both site and user registrations.' );
			break;
	}
	echo ' ';
	/* translators: %s: URL to Network Settings screen. */
	printf( __( 'To change or disable registration go to your 
Options page.' ), esc_url( network_admin_url( 'settings.php' ) ) );
	echo '
';
}
$newblogname = isset( $_GET['new'] ) ? strtolower( preg_replace( '/^-|-$|[^-a-zA-Z0-9]/', '', $_GET['new'] ) ) : null;
$current_user = wp_get_current_user();
if ( 'none' === $active_signup ) {
	_e( 'Registration has been disabled.' );
} elseif ( 'blog' === $active_signup && ! is_user_logged_in() ) {
	$login_url = wp_login_url( network_site_url( 'wp-signup.php' ) );
	/* translators: %s: Login URL. */
	printf( __( 'You must first 
, and then you can create a new site.' ), $login_url );
} else {
	$stage = isset( $_POST['stage'] ) ? $_POST['stage'] : 'default';
	switch ( $stage ) {
		case 'validate-user-signup':
			if ( 'all' === $active_signup
				|| ( 'blog' === $_POST['signup_for'] && 'blog' === $active_signup )
				|| ( 'user' === $_POST['signup_for'] && 'user' === $active_signup )
			) {
				validate_user_signup();
			} else {
				_e( 'User registration has been disabled.' );
			}
			break;
		case 'validate-blog-signup':
			if ( 'all' === $active_signup || 'blog' === $active_signup ) {
				validate_blog_signup();
			} else {
				_e( 'Site registration has been disabled.' );
			}
			break;
		case 'gimmeanotherblog':
			validate_another_blog_signup();
			break;
		case 'default':
		default:
			$user_email = isset( $_POST['user_email'] ) ? $_POST['user_email'] : '';
			/**
			 * Fires when the site sign-up form is sent.
			 *
			 * @since 3.0.0
			 */
			do_action( 'preprocess_signup_form' );
			if ( is_user_logged_in() && ( 'all' === $active_signup || 'blog' === $active_signup ) ) {
				signup_another_blog( $newblogname );
			} elseif ( ! is_user_logged_in() && ( 'all' === $active_signup || 'user' === $active_signup ) ) {
				signup_user( $newblogname, $user_email );
			} elseif ( ! is_user_logged_in() && ( 'blog' === $active_signup ) ) {
				_e( 'Sorry, new registrations are not allowed at this time.' );
			} else {
				_e( 'You are logged in already. No need to register again!' );
			}
			if ( $newblogname ) {
				$newblog = get_blogaddress_by_name( $newblogname );
				if ( 'blog' === $active_signup || 'all' === $active_signup ) {
					printf(
						/* translators: %s: Site address. */
						'
' . __( 'The site you were looking for, %s, does not exist, but you can create it now!' ) . '
'
					);
				} else {
					printf(
						/* translators: %s: Site address. */
						'
' . __( 'The site you were looking for, %s, does not exist.' ) . '