mirror of
https://github.com/WordPress/WordPress.git
synced 2024-11-19 00:55:13 +01:00
aaf99e6913
WordPress' code just... wasn't. This is now dealt with. Props jrf, pento, netweb, GaryJ, jdgrimes, westonruter, Greg Sherwood from PHPCS, and everyone who's ever contributed to WPCS and PHPCS. Fixes #41057. Built from https://develop.svn.wordpress.org/trunk@42343 git-svn-id: http://core.svn.wordpress.org/trunk@42172 1a063a9b-81f0-0310-95a4-ce76da25c4cd
214 lines
6.8 KiB
PHP
214 lines
6.8 KiB
PHP
<?php
|
|
/**
|
|
* Edit Site Info Administration Screen
|
|
*
|
|
* @package WordPress
|
|
* @subpackage Multisite
|
|
* @since 3.1.0
|
|
*/
|
|
|
|
/** Load WordPress Administration Bootstrap */
|
|
require_once( dirname( __FILE__ ) . '/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'] ) ? intval( $_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 );
|
|
|
|
// Rewrite rules can't be flushed during switch to blog.
|
|
delete_option( 'rewrite_rules' );
|
|
|
|
$blog_data = wp_unslash( $_POST['blog'] );
|
|
$blog_data['scheme'] = $parsed_scheme;
|
|
|
|
if ( $is_main_site ) {
|
|
// On the network's main site, don't allow the domain or path to change.
|
|
$blog_data['domain'] = $details->domain;
|
|
$blog_data['path'] = $details->path;
|
|
} else {
|
|
// For any other site, the scheme, domain, and path can all be changed. We first
|
|
// need to ensure a scheme has been provided, otherwise fallback to the existing.
|
|
$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 a path is not provided, use the default of `/`.
|
|
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( $existing_details->$c, array( 0, 1 ) ) ) {
|
|
$blog_data[ $c ] = $existing_details->$c;
|
|
} else {
|
|
$blog_data[ $c ] = isset( $_POST['blog'][ $c ] ) ? 1 : 0;
|
|
}
|
|
}
|
|
|
|
update_blog_details( $id, $blog_data );
|
|
|
|
// Maybe update home and siteurl options.
|
|
$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.' );
|
|
}
|
|
}
|
|
|
|
/* translators: %s: site name */
|
|
$title = sprintf( __( 'Edit Site: %s' ), esc_html( $details->blogname ) );
|
|
|
|
$parent_file = 'sites.php';
|
|
$submenu_file = 'sites.php';
|
|
|
|
require( 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">
|
|
<?php
|
|
// The main site of the network should not be updated on this page.
|
|
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
|
|
// For any other site, the scheme, domain, and path can all be changed.
|
|
else :
|
|
?>
|
|
<tr class="form-field form-required">
|
|
<th scope="row"><?php _e( 'Site Address (URL)' ); ?></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 endif; ?>
|
|
|
|
<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' => __( 'Public' ) );
|
|
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 );
|
|
disabled( ! in_array( $details->$field_key, array( 0, 1 ) ) );
|
|
?>
|
|
/>
|
|
<?php echo $field_label; ?></label><br/>
|
|
<?php endforeach; ?>
|
|
<fieldset>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<?php submit_button(); ?>
|
|
</form>
|
|
|
|
</div>
|
|
<?php
|
|
require( ABSPATH . 'wp-admin/admin-footer.php' );
|