<?php
require_once __DIR__ . '/admin.php';
if (!current_user_can('manage_sites')) {
wp_die(__('Sorry, you are not allowed to edit this site.'));
}
get_current_screen()->add_help_tab(get_site_screen_help_tab_args());
get_current_screen()->set_help_sidebar(get_site_screen_help_sidebar_content());
$id = isset($_REQUEST['id']) ? (int) $_REQUEST['id'] : 0;
if (!$id) {
wp_die(__('Invalid site ID.'));
}
$details = get_site($id);
if (!$details) {
wp_die(__('The requested site does not exist.'));
}
if (!can_edit_network($details->site_id)) {
wp_die(__('Sorry, you are not allowed to access this page.'), 403);
}
$parsed_scheme = parse_url($details->siteurl, PHP_URL_SCHEME);
$is_main_site = is_main_site($id);
if (isset($_REQUEST['action']) && 'update-site' === $_REQUEST['action']) {
check_admin_referer('edit-site');
switch_to_blog($id);
delete_option('rewrite_rules');
$blog_data = wp_unslash($_POST['blog']);
$blog_data['scheme'] = $parsed_scheme;
if ($is_main_site) {
$blog_data['domain'] = $details->domain;
$blog_data['path'] = $details->path;
} else {
$new_url_scheme = parse_url($blog_data['url'], PHP_URL_SCHEME);
if (!$new_url_scheme) {
$blog_data['url'] = esc_url($parsed_scheme . '://' . $blog_data['url']);
}
$update_parsed_url = parse_url($blog_data['url']);
if (!isset($update_parsed_url['path'])) {
$update_parsed_url['path'] = '/';
}
$blog_data['scheme'] = $update_parsed_url['scheme'];
$blog_data['domain'] = $update_parsed_url['host'];
$blog_data['path'] = $update_parsed_url['path'];
}
$existing_details = get_site($id);
$blog_data_checkboxes = array('public', 'archived', 'spam', 'mature', 'deleted');
foreach ($blog_data_checkboxes as $c) {
if (!in_array((int) $existing_details->{$c}, array(0, 1), true)) {
$blog_data[$c] = $existing_details->{$c};
} else {
$blog_data[$c] = isset($_POST['blog'][$c]) ? 1 : 0;
}
}
update_blog_details($id, $blog_data);
$new_details = get_site($id);
$old_home_url = trailingslashit(esc_url(get_option('home')));
$old_home_parsed = parse_url($old_home_url);
if ($old_home_parsed['host'] === $existing_details->domain && $old_home_parsed['path'] === $existing_details->path) {
$new_home_url = untrailingslashit(esc_url_raw($blog_data['scheme'] . '://' . $new_details->domain . $new_details->path));
update_option('home', $new_home_url);
}
$old_site_url = trailingslashit(esc_url(get_option('siteurl')));
$old_site_parsed = parse_url($old_site_url);
if ($old_site_parsed['host'] === $existing_details->domain && $old_site_parsed['path'] === $existing_details->path) {
$new_site_url = untrailingslashit(esc_url_raw($blog_data['scheme'] . '://' . $new_details->domain . $new_details->path));
update_option('siteurl', $new_site_url);
}
restore_current_blog();
wp_redirect(add_query_arg(array('update' => 'updated', 'id' => $id), 'site-info.php'));
exit;
}
if (isset($_GET['update'])) {
$messages = array();
if ('updated' === $_GET['update']) {
$messages[] = __('Site info updated.');
}
}
$title = sprintf(__('Edit Site: %s'), esc_html($details->blogname));
$parent_file = 'sites.php';
$submenu_file = 'sites.php';
require_once ABSPATH . 'wp-admin/admin-header.php';
?>
<div class="wrap">
<h1 id="edit-site"><?php
echo $title;
?></h1>
<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>
<?php
network_edit_site_nav(array('blog_id' => $id, 'selected' => 'site-info'));
if (!empty($messages)) {
foreach ($messages as $msg) {
echo '<div id="message" class="updated notice is-dismissible"><p>' . $msg . '</p></div>';
}
}
?>
<form method="post" action="site-info.php?action=update-site">
<?php
wp_nonce_field('edit-site');
?>
<input type="hidden" name="id" value="<?php
echo esc_attr($id);
?>" />
<table class="form-table" role="presentation">
<?php
if ($is_main_site) {
?>
<tr class="form-field">
<th scope="row"><?php
_e('Site Address (URL)');
?></th>
<td><?php
echo esc_url($parsed_scheme . '://' . $details->domain . $details->path);
?></td>
</tr>
<?php
} else {
?>
<tr class="form-field form-required">
<th scope="row"><label for="url"><?php
_e('Site Address (URL)');
?></label></th>
<td><input name="blog[url]" type="text" id="url" value="<?php
echo $parsed_scheme . '://' . esc_attr($details->domain) . esc_attr($details->path);
?>" /></td>
</tr>
<?php
}
?>
<tr class="form-field">
<th scope="row"><label for="blog_registered"><?php
_ex('Registered', 'site');
?></label></th>
<td><input name="blog[registered]" type="text" id="blog_registered" value="<?php
echo esc_attr($details->registered);
?>" /></td>
</tr>
<tr class="form-field">
<th scope="row"><label for="blog_last_updated"><?php
_e('Last Updated');
?></label></th>
<td><input name="blog[last_updated]" type="text" id="blog_last_updated" value="<?php
echo esc_attr($details->last_updated);
?>" /></td>
</tr>
<?php
$attribute_fields = array('public' => _x('Public', 'site'));
if (!$is_main_site) {
$attribute_fields['archived'] = __('Archived');
$attribute_fields['spam'] = _x('Spam', 'site');
$attribute_fields['deleted'] = __('Deleted');
}
$attribute_fields['mature'] = __('Mature');
?>
<tr>
<th scope="row"><?php
_e('Attributes');
?></th>
<td>
<fieldset>
<legend class="screen-reader-text"><?php
_e('Set site attributes');
?></legend>
<?php
foreach ($attribute_fields as $field_key => $field_label) {
?>
<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));
?> />
<?php
echo $field_label;
?></label><br/>
<?php
}
?>
<fieldset>
</td>
</tr>
</table>
<?php
do_action('network_site_info_form', $id);
submit_button();
?>
</form>
</div>
<?php
require_once ABSPATH . 'wp-admin/admin-footer.php';