~canonical-sysadmins/wordpress/4.7.2

« back to all changes in this revision

Viewing changes to wp-signup.php

  • Committer: Jacek Nykis
  • Date: 2015-01-05 16:17:05 UTC
  • Revision ID: jacek.nykis@canonical.com-20150105161705-w544l1h5mcg7u4w9
Initial commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?php
 
2
 
 
3
/** Sets up the WordPress Environment. */
 
4
require( dirname(__FILE__) . '/wp-load.php' );
 
5
 
 
6
add_action( 'wp_head', 'wp_no_robots' );
 
7
 
 
8
require( dirname( __FILE__ ) . '/wp-blog-header.php' );
 
9
 
 
10
if ( is_array( get_site_option( 'illegal_names' )) && isset( $_GET[ 'new' ] ) && in_array( $_GET[ 'new' ], get_site_option( 'illegal_names' ) ) == true ) {
 
11
        wp_redirect( network_home_url() );
 
12
        die();
 
13
}
 
14
 
 
15
/**
 
16
 * Prints signup_header via wp_head
 
17
 *
 
18
 * @since MU
 
19
 */
 
20
function do_signup_header() {
 
21
        /**
 
22
         * Fires within the <head> section of the site sign-up screen.
 
23
         *
 
24
         * @since 3.0.0
 
25
         */
 
26
        do_action( 'signup_header' );
 
27
}
 
28
add_action( 'wp_head', 'do_signup_header' );
 
29
 
 
30
if ( !is_multisite() ) {
 
31
        wp_redirect( site_url('wp-login.php?action=register') );
 
32
        die();
 
33
}
 
34
 
 
35
if ( !is_main_site() ) {
 
36
        wp_redirect( network_site_url( 'wp-signup.php' ) );
 
37
        die();
 
38
}
 
39
 
 
40
// Fix for page title
 
41
$wp_query->is_404 = false;
 
42
 
 
43
/**
 
44
 * Prints styles for front-end Multisite signup pages
 
45
 *
 
46
 * @since MU
 
47
 */
 
