~canonical-sysadmins/wordpress/4.7.4

« back to all changes in this revision

Viewing changes to wp-admin/network/site-users.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
 * 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( dirname( __FILE__ ) . '/admin.php' );
 
12
 
 
13
if ( ! is_multisite() )
 
14
        wp_die( __( 'Multisite support is not enabled.' ) );
 
15
 
 
16
if ( ! current_user_can('manage_sites') )
 
17
        wp_die(__('You do not have sufficient permissions to edit this site.'));
 
18
 
 
19
$wp_list_table = _get_list_table('WP_Users_List_Table');
 
20
$wp_list_table->prepare_items();
 
21
 
 
22
get_current_screen()->add_help_tab( array(
 
23
        'id'      => 'overview',
 
24
        'title'   => __('Overview'),
 
25
        'content' =>
 
26
                '<p>' . __('The menu is for editing information specific to individual sites, particularly if the admin area of a site is unavailable.') . '</p>' .
 
27
                '<p>' . __('<strong>Info</strong> - The domain and path are rarely edited as this can cause the site to not work properly. The Registered date and Last Updated date are displayed. Network admins can mark a site as archived, spam, deleted and mature, to remove from public listings or disable.') . '</p>' .
 
28
                '<p>' . __('<strong>Users</strong> - This displays the users associated with this site. You can also change their role, reset their password, or remove them from the site. Removing the user from the site does not remove the user from the network.') . '</p>' .
 
29
                '<p>' . sprintf( __('<strong>Themes</strong> - This area shows themes that are not already enabled across the network. Enabling a theme in this menu makes it accessible to this site. It does not activate the theme, but allows it to show in the site&#8217;s Appearance menu. To enable a theme for the entire network, see the <a href="%s">Network Themes</a> screen.' ), network_admin_url( 'themes.php' ) ) . '</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
) );
 
32
 
 
33
get_current_screen()->set_help_sidebar(
 
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>' .
 
36
        '<p>' . __('<a href="https://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
 
37
);
 
38
 
 
39
$_SERVER['REQUEST_URI'] = remove_query_arg( 'update', $_SERVER['REQUEST_URI'] );
 
40
$referer = remove_query_arg( 'update', wp_get_referer() );
 
41
 
 
42
if ( ! empty( $_REQUEST['paged'] ) ) {
 
43
        $referer = add_query_arg( 'paged', (int) $_REQUEST['paged'], $referer );
 
44
}
 
45
 
 
46
$id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0;
 
47
 
 
48
if ( ! $id )
 
49
        wp_die( __('Invalid site ID.') );
 
50
 
 
51
$details = get_blog_details( $id );
 
52
if ( ! can_edit_network( $details->site_id ) )
 
53
        wp_die( __( 'You do not have permission to access this page.' ) );
 
54
 
 
55
$is_main_site = is_main_site( $id );
 
56
 
 
57
switch_to_blog( $id );
 
58
 
 
59
$action = $wp_list_table->current_action();
 
60
 
 
61
if ( $action ) {
 
62
 
 
63
        switch ( $action ) {
 
64
                case 'newuser':
 
65
                        check_admin_referer( 'add-user', '_wpnonce_add-new-user' );
 
66
                        $user = $_POST['user'];
 
67
                        if ( ! is_array( $_POST['user'] ) || empty( $user['username'] ) || empty( $user['email'] ) ) {
 
68
                                $update = 'err_new';
 
69
                        } else {
 
70
                                $password = wp_generate_password( 12, false);
 
71
                                $user_id = wpmu_create_user( esc_html( strtolower( $user['username'] ) ), $password, esc_html( $user['email'] ) );
 
72
 
 
73
                                if ( false == $user_id ) {
 
74
                                        $update = 'err_new_dup';
 
75
                                } else {
 
76
                                        wp_new_user_notification( $user_id, $password );
 
77
                                        add_user_to_blog( $id, $user_id, $_POST['new_role'] );
 
78
                                        $update = 'newuser';
 
79
                                }
 
80
                        }
 
81
                        break;
 
82
 
 
83
                case 'adduser':
 
84
                        check_admin_referer( 'add-user', '_wpnonce_add-user' );
 
85
                        if ( !empty( $_POST['newuser'] ) ) {
 
86
                                $update = 'adduser';
 
87
                                $newuser = $_POST['newuser'];
 
88
                                $user = get_user_by( 'login', $newuser );
 
89
                                if ( $user && $user->exists() ) {
 
90
                                        if ( ! is_user_member_of_blog( $user->ID, $id ) )
 
91
                                                add_user_to_blog( $id, $user->ID, $_POST['new_role'] );
 
92
                                        else
 
93
                                                $update = 'err_add_member';
 
94
                                } else {
 
95
                                        $update = 'err_add_notfound';
 
96
                                }
 
97
                        } else {
 
98
                                $update = 'err_add_notfound';
 
99
                        }
 
100
                        break;
 
101
 
 
102
                case 'remove':
 
103
                        if ( ! current_user_can( 'remove_users' )  )
 
104
                                die(__('You can&#8217;t remove users.'));
 
105
                        check_admin_referer( 'bulk-users' );
 
106
 
 
107
                        $update = 'remove';
 
108
                        if ( isset( $_REQUEST['users'] ) ) {
 
109
                                $userids = $_REQUEST['users'];
 
110
 
 
111
                                foreach ( $userids as $user_id ) {
 
112
                                        $user_id = (int) $user_id;
 
113
                                        remove_user_from_blog( $user_id, $id );
 
114
                                }
 
115
                        } elseif ( isset( $_GET['user'] ) ) {
 
116
                                remove_user_from_blog( $_GET['user'] );
 
117
                        } else {
 
118
                                $update = 'err_remove';
 
119
                        }
 
120
                        break;
 
121
 
 
122
                case 'promote':
 
123
                        check_admin_referer( 'bulk-users' );
 
124
                        $editable_roles = get_editable_roles();
 
125
                        if ( empty( $editable_roles[$_REQUEST['new_role']] ) )
 
126
                                wp_die(__('You can&#8217;t give users that role.'));
 
127
 
 
128
                        if ( isset( $_REQUEST['users'] ) ) {
 
129
                                $userids = $_REQUEST['users'];
 
130
                                $update = 'promote';
 
131
                                foreach ( $userids as $user_id ) {
 
132
                                        $user_id = (int) $user_id;
 
133
 
 
134
                                        // If the user doesn't already belong to the blog, bail.
 
135
                                        if ( !is_user_member_of_blog( $user_id ) )
 
136
                                                wp_die(__('Cheatin&#8217; uh?'));
 
137
 
 
138
                                        $user = get_userdata( $user_id );
 
139
                                        $user->set_role( $_REQUEST['new_role'] );
 
140
                                }
 
141
                        } else {
 
142
                                $update = 'err_promote';
 
143
                        }
 
144
                        break;
 
145
        }
 
146
 
 
147
        wp_safe_redirect( add_query_arg( 'update', $update, $referer ) );
 
148
        exit();
 
149
}
 
150
 
 
151
restore_current_blog();
 
152
 
 
153
if ( isset( $_GET['action'] ) && 'update-site' == $_GET['action'] ) {
 
154
        wp_safe_redirect( $referer );
 
155
        exit();
 
156
}
 
157
 
 
158
add_screen_option( 'per_page', array( 'label' => _x( 'Users', 'users per page (screen options)' ) ) );
 
159
 
 
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 );
 
