wp/wp-admin/network/site-users.php
changeset 5 5e2f62d02dcd
parent 0 d970ebf37754
child 7 cf61fcea0001
equal deleted inserted replaced
4:346c88efed21 5:5e2f62d02dcd
    30 		'<p>' . __('<strong>Settings</strong> - This page shows a list of all settings associated with this site. Some are created by WordPress and others are created by plugins you activate. Note that some fields are grayed out and say Serialized Data. You cannot modify these values due to the way the setting is stored in the database.') . '</p>'
    30 		'<p>' . __('<strong>Settings</strong> - This page shows a list of all settings associated with this site. Some are created by WordPress and others are created by plugins you activate. Note that some fields are grayed out and say Serialized Data. You cannot modify these values due to the way the setting is stored in the database.') . '</p>'
    31 ) );
    31 ) );
    32 
    32 
    33 get_current_screen()->set_help_sidebar(
    33 get_current_screen()->set_help_sidebar(
    34 	'<p><strong>' . __('For more information:') . '</strong></p>' .
    34 	'<p><strong>' . __('For more information:') . '</strong></p>' .
    35 	'<p>' . __('<a href="http://codex.wordpress.org/Network_Admin_Sites_Screen" target="_blank">Documentation on Site Management</a>') . '</p>' .
    35 	'<p>' . __('<a href="https://codex.wordpress.org/Network_Admin_Sites_Screen" target="_blank">Documentation on Site Management</a>') . '</p>' .
    36 	'<p>' . __('<a href="http://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
    36 	'<p>' . __('<a href="https://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
    37 );
    37 );
    38 
    38 
    39 $_SERVER['REQUEST_URI'] = remove_query_arg( 'update', $_SERVER['REQUEST_URI'] );
    39 $_SERVER['REQUEST_URI'] = remove_query_arg( 'update', $_SERVER['REQUEST_URI'] );
    40 $referer = remove_query_arg( 'update', wp_get_referer() );
    40 $referer = remove_query_arg( 'update', wp_get_referer() );
    41 
    41 
       
    42 if ( ! empty( $_REQUEST['paged'] ) ) {
       
    43 	$referer = add_query_arg( 'paged', (int) $_REQUEST['paged'], $referer );
       
    44 }
       
    45 
    42 $id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0;
    46 $id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0;
    43 
    47 
    44 if ( ! $id )
    48 if ( ! $id )
    45 	wp_die( __('Invalid site ID.') );
    49 	wp_die( __('Invalid site ID.') );
    46 
    50 
    47 $details = get_blog_details( $id );
    51 $details = get_blog_details( $id );
    48 if ( ! can_edit_network( $details->site_id ) )
    52 if ( ! can_edit_network( $details->site_id ) )
    49 	wp_die( __( 'You do not have permission to access this page.' ) );
    53 	wp_die( __( 'You do not have permission to access this page.' ), 403 );
    50 
    54 
    51 $is_main_site = is_main_site( $id );
    55 $is_main_site = is_main_site( $id );
    52 
    56 
    53 switch_to_blog( $id );
    57 switch_to_blog( $id );
    54 
       
    55 $editblog_roles = $wp_roles->roles;
       
    56 
       
    57 $default_role = get_option( 'default_role' );
       
    58 
    58 
    59 $action = $wp_list_table->current_action();
    59 $action = $wp_list_table->current_action();
    60 
    60 
    61 if ( $action ) {
    61 if ( $action ) {
    62 
    62 
   131 				foreach ( $userids as $user_id ) {
   131 				foreach ( $userids as $user_id ) {
   132 					$user_id = (int) $user_id;
   132 					$user_id = (int) $user_id;
   133 
   133 
   134 					// If the user doesn't already belong to the blog, bail.
   134 					// If the user doesn't already belong to the blog, bail.
   135 					if ( !is_user_member_of_blog( $user_id ) )
   135 					if ( !is_user_member_of_blog( $user_id ) )
   136 						wp_die(__('Cheatin&#8217; uh?'));
   136 						wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
   137 
   137 
   138 					$user = get_userdata( $user_id );
   138 					$user = get_userdata( $user_id );
   139 					$user->set_role( $_REQUEST['new_role'] );
   139 					$user->set_role( $_REQUEST['new_role'] );
   140 				}
   140 				}
   141 			} else {
   141 			} else {
   153 if ( isset( $_GET['action'] ) && 'update-site' == $_GET['action'] ) {
   153 if ( isset( $_GET['action'] ) && 'update-site' == $_GET['action'] ) {
   154 	wp_safe_redirect( $referer );
   154 	wp_safe_redirect( $referer );
   155 	exit();
   155 	exit();
   156 }
   156 }
   157 
   157 
   158 add_screen_option( 'per_page', array( 'label' => _x( 'Users', 'users per page (screen options)' ) ) );
   158 add_screen_option( 'per_page' );
   159 
   159 
   160 $site_url_no_http = preg_replace( '#^http(s)?://#', '', get_blogaddress_by_id( $id ) );
   160 $site_url_no_http = preg_replace( '#^http(s)?://#', '', get_blogaddress_by_id( $id ) );
   161 $title_site_url_linked = sprintf( __('Edit Site: <a href="%1$s">%2$s</a>'), get_blogaddress_by_id( $id ), $site_url_no_http );
   161 $title_site_url_linked = sprintf( __( 'Edit Site: %s' ), '<a href="' . get_blogaddress_by_id( $id ) . '">' . $site_url_no_http . '</a>' );
   162 $title = sprintf( __('Edit Site: %s'), $site_url_no_http );
   162 $title = sprintf( __( 'Edit Site: %s' ), $site_url_no_http );
   163 
   163 
   164 $parent_file = 'sites.php';
   164 $parent_file = 'sites.php';
   165 $submenu_file = 'sites.php';
   165 $submenu_file = 'sites.php';
   166 
   166 
       
   167 /**
       
   168  * Filter whether to show the Add Existing User form on the Multisite Users screen.
       
   169  *
       
   170  * @since 3.1.0
       
   171  *
       
   172  * @param bool $bool Whether to show the Add Existing User form. Default true.
       
   173  */
   167 if ( ! wp_is_large_network( 'users' ) && apply_filters( 'show_network_site_users_add_existing_form', true ) )
   174 if ( ! wp_is_large_network( 'users' ) && apply_filters( 'show_network_site_users_add_existing_form', true ) )
   168 	wp_enqueue_script( 'user-suggest' );
   175 	wp_enqueue_script( 'user-suggest' );
   169 
   176 
   170 require( ABSPATH . 'wp-admin/admin-header.php' ); ?>
   177 require( ABSPATH . 'wp-admin/admin-header.php' ); ?>
   171 
   178 
   172 <script type='text/javascript'>
   179 <script type="text/javascript">
   173 /* <![CDATA[ */
       
   174 var current_site_id = <?php echo $id; ?>;
   180 var current_site_id = <?php echo $id; ?>;
   175 /* ]]> */
       
   176 </script>
   181 </script>
   177 
   182 
   178 
   183 
   179 <div class="wrap">
   184 <div class="wrap">
   180 <?php screen_icon('ms-admin'); ?>
       
   181 <h2 id="edit-site"><?php echo $title_site_url_linked ?></h2>
   185 <h2 id="edit-site"><?php echo $title_site_url_linked ?></h2>
   182 <h3 class="nav-tab-wrapper">
   186 <h3 class="nav-tab-wrapper">
   183 <?php
   187 <?php
   184 $tabs = array(
   188 $tabs = array(
   185 	'site-info'     => array( 'label' => __( 'Info' ),     'url' => 'site-info.php'     ),
   189 	'site-info'     => array( 'label' => __( 'Info' ),     'url' => 'site-info.php'     ),
   195 </h3><?php
   199 </h3><?php
   196 
   200 
   197 if ( isset($_GET['update']) ) :
   201 if ( isset($_GET['update']) ) :
   198 	switch($_GET['update']) {
   202 	switch($_GET['update']) {
   199 	case 'adduser':
   203 	case 'adduser':
   200 		echo '<div id="message" class="updated"><p>' . __( 'User added.' ) . '</p></div>';
   204 		echo '<div id="message" class="updated notice is-dismissible"><p>' . __( 'User added.' ) . '</p></div>';
   201 		break;
   205 		break;
   202 	case 'err_add_member':
   206 	case 'err_add_member':
   203 		echo '<div id="message" class="error"><p>' . __( 'User is already a member of this site.' ) . '</p></div>';
   207 		echo '<div id="message" class="error notice is-dismissible"><p>' . __( 'User is already a member of this site.' ) . '</p></div>';
   204 		break;
   208 		break;
   205 	case 'err_add_notfound':
   209 	case 'err_add_notfound':
   206 		echo '<div id="message" class="error"><p>' . __( 'Enter the username of an existing user.' ) . '</p></div>';
   210 		echo '<div id="message" class="error notice is-dismissible"><p>' . __( 'Enter the username of an existing user.' ) . '</p></div>';
   207 		break;
   211 		break;
   208 	case 'promote':
   212 	case 'promote':
   209 		echo '<div id="message" class="updated"><p>' . __( 'Changed roles.' ) . '</p></div>';
   213 		echo '<div id="message" class="updated notice is-dismissible"><p>' . __( 'Changed roles.' ) . '</p></div>';
   210 		break;
   214 		break;
   211 	case 'err_promote':
   215 	case 'err_promote':
   212 		echo '<div id="message" class="error"><p>' . __( 'Select a user to change role.' ) . '</p></div>';
   216 		echo '<div id="message" class="error notice is-dismissible"><p>' . __( 'Select a user to change role.' ) . '</p></div>';
   213 		break;
   217 		break;
   214 	case 'remove':
   218 	case 'remove':
   215 		echo '<div id="message" class="updated"><p>' . __( 'User removed from this site.' ) . '</p></div>';
   219 		echo '<div id="message" class="updated notice is-dismissible"><p>' . __( 'User removed from this site.' ) . '</p></div>';
   216 		break;
   220 		break;
   217 	case 'err_remove':
   221 	case 'err_remove':
   218 		echo '<div id="message" class="error"><p>' . __( 'Select a user to remove.' ) . '</p></div>';
   222 		echo '<div id="message" class="error notice is-dismissible"><p>' . __( 'Select a user to remove.' ) . '</p></div>';
   219 		break;
   223 		break;
   220 	case 'newuser':
   224 	case 'newuser':
   221 		echo '<div id="message" class="updated"><p>' . __( 'User created.' ) . '</p></div>';
   225 		echo '<div id="message" class="updated notice is-dismissible"><p>' . __( 'User created.' ) . '</p></div>';
   222 		break;
   226 		break;
   223 	case 'err_new':
   227 	case 'err_new':
   224 		echo '<div id="message" class="error"><p>' . __( 'Enter the username and email.' ) . '</p></div>';
   228 		echo '<div id="message" class="error notice is-dismissible"><p>' . __( 'Enter the username and email.' ) . '</p></div>';
   225 		break;
   229 		break;
   226 	case 'err_new_dup':
   230 	case 'err_new_dup':
   227 		echo '<div id="message" class="error"><p>' . __( 'Duplicated username or email address.' ) . '</p></div>';
   231 		echo '<div id="message" class="error notice is-dismissible"><p>' . __( 'Duplicated username or email address.' ) . '</p></div>';
   228 		break;
   232 		break;
   229 	}
   233 	}
   230 endif; ?>
   234 endif; ?>
   231 
   235 
   232 <form class="search-form" action="" method="get">
   236 <form class="search-form" method="get">
   233 <?php $wp_list_table->search_box( __( 'Search Users' ), 'user' ); ?>
   237 <?php $wp_list_table->search_box( __( 'Search Users' ), 'user' ); ?>
   234 <input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
   238 <input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
   235 </form>
   239 </form>
   236 
   240 
   237 <?php $wp_list_table->views(); ?>
   241 <?php $wp_list_table->views(); ?>
   241 
   245 
   242 <?php $wp_list_table->display(); ?>
   246 <?php $wp_list_table->display(); ?>
   243 
   247 
   244 </form>
   248 </form>
   245 
   249 
   246 <?php do_action( 'network_site_users_after_list_table', '' );?>
   250 <?php
   247 
   251 /**
   248 <?php if ( current_user_can( 'promote_users' ) && apply_filters( 'show_network_site_users_add_existing_form', true ) ) : ?>
   252  * Fires after the list table on the Users screen in the Multisite Network Admin.
       
   253  *
       
   254  * @since 3.1.0
       
   255  */
       
   256 do_action( 'network_site_users_after_list_table' );
       
   257 
       
   258 /** This filter is documented in wp-admin/network/site-users.php */
       
   259 if ( current_user_can( 'promote_users' ) && apply_filters( 'show_network_site_users_add_existing_form', true ) ) : ?>
   249 <h3 id="add-existing-user"><?php _e( 'Add Existing User' ); ?></h3>
   260 <h3 id="add-existing-user"><?php _e( 'Add Existing User' ); ?></h3>
   250 <form action="site-users.php?action=adduser" id="adduser" method="post">
   261 <form action="site-users.php?action=adduser" id="adduser" method="post">
   251 	<input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
   262 	<input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
   252 	<table class="form-table">
   263 	<table class="form-table">
   253 		<tr>
   264 		<tr>
   254 			<th scope="row"><?php _e( 'Username' ); ?></th>
   265 			<th scope="row"><label for="newuser"><?php _e( 'Username' ); ?></label></th>
   255 			<td><input type="text" class="regular-text wp-suggest-user" name="newuser" id="newuser" /></td>
   266 			<td><input type="text" class="regular-text wp-suggest-user" name="newuser" id="newuser" /></td>
   256 		</tr>
   267 		</tr>
   257 		<tr>
   268 		<tr>
   258 			<th scope="row"><?php _e( 'Role' ); ?></th>
   269 			<th scope="row"><label for="new_role_adduser"><?php _e( 'Role' ); ?></label></th>
   259 			<td><select name="new_role" id="new_role_0">
   270 			<td><select name="new_role" id="new_role_adduser">
   260 			<?php
   271 			<?php wp_dropdown_roles( get_option( 'default_role' ) ); ?>
   261 			reset( $editblog_roles );
       
   262 			foreach ( $editblog_roles as $role => $role_assoc ) {
       
   263 				$name = translate_user_role( $role_assoc['name'] );
       
   264 				echo '<option ' . selected( $default_role, $role, false ) . ' value="' . esc_attr( $role ) . '">' . esc_html( $name ) . '</option>';
       
   265 			}
       
   266 			?>
       
   267 			</select></td>
   272 			</select></td>
   268 		</tr>
   273 		</tr>
   269 	</table>
   274 	</table>
   270 	<?php wp_nonce_field( 'add-user', '_wpnonce_add-user' ) ?>
   275 	<?php wp_nonce_field( 'add-user', '_wpnonce_add-user' ) ?>
   271 	<?php submit_button( __( 'Add User' ), 'primary', 'add-user', true, array( 'id' => 'submit-add-existing-user' ) ); ?>
   276 	<?php submit_button( __( 'Add User' ), 'primary', 'add-user', true, array( 'id' => 'submit-add-existing-user' ) ); ?>
   272 </form>
   277 </form>
   273 <?php endif; ?>
   278 <?php endif; ?>
   274 
   279 
   275 <?php if ( current_user_can( 'create_users' ) && apply_filters( 'show_network_site_users_add_new_form', true ) ) : ?>
   280 <?php
       
   281 /**
       
   282  * Filter whether to show the Add New User form on the Multisite Users screen.
       
   283  *
       
   284  * @since 3.1.0
       
   285  *
       
   286  * @param bool $bool Whether to show the Add New User form. Default true.
       
   287  */
       
   288 if ( current_user_can( 'create_users' ) && apply_filters( 'show_network_site_users_add_new_form', true ) ) : ?>
   276 <h3 id="add-new-user"><?php _e( 'Add New User' ); ?></h3>
   289 <h3 id="add-new-user"><?php _e( 'Add New User' ); ?></h3>
   277 <form action="<?php echo network_admin_url('site-users.php?action=newuser'); ?>" id="newuser" method="post">
   290 <form action="<?php echo network_admin_url('site-users.php?action=newuser'); ?>" id="newuser" method="post">
   278 	<input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
   291 	<input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
   279 	<table class="form-table">
   292 	<table class="form-table">
   280 		<tr>
   293 		<tr>
   281 			<th scope="row"><?php _e( 'Username' ) ?></th>
   294 			<th scope="row"><label for="user_username"><?php _e( 'Username' ) ?></label></th>
   282 			<td><input type="text" class="regular-text" name="user[username]" /></td>
   295 			<td><input type="text" class="regular-text" name="user[username]" id="user_username" /></td>
   283 		</tr>
   296 		</tr>
   284 		<tr>
   297 		<tr>
   285 			<th scope="row"><?php _e( 'Email' ) ?></th>
   298 			<th scope="row"><label for="user_email"><?php _e( 'Email' ) ?></label></th>
   286 			<td><input type="text" class="regular-text" name="user[email]" /></td>
   299 			<td><input type="text" class="regular-text" name="user[email]" id="user_email" /></td>
   287 		</tr>
   300 		</tr>
   288 		<tr>
   301 		<tr>
   289 			<th scope="row"><?php _e( 'Role' ); ?></th>
   302 			<th scope="row"><label for="new_role_newuser"><?php _e( 'Role' ); ?></label></th>
   290 			<td><select name="new_role" id="new_role_0">
   303 			<td><select name="new_role" id="new_role_newuser">
   291 			<?php
   304 			<?php wp_dropdown_roles( get_option( 'default_role' ) ); ?>
   292 			reset( $editblog_roles );
       
   293 			foreach ( $editblog_roles as $role => $role_assoc ) {
       
   294 				$name = translate_user_role( $role_assoc['name'] );
       
   295 				echo '<option ' . selected( $default_role, $role, false ) . ' value="' . esc_attr( $role ) . '">' . esc_html( $name ) . '</option>';
       
   296 			}
       
   297 			?>
       
   298 			</select></td>
   305 			</select></td>
   299 		</tr>
   306 		</tr>
   300 		<tr class="form-field">
   307 		<tr class="form-field">
   301 			<td colspan="2"><?php _e( 'Username and password will be mailed to the above email address.' ) ?></td>
   308 			<td colspan="2"><?php _e( 'Username and password will be mailed to the above email address.' ) ?></td>
   302 		</tr>
   309 		</tr>