43 |
43 |
44 if ( ! $id ) |
44 if ( ! $id ) |
45 wp_die( __('Invalid site ID.') ); |
45 wp_die( __('Invalid site ID.') ); |
46 |
46 |
47 $details = get_blog_details( $id ); |
47 $details = get_blog_details( $id ); |
48 if ( !can_edit_network( $details->site_id ) ) |
48 if ( ! can_edit_network( $details->site_id ) ) |
49 wp_die( __( 'You do not have permission to access this page.' ) ); |
49 wp_die( __( 'You do not have permission to access this page.' ) ); |
50 |
50 |
51 $is_main_site = is_main_site( $id ); |
51 $is_main_site = is_main_site( $id ); |
52 |
52 |
53 // get blog prefix |
53 switch_to_blog( $id ); |
54 $blog_prefix = $wpdb->get_blog_prefix( $id ); |
54 |
55 |
55 $editblog_roles = $wp_roles->roles; |
56 // @todo This is a hack. Eventually, add API to WP_Roles allowing retrieval of roles for a particular blog. |
56 |
57 if ( ! empty($wp_roles->use_db) ) { |
57 $default_role = get_option( 'default_role' ); |
58 $editblog_roles = get_blog_option( $id, "{$blog_prefix}user_roles" ); |
|
59 } else { |
|
60 // Roles are stored in memory, not the DB. |
|
61 $editblog_roles = $wp_roles->roles; |
|
62 } |
|
63 $default_role = get_blog_option( $id, 'default_role' ); |
|
64 |
58 |
65 $action = $wp_list_table->current_action(); |
59 $action = $wp_list_table->current_action(); |
66 |
60 |
67 if ( $action ) { |
61 if ( $action ) { |
68 switch_to_blog( $id ); |
|
69 |
62 |
70 switch ( $action ) { |
63 switch ( $action ) { |
71 case 'newuser': |
64 case 'newuser': |
72 check_admin_referer( 'add-user', '_wpnonce_add-new-user' ); |
65 check_admin_referer( 'add-user', '_wpnonce_add-new-user' ); |
73 $user = $_POST['user']; |
66 $user = $_POST['user']; |
74 if ( !is_array( $_POST['user'] ) || empty( $user['username'] ) || empty( $user['email'] ) ) { |
67 if ( ! is_array( $_POST['user'] ) || empty( $user['username'] ) || empty( $user['email'] ) ) { |
75 $update = 'err_new'; |
68 $update = 'err_new'; |
76 } else { |
69 } else { |
77 $password = wp_generate_password( 12, false); |
70 $password = wp_generate_password( 12, false); |
78 $user_id = wpmu_create_user( esc_html( strtolower( $user['username'] ) ), $password, esc_html( $user['email'] ) ); |
71 $user_id = wpmu_create_user( esc_html( strtolower( $user['username'] ) ), $password, esc_html( $user['email'] ) ); |
79 |
72 |
92 if ( !empty( $_POST['newuser'] ) ) { |
85 if ( !empty( $_POST['newuser'] ) ) { |
93 $update = 'adduser'; |
86 $update = 'adduser'; |
94 $newuser = $_POST['newuser']; |
87 $newuser = $_POST['newuser']; |
95 $userid = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM " . $wpdb->users . " WHERE user_login = %s", $newuser ) ); |
88 $userid = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM " . $wpdb->users . " WHERE user_login = %s", $newuser ) ); |
96 if ( $userid ) { |
89 if ( $userid ) { |
|
90 $blog_prefix = $wpdb->get_blog_prefix( $id ); |
97 $user = $wpdb->get_var( "SELECT user_id FROM " . $wpdb->usermeta . " WHERE user_id='$userid' AND meta_key='{$blog_prefix}capabilities'" ); |
91 $user = $wpdb->get_var( "SELECT user_id FROM " . $wpdb->usermeta . " WHERE user_id='$userid' AND meta_key='{$blog_prefix}capabilities'" ); |
98 if ( $user == false ) |
92 if ( $user == false ) |
99 add_user_to_blog( $id, $userid, $_POST['new_role'] ); |
93 add_user_to_blog( $id, $userid, $_POST['new_role'] ); |
100 else |
94 else |
101 $update = 'err_add_member'; |
95 $update = 'err_add_member'; |
141 |
135 |
142 // If the user doesn't already belong to the blog, bail. |
136 // If the user doesn't already belong to the blog, bail. |
143 if ( !is_user_member_of_blog( $user_id ) ) |
137 if ( !is_user_member_of_blog( $user_id ) ) |
144 wp_die(__('Cheatin’ uh?')); |
138 wp_die(__('Cheatin’ uh?')); |
145 |
139 |
146 $user = new WP_User( $user_id ); |
140 $user = get_userdata( $user_id ); |
147 $user->set_role( $_REQUEST['new_role'] ); |
141 $user->set_role( $_REQUEST['new_role'] ); |
148 } |
142 } |
149 } else { |
143 } else { |
150 $update = 'err_promote'; |
144 $update = 'err_promote'; |
151 } |
145 } |
152 break; |
146 break; |
153 } |
147 } |
154 |
148 |
155 restore_current_blog(); |
|
156 wp_safe_redirect( add_query_arg( 'update', $update, $referer ) ); |
149 wp_safe_redirect( add_query_arg( 'update', $update, $referer ) ); |
157 exit(); |
150 exit(); |
158 } |
151 } |
|
152 |
|
153 restore_current_blog(); |
159 |
154 |
160 if ( isset( $_GET['action'] ) && 'update-site' == $_GET['action'] ) { |
155 if ( isset( $_GET['action'] ) && 'update-site' == $_GET['action'] ) { |
161 wp_safe_redirect( $referer ); |
156 wp_safe_redirect( $referer ); |
162 exit(); |
157 exit(); |
163 } |
158 } |
242 </form> |
237 </form> |
243 |
238 |
244 <?php $wp_list_table->views(); ?> |
239 <?php $wp_list_table->views(); ?> |
245 |
240 |
246 <form method="post" action="site-users.php?action=update-site"> |
241 <form method="post" action="site-users.php?action=update-site"> |
247 <?php wp_nonce_field( 'edit-site' ); ?> |
|
248 <input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" /> |
242 <input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" /> |
249 |
243 |
250 <?php $wp_list_table->display(); ?> |
244 <?php $wp_list_table->display(); ?> |
251 |
245 |
252 </form> |
246 </form> |
253 |
247 |
254 <?php do_action( 'network_site_users_after_list_table', '' );?> |
248 <?php do_action( 'network_site_users_after_list_table', '' );?> |
255 |
249 |
256 <?php if ( current_user_can( 'promote_users' ) && apply_filters( 'show_network_site_users_add_existing_form', true ) ) : ?> |
250 <?php if ( current_user_can( 'promote_users' ) && apply_filters( 'show_network_site_users_add_existing_form', true ) ) : ?> |
257 <h4 id="add-user"><?php _e('Add User to This Site') ?></h4> |
251 <h3 id="add-existing-user"><?php _e( 'Add Existing User' ); ?></h3> |
258 <?php if ( current_user_can( 'create_users' ) && apply_filters( 'show_network_site_users_add_new_form', true ) ) : ?> |
|
259 <p><?php _e( 'You may add from existing network users, or set up a new user to add to this site.' ); ?></p> |
|
260 <?php else : ?> |
|
261 <p><?php _e( 'You may add from existing network users to this site.' ); ?></p> |
|
262 <?php endif; ?> |
|
263 <h5 id="add-existing-user"><?php _e('Add Existing User') ?></h5> |
|
264 <form action="site-users.php?action=adduser" id="adduser" method="post"> |
252 <form action="site-users.php?action=adduser" id="adduser" method="post"> |
265 <?php wp_nonce_field( 'edit-site' ); ?> |
|
266 <input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" /> |
253 <input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" /> |
267 <table class="form-table"> |
254 <table class="form-table"> |
268 <tr> |
255 <tr> |
269 <th scope="row"><?php _e( 'Username' ); ?></th> |
256 <th scope="row"><?php _e( 'Username' ); ?></th> |
270 <td><input type="text" class="regular-text wp-suggest-user" name="newuser" id="newuser" /></td> |
257 <td><input type="text" class="regular-text wp-suggest-user" name="newuser" id="newuser" /></td> |
271 </tr> |
258 </tr> |
272 <tr> |
259 <tr> |
273 <th scope="row"><?php _e( 'Role'); ?></th> |
260 <th scope="row"><?php _e( 'Role' ); ?></th> |
274 <td><select name="new_role" id="new_role_0"> |
261 <td><select name="new_role" id="new_role_0"> |
275 <?php |
262 <?php |
276 reset( $editblog_roles ); |
263 reset( $editblog_roles ); |
277 foreach ( $editblog_roles as $role => $role_assoc ){ |
264 foreach ( $editblog_roles as $role => $role_assoc ) { |
278 $name = translate_user_role( $role_assoc['name'] ); |
265 $name = translate_user_role( $role_assoc['name'] ); |
279 $selected = ( $role == $default_role ) ? 'selected="selected"' : ''; |
266 echo '<option ' . selected( $default_role, $role, false ) . ' value="' . esc_attr( $role ) . '">' . esc_html( $name ) . '</option>'; |
280 echo '<option ' . $selected . ' value="' . esc_attr( $role ) . '">' . esc_html( $name ) . '</option>'; |
|
281 } |
267 } |
282 ?> |
268 ?> |
283 </select></td> |
269 </select></td> |
284 </tr> |
270 </tr> |
285 </table> |
271 </table> |
286 <?php wp_nonce_field( 'add-user', '_wpnonce_add-user' ) ?> |
272 <?php wp_nonce_field( 'add-user', '_wpnonce_add-user' ) ?> |
287 <?php submit_button( __('Add User'), 'primary', 'add-user', false, array( 'id' => 'submit-add-existing-user' ) ); ?> |
273 <?php submit_button( __( 'Add User' ), 'primary', 'add-user', true, array( 'id' => 'submit-add-existing-user' ) ); ?> |
288 </form> |
274 </form> |
289 <?php endif; ?> |
275 <?php endif; ?> |
290 |
276 |
291 <?php if ( current_user_can( 'create_users' ) && apply_filters( 'show_network_site_users_add_new_form', true ) ) : ?> |
277 <?php if ( current_user_can( 'create_users' ) && apply_filters( 'show_network_site_users_add_new_form', true ) ) : ?> |
292 <h5 id="add-new-user"><?php _e('Add New User') ?></h5> |
278 <h3 id="add-new-user"><?php _e( 'Add New User' ); ?></h3> |
293 <form action="<?php echo network_admin_url('site-users.php?action=newuser'); ?>" id="newuser" method="post"> |
279 <form action="<?php echo network_admin_url('site-users.php?action=newuser'); ?>" id="newuser" method="post"> |
294 <?php wp_nonce_field( 'edit-site' ); ?> |
|
295 <input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" /> |
280 <input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" /> |
296 <table class="form-table"> |
281 <table class="form-table"> |
297 <tr> |
282 <tr> |
298 <th scope="row"><?php _e( 'Username' ) ?></th> |
283 <th scope="row"><?php _e( 'Username' ) ?></th> |
299 <td><input type="text" class="regular-text" name="user[username]" /></td> |
284 <td><input type="text" class="regular-text" name="user[username]" /></td> |
301 <tr> |
286 <tr> |
302 <th scope="row"><?php _e( 'Email' ) ?></th> |
287 <th scope="row"><?php _e( 'Email' ) ?></th> |
303 <td><input type="text" class="regular-text" name="user[email]" /></td> |
288 <td><input type="text" class="regular-text" name="user[email]" /></td> |
304 </tr> |
289 </tr> |
305 <tr> |
290 <tr> |
306 <th scope="row"><?php _e( 'Role'); ?></th> |
291 <th scope="row"><?php _e( 'Role' ); ?></th> |
307 <td><select name="new_role" id="new_role_0"> |
292 <td><select name="new_role" id="new_role_0"> |
308 <?php |
293 <?php |
309 reset( $editblog_roles ); |
294 reset( $editblog_roles ); |
310 foreach ( $editblog_roles as $role => $role_assoc ){ |
295 foreach ( $editblog_roles as $role => $role_assoc ) { |
311 $name = translate_user_role( $role_assoc['name'] ); |
296 $name = translate_user_role( $role_assoc['name'] ); |
312 $selected = ( $role == $default_role ) ? 'selected="selected"' : ''; |
297 echo '<option ' . selected( $default_role, $role, false ) . ' value="' . esc_attr( $role ) . '">' . esc_html( $name ) . '</option>'; |
313 echo '<option ' . $selected . ' value="' . esc_attr( $role ) . '">' . esc_html( $name ) . '</option>'; |
|
314 } |
298 } |
315 ?> |
299 ?> |
316 </select></td> |
300 </select></td> |
317 </tr> |
301 </tr> |
318 <tr class="form-field"> |
302 <tr class="form-field"> |
319 <td colspan="2"><?php _e( 'Username and password will be mailed to the above email address.' ) ?></td> |
303 <td colspan="2"><?php _e( 'Username and password will be mailed to the above email address.' ) ?></td> |
320 </tr> |
304 </tr> |
321 </table> |
305 </table> |
322 <?php wp_nonce_field( 'add-user', '_wpnonce_add-new-user' ) ?> |
306 <?php wp_nonce_field( 'add-user', '_wpnonce_add-new-user' ) ?> |
323 <?php submit_button( __('Add New User'), 'primary', 'add-user', false, array( 'id' => 'submit-add-user' ) ); ?> |
307 <?php submit_button( __( 'Add New User' ), 'primary', 'add-user', true, array( 'id' => 'submit-add-user' ) ); ?> |
324 </form> |
308 </form> |
325 <?php endif; ?> |
309 <?php endif; ?> |
326 </div> |
310 </div> |
327 <?php |
311 <?php |
328 require('../admin-footer.php'); |
312 require('../admin-footer.php'); |