Diff: STRATO-apps/wordpress_03/app/wp-admin/network/site-info.php
Keine Baseline-Datei – Diff nur gegen leer.
1
-
1
+
<?php
2
+
/**
3
+
* Edit Site Info 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.' ) );
15
+
}
16
+
17
+
get_current_screen()->add_help_tab( get_site_screen_help_tab_args() );
18
+
get_current_screen()->set_help_sidebar( get_site_screen_help_sidebar_content() );
19
+
20
+
$id = isset( $_REQUEST['id'] ) ? (int) $_REQUEST['id'] : 0;
21
+
22
+
if ( ! $id ) {
23
+
wp_die( __( 'Invalid site ID.' ) );
24
+
}
25
+
26
+
$details = get_site( $id );
27
+
if ( ! $details ) {
28
+
wp_die( __( 'The requested site does not exist.' ) );
29
+
}
30
+
31
+
if ( ! can_edit_network( $details->site_id ) ) {
32
+
wp_die( __( 'Sorry, you are not allowed to access this page.' ), 403 );
33
+
}
34
+
35
+
$parsed_scheme = parse_url( $details->siteurl, PHP_URL_SCHEME );
36
+
$is_main_site = is_main_site( $id );
37
+
38
+
if ( isset( $_REQUEST['action'] ) && 'update-site' === $_REQUEST['action'] ) {
39
+
check_admin_referer( 'edit-site' );
40
+
41
+
switch_to_blog( $id );
42
+
43
+
// Rewrite rules can't be flushed during switch to blog.
44
+
delete_option( 'rewrite_rules' );
45
+
46
+
$blog_data = wp_unslash( $_POST['blog'] );
47
+
$blog_data['scheme'] = $parsed_scheme;
48
+
49
+
if ( $is_main_site ) {
50
+
// On the network's main site, don't allow the domain or path to change.
51
+
$blog_data['domain'] = $details->domain;
52
+
$blog_data['path'] = $details->path;
53
+
} else {
54
+
// For any other site, the scheme, domain, and path can all be changed. We first
55
+
// need to ensure a scheme has been provided, otherwise fallback to the existing.
56
+
$new_url_scheme = parse_url( $blog_data['url'], PHP_URL_SCHEME );
57
+
58
+
if ( ! $new_url_scheme ) {
59
+
$blog_data['url'] = esc_url( $parsed_scheme . '://' . $blog_data['url'] );
60
+
}
61
+
$update_parsed_url = parse_url( $blog_data['url'] );
62
+
63
+
// If a path is not provided, use the default of `/`.
64
+
if ( ! isset( $update_parsed_url['path'] ) ) {
65
+
$update_parsed_url['path'] = '/';
66
+
}
67
+
68
+
$blog_data['scheme'] = $update_parsed_url['scheme'];
69
+
70
+
// Make sure to not lose the port if it was provided.
71
+
$blog_data['domain'] = $update_parsed_url['host'];
72
+
if ( isset( $update_parsed_url['port'] ) ) {
73
+
$blog_data['domain'] .= ':' . $update_parsed_url['port'];
74
+
}
75
+
76
+
$blog_data['path'] = $update_parsed_url['path'];
77
+
}
78
+
79
+
$existing_details = get_site( $id );
80
+
$blog_data_checkboxes = array( 'public', 'archived', 'spam', 'mature', 'deleted' );
81
+
82
+
foreach ( $blog_data_checkboxes as $c ) {
83
+
if ( ! in_array( (int) $existing_details->$c, array( 0, 1 ), true ) ) {
84
+
$blog_data[ $c ] = $existing_details->$c;
85
+
} else {
86
+
$blog_data[ $c ] = isset( $_POST['blog'][ $c ] ) ? 1 : 0;
87
+
}
88
+
}
89
+
90
+
update_blog_details( $id, $blog_data );
91
+
92
+
// Maybe update home and siteurl options.
93
+
$new_details = get_site( $id );
94
+
95
+
$old_home_url = trailingslashit( esc_url( get_option( 'home' ) ) );
96
+
$old_home_parsed = parse_url( $old_home_url );
97
+
$old_home_host = $old_home_parsed['host'] . ( isset( $old_home_parsed['port'] ) ? ':' . $old_home_parsed['port'] : '' );
98
+
99
+
if ( $old_home_host === $existing_details->domain && $old_home_parsed['path'] === $existing_details->path ) {
100
+
$new_home_url = untrailingslashit( sanitize_url( $blog_data['scheme'] . '://' . $new_details->domain . $new_details->path ) );
101
+
update_option( 'home', $new_home_url );
102
+
}
103
+
104
+
$old_site_url = trailingslashit( esc_url( get_option( 'siteurl' ) ) );
105
+
$old_site_parsed = parse_url( $old_site_url );
106
+
$old_site_host = $old_site_parsed['host'] . ( isset( $old_site_parsed['port'] ) ? ':' . $old_site_parsed['port'] : '' );
107
+
108
+
if ( $old_site_host === $existing_details->domain && $old_site_parsed['path'] === $existing_details->path ) {
109
+
$new_site_url = untrailingslashit( sanitize_url( $blog_data['scheme'] . '://' . $new_details->domain . $new_details->path ) );
110
+
update_option( 'siteurl', $new_site_url );
111
+
}
112
+
113
+
restore_current_blog();
114
+
wp_redirect(
115
+
add_query_arg(
116
+
array(
117
+
'update' => 'updated',
118
+
'id' => $id,
119
+
),
120
+
'site-info.php'
121
+
)
122
+
);
123
+
exit;
124
+
}
125
+
126
+
if ( isset( $_GET['update'] ) ) {
127
+
$messages = array();
128
+
if ( 'updated' === $_GET['update'] ) {
129
+
$messages[] = __( 'Site info updated.' );
130
+
}
131
+
}
132
+
133
+
// Used in the HTML title tag.
134
+
/* translators: %s: Site title. */
135
+
$title = sprintf( __( 'Edit Site: %s' ), esc_html( $details->blogname ) );
136
+
137
+
$parent_file = 'sites.php';
138
+
$submenu_file = 'sites.php';
139
+
140
+
require_once ABSPATH . 'wp-admin/admin-header.php';
141
+
142
+
?>
143
+
144
+
<div class="wrap">
145
+
<h1 id="edit-site"><?php echo $title; ?></h1>
146
+
<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>
147
+
<?php
148
+
149
+
network_edit_site_nav(
150
+
array(
151
+
'blog_id' => $id,
152
+
'selected' => 'site-info',
153
+
)
154
+
);
155
+
156
+
if ( ! empty( $messages ) ) {
157
+
$notice_args = array(
158
+
'type' => 'success',
159
+
'dismissible' => true,
160
+
'id' => 'message',
161
+
);
162
+
163
+
foreach ( $messages as $msg ) {
164
+
wp_admin_notice( $msg, $notice_args );
165
+
}
166
+
}
167
+
?>
168
+
<form method="post" action="site-info.php?action=update-site">
169
+
<?php wp_nonce_field( 'edit-site' ); ?>
170
+
<input type="hidden" name="id" value="<?php echo esc_attr( $id ); ?>" />
171
+
<table class="form-table" role="presentation">
172
+
<?php
173
+
// The main site of the network should not be updated on this page.
174
+
if ( $is_main_site ) :
175
+
?>
176
+
<tr class="form-field">
177
+
<th scope="row"><?php _e( 'Site Address (URL)' ); ?></th>
178
+
<td><?php echo esc_url( $parsed_scheme . '://' . $details->domain . $details->path ); ?></td>
179
+
</tr>
180
+
<?php
181
+
// For any other site, the scheme, domain, and path can all be changed.
182
+
else :
183
+
?>
184
+
<tr class="form-field form-required">
185
+
<th scope="row"><label for="url"><?php _e( 'Site Address (URL)' ); ?></label></th>
186
+
<td><input name="blog[url]" type="text" id="url" value="<?php echo $parsed_scheme . '://' . esc_attr( $details->domain ) . esc_attr( $details->path ); ?>" /></td>
187
+
</tr>
188
+
<?php endif; ?>
189
+
190
+
<tr class="form-field">
191
+
<th scope="row"><label for="blog_registered"><?php _ex( 'Registered', 'site' ); ?></label></th>
192
+
<td><input name="blog[registered]" type="text" id="blog_registered" value="<?php echo esc_attr( $details->registered ); ?>" /></td>
193
+
</tr>
194
+
<tr class="form-field">
195
+
<th scope="row"><label for="blog_last_updated"><?php _e( 'Last Updated' ); ?></label></th>
196
+
<td><input name="blog[last_updated]" type="text" id="blog_last_updated" value="<?php echo esc_attr( $details->last_updated ); ?>" /></td>
197
+
</tr>
198
+
<?php
199
+
$site_attributes_title = __( 'Attributes' );
200
+
201
+
$attribute_fields = array( 'public' => _x( 'Public', 'site' ) );
202
+
if ( ! $is_main_site ) {
203
+
$attribute_fields['archived'] = __( 'Archived' );
204
+
$attribute_fields['spam'] = _x( 'Spam', 'site' );
205
+
$attribute_fields['deleted'] = __( 'Flagged for Deletion' );
206
+
}
207
+
$attribute_fields['mature'] = __( 'Mature' );
208
+
?>
209
+
<tr>
210
+
<th scope="row"><?php echo $site_attributes_title; ?></th>
211
+
<td>
212
+
<fieldset>
213
+
<legend class="screen-reader-text"><?php echo $site_attributes_title; ?></legend>
214
+
<?php foreach ( $attribute_fields as $field_key => $field_label ) : ?>
215
+
<label><input type="checkbox" name="blog[<?php echo $field_key; ?>]" value="1" <?php checked( (bool) $details->$field_key, true ); ?> <?php disabled( ! in_array( (int) $details->$field_key, array( 0, 1 ), true ) ); ?> />
216
+
<?php echo $field_label; ?></label><br />
217
+
<?php endforeach; ?>
218
+
<fieldset>
219
+
</td>
220
+
</tr>
221
+
</table>
222
+
223
+
<?php
224
+
/**
225
+
* Fires at the end of the site info form in network admin.
226
+
*
227
+
* @since 5.6.0
228
+
*
229
+
* @param int $id The site ID.
230
+
*/
231
+
do_action( 'network_site_info_form', $id );
232
+
233
+
submit_button();
234
+
?>
235
+
</form>
236
+
237
+
</div>
238
+
<?php
239
+
require_once ABSPATH . 'wp-admin/admin-footer.php';
240
+