~canonical-sysadmins/wordpress/5.1

« back to all changes in this revision

Viewing changes to wp-admin/network/themes.php

  • Committer: Barry Price
  • Date: 2019-02-22 03:51:26 UTC
  • mfrom: (1.2.12 upstream)
  • Revision ID: barry.price@canonical.com-20190222035126-o28k38qs8jfyjsxt
Merge WP5.1 from upstream

Show diffs side-by-side

added added

removed removed

Lines of Context:
10
10
/** Load WordPress Administration Bootstrap */
11
11
require_once( dirname( __FILE__ ) . '/admin.php' );
12
12
 
13
 
if ( !current_user_can('manage_network_themes') )
 
13
if ( ! current_user_can( 'manage_network_themes' ) ) {
14
14
        wp_die( __( 'Sorry, you are not allowed to manage network themes.' ) );
 
15
}
15
16
 
16
 
$wp_list_table = _get_list_table('WP_MS_Themes_List_Table');
17
 
$pagenum = $wp_list_table->get_pagenum();
 
17
$wp_list_table = _get_list_table( 'WP_MS_Themes_List_Table' );
 
18
$pagenum       = $wp_list_table->get_pagenum();
18
19
 
19
20
$action = $wp_list_table->current_action();
20
21
 
21
 
$s = isset($_REQUEST['s']) ? $_REQUEST['s'] : '';
 
22
$s = isset( $_REQUEST['s'] ) ? $_REQUEST['s'] : '';
22
23
 
23
24
// Clean up request URI from temporary args for screen options/paging uri's to work as expected.
24
 
$temp_args = array( 'enabled', 'disabled', 'deleted', 'error' );
 
25
$temp_args              = array( 'enabled', 'disabled', 'deleted', 'error' );
25
26
$_SERVER['REQUEST_URI'] = remove_query_arg( $temp_args, $_SERVER['REQUEST_URI'] );
26
 
$referer = remove_query_arg( $temp_args, wp_get_referer() );
 
27
$referer                = remove_query_arg( $temp_args, wp_get_referer() );
27
28
 