162
$title = sprintf( __('Edit Site: %s'), $site_url_no_http );
 
163
 
 
164
$parent_file = 'sites.php';
 
165
$submenu_file = 'sites.php';
 
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
 */
 
174
if ( ! wp_is_large_network( 'users' ) && apply_filters( 'show_network_site_users_add_existing_form', true ) )
 
175
        wp_enqueue_script( 'user-suggest' );
 
176
 
 
177
require( ABSPATH . 'wp-admin/admin-header.php' ); ?>
 
178
 
 
179
<script type="text/javascript">
 
180
/* <![CDATA[ */
 
181
var current_site_id = <?php echo $id; ?>;
 
182
/* ]]> */
 
183
</script>
 
184
 
 
185
 
 
186
<div class="wrap">
 
187
<h2 id="edit-site"><?php echo $title_site_url_linked ?></h2>
 
188
<h3 class="nav-tab-wrapper">
 
189
<?php
 
190
$tabs = array(
 
191
        'site-info'     => array( 'label' => __( 'Info' ),     'url' => 'site-info.php'     ),
 
192
        'site-users'    => array( 'label' => __( 'Users' ),    'url' => 'site-users.php'    ),
 
193
        'site-themes'   => array( 'label' => __( 'Themes' ),   'url' => 'site-themes.php'   ),
 
194
        'site-settings' => array( 'label' => __( 'Settings' ), 'url' => 'site-settings.php' ),
 
195
);
 
196
foreach ( $tabs as $tab_id => $tab ) {
 
197
        $class = ( $tab['url'] == $pagenow ) ? ' nav-tab-active' : '';
 
198
        echo '<a href="' . $tab['url'] . '?id=' . $id .'" class="nav-tab' . $class . '">' . esc_html( $tab['label'] ) . '</a>';
 
199
}
 
200
?>
 
201
</h3><?php
 
202
 
 
203
if ( isset($_GET['update']) ) :
 