48
function wpmu_signup_stylesheet() {
 
49
        ?>
 
50
        <style type="text/css">
 
51
                .mu_register { width: 90%; margin:0 auto; }
 
52
                .mu_register form { margin-top: 2em; }
 
53
                .mu_register .error { font-weight:700; padding:10px; color:#333333; background:#FFEBE8; border:1px solid #CC0000; }
 
54
                .mu_register input[type="submit"],
 
55
                        .mu_register #blog_title,
 
56
                        .mu_register #user_email,
 
57
                        .mu_register #blogname,
 
58
                        .mu_register #user_name { width:100%; font-size: 24px; margin:5px 0; }
 
59
                .mu_register .prefix_address,
 
60
                        .mu_register .suffix_address {font-size: 18px;display:inline; }
 
61
                .mu_register label { font-weight:700; font-size:15px; display:block; margin:10px 0; }
 
62
                .mu_register label.checkbox { display:inline; }
 
63
                .mu_register .mu_alert { font-weight:700; padding:10px; color:#333333; background:#ffffe0; border:1px solid #e6db55; }
 
64
        </style>
 
65
        <?php
 
66
}
 
67
 
 
68
add_action( 'wp_head', 'wpmu_signup_stylesheet' );
 
69
get_header();
 
70
 
 
71
/**
 
72
 * Fires before the site sign-up form.
 
73
 *
 
74
 * @since 3.0.0
 
75
 */
 
76
do_action( 'before_signup_form' );
 
77
?>
 
78
<div id="content" class="widecolumn">
 
79
<div class="mu_register">
 
80
<?php
 
81
/**
 
82
 * Generates and displays the Signup and Create Site forms
 
83
 *
 
84
 * @since MU
 
85
 *
 
86
 * @param string $blogname The new site name
 
87
 * @param string $blog_title The new site title
 
88
 * @param array $errors
 
89
 */
 
90
function show_blog_form( $blogname = '', $blog_title = '', $errors = '' ) {
 
91
        $current_site = get_current_site();
 
92
        // Blog name
 
93
        if ( !is_subdomain_install() )
 
94
                echo '<label for="blogname">' . __('Site Name:') . '</label>';
 
95
        else
 
96
                echo '<label for="blogname">' . __('Site Domain:') . '</label>';
 
97
 
 
98
        if ( $errmsg = $errors->get_error_message('blogname') ) { ?>
 
99
                <p class="error"><?php echo $errmsg ?></p>
 
100
        <?php }
 
101
 
 
102
        if ( !is_subdomain_install() )
 
103
                echo '<span class="prefix_address">' . $current_site->domain . $current_site->path . '</span><input name="blogname" type="text" id="blogname" value="'. esc_attr($blogname) .'" maxlength="60" /><br />';
 
104
        else
 
105
                echo '<input name="blogname" type="text" id="blogname" value="'.esc_attr($blogname).'" maxlength="60" /><span class="suffix_address">.' . ( $site_domain = preg_replace( '|^www\.|', '', $current_site->domain ) ) . '</span><br />';
 
106
 
 
107
        if ( !is_user_logged_in() ) {
 
108
                if ( !is_subdomain_install() )
 
109
                        $site = $current_site->domain . $current_site->path . __( 'sitename' );
 
110
                else
 
111
                        $site = __( 'domain' ) . '.' . $site_domain . $current_site->path;
 
112
                echo '<p>(<strong>' . sprintf( __('Your address will be %s.'), $site ) . '</strong>) ' . __( 'Must be at least 4 characters, letters and numbers only. It cannot be changed, so choose carefully!' ) . '</p>';
 
113
        }
 
114
 
 
115
        // Blog Title
 
116
        ?>
 
117
        <label for="blog_title"><?php _e('Site Title:') ?></label>
 
118
        <?php if ( $errmsg = $errors->get_error_message('blog_title') ) { ?>
 
119
                <p class="error"><?php echo $errmsg ?></p>
 
120
        <?php }
 
121
        echo '<input name="blog_title" type="text" id="blog_title" value="'.esc_attr($blog_title).'" />';
 
122
        ?>
 
123
 
 
124
        <div id="privacy">
 
125
        <p class="privacy-intro">
 
126
            <label for="blog_public_on"><?php _e('Privacy:') ?></label>
 
127
            <?php _e( 'Allow search engines to index this site.' ); ?>
 
128
            <br style="clear:both" />
 
129
            <label class="checkbox" for="blog_public_on">
 
130
                <input type="radio" id="blog_public_on" name="blog_public" value="1" <?php if ( !isset( $_POST['blog_public'] ) || $_POST['blog_public'] == '1' ) { ?>checked="checked"<?php } ?> />
 
131
                <strong><?php _e( 'Yes' ); ?></strong>
 
132
            </label>
 
133
            <label class="checkbox" for="blog_public_off">
 
134
                <input type="radio" id="blog_public_off" name="blog_public" value="0" <?php if ( isset( $_POST['blog_public'] ) && $_POST['blog_public'] == '0' ) { ?>checked="checked"<?php } ?> />
 
135
                <strong><?php _e( 'No' ); ?></strong>
 
136
            </label>
 
137
        </p>
 
138
        </div>
 
139
 
 
140
        <?php
 
141
        /**
 
142
         * Fires after the site sign-up form.
 
143
         *
 
144
         * @since 3.0.0
 
145
         *
 
146
         * @param array $errors An array possibly containing 'blogname' or 'blog_title' errors.
 
147
         */
 
148
        do_action( 'signup_blogform', $errors );
 
149
}
 
150
 
 
151
/**
 
152
 * Validate the new site signup
 
153
 *
 
154
 * @since MU
 
155
 *
 
156
 * @uses wp_get_current_user() to retrieve the current user
 
157
 * @uses wpmu_validate_blog_signup() to validate new site signup for the current user
 
158
 * @return array Contains the new site data and error messages.
 
159
 */
 
160
function validate_blog_form() {
 
161
        $user = '';
 
162
        if ( is_user_logged_in() )
 
163
                $user = wp_get_current_user();
 
164
 
 
165
        return wpmu_validate_blog_signup($_POST['blogname'], $_POST['blog_title'], $user);
 
166
}
 
167
 
 
168
/**
 
169
 * Display user registration form
 
170
 *
 
171
 * @since MU
 
172
 *
 
173
 * @param string $user_name The entered username
 
174
 * @param string $user_email The entered email address
 
175
 * @param array $errors
 
176
 */
 
177
function show_user_form($user_name = '', $user_email = '', $errors = '') {
 
178
        // User name
 
179
        echo '<label for="user_name">' . __('Username:') . '</label>';
 
180
        if ( $errmsg = $errors->get_error_message('user_name') ) {
 
181
                echo '<p class="error">'.$errmsg.'</p>';
 
182
        }
 
183
        echo '<input name="user_name" type="text" id="user_name" value="'. esc_attr($user_name) .'" maxlength="60" /><br />';
 
184
        _e( '(Must be at least 4 characters, letters and numbers only.)' );
 
185
        ?>
 
186
 
 
187
        <label for="user_email"><?php _e( 'Email&nbsp;Address:' ) ?></label>
 
188
        <?php if ( $errmsg = $errors->get_error_message('user_email') ) { ?>
 
189
                <p class="error"><?php echo $errmsg ?></p>
 
190
        <?php } ?>
 
191
        <input name="user_email" type="email" id="user_email" value="<?php  echo esc_attr($user_email) ?>" maxlength="200" /><br /><?php _e('We send your registration email to this address. (Double-check your email address before continuing.)') ?>
 
192
        <?php
 
193
        if ( $errmsg = $errors->get_error_message('generic') ) {
 
194
                echo '<p class="error">' . $errmsg . '</p>';
 
195
        }
 
196
        /**
 
197
         * Fires at the end of the user registration form on the site sign-up form.
 
198
         *
 
199
         * @since 3.0.0
 
200
         *
 
201
         * @param array $errors An array possibly containing 'user_name' or 'user_email' errors.
 
202
         */
 
203
        do_action( 'signup_extra_fields', $errors );
 
204
}
 
205
 
 
206
/**
 
207
 * Validate user signup name and email
 
208
 *
 
209
 * @since MU
 
210
 *
 
211
 * @uses wpmu_validate_user_signup() to retrieve an array of user data
 
212
 * @return array Contains username, email, and error messages.
 
213
 */
 
214
function validate_user_form() {
 
215
        return wpmu_validate_user_signup($_POST['user_name'], $_POST['user_email']);
 
216
}
 
217
 
 
218
/**
 
219
 * Allow returning users to sign up for another site
 
220
 *
 
221
 * @since MU
 
222
 *
 
223
 * @uses wp_get_current_user() to get the current user
 
224
 * @param string $blogname The new site name
 
225
 * @param string $blog_title The new blog title
 
226
 * @param array $errors
 
227
 */
 
228
function signup_another_blog( $blogname = '', $blog_title = '', $errors = '' ) {
 
229
        $current_user = wp_get_current_user();
 
230
 
 
231
        if ( ! is_wp_error($errors) ) {
 
232
                $errors = new WP_Error();
 
233
        }
 
234
 
 
235
        $signup_defaults = array(
 
236
                'blogname'   => $blogname,
 
237
                'blog_title' => $blog_title,
 
238
                'errors'     => $errors
 
239
        );
 
240
 
 
241
        /**
 
242
         * Filter the default site sign-up variables.
 
243
         *
 
244
         * @since 3.0.0
 
245
         *
 
246
         * @param array $signup_defaults {
 
247
         *     An array of default site sign-up variables.
 
248
         *
 
249
         *     @type string $blogname   The site blogname.
 
250
         *     @type string $blog_title The site title.
 
251
         *     @type array  $errors     An array possibly containing 'blogname' or 'blog_title' errors.
 
252
         * }
 
253
         */
 
254
        $filtered_results = apply_filters( 'signup_another_blog_init', $signup_defaults );
 
255
 
 
256
        $blogname = $filtered_results['blogname'];
 
257
        $blog_title = $filtered_results['blog_title'];
 
258
        $errors = $filtered_results['errors'];
 
259
 
 
260
        echo '<h2>' . sprintf( __( 'Get <em>another</em> %s site in seconds' ), get_current_site()->site_name ) . '</h2>';
 
261
 
 
262
        if ( $errors->get_error_code() ) {
 
263
                echo '<p>' . __( 'There was a problem, please correct the form below and try again.' ) . '</p>';
 
264
        }
 
265
        ?>
 
266
        <p><?php printf( __( 'Welcome back, %s. By filling out the form below, you can <strong>add another site to your account</strong>. There is no limit to the number of sites you can have, so create to your heart&#8217;s content, but write responsibly!' ), $current_user->display_name ) ?></p>
 
267
 
 
268
        <?php
 
269
        $blogs = get_blogs_of_user($current_user->ID);
 
270
        if ( !empty($blogs) ) { ?>
 
271
 
 
272
                        <p><?php _e( 'Sites you are already a member of:' ) ?></p>
 
273
                        <ul>
 
274
                                <?php foreach ( $blogs as $blog ) {
 
275
                                        $home_url = get_home_url( $blog->userblog_id );
 
276
                                        echo '<li><a href="' . esc_url( $home_url ) . '">' . $home_url . '</a></li>';
 
277
                                } ?>
 
278
                        </ul>
 
279
        <?php } ?>
 
280
 
 
281
        <p><?php _e( 'If you&#8217;re not going to use a great site domain, leave it for a new user. Now have at it!' ) ?></p>
 
282
        <form id="setupform" method="post" action="wp-signup.php">
 
283
                <input type="hidden" name="stage" value="gimmeanotherblog" />
 
284
                <?php
 
285
                /**
 
286
                 * Hidden sign-up form fields output when creating another site or user.
 
287
                 *
 
288
                 * @since MU
 
289
                 *
 
290
                 * @param string $context A string describing the steps of the sign-up process. The value can be
 
291
                 *                        'create-another-site', 'validate-user', or 'validate-site'.
 
292
                 */
 
293
                do_action( 'signup_hidden_fields', 'create-another-site' );
 
294
                ?>
 
295
                <?php show_blog_form($blogname, $blog_title, $errors); ?>
 
296
                <p class="submit"><input type="submit" name="submit" class="submit" value="<?php esc_attr_e( 'Create Site' ) ?>" /></p>
 
297
        </form>
 
298
        <?php
 
299
}
 
300
 
 
301
/**
 
302
 * Validate a new blog signup
 
303
 *
 
304
 * @since MU
 
305
 *
 
306
 * @uses wp_get_current_user() to retrieve the current user
 
307
 * @uses wpmu_create_blog() to add a new site
 
308
 * @uses confirm_another_blog_signup() to confirm the user's new site signup
 
309
 * @return bool True if blog signup was validated, false if error
 
310
 */
 
311
function validate_another_blog_signup() {
 
312
        global $wpdb, $blogname, $blog_title, $errors, $domain, $path;
 
313
        $current_user = wp_get_current_user();
 
314
        if ( !is_user_logged_in() )
 
315
                die();
 
316
 
 
317
        $result = validate_blog_form();
 
318
 
 
319
        // Extracted values set/overwrite globals.
 
320
        $domain = $result['domain'];
 
321
        $path = $result['path'];
 
322
        $blogname = $result['blogname'];
 
323
        $blog_title = $result['blog_title'];
 
324
        $errors = $result['errors'];
 
325
 
 
326
        if ( $errors->get_error_code() ) {
 
327
                signup_another_blog($blogname, $blog_title, $errors);
 
328
                return false;
 
329
        }
 
330
 
 
331
        $public = (int) $_POST['blog_public'];
 
332
 
 
333
        $blog_meta_defaults = array(
 
334
                'lang_id' => 1,
 
335
                'public'  => $public
 
336
        );
 
337
 
 
338
        /**
 
339
         * Filter the new site meta variables.
 
340
         *
 
341
         * @since MU
 
342
         * @deprecated 3.0.0 Use the 'add_signup_meta' filter instead.
 
343
         *
 
344
         * @param array $blog_meta_defaults An array of default blog meta variables.
 
345
         */
 
346
        $meta_defaults = apply_filters( 'signup_create_blog_meta', $blog_meta_defaults );
 
347
        /**
 
348
         * Filter the new default site meta variables.
 
349
         *
 
350
         * @since 3.0.0
 
351
         *
 
352
         * @param array $meta {
 
353
         *     An array of default site meta variables.
 
354
         *
 
355
         *     @type int $lang_id     The language ID.
 
356
         *     @type int $blog_public Whether search engines should be discouraged from indexing the site. 1 for true, 0 for false.
 
357
         * }
 
358
         */
 
359
        $meta = apply_filters( 'add_signup_meta', $meta_defaults );
 
360
 
 
361
        wpmu_create_blog( $domain, $path, $blog_title, $current_user->ID, $meta, $wpdb->siteid );
 
362
        confirm_another_blog_signup($domain, $path, $blog_title, $current_user->user_login, $current_user->user_email, $meta);
 
363
        return true;
 
364
}
 
365
 
 
366
/**
 
367
 * Confirm a new site signup
 
368
 *
 
369
 * @since MU
 
370
 *
 
371
 * @param string $domain The domain URL
 
372
 * @param string $path The site root path
 
373
 * @param string $user_name The username
 
374
 * @param string $user_email The user's email address
 
375
 * @param array $meta Any additional meta from the 'add_signup_meta' filter in validate_blog_signup()
 
376
 */
 
377
function confirm_another_blog_signup( $domain, $path, $blog_title, $user_name, $user_email = '', $meta = array() ) {
 
378
        ?>
 
379
        <h2><?php printf( __( 'The site %s is yours.' ), "<a href='http://{$domain}{$path}'>{$blog_title}</a>" ) ?></h2>
 
380
        <p>
 
381
                <?php printf( __( '<a href="http://%1$s">http://%2$s</a> is your new site. <a href="%3$s">Log in</a> as &#8220;%4$s&#8221; using your existing password.' ), $domain.$path, $domain.$path, "http://" . $domain.$path . "wp-login.php", $user_name ) ?>
 
382
        </p>
 
383
        <?php
 
384
        /**
 
385
         * Fires when the site or user sign-up process is complete.
 
386
         *
 
387
         * @since 3.0.0
 
388
         */
 
389
        do_action( 'signup_finished' );
 
390
}
 
391
 
 
392
/**
 
393
 * Setup the new user signup process
 
394
 *
 
395
 * @since MU
 
396
 *
 
397
 * @uses apply_filters() filter $filtered_results
 
398
 * @uses show_user_form() to display the user registration form
 
399
 * @param string $user_name The username
 
400
 * @param string $user_email The user's email
 
401
 * @param array $errors
 
402
 */
 
403
function signup_user( $user_name = '', $user_email = '', $errors = '' ) {
 
404
        global $active_signup;
 
405
 
 
406
        if ( !is_wp_error($errors) )
 
407
                $errors = new WP_Error();
 
408
 
 
409
        $signup_for = isset( $_POST[ 'signup_for' ] ) ? esc_html( $_POST[ 'signup_for' ] ) : 'blog';
 
410
 
 
411
        $signup_user_defaults = array(
 
412
                'user_name'  => $user_name,
 
413
                'user_email' => $user_email,
 
414
                'errors'     => $errors,
 
415
        );
 
416
 
 
417
        /**
 
418
         * Filter the default user variables used on the user sign-up form.
 
419
         *
 
420
         * @since 3.0.0
 
421
         *
 
422
         * @param array $signup_user_defaults {
 
423
         *     An array of default user variables.
 
424
         *
 
425
         *     @type string $user_name  The user username.
 
426
         *     @type string $user_email The user email address.
 
427
         *     @type array  $errors     An array of possible errors relevant to the sign-up user.
 
428
         * }
 
429
         */
 
430
        $filtered_results = apply_filters( 'signup_user_init', $signup_user_defaults );
 
431
        $user_name = $filtered_results['user_name'];
 
432
        $user_email = $filtered_results['user_email'];
 
433
        $errors = $filtered_results['errors'];
 
434
 
 
435
        ?>
 
436
 
 
437
        <h2><?php printf( __( 'Get your own %s account in seconds' ), get_current_site()->site_name ) ?></h2>
 
438
        <form id="setupform" method="post" action="wp-signup.php" novalidate="novalidate">
 
439
                <input type="hidden" name="stage" value="validate-user-signup" />
 
440
                <?php
 
441
                /** This action is documented in wp-signup.php */
 
442
                do_action( 'signup_hidden_fields', 'validate-user' );
 
443
                ?>
 
444
                <?php show_user_form($user_name, $user_email, $errors); ?>
 
445
 
 
446
                <p>
 
447
                <?php if ( $active_signup == 'blog' ) { ?>
 
448
                        <input id="signupblog" type="hidden" name="signup_for" value="blog" />
 
449
                <?php } elseif ( $active_signup == 'user' ) { ?>
 
450
                        <input id="signupblog" type="hidden" name="signup_for" value="user" />
 
451
                <?php } else { ?>
 
452
                        <input id="signupblog" type="radio" name="signup_for" value="blog" <?php checked( $signup_for, 'blog' ); ?> />
 
453
                        <label class="checkbox" for="signupblog"><?php _e('Gimme a site!') ?></label>
 
454
                        <br />
 
455
                        <input id="signupuser" type="radio" name="signup_for" value="user" <?php checked( $signup_for, 'user' ); ?> />
 
456
                        <label class="checkbox" for="signupuser"><?php _e('Just a username, please.') ?></label>
 
457
                <?php } ?>
 
458
                </p>
 
459
 
 
460
                <p class="submit"><input type="submit" name="submit" class="submit" value="<?php esc_attr_e('Next') ?>" /></p>
 
461
        </form>
 
462
        <?php
 
463
}
 
464
 
 
465
/**
 
466
 * Validate the new user signup
 
467
 *
 
468
 * @since MU
 
469
 *
 
470
 * @uses validate_user_form() to retrieve an array of the user data
 
471
 * @uses wpmu_signup_user() to signup the new user
 
472
 * @uses confirm_user_signup() to confirm the new user signup
 
473
 * @return bool True if new user signup was validated, false if error
 
474
 */
 
475
function validate_user_signup() {
 
476
        $result = validate_user_form();
 
477
        $user_name = $result['user_name'];
 
478
        $user_email = $result['user_email'];
 
479
        $errors = $result['errors'];
 
480
 
 
481
        if ( $errors->get_error_code() ) {
 
482
                signup_user($user_name, $user_email, $errors);
 
483
                return false;
 
484
        }
 
485
 
 
486
        if ( 'blog' == $_POST['signup_for'] ) {
 
487
                signup_blog($user_name, $user_email);
 
488
                return false;
 
489
        }
 
490
 
 
491
        /** This filter is documented in wp-signup.php */
 
492
        wpmu_signup_user( $user_name, $user_email, apply_filters( 'add_signup_meta', array() ) );
 
493
 
 
494
        confirm_user_signup($user_name, $user_email);
 
495
        return true;
 
496
}
 
497
 
 
498
/**
 
499
 * New user signup confirmation
 
500
 *
 
501
 * @since MU
 
502
 *
 
503
 * @param string $user_name The username
 
504
 * @param string $user_email The user's email address
 
505
 */
 
506
function confirm_user_signup($user_name, $user_email) {
 
507
        ?>
 
508
        <h2><?php printf( __( '%s is your new username' ), $user_name) ?></h2>
 
509
        <p><?php _e( 'But, before you can start using your new username, <strong>you must activate it</strong>.' ) ?></p>
 
510
        <p><?php printf( __( 'Check your inbox at <strong>%s</strong> and click the link given.' ), $user_email ); ?></p>
 
511
        <p><?php _e( 'If you do not activate your username within two days, you will have to sign up again.' ); ?></p>
 
512
        <?php
 
513
        /** This action is documented in wp-signup.php */
 
514
        do_action( 'signup_finished' );
 
515
}
 
516
 
 
517
/**
 
518
 * Setup the new site signup
 
519
 *
 
520
 * @since MU
 
521
 *
 
522
 * @uses apply_filters() to filter $filtered_results
 
523
 * @uses show_blog_form() to display the blog signup form
 
524
 * @param string $user_name The username
 
525
 * @param string $user_email The user's email address
 
526
 * @param string $blogname The site name
 
527
 * @param string $blog_title The site title
 
528
 * @param array $errors
 
529
 */
 
530
function signup_blog($user_name = '', $user_email = '', $blogname = '', $blog_title = '', $errors = '') {
 
531
        if ( !is_wp_error($errors) )
 
532
                $errors = new WP_Error();
 
533
 
 
534
        $signup_blog_defaults = array(
 
535
                'user_name'  => $user_name,
 
536
                'user_email' => $user_email,
 
537
                'blogname'   => $blogname,
 
538
                'blog_title' => $blog_title,
 
539
                'errors'     => $errors
 
540
        );
 
541
 
 
542
        /**
 
543
         * Filter the default site creation variables for the site sign-up form.
 
544
         *
 
545
         * @since 3.0.0
 
546
         *
 
547
         * @param array $signup_blog_defaults {
 
548
         *     An array of default site creation variables.
 
549
         *
 
550
         *     @type string $user_name  The user username.
 
551
         *     @type string $user_email The user email address.
 
552
         *     @type string $blogname   The blogname.
 
553
         *     @type string $blog_title The title of the site.
 
554
         *     @type array  $errors     An array of possible errors relevant to new site creation variables.
 
555
         * }
 
556
         */
 
557
        $filtered_results = apply_filters( 'signup_blog_init', $signup_blog_defaults );
 
558
 
 
559
        $user_name = $filtered_results['user_name'];
 
560
        $user_email = $filtered_results['user_email'];
 
561
        $blogname = $filtered_results['blogname'];
 
562
        $blog_title = $filtered_results['blog_title'];
 
563
        $errors = $filtered_results['errors'];
 
564
 
 
565
        if ( empty($blogname) )
 
566
                $blogname = $user_name;
 
567
        ?>
 
568
        <form id="setupform" method="post" action="wp-signup.php">
 
569
                <input type="hidden" name="stage" value="validate-blog-signup" />
 
570
                <input type="hidden" name="user_name" value="<?php echo esc_attr($user_name) ?>" />
 
571
                <input type="hidden" name="user_email" value="<?php echo esc_attr($user_email) ?>" />
 
572
                <?php
 
573
                /** This action is documented in wp-signup.php */
 
574
                do_action( 'signup_hidden_fields', 'validate-site' );
 
575
                ?>
 
576
                <?php show_blog_form($blogname, $blog_title, $errors); ?>
 
577
                <p class="submit"><input type="submit" name="submit" class="submit" value="<?php esc_attr_e('Signup') ?>" /></p>
 
578
        </form>
 
579
        <?php
 
580
}
 
581
 
 
582
/**
 
583
 * Validate new site signup
 
584
 *
 
585
 * @since MU
 
586
 *
 
587
 * @uses wpmu_validate_user_signup() to retrieve an array of the new user data and errors
 
588
 * @uses wpmu_validate_blog_signup() to retrieve an array of the new site data and errors
 
589
 * @uses apply_filters() to make signup $meta filterable
 
590
 * @uses signup_user() to signup a new user
 
591
 * @uses signup_blog() to signup a the new user to a new site
 
592
 * @return bool True if the site signup was validated, false if error
 
593
 */
 
594
function validate_blog_signup() {
 
595
        // Re-validate user info.
 
596
        $user_result = wpmu_validate_user_signup( $_POST['user_name'], $_POST['user_email'] );
 
597
        $user_name = $user_result['user_name'];
 
598
        $user_email = $user_result['user_email'];
 
599
        $user_errors = $user_result['errors'];
 
600
 
 
601
        if ( $user_errors->get_error_code() ) {
 
602
                signup_user( $user_name, $user_email, $user_errors );
 
603
                return false;
 
604
        }
 
605
 
 
606
        $result = wpmu_validate_blog_signup( $_POST['blogname'], $_POST['blog_title'] );
 
607
        $domain = $result['domain'];
 
608
        $path = $result['path'];
 
609
        $blogname = $result['blogname'];
 
610
        $blog_title = $result['blog_title'];
 
611
        $errors = $result['errors'];
 
612
 
 
613
        if ( $errors->get_error_code() ) {
 
614
                signup_blog($user_name, $user_email, $blogname, $blog_title, $errors);
 
615
                return false;
 
616
        }
 
617
 
 
618
        $public = (int) $_POST['blog_public'];
 
619
        $signup_meta = array ('lang_id' => 1, 'public' => $public);
 
620
 
 
621
        /** This filter is documented in wp-signup.php */
 
622
        $meta = apply_filters( 'add_signup_meta', $signup_meta );
 
623
 
 
624
        wpmu_signup_blog($domain, $path, $blog_title, $user_name, $user_email, $meta);
 
625
        confirm_blog_signup($domain, $path, $blog_title, $user_name, $user_email, $meta);
 
626
        return true;
 
627
}
 
628
 
 
629
/**
 
630
 * New site signup confirmation
 
631
 *
 
632
 * @since MU
 
633
 *
 
634
 * @param string $domain The domain URL
 
635
 * @param string $path The site root path
 
636
 * @param string $blog_title The new site title
 
637
 * @param string $user_name The user's username
 
638
 * @param string $user_email The user's email address
 
639
 * @param array $meta Any additional meta from the 'add_signup_meta' filter in validate_blog_signup()
 
640
 */
 
641
function confirm_blog_signup( $domain, $path, $blog_title, $user_name = '', $user_email = '', $meta = array() ) {
 
642
        ?>
 
643
        <h2><?php printf( __( 'Congratulations! Your new site, %s, is almost ready.' ), "<a href='http://{$domain}{$path}'>{$blog_title}</a>" ) ?></h2>
 
644
 
 
645
        <p><?php _e( 'But, before you can start using your site, <strong>you must activate it</strong>.' ) ?></p>
 
646
        <p><?php printf( __( 'Check your inbox at <strong>%s</strong> and click the link given.' ),  $user_email) ?></p>
 
647
        <p><?php _e( 'If you do not activate your site within two days, you will have to sign up again.' ); ?></p>
 
648
        <h2><?php _e( 'Still waiting for your email?' ); ?></h2>
 
649
        <p>
 
650
                <?php _e( 'If you haven&#8217;t received your email yet, there are a number of things you can do:' ) ?>
 
651
                <ul id="noemail-tips">
 
652
                        <li><p><strong><?php _e( 'Wait a little longer. Sometimes delivery of email can be delayed by processes outside of our control.' ) ?></strong></p></li>
 
653
                        <li><p><?php _e( 'Check the junk or spam folder of your email client. Sometime emails wind up there by mistake.' ) ?></p></li>
 
654
                        <li><?php printf( __( 'Have you entered your email correctly? You have entered %s, if it&#8217;s incorrect, you will not receive your email.' ), $user_email ) ?></li>
 
655
                </ul>
 
656
        </p>
 
657
        <?php
 
658
        /** This action is documented in wp-signup.php */
 
659
        do_action( 'signup_finished' );
 
660
}
 
661
 
 
662
// Main
 
663
$active_signup = get_site_option( 'registration', 'none' );
 
664
/**
 
665
 * Filter the type of site sign-up.
 
666
 *
 
667
 * @since 3.0.0
 
668
 *
 
669
 * @param string $active_signup String that returns registration type. The value can be
 
670
 *                              'all', 'none', 'blog', or 'user'.
 
671
 */
 
672
$active_signup = apply_filters( 'wpmu_active_signup', $active_signup );
 
673
 
 
674
// Make the signup type translatable.
 
675
$i18n_signup['all'] = _x('all', 'Multisite active signup type');
 
676
$i18n_signup['none'] = _x('none', 'Multisite active signup type');
 
677
$i18n_signup['blog'] = _x('blog', 'Multisite active signup type');
 
678
$i18n_signup['user'] = _x('user', 'Multisite active signup type');
 
679
 
 
680
if ( is_super_admin() )
 
681
        echo '<div class="mu_alert">' . sprintf( __( 'Greetings Site Administrator! You are currently allowing &#8220;%s&#8221; registrations. To change or disable registration go to your <a href="%s">Options page</a>.' ), $i18n_signup[$active_signup], esc_url( network_admin_url( 'settings.php' ) ) ) . '</div>';
 
682
 
 
683
$newblogname = isset($_GET['new']) ? strtolower(preg_replace('/^-|-$|[^-a-zA-Z0-9]/', '', $_GET['new'])) : null;
 
684
 
 
685
$current_user = wp_get_current_user();
 
686
if ( $active_signup == 'none' ) {
 
687
        _e( 'Registration has been disabled.' );
 
688
} elseif ( $active_signup == 'blog' && !is_user_logged_in() ) {
 
689
        $login_url = site_url( 'wp-login.php?redirect_to=' . urlencode( network_site_url( 'wp-signup.php' ) ) );
 
690
        echo sprintf( __( 'You must first <a href="%s">log in</a>, and then you can create a new site.' ), $login_url );
 
691
} else {
 
692
        $stage = isset( $_POST['stage'] ) ?  $_POST['stage'] : 'default';
 
693
        switch ( $stage ) {
 
694
                case 'validate-user-signup' :
 
695
                        if ( $active_signup == 'all' || $_POST[ 'signup_for' ] == 'blog' && $active_signup == 'blog' || $_POST[ 'signup_for' ] == 'user' && $active_signup == 'user' )
 
696
                                validate_user_signup();
 
697
                        else
 
698
                                _e( 'User registration has been disabled.' );
 
699
                break;
 
700
                case 'validate-blog-signup':
 
701
                        if ( $active_signup == 'all' || $active_signup == 'blog' )
 
702
                                validate_blog_signup();
 
703
                        else
 
704
                                _e( 'Site registration has been disabled.' );
 
705
                        break;
 
706
                case 'gimmeanotherblog':
 
707
                        validate_another_blog_signup();
 
708
                        break;
 
709
                case 'default':
 
710
                default :
 
711
                        $user_email = isset( $_POST[ 'user_email' ] ) ? $_POST[ 'user_email' ] : '';
 
712
                        /**
 
713
                         * Fires when the site sign-up form is sent.
 
714
                         *
 
715
                         * @since 3.0.0
 
716
                         */
 
717
                        do_action( 'preprocess_signup_form' );
 
718
                        if ( is_user_logged_in() && ( $active_signup == 'all' || $active_signup == 'blog' ) )
 
719
                                signup_another_blog($newblogname);
 
720
                        elseif ( is_user_logged_in() == false && ( $active_signup == 'all' || $active_signup == 'user' ) )
 
721
                                signup_user( $newblogname, $user_email );
 
722
                        elseif ( is_user_logged_in() == false && ( $active_signup == 'blog' ) )
 
723
                                _e( 'Sorry, new registrations are not allowed at this time.' );
 
724
                        else
 
725
                                _e( 'You are logged in already. No need to register again!' );
 
726
 
 
727
                        if ( $newblogname ) {
 
728
                                $newblog = get_blogaddress_by_name( $newblogname );
 
729
 
 
730
                                if ( $active_signup == 'blog' || $active_signup == 'all' )
 
731
                                        printf( '<p><em>' . __( 'The site you were looking for, <strong>%s</strong>, does not exist, but you can create it now!' ) . '</em></p>', $newblog );
 
732
                                else
 
733
                                        printf( '<p><em>' . __( 'The site you were looking for, <strong>%s</strong>, does not exist.' ) . '</em></p>', $newblog );
 
734
                        }
 
735
                        break;
 
736
        }
 
737
}
 
738
?>
 
739
</div>
 
740
</div>
 
741
<?php
 
742
/**
 
743
 * Fires after the sign-up forms, before wp_footer.
 
744
 *
 
745
 * @since 3.0.0
 
746
 */
 
747
do_action( 'after_signup_form' ); ?>
 
748
 
 
749
<?php get_footer(); ?>