[ Index ] |
PHP Cross Reference of WordPress Trunk (Updated Daily) |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * Edit Site Users Administration Screen 4 * 5 * @package WordPress 6 * @subpackage Multisite 7 * @since 3.1.0 8 */ 9 10 /** Load WordPress Administration Bootstrap */ 11 require_once __DIR__ . '/admin.php'; 12 13 if ( ! current_user_can( 'manage_sites' ) ) { 14 wp_die( __( 'Sorry, you are not allowed to edit this site.' ), 403 ); 15 } 16 17 $wp_list_table = _get_list_table( 'WP_Users_List_Table' ); 18 $wp_list_table->prepare_items(); 19 20 get_current_screen()->add_help_tab( get_site_screen_help_tab_args() ); 21 get_current_screen()->set_help_sidebar( get_site_screen_help_sidebar_content() ); 22 23 get_current_screen()->set_screen_reader_content( 24 array( 25 'heading_views' => __( 'Filter site users list' ), 26 'heading_pagination' => __( 'Site users list navigation' ), 27 'heading_list' => __( 'Site users list' ), 28 ) 29 ); 30 31 $_SERVER['REQUEST_URI'] = remove_query_arg( 'update', $_SERVER['REQUEST_URI'] ); 32 $referer = remove_query_arg( 'update', wp_get_referer() ); 33 34 if ( ! empty( $_REQUEST['paged'] ) ) { 35 $referer = add_query_arg( 'paged', (int) $_REQUEST['paged'], $referer ); 36 } 37 38 $id = isset( $_REQUEST['id'] ) ? (int) $_REQUEST['id'] : 0; 39 40 if ( ! $id ) { 41 wp_die( __( 'Invalid site ID.' ) ); 42 } 43 44 $details = get_site( $id ); 45 if ( ! $details ) { 46 wp_die( __( 'The requested site does not exist.' ) ); 47 } 48 49 if ( ! can_edit_network( $details->site_id ) ) { 50 wp_die( __( 'Sorry, you are not allowed to access this page.' ), 403 ); 51 } 52 53 $is_main_site = is_main_site( $id ); 54 55 switch_to_blog( $id ); 56 57 $action = $wp_list_table->current_action(); 58 59 if ( $action ) { 60 61 switch ( $action ) { 62 case 'newuser': 63 check_admin_referer( 'add-user', '_wpnonce_add-new-user' ); 64 $user = $_POST['user']; 65 if ( ! is_array( $_POST['user'] ) || empty( $user['username'] ) || empty( $user['email'] ) ) { 66 $update = 'err_new'; 67 } else { 68 $password = wp_generate_password( 12, false ); 69 $user_id = wpmu_create_user( esc_html( strtolower( $user['username'] ) ), $password, esc_html( $user['email'] ) ); 70 71 if ( false === $user_id ) { 72 $update = 'err_new_dup'; 73 } else { 74 $result = add_user_to_blog( $id, $user_id, $_POST['new_role'] ); 75 76 if ( is_wp_error( $result ) ) { 77 $update = 'err_add_fail'; 78 } else { 79 $update = 'newuser'; 80 81 /** 82 * Fires after a user has been created via the network site-users.php page. 83 * 84 * @since 4.4.0 85 * 86 * @param int $user_id ID of the newly created user. 87 */ 88 do_action( 'network_site_users_created_user', $user_id ); 89 } 90 } 91 } 92 break; 93 94 case 'adduser': 95 check_admin_referer( 'add-user', '_wpnonce_add-user' ); 96 if ( ! empty( $_POST['newuser'] ) ) { 97 $update = 'adduser'; 98 $newuser = $_POST['newuser']; 99 $user = get_user_by( 'login', $newuser ); 100 if ( $user && $user->exists() ) { 101 if ( ! is_user_member_of_blog( $user->ID, $id ) ) { 102 $result = add_user_to_blog( $id, $user->ID, $_POST['new_role'] ); 103 104 if ( is_wp_error( $result ) ) { 105 $update = 'err_add_fail'; 106 } 107 } else { 108 $update = 'err_add_member'; 109 } 110 } else { 111 $update = 'err_add_notfound'; 112 } 113 } else { 114 $update = 'err_add_notfound'; 115 } 116 break; 117 118 case 'remove': 119 if ( ! current_user_can( 'remove_users' ) ) { 120 wp_die( __( 'Sorry, you are not allowed to remove users.' ), 403 ); 121 } 122 123 check_admin_referer( 'bulk-users' ); 124 125 $update = 'remove'; 126 if ( isset( $_REQUEST['users'] ) ) { 127 $userids = $_REQUEST['users']; 128 129 foreach ( $userids as $user_id ) { 130 $user_id = (int) $user_id; 131 remove_user_from_blog( $user_id, $id ); 132 } 133 } elseif ( isset( $_GET['user'] ) ) { 134 remove_user_from_blog( $_GET['user'] ); 135 } else { 136 $update = 'err_remove'; 137 } 138 break; 139 140 case 'promote': 141 check_admin_referer( 'bulk-users' ); 142 $editable_roles = get_editable_roles(); 143 $role = $_REQUEST['new_role']; 144 145 if ( empty( $editable_roles[ $role ] ) ) { 146 wp_die( __( 'Sorry, you are not allowed to give users that role.' ), 403 ); 147 } 148 149 if ( isset( $_REQUEST['users'] ) ) { 150 $userids = $_REQUEST['users']; 151 $update = 'promote'; 152 foreach ( $userids as $user_id ) { 153 $user_id = (int) $user_id; 154 155 // If the user doesn't already belong to the blog, bail. 156 if ( ! is_user_member_of_blog( $user_id ) ) { 157 wp_die( 158 '<h1>' . __( 'Something went wrong.' ) . '</h1>' . 159 '<p>' . __( 'One of the selected users is not a member of this site.' ) . '</p>', 160 403 161 ); 162 } 163 164 $user = get_userdata( $user_id ); 165 $user->set_role( $role ); 166 } 167 } else { 168 $update = 'err_promote'; 169 } 170 break; 171 default: 172 if ( ! isset( $_REQUEST['users'] ) ) { 173 break; 174 } 175 check_admin_referer( 'bulk-users' ); 176 $userids = $_REQUEST['users']; 177 178 /** This action is documented in wp-admin/network/site-themes.php */ 179 $referer = apply_filters( 'handle_network_bulk_actions-' . get_current_screen()->id, $referer, $action, $userids, $id ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores 180 181 $update = $action; 182 break; 183 } 184 185 wp_safe_redirect( add_query_arg( 'update', $update, $referer ) ); 186 exit; 187 } 188 189 restore_current_blog(); 190 191 if ( isset( $_GET['action'] ) && 'update-site' === $_GET['action'] ) { 192 wp_safe_redirect( $referer ); 193 exit; 194 } 195 196 add_screen_option( 'per_page' ); 197 198 // Used in the HTML title tag. 199 /* translators: %s: Site title. */ 200 $title = sprintf( __( 'Edit Site: %s' ), esc_html( $details->blogname ) ); 201 202 $parent_file = 'sites.php'; 203 $submenu_file = 'sites.php'; 204 205 /** 206 * Filters whether to show the Add Existing User form on the Multisite Users screen. 207 * 208 * @since 3.1.0 209 * 210 * @param bool $bool Whether to show the Add Existing User form. Default true. 211 */ 212 if ( ! wp_is_large_network( 'users' ) && apply_filters( 'show_network_site_users_add_existing_form', true ) ) { 213 wp_enqueue_script( 'user-suggest' ); 214 } 215 216 require_once ABSPATH . 'wp-admin/admin-header.php'; 217 ?> 218 219 <script type="text/javascript"> 220 var current_site_id = <?php echo absint( $id ); ?>; 221 </script> 222 223 224 <div class="wrap"> 225 <h1 id="edit-site"><?php echo $title; ?></h1> 226 <p class="edit-site-actions"><a href="<?php echo esc_url( get_home_url( $id, '/' ) ); ?>"><?php _e( 'Visit' ); ?></a> | <a href="<?php echo esc_url( get_admin_url( $id ) ); ?>"><?php _e( 'Dashboard' ); ?></a></p> 227 <?php 228 229 network_edit_site_nav( 230 array( 231 'blog_id' => $id, 232 'selected' => 'site-users', 233 ) 234 ); 235 236 if ( isset( $_GET['update'] ) ) : 237 $message = ''; 238 $type = 'error'; 239 240 switch ( $_GET['update'] ) { 241 case 'adduser': 242 $type = 'success'; 243 $message = __( 'User added.' ); 244 break; 245 case 'err_add_member': 246 $message = __( 'User is already a member of this site.' ); 247 break; 248 case 'err_add_fail': 249 $message = __( 'User could not be added to this site.' ); 250 break; 251 case 'err_add_notfound': 252 $message = __( 'Enter the username of an existing user.' ); 253 break; 254 case 'promote': 255 $type = 'success'; 256 $message = __( 'Changed roles.' ); 257 break; 258 case 'err_promote': 259 $message = __( 'Select a user to change role.' ); 260 break; 261 case 'remove': 262 $type = 'success'; 263 $message = __( 'User removed from this site.' ); 264 break; 265 case 'err_remove': 266 $message = __( 'Select a user to remove.' ); 267 break; 268 case 'newuser': 269 $type = 'success'; 270 $message = __( 'User created.' ); 271 break; 272 case 'err_new': 273 $message = __( 'Enter the username and email.' ); 274 break; 275 case 'err_new_dup': 276 $message = __( 'Duplicated username or email address.' ); 277 break; 278 } 279 280 wp_admin_notice( 281 $message, 282 array( 283 'type' => $type, 284 'dismissible' => true, 285 'id' => 'message', 286 ) 287 ); 288 endif; 289 ?> 290 291 <form class="search-form" method="get"> 292 <?php $wp_list_table->search_box( __( 'Search Users' ), 'user' ); ?> 293 <input type="hidden" name="id" value="<?php echo esc_attr( $id ); ?>" /> 294 </form> 295 296 <?php $wp_list_table->views(); ?> 297 298 <form method="post" action="site-users.php?action=update-site"> 299 <input type="hidden" name="id" value="<?php echo esc_attr( $id ); ?>" /> 300 301 <?php $wp_list_table->display(); ?> 302 303 </form> 304 305 <?php 306 /** 307 * Fires after the list table on the Users screen in the Multisite Network Admin. 308 * 309 * @since 3.1.0 310 */ 311 do_action( 'network_site_users_after_list_table' ); 312 313 /** This filter is documented in wp-admin/network/site-users.php */ 314 if ( current_user_can( 'promote_users' ) && apply_filters( 'show_network_site_users_add_existing_form', true ) ) : 315 ?> 316 <h2 id="add-existing-user"><?php _e( 'Add Existing User' ); ?></h2> 317 <form action="site-users.php?action=adduser" id="adduser" method="post"> 318 <input type="hidden" name="id" value="<?php echo esc_attr( $id ); ?>" /> 319 <table class="form-table" role="presentation"> 320 <tr> 321 <th scope="row"><label for="newuser"><?php _e( 'Username' ); ?></label></th> 322 <td><input type="text" class="regular-text wp-suggest-user" name="newuser" id="newuser" /></td> 323 </tr> 324 <tr> 325 <th scope="row"><label for="new_role_adduser"><?php _e( 'Role' ); ?></label></th> 326 <td><select name="new_role" id="new_role_adduser"> 327 <?php 328 switch_to_blog( $id ); 329 wp_dropdown_roles( get_option( 'default_role' ) ); 330 restore_current_blog(); 331 ?> 332 </select></td> 333 </tr> 334 </table> 335 <?php wp_nonce_field( 'add-user', '_wpnonce_add-user' ); ?> 336 <?php submit_button( __( 'Add User' ), 'primary', 'add-user', true, array( 'id' => 'submit-add-existing-user' ) ); ?> 337 </form> 338 <?php endif; ?> 339 340 <?php 341 /** 342 * Filters whether to show the Add New User form on the Multisite Users screen. 343 * 344 * @since 3.1.0 345 * 346 * @param bool $bool Whether to show the Add New User form. Default true. 347 */ 348 if ( current_user_can( 'create_users' ) && apply_filters( 'show_network_site_users_add_new_form', true ) ) : 349 ?> 350 <h2 id="add-new-user"><?php _e( 'Add New User' ); ?></h2> 351 <form action="<?php echo esc_url( network_admin_url( 'site-users.php?action=newuser' ) ); ?>" id="newuser" method="post"> 352 <input type="hidden" name="id" value="<?php echo esc_attr( $id ); ?>" /> 353 <table class="form-table" role="presentation"> 354 <tr> 355 <th scope="row"><label for="user_username"><?php _e( 'Username' ); ?></label></th> 356 <td><input type="text" class="regular-text" name="user[username]" id="user_username" /></td> 357 </tr> 358 <tr> 359 <th scope="row"><label for="user_email"><?php _e( 'Email' ); ?></label></th> 360 <td><input type="text" class="regular-text" name="user[email]" id="user_email" /></td> 361 </tr> 362 <tr> 363 <th scope="row"><label for="new_role_newuser"><?php _e( 'Role' ); ?></label></th> 364 <td><select name="new_role" id="new_role_newuser"> 365 <?php 366 switch_to_blog( $id ); 367 wp_dropdown_roles( get_option( 'default_role' ) ); 368 restore_current_blog(); 369 ?> 370 </select></td> 371 </tr> 372 <tr class="form-field"> 373 <td colspan="2" class="td-full"><?php _e( 'A password reset link will be sent to the user via email.' ); ?></td> 374 </tr> 375 </table> 376 <?php wp_nonce_field( 'add-user', '_wpnonce_add-new-user' ); ?> 377 <?php submit_button( __( 'Add New User' ), 'primary', 'add-user', true, array( 'id' => 'submit-add-user' ) ); ?> 378 </form> 379 <?php endif; ?> 380 </div> 381 <?php 382 require_once ABSPATH . 'wp-admin/admin-footer.php';
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated : Thu Nov 21 08:20:01 2024 | Cross-referenced by PHPXref |