ru-se.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

wp-activate.php (7165B)


      1 <?php
      2 /**
      3  * Confirms that the activation key that is sent in an email after a user signs
      4  * up for a new site matches the key for that user and then displays confirmation.
      5  *
      6  * @package WordPress
      7  */
      8 
      9 define( 'WP_INSTALLING', true );
     10 
     11 /** Sets up the WordPress Environment. */
     12 require __DIR__ . '/wp-load.php';
     13 
     14 require __DIR__ . '/wp-blog-header.php';
     15 
     16 if ( ! is_multisite() ) {
     17 	wp_redirect( wp_registration_url() );
     18 	die();
     19 }
     20 
     21 $valid_error_codes = array( 'already_active', 'blog_taken' );
     22 
     23 list( $activate_path ) = explode( '?', wp_unslash( $_SERVER['REQUEST_URI'] ) );
     24 $activate_cookie       = 'wp-activate-' . COOKIEHASH;
     25 
     26 $key    = '';
     27 $result = null;
     28 
     29 if ( isset( $_GET['key'] ) && isset( $_POST['key'] ) && $_GET['key'] !== $_POST['key'] ) {
     30 	wp_die( __( 'A key value mismatch has been detected. Please follow the link provided in your activation email.' ), __( 'An error occurred during the activation' ), 400 );
     31 } elseif ( ! empty( $_GET['key'] ) ) {
     32 	$key = $_GET['key'];
     33 } elseif ( ! empty( $_POST['key'] ) ) {
     34 	$key = $_POST['key'];
     35 }
     36 
     37 if ( $key ) {
     38 	$redirect_url = remove_query_arg( 'key' );
     39 
     40 	if ( remove_query_arg( false ) !== $redirect_url ) {
     41 		setcookie( $activate_cookie, $key, 0, $activate_path, COOKIE_DOMAIN, is_ssl(), true );
     42 		wp_safe_redirect( $redirect_url );
     43 		exit;
     44 	} else {
     45 		$result = wpmu_activate_signup( $key );
     46 	}
     47 }
     48 
     49 if ( null === $result && isset( $_COOKIE[ $activate_cookie ] ) ) {
     50 	$key    = $_COOKIE[ $activate_cookie ];
     51 	$result = wpmu_activate_signup( $key );
     52 	setcookie( $activate_cookie, ' ', time() - YEAR_IN_SECONDS, $activate_path, COOKIE_DOMAIN, is_ssl(), true );
     53 }
     54 
     55 if ( null === $result || ( is_wp_error( $result ) && 'invalid_key' === $result->get_error_code() ) ) {
     56 	status_header( 404 );
     57 } elseif ( is_wp_error( $result ) ) {
     58 	$error_code = $result->get_error_code();
     59 
     60 	if ( ! in_array( $error_code, $valid_error_codes, true ) ) {
     61 		status_header( 400 );
     62 	}
     63 }
     64 
     65 nocache_headers();
     66 
     67 if ( is_object( $wp_object_cache ) ) {
     68 	$wp_object_cache->cache_enabled = false;
     69 }
     70 
     71 // Fix for page title.
     72 $wp_query->is_404 = false;
     73 
     74 /**
     75  * Fires before the Site Activation page is loaded.
     76  *
     77  * @since 3.0.0
     78  */
     79 do_action( 'activate_header' );
     80 
     81 /**
     82  * Adds an action hook specific to this page.
     83  *
     84  * Fires on {@see 'wp_head'}.
     85  *
     86  * @since MU (3.0.0)
     87  */
     88 function do_activate_header() {
     89 	/**
     90 	 * Fires before the Site Activation page is loaded.
     91 	 *
     92 	 * Fires on the {@see 'wp_head'} action.
     93 	 *
     94 	 * @since 3.0.0
     95 	 */
     96 	do_action( 'activate_wp_head' );
     97 }
     98 add_action( 'wp_head', 'do_activate_header' );
     99 
    100 /**
    101  * Loads styles specific to this page.
    102  *
    103  * @since MU (3.0.0)
    104  */
    105 function wpmu_activate_stylesheet() {
    106 	?>
    107 	<style type="text/css">
    108 		form { margin-top: 2em; }
    109 		#submit, #key { width: 90%; font-size: 24px; }
    110 		#language { margin-top: .5em; }
    111 		.error { background: #f66; }
    112 		span.h3 { padding: 0 8px; font-size: 1.3em; font-weight: 600; }
    113 	</style>
    114 	<?php
    115 }
    116 add_action( 'wp_head', 'wpmu_activate_stylesheet' );
    117 add_action( 'wp_head', 'wp_strict_cross_origin_referrer' );
    118 add_filter( 'wp_robots', 'wp_robots_sensitive_page' );
    119 
    120 get_header( 'wp-activate' );
    121 
    122 $blog_details = get_blog_details();
    123 ?>
    124 
    125 <div id="signup-content" class="widecolumn">
    126 	<div class="wp-activate-container">
    127 	<?php if ( ! $key ) { ?>
    128 
    129 		<h2><?php _e( 'Activation Key Required' ); ?></h2>
    130 		<form name="activateform" id="activateform" method="post" action="<?php echo network_site_url( $blog_details->path . 'wp-activate.php' ); ?>">
    131 			<p>
    132 				<label for="key"><?php _e( 'Activation Key:' ); ?></label>
    133 				<br /><input type="text" name="key" id="key" value="" size="50" />
    134 			</p>
    135 			<p class="submit">
    136 				<input id="submit" type="submit" name="Submit" class="submit" value="<?php esc_attr_e( 'Activate' ); ?>" />
    137 			</p>
    138 		</form>
    139 
    140 		<?php
    141 	} else {
    142 		if ( is_wp_error( $result ) && in_array( $result->get_error_code(), $valid_error_codes, true ) ) {
    143 			$signup = $result->get_error_data();
    144 			?>
    145 			<h2><?php _e( 'Your account is now active!' ); ?></h2>
    146 			<?php
    147 			echo '<p class="lead-in">';
    148 			if ( '' === $signup->domain . $signup->path ) {
    149 				printf(
    150 					/* translators: 1: Login URL, 2: Username, 3: User email address, 4: Lost password URL. */
    151 					__( 'Your account has been activated. You may now <a href="%1$s">log in</a> to the site using your chosen username of &#8220;%2$s&#8221;. Please check your email inbox at %3$s for your password and login instructions. If you do not receive an email, please check your junk or spam folder. If you still do not receive an email within an hour, you can <a href="%4$s">reset your password</a>.' ),
    152 					network_site_url( $blog_details->path . 'wp-login.php', 'login' ),
    153 					$signup->user_login,
    154 					$signup->user_email,
    155 					wp_lostpassword_url()
    156 				);
    157 			} else {
    158 				printf(
    159 					/* translators: 1: Site URL, 2: Username, 3: User email address, 4: Lost password URL. */
    160 					__( 'Your site at %1$s is active. You may now log in to your site using your chosen username of &#8220;%2$s&#8221;. Please check your email inbox at %3$s for your password and login instructions. If you do not receive an email, please check your junk or spam folder. If you still do not receive an email within an hour, you can <a href="%4$s">reset your password</a>.' ),
    161 					sprintf( '<a href="http://%1$s%2$s">%1$s%2$s</a>', $signup->domain, $blog_details->path ),
    162 					$signup->user_login,
    163 					$signup->user_email,
    164 					wp_lostpassword_url()
    165 				);
    166 			}
    167 			echo '</p>';
    168 		} elseif ( null === $result || is_wp_error( $result ) ) {
    169 			?>
    170 			<h2><?php _e( 'An error occurred during the activation' ); ?></h2>
    171 			<?php if ( is_wp_error( $result ) ) : ?>
    172 				<p><?php echo $result->get_error_message(); ?></p>
    173 			<?php endif; ?>
    174 			<?php
    175 		} else {
    176 			$url  = isset( $result['blog_id'] ) ? get_home_url( (int) $result['blog_id'] ) : '';
    177 			$user = get_userdata( (int) $result['user_id'] );
    178 			?>
    179 			<h2><?php _e( 'Your account is now active!' ); ?></h2>
    180 
    181 			<div id="signup-welcome">
    182 			<p><span class="h3"><?php _e( 'Username:' ); ?></span> <?php echo $user->user_login; ?></p>
    183 			<p><span class="h3"><?php _e( 'Password:' ); ?></span> <?php echo $result['password']; ?></p>
    184 			</div>
    185 
    186 			<?php
    187 			if ( $url && network_home_url( '', 'http' ) !== $url ) :
    188 				switch_to_blog( (int) $result['blog_id'] );
    189 				$login_url = wp_login_url();
    190 				restore_current_blog();
    191 				?>
    192 				<p class="view">
    193 				<?php
    194 					/* translators: 1: Site URL, 2: Login URL. */
    195 					printf( __( 'Your account is now activated. <a href="%1$s">View your site</a> or <a href="%2$s">Log in</a>' ), $url, esc_url( $login_url ) );
    196 				?>
    197 				</p>
    198 			<?php else : ?>
    199 				<p class="view">
    200 				<?php
    201 					printf(
    202 						/* translators: 1: Login URL, 2: Network home URL. */
    203 						__( 'Your account is now activated. <a href="%1$s">Log in</a> or go back to the <a href="%2$s">homepage</a>.' ),
    204 						network_site_url( $blog_details->path . 'wp-login.php', 'login' ),
    205 						network_home_url( $blog_details->path )
    206 					);
    207 				?>
    208 				</p>
    209 				<?php
    210 				endif;
    211 		}
    212 	}
    213 	?>
    214 	</div>
    215 </div>
    216 <script type="text/javascript">
    217 	var key_input = document.getElementById('key');
    218 	key_input && key_input.focus();
    219 </script>
    220 <?php
    221 get_footer( 'wp-activate' );