mirror of
https://github.com/WordPress/WordPress.git
synced 2024-11-14 22:56:19 +01:00
18987f840c
Adds `role="presentation"` to the `<table>` elements used for layout purposes. Ideally, HTML tables should be used for tabular data. When tables are used for layout purposes, it's important to remove any native semantics so that assistive technologies can correctly announce the table content in a linearized fashion. Props greatislander, afercia. Merges [45403] to the 5.2 branch. See #46899. Built from https://develop.svn.wordpress.org/branches/5.2@45834 git-svn-id: http://core.svn.wordpress.org/branches/5.2@45645 1a063a9b-81f0-0310-95a4-ce76da25c4cd
210 lines
6.8 KiB
PHP
210 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" role="presentation">
|
|
<?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 ); ?> <?php 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' );
|