--- a/wp/wp-admin/network/settings.php Tue Jun 09 11:14:17 2015 +0000
+++ b/wp/wp-admin/network/settings.php Mon Oct 14 17:39:30 2019 +0200
@@ -10,39 +10,35 @@
/** Load WordPress Administration Bootstrap */
require_once( dirname( __FILE__ ) . '/admin.php' );
-/** WordPress Translation Install API */
+/** WordPress Translation Installation API */
require_once( ABSPATH . 'wp-admin/includes/translation-install.php' );
-if ( ! is_multisite() )
- wp_die( __( 'Multisite support is not enabled.' ) );
-
if ( ! current_user_can( 'manage_network_options' ) )
- wp_die( __( 'You do not have permission to access this page.' ), 403 );
+ wp_die( __( 'Sorry, you are not allowed to access this page.' ), 403 );
$title = __( 'Network Settings' );
$parent_file = 'settings.php';
-/**
- * Print JavaScript in the header on the Network Settings screen.
- *
- * @since 4.1.0
-*/
-function network_settings_add_js() {
-?>
-<script type="text/javascript">
-jQuery(document).ready( function($) {
- var languageSelect = $( '#WPLANG' );
- $( 'form' ).submit( function() {
- // Don't show a spinner for English and installed languages,
- // as there is nothing to download.
- if ( ! languageSelect.find( 'option:selected' ).data( 'installed' ) ) {
- $( '#submit', this ).after( '<span class="spinner language-install-spinner" />' );
- }
- });
-});
-</script>
-<?php
+// Handle network admin email change requests
+if ( ! empty( $_GET[ 'network_admin_hash' ] ) ) {
+ $new_admin_details = get_site_option( 'network_admin_hash' );
+ $redirect = 'settings.php?updated=false';
+ if ( is_array( $new_admin_details ) && hash_equals( $new_admin_details[ 'hash' ], $_GET[ 'network_admin_hash' ] ) && ! empty( $new_admin_details[ 'newemail' ] ) ) {
+ update_site_option( 'admin_email', $new_admin_details[ 'newemail' ] );
+ delete_site_option( 'network_admin_hash' );
+ delete_site_option( 'new_admin_email' );
+ $redirect = 'settings.php?updated=true';
+ }
+ wp_redirect( network_admin_url( $redirect ) );
+ exit;
+} elseif ( ! empty( $_GET['dismiss'] ) && 'new_network_admin_email' == $_GET['dismiss'] ) {
+ check_admin_referer( 'dismiss_new_network_admin_email' );
+ delete_site_option( 'network_admin_hash' );
+ delete_site_option( 'new_admin_email' );
+ wp_redirect( network_admin_url( 'settings.php?updated=true' ) );
+ exit;
}
+
add_action( 'admin_head', 'network_settings_add_js' );
get_current_screen()->add_help_tab( array(
@@ -61,8 +57,8 @@
get_current_screen()->set_help_sidebar(
'<p><strong>' . __('For more information:') . '</strong></p>' .
- '<p>' . __('<a href="https://codex.wordpress.org/Network_Admin_Settings_Screen" target="_blank">Documentation on Network Settings</a>') . '</p>' .
- '<p>' . __('<a href="https://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
+ '<p>' . __('<a href="https://codex.wordpress.org/Network_Admin_Settings_Screen">Documentation on Network Settings</a>') . '</p>' .
+ '<p>' . __('<a href="https://wordpress.org/support/">Support Forums</a>') . '</p>'
);
if ( $_POST ) {
@@ -82,11 +78,12 @@
'upload_space_check_disabled', 'blog_upload_space', 'upload_filetypes', 'site_name',
'first_post', 'first_page', 'first_comment', 'first_comment_url', 'first_comment_author',
'welcome_email', 'welcome_user_email', 'fileupload_maxk', 'global_terms_enabled',
- 'illegal_names', 'limited_email_domains', 'banned_email_domains', 'WPLANG', 'admin_email',
+ 'illegal_names', 'limited_email_domains', 'banned_email_domains', 'WPLANG', 'new_admin_email',
+ 'first_comment_email',
);
- // Handle translation install.
- if ( ! empty( $_POST['WPLANG'] ) && wp_can_install_language_pack() ) { // @todo: Skip if already installed
+ // Handle translation installation.
+ if ( ! empty( $_POST['WPLANG'] ) && current_user_can( 'install_languages' ) && wp_can_install_language_pack() ) {
$language = wp_download_language_pack( $_POST['WPLANG'] );
if ( $language ) {
$_POST['WPLANG'] = $language;
@@ -103,7 +100,7 @@
/**
* Fires after the network options are updated.
*
- * @since MU
+ * @since MU (3.0.0)
*/
do_action( 'update_wpmu_options' );
@@ -114,34 +111,52 @@
include( ABSPATH . 'wp-admin/admin-header.php' );
if ( isset( $_GET['updated'] ) ) {
- ?><div id="message" class="updated notice is-dismissible"><p><?php _e( 'Options saved.' ) ?></p></div><?php
+ ?><div id="message" class="updated notice is-dismissible"><p><?php _e( 'Settings saved.' ) ?></p></div><?php
}
?>
<div class="wrap">
- <h2><?php echo esc_html( $title ); ?></h2>
+ <h1><?php echo esc_html( $title ); ?></h1>
<form method="post" action="settings.php" novalidate="novalidate">
<?php wp_nonce_field( 'siteoptions' ); ?>
- <h3><?php _e( 'Operational Settings' ); ?></h3>
+ <h2><?php _e( 'Operational Settings' ); ?></h2>
<table class="form-table">
<tr>
<th scope="row"><label for="site_name"><?php _e( 'Network Title' ) ?></label></th>
<td>
- <input name="site_name" type="text" id="site_name" class="regular-text" value="<?php echo esc_attr( $current_site->site_name ) ?>" />
+ <input name="site_name" type="text" id="site_name" class="regular-text" value="<?php echo esc_attr( get_network()->site_name ) ?>" />
</td>
</tr>
<tr>
<th scope="row"><label for="admin_email"><?php _e( 'Network Admin Email' ) ?></label></th>
<td>
- <input name="admin_email" type="email" id="admin_email" aria-describedby="admin-email-desc" class="regular-text" value="<?php echo esc_attr( get_site_option( 'admin_email' ) ) ?>" />
+ <input name="new_admin_email" type="email" id="admin_email" aria-describedby="admin-email-desc" class="regular-text" value="<?php echo esc_attr( get_site_option( 'admin_email' ) ) ?>" />
<p class="description" id="admin-email-desc">
- <?php _e( 'This email address will receive notifications. Registration and support emails will also come from this address.' ); ?>
+ <?php _e( 'This address is used for admin purposes. If you change this we will send you an email at your new address to confirm it. <strong>The new address will not become active until confirmed.</strong>' ); ?>
</p>
+ <?php
+ $new_admin_email = get_site_option( 'new_admin_email' );
+ if ( $new_admin_email && $new_admin_email != get_site_option( 'admin_email' ) ) : ?>
+ <div class="updated inline">
+ <p><?php
+ printf(
+ /* translators: %s: new network admin email */
+ __( 'There is a pending change of the network admin email to %s.' ),
+ '<code>' . esc_html( $new_admin_email ) . '</code>'
+ );
+ printf(
+ ' <a href="%1$s">%2$s</a>',
+ esc_url( wp_nonce_url( network_admin_url( 'settings.php?dismiss=new_network_admin_email' ), 'dismiss_new_network_admin_email' ) ),
+ __( 'Cancel' )
+ );
+ ?></p>
+ </div>
+ <?php endif; ?>
</td>
</tr>
</table>
- <h3><?php _e( 'Registration Settings' ); ?></h3>
+ <h2><?php _e( 'Registration Settings' ); ?></h2>
<table class="form-table">
<tr>
<th scope="row"><?php _e( 'Allow new registrations' ) ?></th>
@@ -153,12 +168,18 @@
<td>
<fieldset>
<legend class="screen-reader-text"><?php _e( 'New registrations settings' ) ?></legend>
- <label><input name="registration" type="radio" id="registration1" value="none"<?php checked( $reg, 'none') ?> /> <?php _e( 'Registration is disabled.' ); ?></label><br />
- <label><input name="registration" type="radio" id="registration2" value="user"<?php checked( $reg, 'user') ?> /> <?php _e( 'User accounts may be registered.' ); ?></label><br />
- <label><input name="registration" type="radio" id="registration3" value="blog"<?php checked( $reg, 'blog') ?> /> <?php _e( 'Logged in users may register new sites.' ); ?></label><br />
- <label><input name="registration" type="radio" id="registration4" value="all"<?php checked( $reg, 'all') ?> /> <?php _e( 'Both sites and user accounts can be registered.' ); ?></label>
+ <label><input name="registration" type="radio" id="registration1" value="none"<?php checked( $reg, 'none') ?> /> <?php _e( 'Registration is disabled' ); ?></label><br />
+ <label><input name="registration" type="radio" id="registration2" value="user"<?php checked( $reg, 'user') ?> /> <?php _e( 'User accounts may be registered' ); ?></label><br />
+ <label><input name="registration" type="radio" id="registration3" value="blog"<?php checked( $reg, 'blog') ?> /> <?php _e( 'Logged in users may register new sites' ); ?></label><br />
+ <label><input name="registration" type="radio" id="registration4" value="all"<?php checked( $reg, 'all') ?> /> <?php _e( 'Both sites and user accounts can be registered' ); ?></label>
<?php if ( is_subdomain_install() ) {
- echo '<p class="description">' . __( 'If registration is disabled, please set <code>NOBLOGREDIRECT</code> in <code>wp-config.php</code> to a URL you will redirect visitors to if they visit a non-existent site.' ) . '</p>';
+ echo '<p class="description">';
+ /* translators: 1: NOBLOGREDIRECT 2: wp-config.php */
+ printf( __( 'If registration is disabled, please set %1$s in %2$s to a URL you will redirect visitors to if they visit a non-existent site.' ),
+ '<code>NOBLOGREDIRECT</code>',
+ '<code>wp-config.php</code>'
+ );
+ echo '</p>';
} ?>
</fieldset>
</td>
@@ -171,14 +192,14 @@
update_site_option( 'registrationnotification', 'yes' );
?>
<td>
- <label><input name="registrationnotification" type="checkbox" id="registrationnotification" value="yes"<?php checked( get_site_option( 'registrationnotification' ), 'yes' ) ?> /> <?php _e( 'Send the network admin an email notification every time someone registers a site or user account.' ) ?></label>
+ <label><input name="registrationnotification" type="checkbox" id="registrationnotification" value="yes"<?php checked( get_site_option( 'registrationnotification' ), 'yes' ) ?> /> <?php _e( 'Send the network admin an email notification every time someone registers a site or user account' ) ?></label>
</td>
</tr>
<tr id="addnewusers">
<th scope="row"><?php _e( 'Add New Users' ) ?></th>
<td>
- <label><input name="add_new_users" type="checkbox" id="add_new_users" value="1"<?php checked( get_site_option( 'add_new_users' ) ) ?> /> <?php _e( 'Allow site administrators to add new users to their site via the "Users → Add New" page.' ); ?></label>
+ <label><input name="add_new_users" type="checkbox" id="add_new_users" value="1"<?php checked( get_site_option( 'add_new_users' ) ) ?> /> <?php _e( 'Allow site administrators to add new users to their site via the "Users → Add New" page' ); ?></label>
</td>
</tr>
@@ -217,7 +238,7 @@
</tr>
</table>
- <h3><?php _e('New Site Settings'); ?></h3>
+ <h2><?php _e( 'New Site Settings' ); ?></h2>
<table class="form-table">
<tr>
@@ -273,13 +294,22 @@
<tr>
<th scope="row"><label for="first_comment_author"><?php _e( 'First Comment Author' ) ?></label></th>
<td>
- <input type="text" size="40" name="first_comment_author" id="first_comment_author" aria-describedby="first-comment-author-desc" value="<?php echo get_site_option('first_comment_author') ?>" />
+ <input type="text" size="40" name="first_comment_author" id="first_comment_author" aria-describedby="first-comment-author-desc" value="<?php echo esc_attr( get_site_option('first_comment_author') ); ?>" />
<p class="description" id="first-comment-author-desc">
<?php _e( 'The author of the first comment on a new site.' ) ?>
</p>
</td>
</tr>
<tr>
+ <th scope="row"><label for="first_comment_email"><?php _e( 'First Comment Email' ) ?></label></th>
+ <td>
+ <input type="text" size="40" name="first_comment_email" id="first_comment_email" aria-describedby="first-comment-email-desc" value="<?php echo esc_attr( get_site_option( 'first_comment_email' ) ); ?>" />
+ <p class="description" id="first-comment-email-desc">
+ <?php _e( 'The email address of the first comment author on a new site.' ) ?>
+ </p>
+ </td>
+ </tr>
+ <tr>
<th scope="row"><label for="first_comment_url"><?php _e( 'First Comment URL' ) ?></label></th>
<td>
<input type="text" size="40" name="first_comment_url" id="first_comment_url" aria-describedby="first-comment-url-desc" value="<?php echo esc_attr( get_site_option( 'first_comment_url' ) ) ?>" />
@@ -289,12 +319,12 @@
</td>
</tr>
</table>
- <h3><?php _e( 'Upload Settings' ); ?></h3>
+ <h2><?php _e( 'Upload Settings' ); ?></h2>
<table class="form-table">
<tr>
<th scope="row"><?php _e( 'Site upload space' ) ?></th>
<td>
- <label><input type="checkbox" id="upload_space_check_disabled" name="upload_space_check_disabled" value="0"<?php checked( get_site_option( 'upload_space_check_disabled' ), 0 ) ?>/> <?php printf( __( 'Limit total size of files uploaded to %s MB' ), '</label><label><input name="blog_upload_space" type="number" min="0" style="width: 100px" id="blog_upload_space" aria-describedby="blog-upload-space-desc" value="' . esc_attr( get_site_option('blog_upload_space', 100) ) . '" />' ); ?></label><br />
+ <label><input type="checkbox" id="upload_space_check_disabled" name="upload_space_check_disabled" value="0"<?php checked( (bool) get_site_option( 'upload_space_check_disabled' ), false ) ?>/> <?php printf( __( 'Limit total size of files uploaded to %s MB' ), '</label><label><input name="blog_upload_space" type="number" min="0" style="width: 100px" id="blog_upload_space" aria-describedby="blog-upload-space-desc" value="' . esc_attr( get_site_option('blog_upload_space', 100) ) . '" />' ); ?></label><br />
<p class="screen-reader-text" id="blog-upload-space-desc">
<?php _e( 'Size in megabytes' ) ?>
</p>
@@ -314,7 +344,13 @@
<tr>
<th scope="row"><label for="fileupload_maxk"><?php _e( 'Max upload file size' ) ?></label></th>
<td>
- <?php printf( _x( '%s KB', 'File size in kilobytes' ), '<input name="fileupload_maxk" type="number" min="0" style="width: 100px" id="fileupload_maxk" aria-describedby="fileupload-maxk-desc" value="' . esc_attr( get_site_option( 'fileupload_maxk', 300 ) ) . '" />' ); ?>
+ <?php
+ printf(
+ /* translators: %s: File size in kilobytes */
+ __( '%s KB' ),
+ '<input name="fileupload_maxk" type="number" min="0" style="width: 100px" id="fileupload_maxk" aria-describedby="fileupload-maxk-desc" value="' . esc_attr( get_site_option( 'fileupload_maxk', 300 ) ) . '" />'
+ );
+ ?>
<p class="screen-reader-text" id="fileupload-maxk-desc">
<?php _e( 'Size in kilobytes' ) ?>
</p>
@@ -327,7 +363,7 @@
$translations = wp_get_available_translations();
if ( ! empty( $languages ) || ! empty( $translations ) ) {
?>
- <h3><?php _e( 'Language Settings' ); ?></h3>
+ <h2><?php _e( 'Language Settings' ); ?></h2>
<table class="form-table">
<tr>
<th><label for="WPLANG"><?php _e( 'Default Language' ); ?></label></th>
@@ -338,14 +374,16 @@
$lang = '';
}
- wp_dropdown_languages( array(
- 'name' => 'WPLANG',
- 'id' => 'WPLANG',
- 'selected' => $lang,
- 'languages' => $languages,
- 'translations' => $translations,
- 'show_available_translations' => wp_can_install_language_pack(),
- ) );
+ wp_dropdown_languages(
+ array(
+ 'name' => 'WPLANG',
+ 'id' => 'WPLANG',
+ 'selected' => $lang,
+ 'languages' => $languages,
+ 'translations' => $translations,
+ 'show_available_translations' => current_user_can( 'install_languages' ) && wp_can_install_language_pack(),
+ )
+ );
?>
</td>
</tr>
@@ -354,7 +392,7 @@
}
?>
- <h3><?php _e( 'Menu Settings' ); ?></h3>
+ <h2><?php _e( 'Menu Settings' ); ?></h2>
<table id="menu" class="form-table">
<tr>
<th scope="row"><?php _e( 'Enable administration menus' ); ?></th>
@@ -362,7 +400,7 @@
<?php
$menu_perms = get_site_option( 'menu_items' );
/**
- * Filter available network-wide administration menu options.
+ * Filters available network-wide administration menu options.
*
* Options returned to this filter are output as individual checkboxes that, when selected,
* enable site administrator access to the specified administration menu in certain contexts.
@@ -372,7 +410,7 @@
* default option, 'plugins' is enabled, site administrators are granted access to the Plugins
* screen in their individual sites' dashboards.
*
- * @since MU
+ * @since MU (3.0.0)
*
* @param array $admin_menus The menu items available.
*/
@@ -395,7 +433,7 @@
/**
* Fires at the end of the Network Settings form, before the submit button.
*
- * @since MU
+ * @since MU (3.0.0)
*/
do_action( 'wpmu_options' ); ?>
<?php submit_button(); ?>