204
        switch($_GET['update']) {
 
205
        case 'adduser':
 
206
                echo '<div id="message" class="updated"><p>' . __( 'User added.' ) . '</p></div>';
 
207
                break;
 
208
        case 'err_add_member':
 
209
                echo '<div id="message" class="error"><p>' . __( 'User is already a member of this site.' ) . '</p></div>';
 
210
                break;
 
211
        case 'err_add_notfound':
 
212
                echo '<div id="message" class="error"><p>' . __( 'Enter the username of an existing user.' ) . '</p></div>';
 
213
                break;
 
214
        case 'promote':
 
215
                echo '<div id="message" class="updated"><p>' . __( 'Changed roles.' ) . '</p></div>';
 
216
                break;
 
217
        case 'err_promote':
 
218
                echo '<div id="message" class="error"><p>' . __( 'Select a user to change role.' ) . '</p></div>';
 
219
                break;
 
220
        case 'remove':
 
221
                echo '<div id="message" class="updated"><p>' . __( 'User removed from this site.' ) . '</p></div>';
 
222
                break;
 
223
        case 'err_remove':
 
224
                echo '<div id="message" class="error"><p>' . __( 'Select a user to remove.' ) . '</p></div>';
 
225
                break;
 
226
        case 'newuser':
 
227
                echo '<div id="message" class="updated"><p>' . __( 'User created.' ) . '</p></div>';
 
228
                break;
 
229
        case 'err_new':
 
230
                echo '<div id="message" class="error"><p>' . __( 'Enter the username and email.' ) . '</p></div>';
 
231
                break;
 
232
        case 'err_new_dup':
 
233
                echo '<div id="message" class="error"><p>' . __( 'Duplicated username or email address.' ) . '</p></div>';
 
234
                break;
 
235
        }
 
236
endif; ?>
 
237
 
 
238
<form class="search-form" action="" method="get">
 
239
<?php $wp_list_table->search_box( __( 'Search Users' ), 'user' ); ?>
 
240
<input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
 
241
</form>
 
242
 
 
243
<?php $wp_list_table->views(); ?>
 
244
 
 
245
<form method="post" action="site-users.php?action=update-site">
 
246
        <input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
 
247
 
 
248
<?php $wp_list_table->display(); ?>
 
249
 
 
250
</form>
 
251
 
 
252
<?php
 
253
/**
 
254
 * Fires after the list table on the Users screen in the Multisite Network Admin.
 
255
 *
 
256
 * @since 3.1.0
 
257
 */
 
258
do_action( 'network_site_users_after_list_table' );
 
259
 
 
260
/** This filter is documented in wp-admin/network/site-users.php */
 
261
if ( current_user_can( 'promote_users' ) && apply_filters( 'show_network_site_users_add_existing_form', true ) ) : ?>
 
262
<h3 id="add-existing-user"><?php _e( 'Add Existing User' ); ?></h3>
 
263
<form action="site-users.php?action=adduser" id="adduser" method="post">
 
264
        <input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
 
265
        <table class="form-table">
 
266
                <tr>
 
267
                        <th scope="row"><?php _e( 'Username' ); ?></th>
 
268
                        <td><input type="text" class="regular-text wp-suggest-user" name="newuser" id="newuser" /></td>
 
269
                </tr>
 
270
                <tr>
 
271
                        <th scope="row"><?php _e( 'Role' ); ?></th>
 
272
                        <td><select name="new_role" id="new_role_0">
 
273
                        <?php wp_dropdown_roles( get_option( 'default_role' ) ); ?>
 
274
                        </select></td>
 
275
                </tr>
 
276
        </table>
 
277
        <?php wp_nonce_field( 'add-user', '_wpnonce_add-user' ) ?>
 
278
        <?php submit_button( __( 'Add User' ), 'primary', 'add-user', true, array( 'id' => 'submit-add-existing-user' ) ); ?>
 
279
</form>
 
280
<?php endif; ?>
 
281
 
 
282
<?php
 
283
/**
 
284
 * Filter whether to show the Add New User form on the Multisite Users screen.
 
285
 *
 
286
 * @since 3.1.0
 
287
 *
 
288
 * @param bool $bool Whether to show the Add New User form. Default true.
 
289
 */
 
290
if ( current_user_can( 'create_users' ) && apply_filters( 'show_network_site_users_add_new_form', true ) ) : ?>
 
291
<h3 id="add-new-user"><?php _e( 'Add New User' ); ?></h3>
 
292
<form action="<?php echo network_admin_url('site-users.php?action=newuser'); ?>" id="newuser" method="post">
 
293
        <input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
 
294
        <table class="form-table">
 
295
                <tr>
 
296
                        <th scope="row"><?php _e( 'Username' ) ?></th>
 
297
                        <td><input type="text" class="regular-text" name="user[username]" /></td>
 
298
                </tr>
 
299
                <tr>
 
300
                        <th scope="row"><?php _e( 'Email' ) ?></th>
 
301
                        <td><input type="text" class="regular-text" name="user[email]" /></td>
 
302
                </tr>
 
303
                <tr>
 
304
                        <th scope="row"><?php _e( 'Role' ); ?></th>
 
305
                        <td><select name="new_role" id="new_role_0">
 
306
                        <?php wp_dropdown_roles( get_option( 'default_role' ) ); ?>
 
307
                        </select></td>
 
308
                </tr>
 
309
                <tr class="form-field">
 
310
                        <td colspan="2"><?php _e( 'Username and password will be mailed to the above email address.' ) ?></td>
 
311
                </tr>
 
312
        </table>
 
313
        <?php wp_nonce_field( 'add-user', '_wpnonce_add-new-user' ) ?>
 
314
        <?php submit_button( __( 'Add New User' ), 'primary', 'add-user', true, array( 'id' => 'submit-add-user' ) ); ?>
 
315
</form>
 
316
<?php endif; ?>
 
317
</div>
 
318
<?php
 
319
require( ABSPATH . 'wp-admin/admin-footer.php' );