28
29
if ( $action ) {
29
30
        switch ( $action ) {
30
31
                case 'enable':
31
 
                        check_admin_referer('enable-theme_' . $_GET['theme']);
 
32
                        check_admin_referer( 'enable-theme_' . $_GET['theme'] );
32
33
                        WP_Theme::network_enable_theme( $_GET['theme'] );
33
 
                        if ( false === strpos( $referer, '/network/themes.php' ) )
 
34
                        if ( false === strpos( $referer, '/network/themes.php' ) ) {
34
35
                                wp_redirect( network_admin_url( 'themes.php?enabled=1' ) );
35
 
                        else
 
36
                        } else {
36
37
                                wp_safe_redirect( add_query_arg( 'enabled', 1, $referer ) );
 
38
                        }
37
39
                        exit;
38
40
                case 'disable':
39
 
                        check_admin_referer('disable-theme_' . $_GET['theme']);
 
41
                        check_admin_referer( 'disable-theme_' . $_GET['theme'] );
40
42
                        WP_Theme::network_disable_theme( $_GET['theme'] );
41
43
                        wp_safe_redirect( add_query_arg( 'disabled', '1', $referer ) );
42
44
                        exit;
43
45
                case 'enable-selected':
44
 
                        check_admin_referer('bulk-themes');
 
46
                        check_admin_referer( 'bulk-themes' );
45
47
                        $themes = isset( $_POST['checked'] ) ? (array) $_POST['checked'] : array();
46
 
                        if ( empty($themes) ) {
 
48
                        if ( empty( $themes ) ) {
47
49
                                wp_safe_redirect( add_query_arg( 'error', 'none', $referer ) );
48
50
                                exit;
49
51
                        }
51
53
                        wp_safe_redirect( add_query_arg( 'enabled', count( $themes ), $referer ) );
52
54
                        exit;
53
55
                case 'disable-selected':
54
 
                        check_admin_referer('bulk-themes');
 
56
                        check_admin_referer( 'bulk-themes' );
55
57
                        $themes = isset( $_POST['checked'] ) ? (array) $_POST['checked'] : array();
56
 
                        if ( empty($themes) ) {
 
58
                        if ( empty( $themes ) ) {
57
59
                                wp_safe_redirect( add_query_arg( 'error', 'none', $referer ) );
58
60
                                exit;
59
61
                        }
60
62
                        WP_Theme::network_disable_theme( (array) $themes );
61
63
                        wp_safe_redirect( add_query_arg( 'disabled', count( $themes ), $referer ) );
62
64
                        exit;
63
 
                case 'update-selected' :
 
65
                case 'update-selected':
64
66
                        check_admin_referer( 'bulk-themes' );
65
67
 
66
 
                        if ( isset( $_GET['themes'] ) )
 
68
                        if ( isset( $_GET['themes'] ) ) {
67
69
                                $themes = explode( ',', $_GET['themes'] );
68
 
                        elseif ( isset( $_POST['checked'] ) )
 
70
                        } elseif ( isset( $_POST['checked'] ) ) {
69
71
                                $themes = (array) $_POST['checked'];
70
 
                        else
 
72
                        } else {
71
73
                                $themes = array();
 
74
                        }
72
75
 
73
 
                        $title = __( 'Update Themes' );
 
76
                        $title       = __( 'Update Themes' );
74
77
                        $parent_file = 'themes.php';
75
78
 
76
 
                        require_once(ABSPATH . 'wp-admin/admin-header.php');
 
79
                        require_once( ABSPATH . 'wp-admin/admin-header.php' );
77
80
 
78
81
                        echo '<div class="wrap">';
79
82
                        echo '<h1>' . esc_html( $title ) . '</h1>';
80
83
 
81
 
                        $url = self_admin_url('update.php?action=update-selected-themes&amp;themes=' . urlencode( join(',', $themes) ));
82
 
                        $url = wp_nonce_url($url, 'bulk-update-themes');
 
84
                        $url = self_admin_url( 'update.php?action=update-selected-themes&amp;themes=' . urlencode( join( ',', $themes ) ) );
 
85
                        $url = wp_nonce_url( $url, 'bulk-update-themes' );
83
86
 
84
87
                        echo "<iframe src='$url' style='width: 100%; height:100%; min-height:850px;'></iframe>";
85
88
                        echo '</div>';
86
 
                        require_once(ABSPATH . 'wp-admin/admin-footer.php');
 
89
                        require_once( ABSPATH . 'wp-admin/admin-footer.php' );
87
90
                        exit;
88
91
                case 'delete-selected':
89
92
                        if ( ! current_user_can( 'delete_themes' ) ) {
90
 
                                wp_die( __('Sorry, you are not allowed to delete themes for this site.') );
 
93
                                wp_die( __( 'Sorry, you are not allowed to delete themes for this site.' ) );
91
94
                        }
92
95
 
93
96
                        check_admin_referer( 'bulk-themes' );
111
114
                                $theme_info[ $theme ] = wp_get_theme( $theme );
112
115
                        }
113
116
 
114
 
                        include(ABSPATH . 'wp-admin/update.php');
 
117
                        include( ABSPATH . 'wp-admin/update.php' );
115
118
 
116
119
                        $parent_file = 'themes.php';
117
120
 
132
135
                                <?php endif; ?>
133
136
                                        <ul class="ul-disc">
134
137
                                        <?php
135
 
                                                foreach ( $theme_info as $theme ) {
136
 
                                                        echo '<li>' . sprintf(
137
 
                                                                /* translators: 1: theme name, 2: theme author */
138
 
                                                                _x( '%1$s by %2$s', 'theme' ),
139
 
                                                                '<strong>' . $theme->display( 'Name' ) . '</strong>',
140
 
                                                                '<em>' . $theme->display( 'Author' ) . '</em>'
141
 
                                                        ) . '</li>';
142
 
                                                }
 
138
                                        foreach ( $theme_info as $theme ) {
 
139
                                                echo '<li>' . sprintf(
 
140
                                                        /* translators: 1: theme name, 2: theme author */
 
141
                                                        _x( '%1$s by %2$s', 'theme' ),
 
142
                                                        '<strong>' . $theme->display( 'Name' ) . '</strong>',
 
143
                                                        '<em>' . $theme->display( 'Author' ) . '</em>'
 
144
                                                ) . '</li>';
 
145
                                        }
143
146
                                        ?>
144
147
                                        </ul>
145
148
                                <?php if ( 1 == $themes_to_delete ) : ?>
147
150
                                <?php else : ?>
148
151
                                        <p><?php _e( 'Are you sure you wish to delete these themes?' ); ?></p>
149
152
                                <?php endif; ?>
150
 
                                <form method="post" action="<?php echo esc_url($_SERVER['REQUEST_URI']); ?>" style="display:inline;">
 
153
                                <form method="post" action="<?php echo esc_url( $_SERVER['REQUEST_URI'] ); ?>" style="display:inline;">
151
154
                                        <input type="hidden" name="verify-delete" value="1" />
152
155
                                        <input type="hidden" name="action" value="delete-selected" />
153
156
                                        <?php
154
 
                                                foreach ( (array) $themes as $theme ) {
155
 
                                                        echo '<input type="hidden" name="checked[]" value="' . esc_attr($theme) . '" />';
156
 
                                                }
 
157
                                        foreach ( (array) $themes as $theme ) {
 
158
                                                echo '<input type="hidden" name="checked[]" value="' . esc_attr( $theme ) . '" />';
 
159
                                        }
157
160
 
158
161
                                                wp_nonce_field( 'bulk-themes' );
159
162
 
160
 
                                                if ( 1 == $themes_to_delete ) {
161
 
                                                        submit_button( __( 'Yes, delete this theme' ), '', 'submit', false );
162
 
                                                } else {
163
 
                                                        submit_button( __( 'Yes, delete these themes' ), '', 'submit', false );
164
 
                                                }
 
163
                                        if ( 1 == $themes_to_delete ) {
 
164
                                                submit_button( __( 'Yes, delete this theme' ), '', 'submit', false );
 
165
                                        } else {
 
166
                                                submit_button( __( 'Yes, delete these themes' ), '', 'submit', false );
 
167
                                        }
165
168
                                        ?>
166
169
                                </form>
167
170
                                <?php
172
175
                                </form>
173
176
                        </div>
174
177
                                <?php
175
 
                                require_once(ABSPATH . 'wp-admin/admin-footer.php');
 
178
                                require_once( ABSPATH . 'wp-admin/admin-footer.php' );
176
179
                                exit;
177
180
                        } // Endif verify-delete
178
181
 
179
182
                        foreach ( $themes as $theme ) {
180
 
                                $delete_result = delete_theme( $theme, esc_url( add_query_arg( array(
181
 
                                        'verify-delete' => 1,
182
 
                                        'action' => 'delete-selected',
183
 
                                        'checked' => $_REQUEST['checked'],
184
 
                                        '_wpnonce' => $_REQUEST['_wpnonce']
185
 
                                ), network_admin_url( 'themes.php' ) ) ) );
 
183
                                $delete_result = delete_theme(
 
184
                                        $theme,
 
185
                                        esc_url(
 
186
                                                add_query_arg(
 
187
                                                        array(
 
188
                                                                'verify-delete' => 1,
 
189
                                                                'action'        => 'delete-selected',
 
190
                                                                'checked'       => $_REQUEST['checked'],
 
191
                                                                '_wpnonce'      => $_REQUEST['_wpnonce'],
 
192
                                                        ),
 
193
                                                        network_admin_url( 'themes.php' )
 
194
                                                )
 
195
                                        )
 
196
                                );
186
197
                        }
187
198
 
188
199
                        $paged = ( $_REQUEST['paged'] ) ? $_REQUEST['paged'] : 1;
189
 
                        wp_redirect( add_query_arg( array(
190
 
                                'deleted' => count( $themes ),
191
 
                                'paged' => $paged,
192
 
                                's' => $s
193
 
                        ), network_admin_url( 'themes.php' ) ) );
 
200
                        wp_redirect(
 
201
                                add_query_arg(
 
202
                                        array(
 
203
                                                'deleted' => count( $themes ),
 
204
                                                'paged'   => $paged,
 
205
                                                's'       => $s,
 
206
                                        ),
 
207
                                        network_admin_url( 'themes.php' )
 
208
                                )
 
209
                        );
194
210
                        exit;
195
211
                default:
196
212
                        $themes = isset( $_POST['checked'] ) ? (array) $_POST['checked'] : array();
206
222
                        wp_safe_redirect( $referer );
207
223
                        exit;
208
224
        }
209
 
 
210
225
}
211
226
 
