5 * @package WordPress |
5 * @package WordPress |
6 * @subpackage Multisite |
6 * @subpackage Multisite |
7 * @since 3.0.0 |
7 * @since 3.0.0 |
8 */ |
8 */ |
9 |
9 |
10 require_once( dirname( __FILE__ ) . '/admin.php' ); |
10 require_once __DIR__ . '/admin.php'; |
11 |
11 |
12 if ( ! is_multisite() ) { |
12 if ( ! is_multisite() ) { |
13 wp_die( __( 'Multisite support is not enabled.' ) ); |
13 wp_die( __( 'Multisite support is not enabled.' ) ); |
14 } |
14 } |
15 |
15 |
16 if ( ! current_user_can( 'delete_site' ) ) { |
16 if ( ! current_user_can( 'delete_site' ) ) { |
17 wp_die( __( 'Sorry, you are not allowed to delete this site.' ) ); |
17 wp_die( __( 'Sorry, you are not allowed to delete this site.' ) ); |
18 } |
18 } |
19 |
19 |
20 if ( isset( $_GET['h'] ) && $_GET['h'] != '' && get_option( 'delete_blog_hash' ) != false ) { |
20 if ( isset( $_GET['h'] ) && '' !== $_GET['h'] && false !== get_option( 'delete_blog_hash' ) ) { |
21 if ( hash_equals( get_option( 'delete_blog_hash' ), $_GET['h'] ) ) { |
21 if ( hash_equals( get_option( 'delete_blog_hash' ), $_GET['h'] ) ) { |
22 wpmu_delete_blog( get_current_blog_id() ); |
22 wpmu_delete_blog( get_current_blog_id() ); |
23 wp_die( sprintf( __( 'Thank you for using %s, your site has been deleted. Happy trails to you until we meet again.' ), get_network()->site_name ) ); |
23 wp_die( |
|
24 sprintf( |
|
25 /* translators: %s: Network title. */ |
|
26 __( 'Thank you for using %s, your site has been deleted. Happy trails to you until we meet again.' ), |
|
27 get_network()->site_name |
|
28 ) |
|
29 ); |
24 } else { |
30 } else { |
25 wp_die( __( 'Sorry, the link you clicked is stale. Please select another option.' ) ); |
31 wp_die( __( 'Sorry, the link you clicked is stale. Please select another option.' ) ); |
26 } |
32 } |
27 } |
33 } |
28 |
34 |
29 $blog = get_site(); |
35 $blog = get_site(); |
30 $user = wp_get_current_user(); |
36 $user = wp_get_current_user(); |
31 |
37 |
32 $title = __( 'Delete Site' ); |
38 $title = __( 'Delete Site' ); |
33 $parent_file = 'tools.php'; |
39 $parent_file = 'tools.php'; |
34 require_once( ABSPATH . 'wp-admin/admin-header.php' ); |
40 require_once ABSPATH . 'wp-admin/admin-header.php'; |
35 |
41 |
36 echo '<div class="wrap">'; |
42 echo '<div class="wrap">'; |
37 echo '<h1>' . esc_html( $title ) . '</h1>'; |
43 echo '<h1>' . esc_html( $title ) . '</h1>'; |
38 |
44 |
39 if ( isset( $_POST['action'] ) && $_POST['action'] == 'deleteblog' && isset( $_POST['confirmdelete'] ) && $_POST['confirmdelete'] == '1' ) { |
45 if ( isset( $_POST['action'] ) && 'deleteblog' === $_POST['action'] && isset( $_POST['confirmdelete'] ) && '1' === $_POST['confirmdelete'] ) { |
40 check_admin_referer( 'delete-blog' ); |
46 check_admin_referer( 'delete-blog' ); |
41 |
47 |
42 $hash = wp_generate_password( 20, false ); |
48 $hash = wp_generate_password( 20, false ); |
43 update_option( 'delete_blog_hash', $hash ); |
49 update_option( 'delete_blog_hash', $hash ); |
44 |
50 |
45 $url_delete = esc_url( admin_url( 'ms-delete-site.php?h=' . $hash ) ); |
51 $url_delete = esc_url( admin_url( 'ms-delete-site.php?h=' . $hash ) ); |
46 |
52 |
47 $switched_locale = switch_to_locale( get_locale() ); |
53 $switched_locale = switch_to_locale( get_locale() ); |
48 |
54 |
49 /* translators: Do not translate USERNAME, URL_DELETE, SITE_NAME: those are placeholders. */ |
55 /* translators: Do not translate USERNAME, URL_DELETE, SITENAME, SITEURL: those are placeholders. */ |
50 $content = __( |
56 $content = __( |
51 "Howdy ###USERNAME###, |
57 "Howdy ###USERNAME###, |
52 |
58 |
53 You recently clicked the 'Delete Site' link on your site and filled in a |
59 You recently clicked the 'Delete Site' link on your site and filled in a |
54 form on that page. |
60 form on that page. |
74 */ |
80 */ |
75 $content = apply_filters( 'delete_site_email_content', $content ); |
81 $content = apply_filters( 'delete_site_email_content', $content ); |
76 |
82 |
77 $content = str_replace( '###USERNAME###', $user->user_login, $content ); |
83 $content = str_replace( '###USERNAME###', $user->user_login, $content ); |
78 $content = str_replace( '###URL_DELETE###', $url_delete, $content ); |
84 $content = str_replace( '###URL_DELETE###', $url_delete, $content ); |
79 $content = str_replace( '###SITE_NAME###', get_network()->site_name, $content ); |
85 $content = str_replace( '###SITENAME###', get_network()->site_name, $content ); |
|
86 $content = str_replace( '###SITEURL###', network_home_url(), $content ); |
80 |
87 |
81 wp_mail( get_option( 'admin_email' ), '[ ' . wp_specialchars_decode( get_option( 'blogname' ) ) . ' ] ' . __( 'Delete My Site' ), $content ); |
88 wp_mail( |
|
89 get_option( 'admin_email' ), |
|
90 sprintf( |
|
91 /* translators: %s: Site title. */ |
|
92 __( '[%s] Delete My Site' ), |
|
93 wp_specialchars_decode( get_option( 'blogname' ) ) |
|
94 ), |
|
95 $content |
|
96 ); |
82 |
97 |
83 if ( $switched_locale ) { |
98 if ( $switched_locale ) { |
84 restore_previous_locale(); |
99 restore_previous_locale(); |
85 } |
100 } |
86 ?> |
101 ?> |
88 <p><?php _e( 'Thank you. Please check your email for a link to confirm your action. Your site will not be deleted until this link is clicked.' ); ?></p> |
103 <p><?php _e( 'Thank you. Please check your email for a link to confirm your action. Your site will not be deleted until this link is clicked.' ); ?></p> |
89 |
104 |
90 <?php |
105 <?php |
91 } else { |
106 } else { |
92 ?> |
107 ?> |
93 <p><?php printf( __( 'If you do not want to use your %s site any more, you can delete it using the form below. When you click <strong>Delete My Site Permanently</strong> you will be sent an email with a link in it. Click on this link to delete your site.' ), get_network()->site_name ); ?></p> |
108 <p> |
|
109 <?php |
|
110 printf( |
|
111 /* translators: %s: Network title. */ |
|
112 __( 'If you do not want to use your %s site any more, you can delete it using the form below. When you click <strong>Delete My Site Permanently</strong> you will be sent an email with a link in it. Click on this link to delete your site.' ), |
|
113 get_network()->site_name |
|
114 ); |
|
115 ?> |
|
116 </p> |
94 <p><?php _e( 'Remember, once deleted your site cannot be restored.' ); ?></p> |
117 <p><?php _e( 'Remember, once deleted your site cannot be restored.' ); ?></p> |
95 |
118 |
96 <form method="post" name="deletedirect"> |
119 <form method="post" name="deletedirect"> |
97 <?php wp_nonce_field( 'delete-blog' ); ?> |
120 <?php wp_nonce_field( 'delete-blog' ); ?> |
98 <input type="hidden" name="action" value="deleteblog" /> |
121 <input type="hidden" name="action" value="deleteblog" /> |
99 <p><input id="confirmdelete" type="checkbox" name="confirmdelete" value="1" /> <label for="confirmdelete"><strong> |
122 <p><input id="confirmdelete" type="checkbox" name="confirmdelete" value="1" /> <label for="confirmdelete"><strong> |
100 <?php |
123 <?php |
101 printf( |
124 printf( |
102 /* translators: %s: site address */ |
125 /* translators: %s: Site address. */ |
103 __( "I'm sure I want to permanently disable my site, and I am aware I can never get it back or use %s again." ), |
126 __( "I'm sure I want to permanently delete my site, and I am aware I can never get it back or use %s again." ), |
104 $blog->domain . $blog->path |
127 $blog->domain . $blog->path |
105 ); |
128 ); |
106 ?> |
129 ?> |
107 </strong></label></p> |
130 </strong></label></p> |
108 <?php submit_button( __( 'Delete My Site Permanently' ) ); ?> |
131 <?php submit_button( __( 'Delete My Site Permanently' ) ); ?> |
109 </form> |
132 </form> |
110 <?php |
133 <?php |
111 } |
134 } |
112 echo '</div>'; |
135 echo '</div>'; |
113 |
136 |
114 include( ABSPATH . 'wp-admin/admin-footer.php' ); |
137 require_once ABSPATH . 'wp-admin/admin-footer.php'; |