212
227
$wp_list_table->prepare_items();
215
230
 
216
231
add_screen_option( 'per_page' );
217
232
 
218
 
get_current_screen()->add_help_tab( array(
219
 
        'id'      => 'overview',
220
 
        'title'   => __('Overview'),
221
 
        'content' =>
222
 
                '<p>' . __('This screen enables and disables the inclusion of themes available to choose in the Appearance menu for each site. It does not activate or deactivate which theme a site is currently using.') . '</p>' .
223
 
                '<p>' . __('If the network admin disables a theme that is in use, it can still remain selected on that site. If another theme is chosen, the disabled theme will not appear in the site&#8217;s Appearance > Themes screen.') . '</p>' .
224
 
                '<p>' . __('Themes can be enabled on a site by site basis by the network admin on the Edit Site screen (which has a Themes tab); get there via the Edit action link on the All Sites screen. Only network admins are able to install or edit themes.') . '</p>'
225
 
) );
 
233
get_current_screen()->add_help_tab(
 
234
        array(
 
235
                'id'      => 'overview',
 
236
                'title'   => __( 'Overview' ),
 
237
                'content' =>
 
238
                        '<p>' . __( 'This screen enables and disables the inclusion of themes available to choose in the Appearance menu for each site. It does not activate or deactivate which theme a site is currently using.' ) . '</p>' .
 
239
                        '<p>' . __( 'If the network admin disables a theme that is in use, it can still remain selected on that site. If another theme is chosen, the disabled theme will not appear in the site&#8217;s Appearance > Themes screen.' ) . '</p>' .
 
240
                        '<p>' . __( 'Themes can be enabled on a site by site basis by the network admin on the Edit Site screen (which has a Themes tab); get there via the Edit action link on the All Sites screen. Only network admins are able to install or edit themes.' ) . '</p>',
 
241
        )
 
242
);
226
243
 
227
244
get_current_screen()->set_help_sidebar(
228
 
        '<p><strong>' . __('For more information:') . '</strong></p>' .
229
 
        '<p>' . __('<a href="https://codex.wordpress.org/Network_Admin_Themes_Screen">Documentation on Network Themes</a>') . '</p>' .
230
 
        '<p>' . __('<a href="https://wordpress.org/support/">Support Forums</a>') . '</p>'
231
 
);
232
 
 
233
 
get_current_screen()->set_screen_reader_content( array(
234
 
        'heading_views'      => __( 'Filter themes list' ),
235
 
        'heading_pagination' => __( 'Themes list navigation' ),
236
 
        'heading_list'       => __( 'Themes list' ),
237
 
) );
238
 
 
239
 
$title = __('Themes');
 
245
        '<p><strong>' . __( 'For more information:' ) . '</strong></p>' .
 
246
        '<p>' . __( '<a href="https://codex.wordpress.org/Network_Admin_Themes_Screen">Documentation on Network Themes</a>' ) . '</p>' .
 
247
        '<p>' . __( '<a href="https://wordpress.org/support/">Support Forums</a>' ) . '</p>'
 
248
);
 
249
 
 
250
get_current_screen()->set_screen_reader_content(
 
251
        array(
 
252
                'heading_views'      => __( 'Filter themes list' ),
 
253
                'heading_pagination' => __( 'Themes list navigation' ),
 
254
                'heading_list'       => __( 'Themes list' ),
 
255
        )
 
256
);
 
257
 
 
258
$title       = __( 'Themes' );
240
259
$parent_file = 'themes.php';
241
260
 
242
261
wp_enqueue_script( 'updates' );
243
262
wp_enqueue_script( 'theme-preview' );
244
263
 
245
 
require_once(ABSPATH . 'wp-admin/admin-header.php');
 
264
require_once( ABSPATH . 'wp-admin/admin-header.php' );
246
265
 
247
266
?>
248
267
 
302
321
<?php
303
322
$wp_list_table->views();
304
323
 
305
 
if ( 'broken' == $status )
 
324
if ( 'broken' == $status ) {
306
325
        echo '<p class="clear">' . __( 'The following themes are installed but incomplete.' ) . '</p>';
 
326
}
307
327
?>
308
328
 
309
329
<form id="bulk-action-form" method="post">
310
 
<input type="hidden" name="theme_status" value="<?php echo esc_attr($status) ?>" />
311
 
<input type="hidden" name="paged" value="<?php echo esc_attr($page) ?>" />
 
330
<input type="hidden" name="theme_status" value="<?php echo esc_attr( $status ); ?>" />
 
331
<input type="hidden" name="paged" value="<?php echo esc_attr( $page ); ?>" />
312
332
 
313
333
<?php $wp_list_table->display(); ?>
314
334
</form>
320
340
wp_print_admin_notice_templates();
321
341
wp_print_update_row_templates();
322
342
 
323
 
include(ABSPATH . 'wp-admin/admin-footer.php');
 
343
include( ABSPATH . 'wp-admin/admin-footer.php' );