first commit
This commit is contained in:
16
wp-admin/network/about.php
Normal file
16
wp-admin/network/about.php
Normal file
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
/**
|
||||
* Network About administration panel.
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Multisite
|
||||
* @since 3.4.0
|
||||
*/
|
||||
|
||||
/** Load WordPress Administration Bootstrap */
|
||||
require_once( './admin.php' );
|
||||
|
||||
if ( ! is_multisite() )
|
||||
wp_die( __( 'Multisite support is not enabled.' ) );
|
||||
|
||||
require( '../about.php' );
|
24
wp-admin/network/admin.php
Normal file
24
wp-admin/network/admin.php
Normal file
@ -0,0 +1,24 @@
|
||||
<?php
|
||||
/**
|
||||
* WordPress Network Administration Bootstrap
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Multisite
|
||||
* @since 3.1.0
|
||||
*/
|
||||
|
||||
define( 'WP_NETWORK_ADMIN', true );
|
||||
|
||||
/** Load WordPress Administration Bootstrap */
|
||||
require_once( dirname( dirname( __FILE__ ) ) . '/admin.php' );
|
||||
|
||||
if ( ! is_multisite() )
|
||||
wp_die( __( 'Multisite support is not enabled.' ) );
|
||||
|
||||
$redirect_network_admin_request = ( ( $current_blog->domain != $current_site->domain ) || ( $current_blog->path != $current_site->path ) );
|
||||
$redirect_network_admin_request = apply_filters( 'redirect_network_admin_request', $redirect_network_admin_request );
|
||||
if ( $redirect_network_admin_request ) {
|
||||
wp_redirect( network_admin_url() );
|
||||
exit;
|
||||
}
|
||||
unset( $redirect_network_admin_request );
|
16
wp-admin/network/credits.php
Normal file
16
wp-admin/network/credits.php
Normal file
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
/**
|
||||
* Network Credits administration panel.
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Multisite
|
||||
* @since 3.4.0
|
||||
*/
|
||||
|
||||
/** Load WordPress Administration Bootstrap */
|
||||
require_once( './admin.php' );
|
||||
|
||||
if ( ! is_multisite() )
|
||||
wp_die( __( 'Multisite support is not enabled.' ) );
|
||||
|
||||
require( '../credits.php' );
|
27
wp-admin/network/edit.php
Normal file
27
wp-admin/network/edit.php
Normal file
@ -0,0 +1,27 @@
|
||||
<?php
|
||||
/**
|
||||
* Action handler for Multisite administration panels.
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Multisite
|
||||
* @since 3.0.0
|
||||
*/
|
||||
|
||||
/** Load WordPress Administration Bootstrap */
|
||||
require_once( './admin.php' );
|
||||
|
||||
if ( ! is_multisite() )
|
||||
wp_die( __( 'Multisite support is not enabled.' ) );
|
||||
|
||||
if ( empty( $_GET['action'] ) ) {
|
||||
wp_redirect( network_admin_url() );
|
||||
exit;
|
||||
}
|
||||
|
||||
do_action( 'wpmuadminedit' , '' );
|
||||
|
||||
// Let plugins use us as a post handler easily
|
||||
do_action( 'network_admin_edit_' . $_GET['action'] );
|
||||
|
||||
wp_redirect( network_admin_url() );
|
||||
exit();
|
16
wp-admin/network/freedoms.php
Normal file
16
wp-admin/network/freedoms.php
Normal file
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
/**
|
||||
* Network Freedoms administration panel.
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Multisite
|
||||
* @since 3.4.0
|
||||
*/
|
||||
|
||||
/** Load WordPress Administration Bootstrap */
|
||||
require_once( './admin.php' );
|
||||
|
||||
if ( ! is_multisite() )
|
||||
wp_die( __( 'Multisite support is not enabled.' ) );
|
||||
|
||||
require( '../freedoms.php' );
|
66
wp-admin/network/index.php
Normal file
66
wp-admin/network/index.php
Normal file
@ -0,0 +1,66 @@
|
||||
<?php
|
||||
/**
|
||||
* Multisite administration panel.
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Multisite
|
||||
* @since 3.0.0
|
||||
*/
|
||||
|
||||
/** Load WordPress Administration Bootstrap */
|
||||
require_once( './admin.php' );
|
||||
|
||||
/** Load WordPress dashboard API */
|
||||
require_once( ABSPATH . 'wp-admin/includes/dashboard.php' );
|
||||
|
||||
if ( !is_multisite() )
|
||||
wp_die( __( 'Multisite support is not enabled.' ) );
|
||||
|
||||
if ( ! current_user_can( 'manage_network' ) )
|
||||
wp_die( __( 'You do not have permission to access this page.' ) );
|
||||
|
||||
$title = __( 'Dashboard' );
|
||||
$parent_file = 'index.php';
|
||||
|
||||
get_current_screen()->add_help_tab( array(
|
||||
'id' => 'overview',
|
||||
'title' => __('Overview'),
|
||||
'content' =>
|
||||
'<p>' . __('Until WordPress 3.0, running multiple sites required using WordPress MU instead of regular WordPress. In version 3.0, these applications have merged. If you are a former MU user, you should be aware of the following changes:') . '</p>' .
|
||||
'<ul><li>' . __('Site Admin is now Super Admin (we highly encourage you to get yourself a cape!).') . '</li>' .
|
||||
'<li>' . __('Blogs are now called Sites; Site is now called Network.') . '</li></ul>' .
|
||||
'<p>' . __('The Right Now box provides the network administrator with links to the screens to either create a new site or user, or to search existing users and sites. Screens for Sites and Users are also accessible through the left-hand navigation in the Network Admin section.') . '</p>'
|
||||
) );
|
||||
|
||||
get_current_screen()->set_help_sidebar(
|
||||
'<p><strong>' . __('For more information:') . '</strong></p>' .
|
||||
'<p>' . __('<a href="http://codex.wordpress.org/Network_Admin" target="_blank">Documentation on the Network Admin</a>') . '</p>' .
|
||||
'<p>' . __('<a href="http://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
|
||||
);
|
||||
|
||||
wp_dashboard_setup();
|
||||
|
||||
wp_enqueue_script( 'dashboard' );
|
||||
wp_enqueue_script( 'plugin-install' );
|
||||
add_thickbox();
|
||||
|
||||
add_screen_option('layout_columns', array('max' => 4, 'default' => 2) );
|
||||
|
||||
require_once( '../admin-header.php' );
|
||||
|
||||
?>
|
||||
|
||||
<div class="wrap">
|
||||
<?php screen_icon(); ?>
|
||||
<h2><?php echo esc_html( $title ); ?></h2>
|
||||
|
||||
<div id="dashboard-widgets-wrap">
|
||||
|
||||
<?php wp_dashboard(); ?>
|
||||
|
||||
<div class="clear"></div>
|
||||
</div><!-- dashboard-widgets-wrap -->
|
||||
|
||||
</div><!-- wrap -->
|
||||
|
||||
<?php include( '../admin-footer.php' ); ?>
|
63
wp-admin/network/menu.php
Normal file
63
wp-admin/network/menu.php
Normal file
@ -0,0 +1,63 @@
|
||||
<?php
|
||||
/**
|
||||
* Build Network Administration Menu.
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Multisite
|
||||
* @since 3.1.0
|
||||
*/
|
||||
|
||||
/* translators: Network menu item */
|
||||
$menu[2] = array(__('Dashboard'), 'manage_network', 'index.php', '', 'menu-top menu-top-first menu-icon-dashboard', 'menu-dashboard', 'div');
|
||||
|
||||
$menu[4] = array( '', 'read', 'separator1', '', 'wp-menu-separator' );
|
||||
|
||||
/* translators: Sites menu item */
|
||||
$menu[5] = array(__('Sites'), 'manage_sites', 'sites.php', '', 'menu-top menu-icon-site', 'menu-site', 'div');
|
||||
$submenu['sites.php'][5] = array( __('All Sites'), 'manage_sites', 'sites.php' );
|
||||
$submenu['sites.php'][10] = array( _x('Add New', 'site'), 'create_sites', 'site-new.php' );
|
||||
|
||||
$menu[10] = array(__('Users'), 'manage_network_users', 'users.php', '', 'menu-top menu-icon-users', 'menu-users', 'div');
|
||||
$submenu['users.php'][5] = array( __('All Users'), 'manage_network_users', 'users.php' );
|
||||
$submenu['users.php'][10] = array( _x('Add New', 'user'), 'create_users', 'user-new.php' );
|
||||
|
||||
$update_data = wp_get_update_data();
|
||||
|
||||
if ( $update_data['counts']['themes'] ) {
|
||||
$menu[15] = array(sprintf( __( 'Themes %s' ), "<span class='update-plugins count-{$update_data['counts']['themes']}'><span class='theme-count'>" . number_format_i18n( $update_data['counts']['themes'] ) . "</span></span>" ), 'manage_network_themes', 'themes.php', '', 'menu-top menu-icon-appearance', 'menu-appearance', 'div' );
|
||||
} else {
|
||||
$menu[15] = array( __( 'Themes' ), 'manage_network_themes', 'themes.php', '', 'menu-top menu-icon-appearance', 'menu-appearance', 'div' );
|
||||
}
|
||||
$submenu['themes.php'][5] = array( __('Installed Themes'), 'manage_network_themes', 'themes.php' );
|
||||
$submenu['themes.php'][10] = array( _x('Add New', 'theme'), 'install_themes', 'theme-install.php' );
|
||||
$submenu['themes.php'][15] = array( _x('Editor', 'theme editor'), 'edit_themes', 'theme-editor.php' );
|
||||
|
||||
if ( current_user_can( 'update_plugins' ) ) {
|
||||
$menu[20] = array( sprintf( __( 'Plugins %s' ), "<span class='update-plugins count-{$update_data['counts']['plugins']}'><span class='plugin-count'>" . number_format_i18n( $update_data['counts']['plugins'] ) . "</span></span>" ), 'manage_network_plugins', 'plugins.php', '', 'menu-top menu-icon-plugins', 'menu-plugins', 'div');
|
||||
} else {
|
||||
$menu[20] = array( __('Plugins'), 'manage_network_plugins', 'plugins.php', '', 'menu-top menu-icon-plugins', 'menu-plugins', 'div' );
|
||||
}
|
||||
$submenu['plugins.php'][5] = array( __('Installed Plugins'), 'manage_network_plugins', 'plugins.php' );
|
||||
$submenu['plugins.php'][10] = array( _x('Add New', 'plugin'), 'install_plugins', 'plugin-install.php' );
|
||||
$submenu['plugins.php'][15] = array( _x('Editor', 'plugin editor'), 'edit_plugins', 'plugin-editor.php' );
|
||||
|
||||
$menu[25] = array(__('Settings'), 'manage_network_options', 'settings.php', '', 'menu-top menu-icon-settings', 'menu-settings', 'div');
|
||||
if ( defined( 'MULTISITE' ) && defined( 'WP_ALLOW_MULTISITE' ) && WP_ALLOW_MULTISITE ) {
|
||||
$submenu['settings.php'][5] = array( __('Network Settings'), 'manage_network_options', 'settings.php' );
|
||||
$submenu['settings.php'][10] = array( __('Network Setup'), 'manage_network_options', 'setup.php' );
|
||||
}
|
||||
|
||||
if ( $update_data['counts']['total'] ) {
|
||||
$menu[30] = array( sprintf( __( 'Updates %s' ), "<span class='update-plugins count-{$update_data['counts']['total']}' title='{$update_data['title']}'><span class='update-count'>" . number_format_i18n($update_data['counts']['total']) . "</span></span>" ), 'manage_network', 'upgrade.php', '', 'menu-top menu-icon-tools', 'menu-update', 'div' );
|
||||
} else {
|
||||
$menu[30] = array( __( 'Updates' ), 'manage_network', 'upgrade.php', '', 'menu-top menu-icon-tools', 'menu-update', 'div' );
|
||||
}
|
||||
|
||||
unset($update_data);
|
||||
|
||||
$submenu[ 'upgrade.php' ][10] = array( __( 'Available Updates' ), 'update_core', 'update-core.php' );
|
||||
$submenu[ 'upgrade.php' ][15] = array( __( 'Update Network' ), 'manage_network', 'upgrade.php' );
|
||||
|
||||
$menu[99] = array( '', 'read', 'separator-last', '', 'wp-menu-separator-last' );
|
||||
|
||||
require_once(ABSPATH . 'wp-admin/includes/menu.php');
|
16
wp-admin/network/plugin-editor.php
Normal file
16
wp-admin/network/plugin-editor.php
Normal file
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
/**
|
||||
* Plugin editor network administration panel.
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Multisite
|
||||
* @since 3.1.0
|
||||
*/
|
||||
|
||||
/** Load WordPress Administration Bootstrap */
|
||||
require_once( './admin.php' );
|
||||
|
||||
if ( ! is_multisite() )
|
||||
wp_die( __( 'Multisite support is not enabled.' ) );
|
||||
|
||||
require( '../plugin-editor.php' );
|
19
wp-admin/network/plugin-install.php
Normal file
19
wp-admin/network/plugin-install.php
Normal file
@ -0,0 +1,19 @@
|
||||
<?php
|
||||
/**
|
||||
* Install plugin network administration panel.
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Multisite
|
||||
* @since 3.1.0
|
||||
*/
|
||||
|
||||
if ( isset( $_GET['tab'] ) && ( 'plugin-information' == $_GET['tab'] ) )
|
||||
define( 'IFRAME_REQUEST', true );
|
||||
|
||||
/** Load WordPress Administration Bootstrap */
|
||||
require_once( './admin.php' );
|
||||
|
||||
if ( ! is_multisite() )
|
||||
wp_die( __( 'Multisite support is not enabled.' ) );
|
||||
|
||||
require( '../plugin-install.php' );
|
16
wp-admin/network/plugins.php
Normal file
16
wp-admin/network/plugins.php
Normal file
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
/**
|
||||
* Network Plugins administration panel.
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Multisite
|
||||
* @since 3.1.0
|
||||
*/
|
||||
|
||||
/** Load WordPress Administration Bootstrap */
|
||||
require_once( './admin.php' );
|
||||
|
||||
if ( ! is_multisite() )
|
||||
wp_die( __( 'Multisite support is not enabled.' ) );
|
||||
|
||||
require( '../plugins.php' );
|
16
wp-admin/network/profile.php
Normal file
16
wp-admin/network/profile.php
Normal file
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
/**
|
||||
* User profile network administration panel.
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Multisite
|
||||
* @since 3.1.0
|
||||
*/
|
||||
|
||||
/** Load WordPress Administration Bootstrap */
|
||||
require_once( './admin.php' );
|
||||
|
||||
if ( ! is_multisite() )
|
||||
wp_die( __( 'Multisite support is not enabled.' ) );
|
||||
|
||||
require( '../profile.php' );
|
304
wp-admin/network/settings.php
Normal file
304
wp-admin/network/settings.php
Normal file
@ -0,0 +1,304 @@
|
||||
<?php
|
||||
/**
|
||||
* Multisite network settings administration panel.
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Multisite
|
||||
* @since 3.0.0
|
||||
*/
|
||||
|
||||
/** Load WordPress Administration Bootstrap */
|
||||
require_once( './admin.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.' ) );
|
||||
|
||||
$title = __( 'Network Settings' );
|
||||
$parent_file = 'settings.php';
|
||||
|
||||
get_current_screen()->add_help_tab( array(
|
||||
'id' => 'overview',
|
||||
'title' => __('Overview'),
|
||||
'content' =>
|
||||
'<p>' . __('This screen sets and changes options for the network as a whole. The first site is the main site in the network and network options are pulled from that original site’s options.') . '</p>' .
|
||||
'<p>' . __('Operational settings has fields for the network’s name and admin email.') . '</p>' .
|
||||
'<p>' . __('Dashboard Site is an option to give a site to users who do not have a site on the system. Their default role is Subscriber, but that default can be changed. The Admin Notice Feed can provide a notice on all dashboards of the latest post via RSS or Atom, or provide no such notice if left blank.') . '</p>' .
|
||||
'<p>' . __('Registration settings can disable/enable public signups. If you let others sign up for a site, install spam plugins. Spaces, not commas, should separate names banned as sites for this network.') . '</p>' .
|
||||
'<p>' . __('New site settings are defaults applied when a new site is created in the network. These include welcome email for when a new site or user account is registered, and what᾿s put in the first post, page, comment, comment author, and comment URL.') . '</p>' .
|
||||
'<p>' . __('Upload settings control the size of the uploaded files and the amount of available upload space for each site. You can change the default value for specific sites when you edit a particular site. Allowed file types are also listed (space separated only).') . '</p>' .
|
||||
'<p>' . __('Menu setting enables/disables the plugin menus from appearing for non super admins, so that only super admins, not site admins, have access to activate plugins.') . '</p>' .
|
||||
'<p>' . __('Super admins can no longer be added on the Options screen. You must now go to the list of existing users on Network Admin > Users and click on Username or the Edit action link below that name. This goes to an Edit User page where you can check a box to grant super admin privileges.') . '</p>'
|
||||
) );
|
||||
|
||||
get_current_screen()->set_help_sidebar(
|
||||
'<p><strong>' . __('For more information:') . '</strong></p>' .
|
||||
'<p>' . __('<a href="http://codex.wordpress.org/Network_Admin_Settings_Screen" target="_blank">Documentation on Network Settings</a>') . '</p>' .
|
||||
'<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
|
||||
);
|
||||
|
||||
if ( $_POST ) {
|
||||
do_action( 'wpmuadminedit' , '' );
|
||||
|
||||
check_admin_referer( 'siteoptions' );
|
||||
|
||||
$checked_options = array( 'menu_items' => array(), 'registrationnotification' => 'no', 'upload_space_check_disabled' => 1, 'add_new_users' => 0 );
|
||||
foreach ( $checked_options as $option_name => $option_unchecked_value ) {
|
||||
if ( ! isset( $_POST[$option_name] ) )
|
||||
$_POST[$option_name] = $option_unchecked_value;
|
||||
}
|
||||
|
||||
$options = array(
|
||||
'registrationnotification', 'registration', 'add_new_users', 'menu_items',
|
||||
'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',
|
||||
);
|
||||
|
||||
foreach ( $options as $option_name ) {
|
||||
if ( ! isset($_POST[$option_name]) )
|
||||
continue;
|
||||
$value = stripslashes_deep( $_POST[$option_name] );
|
||||
update_site_option( $option_name, $value );
|
||||
}
|
||||
|
||||
// Update more options here
|
||||
do_action( 'update_wpmu_options' );
|
||||
|
||||
wp_redirect( add_query_arg( 'updated', 'true', network_admin_url( 'settings.php' ) ) );
|
||||
exit();
|
||||
}
|
||||
|
||||
include( '../admin-header.php' );
|
||||
|
||||
if ( isset( $_GET['updated'] ) ) {
|
||||
?><div id="message" class="updated"><p><?php _e( 'Options saved.' ) ?></p></div><?php
|
||||
}
|
||||
?>
|
||||
|
||||
<div class="wrap">
|
||||
<?php screen_icon('options-general'); ?>
|
||||
<h2><?php echo esc_html( $title ); ?></h2>
|
||||
<form method="post" action="settings.php">
|
||||
<?php wp_nonce_field( 'siteoptions' ); ?>
|
||||
<h3><?php _e( 'Operational Settings' ); ?></h3>
|
||||
<table class="form-table">
|
||||
<tr valign="top">
|
||||
<th scope="row"><label for="site_name"><?php _e( 'Network Name' ) ?></label></th>
|
||||
<td>
|
||||
<input name="site_name" type="text" id="site_name" class="regular-text" value="<?php echo esc_attr( $current_site->site_name ) ?>" />
|
||||
<br />
|
||||
<?php _e( 'What you would like to call this network.' ) ?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr valign="top">
|
||||
<th scope="row"><label for="admin_email"><?php _e( 'Network Admin Email' ) ?></label></th>
|
||||
<td>
|
||||
<input name="admin_email" type="text" id="admin_email" class="regular-text" value="<?php echo esc_attr( get_site_option('admin_email') ) ?>" />
|
||||
<br />
|
||||
<?php printf( __( 'Registration and support emails will come from this address. An address such as <code>support@%s</code> is recommended.' ), $current_site->domain ); ?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><?php _e( 'Registration Settings' ); ?></h3>
|
||||
<table class="form-table">
|
||||
<tr valign="top">
|
||||
<th scope="row"><?php _e( 'Allow new registrations' ) ?></th>
|
||||
<?php
|
||||
if ( !get_site_option( 'registration' ) )
|
||||
update_site_option( 'registration', 'none' );
|
||||
$reg = get_site_option( 'registration' );
|
||||
?>
|
||||
<td>
|
||||
<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><br />
|
||||
<?php if ( is_subdomain_install() )
|
||||
_e( '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.' );
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr valign="top">
|
||||
<th scope="row"><?php _e( 'Registration notification' ) ?></th>
|
||||
<?php
|
||||
if ( !get_site_option( 'registrationnotification' ) )
|
||||
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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr valign="top" 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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr valign="top">
|
||||
<th scope="row"><label for="illegal_names"><?php _e( 'Banned Names' ) ?></label></th>
|
||||
<td>
|
||||
<input name="illegal_names" type="text" id="illegal_names" class="large-text" value="<?php echo esc_attr( implode( " ", (array) get_site_option( 'illegal_names' ) ) ); ?>" size="45" />
|
||||
<br />
|
||||
<?php _e( 'Users are not allowed to register these sites. Separate names by spaces.' ) ?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr valign="top">
|
||||
<th scope="row"><label for="limited_email_domains"><?php _e( 'Limited Email Registrations' ) ?></label></th>
|
||||
<td>
|
||||
<?php $limited_email_domains = get_site_option( 'limited_email_domains' );
|
||||
$limited_email_domains = str_replace( ' ', "\n", $limited_email_domains ); ?>
|
||||
<textarea name="limited_email_domains" id="limited_email_domains" cols="45" rows="5">
|
||||
<?php echo esc_textarea( $limited_email_domains == '' ? '' : implode( "\n", (array) $limited_email_domains ) ); ?></textarea>
|
||||
<br />
|
||||
<?php _e( 'If you want to limit site registrations to certain domains. One domain per line.' ) ?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr valign="top">
|
||||
<th scope="row"><label for="banned_email_domains"><?php _e('Banned Email Domains') ?></label></th>
|
||||
<td>
|
||||
<textarea name="banned_email_domains" id="banned_email_domains" cols="45" rows="5">
|
||||
<?php echo esc_textarea( get_site_option( 'banned_email_domains' ) == '' ? '' : implode( "\n", (array) get_site_option( 'banned_email_domains' ) ) ); ?></textarea>
|
||||
<br />
|
||||
<?php _e( 'If you want to ban domains from site registrations. One domain per line.' ) ?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
<h3><?php _e('New Site Settings'); ?></h3>
|
||||
<table class="form-table">
|
||||
|
||||
<tr valign="top">
|
||||
<th scope="row"><label for="welcome_email"><?php _e( 'Welcome Email' ) ?></label></th>
|
||||
<td>
|
||||
<textarea name="welcome_email" id="welcome_email" rows="5" cols="45" class="large-text">
|
||||
<?php echo esc_textarea( stripslashes( get_site_option( 'welcome_email' ) ) ) ?></textarea>
|
||||
<br />
|
||||
<?php _e( 'The welcome email sent to new site owners.' ) ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<th scope="row"><label for="welcome_user_email"><?php _e( 'Welcome User Email' ) ?></label></th>
|
||||
<td>
|
||||
<textarea name="welcome_user_email" id="welcome_user_email" rows="5" cols="45" class="large-text">
|
||||
<?php echo esc_textarea( stripslashes( get_site_option( 'welcome_user_email' ) ) ) ?></textarea>
|
||||
<br />
|
||||
<?php _e( 'The welcome email sent to new users.' ) ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<th scope="row"><label for="first_post"><?php _e( 'First Post' ) ?></label></th>
|
||||
<td>
|
||||
<textarea name="first_post" id="first_post" rows="5" cols="45" class="large-text">
|
||||
<?php echo esc_textarea( stripslashes( get_site_option( 'first_post' ) ) ) ?></textarea>
|
||||
<br />
|
||||
<?php _e( 'The first post on a new site.' ) ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<th scope="row"><label for="first_page"><?php _e( 'First Page' ) ?></label></th>
|
||||
<td>
|
||||
<textarea name="first_page" id="first_page" rows="5" cols="45" class="large-text">
|
||||
<?php echo esc_textarea( stripslashes( get_site_option('first_page') ) ) ?></textarea>
|
||||
<br />
|
||||
<?php _e( 'The first page on a new site.' ) ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<th scope="row"><label for="first_comment"><?php _e( 'First Comment' ) ?></label></th>
|
||||
<td>
|
||||
<textarea name="first_comment" id="first_comment" rows="5" cols="45" class="large-text">
|
||||
<?php echo esc_textarea( stripslashes( get_site_option('first_comment') ) ) ?></textarea>
|
||||
<br />
|
||||
<?php _e( 'The first comment on a new site.' ) ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<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" value="<?php echo get_site_option('first_comment_author') ?>" />
|
||||
<br />
|
||||
<?php _e( 'The author of the first comment on a new site.' ) ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<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" value="<?php echo esc_attr( get_site_option( 'first_comment_url' ) ) ?>" />
|
||||
<br />
|
||||
<?php _e( 'The URL for the first comment on a new site.' ) ?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><?php _e( 'Upload Settings' ); ?></h3>
|
||||
<table class="form-table">
|
||||
<tr valign="top">
|
||||
<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" value="' . esc_attr( get_site_option('blog_upload_space', 100) ) . '" />' ); ?></label><br />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr valign="top">
|
||||
<th scope="row"><label for="upload_filetypes"><?php _e( 'Upload file types' ) ?></label></th>
|
||||
<td><input name="upload_filetypes" type="text" id="upload_filetypes" class="large-text" value="<?php echo esc_attr( get_site_option('upload_filetypes', 'jpg jpeg png gif') ) ?>" size="45" /></td>
|
||||
</tr>
|
||||
|
||||
<tr valign="top">
|
||||
<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" value="' . esc_attr( get_site_option( 'fileupload_maxk', 300 ) ) . '" />' ); ?></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<?php
|
||||
$languages = get_available_languages();
|
||||
if ( ! empty( $languages ) ) {
|
||||
$lang = get_site_option( 'WPLANG' );
|
||||
?>
|
||||
<h3><?php _e( 'Language Settings' ); ?></h3>
|
||||
<table class="form-table">
|
||||
<tr valign="top">
|
||||
<th><label for="WPLANG"><?php _e( 'Default Language' ); ?></label></th>
|
||||
<td>
|
||||
<select name="WPLANG" id="WPLANG">
|
||||
<?php mu_dropdown_languages( $languages, get_site_option( 'WPLANG' ) ); ?>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php
|
||||
} // languages
|
||||
?>
|
||||
|
||||
<h3><?php _e( 'Menu Settings' ); ?></h3>
|
||||
<table id="menu" class="form-table">
|
||||
<tr valign="top">
|
||||
<th scope="row"><?php _e( 'Enable administration menus' ); ?></th>
|
||||
<td>
|
||||
<?php
|
||||
$menu_perms = get_site_option( 'menu_items' );
|
||||
$menu_items = apply_filters( 'mu_menu_items', array( 'plugins' => __( 'Plugins' ) ) );
|
||||
foreach ( (array) $menu_items as $key => $val ) {
|
||||
echo "<label><input type='checkbox' name='menu_items[" . $key . "]' value='1'" . ( isset( $menu_perms[$key] ) ? checked( $menu_perms[$key], '1', false ) : '' ) . " /> " . esc_html( $val ) . "</label><br/>";
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<?php do_action( 'wpmu_options' ); // Add more options here ?>
|
||||
|
||||
<?php submit_button(); ?>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<?php include( '../admin-footer.php' ); ?>
|
16
wp-admin/network/setup.php
Normal file
16
wp-admin/network/setup.php
Normal file
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
/**
|
||||
* Network Setup administration panel.
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Multisite
|
||||
* @since 3.1.0
|
||||
*/
|
||||
|
||||
/** Load WordPress Administration Bootstrap */
|
||||
require_once( './admin.php' );
|
||||
|
||||
if ( ! is_multisite() )
|
||||
wp_die( __( 'Multisite support is not enabled.' ) );
|
||||
|
||||
require( '../network.php' );
|
180
wp-admin/network/site-info.php
Normal file
180
wp-admin/network/site-info.php
Normal file
@ -0,0 +1,180 @@
|
||||
<?php
|
||||
/**
|
||||
* Edit Site Info Administration Screen
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Multisite
|
||||
* @since 3.1.0
|
||||
*/
|
||||
|
||||
/** Load WordPress Administration Bootstrap */
|
||||
require_once( './admin.php' );
|
||||
|
||||
if ( ! is_multisite() )
|
||||
wp_die( __( 'Multisite support is not enabled.' ) );
|
||||
|
||||
if ( ! current_user_can( 'manage_sites' ) )
|
||||
wp_die( __( 'You do not have sufficient permissions to edit this site.' ) );
|
||||
|
||||
get_current_screen()->add_help_tab( array(
|
||||
'id' => 'overview',
|
||||
'title' => __('Overview'),
|
||||
'content' =>
|
||||
'<p>' . __('The menu is for editing information specific to individual sites, particularly if the admin area of a site is unavailable.') . '</p>' .
|
||||
'<p>' . __('<strong>Info</strong> - The domain and path are rarely edited as this can cause the site to not work properly. The Registered date and Last Updated date are displayed. Network admins can mark a site as archived, spam, deleted and mature, to remove from public listings or disable.') . '</p>' .
|
||||
'<p>' . __('<strong>Users</strong> - This displays the users associated with this site. You can also change their role, reset their password, or remove them from the site. Removing the user from the site does not remove the user from the network.') . '</p>' .
|
||||
'<p>' . sprintf( __('<strong>Themes</strong> - This area shows themes that are not already enabled across the network. Enabling a theme in this menu makes it accessible to this site. It does not activate the theme, but allows it to show in the site’s Appearance menu. To enable a theme for the entire network, see the <a href="%s">Network Themes</a> screen.' ), network_admin_url( 'themes.php' ) ) . '</p>' .
|
||||
'<p>' . __('<strong>Settings</strong> - This page shows a list of all settings associated with this site. Some are created by WordPress and others are created by plugins you activate. Note that some fields are grayed out and say Serialized Data. You cannot modify these values due to the way the setting is stored in the database.') . '</p>'
|
||||
) );
|
||||
|
||||
get_current_screen()->set_help_sidebar(
|
||||
'<p><strong>' . __('For more information:') . '</strong></p>' .
|
||||
'<p>' . __('<a href="http://codex.wordpress.org/Network_Admin_Sites_Screen" target="_blank">Documentation on Site Management</a>') . '</p>' .
|
||||
'<p>' . __('<a href="http://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
|
||||
);
|
||||
|
||||
$id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0;
|
||||
|
||||
if ( ! $id )
|
||||
wp_die( __('Invalid site ID.') );
|
||||
|
||||
$details = get_blog_details( $id );
|
||||
if ( !can_edit_network( $details->site_id ) )
|
||||
wp_die( __( 'You do not have permission to access this page.' ) );
|
||||
|
||||
$is_main_site = is_main_site( $id );
|
||||
|
||||
if ( isset($_REQUEST['action']) && 'update-site' == $_REQUEST['action'] ) {
|
||||
check_admin_referer( 'edit-site' );
|
||||
|
||||
switch_to_blog( $id );
|
||||
|
||||
if ( isset( $_POST['update_home_url'] ) && $_POST['update_home_url'] == 'update' ) {
|
||||
$blog_address = get_blogaddress_by_domain( $_POST['blog']['domain'], $_POST['blog']['path'] );
|
||||
if ( get_option( 'siteurl' ) != $blog_address )
|
||||
update_option( 'siteurl', $blog_address );
|
||||
|
||||
if ( get_option( 'home' ) != $blog_address )
|
||||
update_option( 'home', $blog_address );
|
||||
}
|
||||
|
||||
// rewrite rules can't be flushed during switch to blog
|
||||
delete_option( 'rewrite_rules' );
|
||||
|
||||
// update blogs table
|
||||
$blog_data = stripslashes_deep( $_POST['blog'] );
|
||||
$existing_details = get_blog_details( $id, false );
|
||||
$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 );
|
||||
|
||||
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.');
|
||||
}
|
||||
|
||||
$site_url_no_http = preg_replace( '#^http(s)?://#', '', get_blogaddress_by_id( $id ) );
|
||||
$title_site_url_linked = sprintf( __('Edit Site: <a href="%1$s">%2$s</a>'), get_blogaddress_by_id( $id ), $site_url_no_http );
|
||||
$title = sprintf( __('Edit Site: %s'), $site_url_no_http );
|
||||
|
||||
$parent_file = 'sites.php';
|
||||
$submenu_file = 'sites.php';
|
||||
|
||||
require('../admin-header.php');
|
||||
|
||||
?>
|
||||
|
||||
<div class="wrap">
|
||||
<?php screen_icon('ms-admin'); ?>
|
||||
<h2 id="edit-site"><?php echo $title_site_url_linked ?></h2>
|
||||
<h3 class="nav-tab-wrapper">
|
||||
<?php
|
||||
$tabs = array(
|
||||
'site-info' => array( 'label' => __( 'Info' ), 'url' => 'site-info.php' ),
|
||||
'site-users' => array( 'label' => __( 'Users' ), 'url' => 'site-users.php' ),
|
||||
'site-themes' => array( 'label' => __( 'Themes' ), 'url' => 'site-themes.php' ),
|
||||
'site-settings' => array( 'label' => __( 'Settings' ), 'url' => 'site-settings.php' ),
|
||||
);
|
||||
foreach ( $tabs as $tab_id => $tab ) {
|
||||
$class = ( $tab['url'] == $pagenow ) ? ' nav-tab-active' : '';
|
||||
echo '<a href="' . $tab['url'] . '?id=' . $id .'" class="nav-tab' . $class . '">' . esc_html( $tab['label'] ) . '</a>';
|
||||
}
|
||||
?>
|
||||
</h3>
|
||||
<?php
|
||||
if ( ! empty( $messages ) ) {
|
||||
foreach ( $messages as $msg )
|
||||
echo '<div id="message" class="updated"><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">
|
||||
<tr class="form-field form-required">
|
||||
<th scope="row"><?php _e( 'Domain' ) ?></th>
|
||||
<?php
|
||||
$protocol = is_ssl() ? 'https://' : 'http://';
|
||||
if ( $is_main_site ) { ?>
|
||||
<td><code><?php echo $protocol; echo esc_attr( $details->domain ) ?></code></td>
|
||||
<?php } else { ?>
|
||||
<td><?php echo $protocol; ?><input name="blog[domain]" type="text" id="domain" value="<?php echo esc_attr( $details->domain ) ?>" size="33" /></td>
|
||||
<?php } ?>
|
||||
</tr>
|
||||
<tr class="form-field form-required">
|
||||
<th scope="row"><?php _e( 'Path' ) ?></th>
|
||||
<?php if ( $is_main_site ) { ?>
|
||||
<td><code><?php echo esc_attr( $details->path ) ?></code></td>
|
||||
<?php
|
||||
} else {
|
||||
switch_to_blog( $id );
|
||||
?>
|
||||
<td><input name="blog[path]" type="text" id="path" value="<?php echo esc_attr( $details->path ) ?>" size="40" style='margin-bottom:5px;' />
|
||||
<br /><input type="checkbox" style="width:20px;" name="update_home_url" value="update" <?php if ( get_option( 'siteurl' ) == untrailingslashit( get_blogaddress_by_id ($id ) ) || get_option( 'home' ) == untrailingslashit( get_blogaddress_by_id( $id ) ) ) echo 'checked="checked"'; ?> /> <?php _e( 'Update <code>siteurl</code> and <code>home</code> as well.' ); ?></td>
|
||||
<?php
|
||||
restore_current_blog();
|
||||
} ?>
|
||||
</tr>
|
||||
<tr class="form-field">
|
||||
<th scope="row"><?php _ex( 'Registered', 'site' ) ?></th>
|
||||
<td><input name="blog[registered]" type="text" id="blog_registered" value="<?php echo esc_attr( $details->registered ) ?>" size="40" /></td>
|
||||
</tr>
|
||||
<tr class="form-field">
|
||||
<th scope="row"><?php _e( 'Last Updated' ); ?></th>
|
||||
<td><input name="blog[last_updated]" type="text" id="blog_last_updated" value="<?php echo esc_attr( $details->last_updated ) ?>" size="40" /></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>
|
||||
<?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; ?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php submit_button(); ?>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<?php
|
||||
require('../admin-footer.php');
|
153
wp-admin/network/site-new.php
Normal file
153
wp-admin/network/site-new.php
Normal file
@ -0,0 +1,153 @@
|
||||
<?php
|
||||
/**
|
||||
* Add Site Administration Screen
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Multisite
|
||||
* @since 3.1.0
|
||||
*/
|
||||
|
||||
/** Load WordPress Administration Bootstrap */
|
||||
require_once( './admin.php' );
|
||||
|
||||
if ( ! is_multisite() )
|
||||
wp_die( __( 'Multisite support is not enabled.' ) );
|
||||
|
||||
if ( ! current_user_can( 'manage_sites' ) )
|
||||
wp_die( __( 'You do not have sufficient permissions to add sites to this network.' ) );
|
||||
|
||||
get_current_screen()->add_help_tab( array(
|
||||
'id' => 'overview',
|
||||
'title' => __('Overview'),
|
||||
'content' =>
|
||||
'<p>' . __('This screen is for Super Admins to add new sites to the network. This is not affected by the registration settings.') . '</p>' .
|
||||
'<p>' . __('If the admin email for the new site does not exist in the database, a new user will also be created.') . '</p>'
|
||||
) );
|
||||
|
||||
get_current_screen()->set_help_sidebar(
|
||||
'<p><strong>' . __('For more information:') . '</strong></p>' .
|
||||
'<p>' . __('<a href="http://codex.wordpress.org/Network_Admin_Sites_Screen" target="_blank">Documentation on Site Management</a>') . '</p>' .
|
||||
'<p>' . __('<a href="http://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
|
||||
);
|
||||
|
||||
if ( isset($_REQUEST['action']) && 'add-site' == $_REQUEST['action'] ) {
|
||||
check_admin_referer( 'add-blog', '_wpnonce_add-blog' );
|
||||
|
||||
if ( ! current_user_can( 'manage_sites' ) )
|
||||
wp_die( __( 'You do not have permission to access this page.' ) );
|
||||
|
||||
if ( ! is_array( $_POST['blog'] ) )
|
||||
wp_die( __( 'Can’t create an empty site.' ) );
|
||||
$blog = $_POST['blog'];
|
||||
$domain = '';
|
||||
if ( preg_match( '|^([a-zA-Z0-9-])+$|', $blog['domain'] ) )
|
||||
$domain = strtolower( $blog['domain'] );
|
||||
|
||||
// If not a subdomain install, make sure the domain isn't a reserved word
|
||||
if ( ! is_subdomain_install() ) {
|
||||
$subdirectory_reserved_names = apply_filters( 'subdirectory_reserved_names', array( 'page', 'comments', 'blog', 'files', 'feed' ) );
|
||||
if ( in_array( $domain, $subdirectory_reserved_names ) )
|
||||
wp_die( sprintf( __('The following words are reserved for use by WordPress functions and cannot be used as blog names: <code>%s</code>' ), implode( '</code>, <code>', $subdirectory_reserved_names ) ) );
|
||||
}
|
||||
|
||||
$email = sanitize_email( $blog['email'] );
|
||||
$title = $blog['title'];
|
||||
|
||||
if ( empty( $domain ) )
|
||||
wp_die( __( 'Missing or invalid site address.' ) );
|
||||
if ( empty( $email ) )
|
||||
wp_die( __( 'Missing email address.' ) );
|
||||
if ( !is_email( $email ) )
|
||||
wp_die( __( 'Invalid email address.' ) );
|
||||
|
||||
if ( is_subdomain_install() ) {
|
||||
$newdomain = $domain . '.' . preg_replace( '|^www\.|', '', $current_site->domain );
|
||||
$path = $current_site->path;
|
||||
} else {
|
||||
$newdomain = $current_site->domain;
|
||||
$path = $current_site->path . $domain . '/';
|
||||
}
|
||||
|
||||
$password = 'N/A';
|
||||
$user_id = email_exists($email);
|
||||
if ( !$user_id ) { // Create a new user with a random password
|
||||
$password = wp_generate_password( 12, false );
|
||||
$user_id = wpmu_create_user( $domain, $password, $email );
|
||||
if ( false == $user_id )
|
||||
wp_die( __( 'There was an error creating the user.' ) );
|
||||
else
|
||||
wp_new_user_notification( $user_id, $password );
|
||||
}
|
||||
|
||||
$wpdb->hide_errors();
|
||||
$id = wpmu_create_blog( $newdomain, $path, $title, $user_id , array( 'public' => 1 ), $current_site->id );
|
||||
$wpdb->show_errors();
|
||||
if ( !is_wp_error( $id ) ) {
|
||||
if ( !is_super_admin( $user_id ) && !get_user_option( 'primary_blog', $user_id ) )
|
||||
update_user_option( $user_id, 'primary_blog', $id, true );
|
||||
$content_mail = sprintf( __( 'New site created by %1$s
|
||||
|
||||
Address: %2$s
|
||||
Name: %3$s' ), $current_user->user_login , get_site_url( $id ), stripslashes( $title ) );
|
||||
wp_mail( get_site_option('admin_email'), sprintf( __( '[%s] New Site Created' ), $current_site->site_name ), $content_mail, 'From: "Site Admin" <' . get_site_option( 'admin_email' ) . '>' );
|
||||
wpmu_welcome_notification( $id, $user_id, $password, $title, array( 'public' => 1 ) );
|
||||
wp_redirect( add_query_arg( array( 'update' => 'added', 'id' => $id ), 'site-new.php' ) );
|
||||
exit;
|
||||
} else {
|
||||
wp_die( $id->get_error_message() );
|
||||
}
|
||||
}
|
||||
|
||||
if ( isset($_GET['update']) ) {
|
||||
$messages = array();
|
||||
if ( 'added' == $_GET['update'] )
|
||||
$messages[] = sprintf( __( 'Site added. <a href="%1$s">Visit Dashboard</a> or <a href="%2$s">Edit Site</a>' ), esc_url( get_admin_url( absint( $_GET['id'] ) ) ), network_admin_url( 'site-info.php?id=' . absint( $_GET['id'] ) ) );
|
||||
}
|
||||
|
||||
$title = __('Add New Site');
|
||||
$parent_file = 'sites.php';
|
||||
|
||||
require('../admin-header.php');
|
||||
|
||||
?>
|
||||
|
||||
<div class="wrap">
|
||||
<?php screen_icon('ms-admin'); ?>
|
||||
<h2 id="add-new-site"><?php _e('Add New Site') ?></h2>
|
||||
<?php
|
||||
if ( ! empty( $messages ) ) {
|
||||
foreach ( $messages as $msg )
|
||||
echo '<div id="message" class="updated"><p>' . $msg . '</p></div>';
|
||||
} ?>
|
||||
<form method="post" action="<?php echo network_admin_url('site-new.php?action=add-site'); ?>">
|
||||
<?php wp_nonce_field( 'add-blog', '_wpnonce_add-blog' ) ?>
|
||||
<table class="form-table">
|
||||
<tr class="form-field form-required">
|
||||
<th scope="row"><?php _e( 'Site Address' ) ?></th>
|
||||
<td>
|
||||
<?php if ( is_subdomain_install() ) { ?>
|
||||
<input name="blog[domain]" type="text" class="regular-text" title="<?php esc_attr_e( 'Domain' ) ?>"/><span class="no-break">.<?php echo preg_replace( '|^www\.|', '', $current_site->domain ); ?></span>
|
||||
<?php } else {
|
||||
echo $current_site->domain . $current_site->path ?><input name="blog[domain]" class="regular-text" type="text" title="<?php esc_attr_e( 'Domain' ) ?>"/>
|
||||
<?php }
|
||||
echo '<p>' . __( 'Only lowercase letters (a-z) and numbers are allowed.' ) . '</p>';
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="form-field form-required">
|
||||
<th scope="row"><?php _e( 'Site Title' ) ?></th>
|
||||
<td><input name="blog[title]" type="text" class="regular-text" title="<?php esc_attr_e( 'Title' ) ?>"/></td>
|
||||
</tr>
|
||||
<tr class="form-field form-required">
|
||||
<th scope="row"><?php _e( 'Admin Email' ) ?></th>
|
||||
<td><input name="blog[email]" type="text" class="regular-text" title="<?php esc_attr_e( 'Email' ) ?>"/></td>
|
||||
</tr>
|
||||
<tr class="form-field">
|
||||
<td colspan="2"><?php _e( 'A new user will be created if the above email address is not in the database.' ) ?><br /><?php _e( 'The username and password will be mailed to this email address.' ) ?></td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php submit_button( __('Add Site'), 'primary', 'add-site' ); ?>
|
||||
</form>
|
||||
</div>
|
||||
<?php
|
||||
require('../admin-footer.php');
|
159
wp-admin/network/site-settings.php
Normal file
159
wp-admin/network/site-settings.php
Normal file
@ -0,0 +1,159 @@
|
||||
<?php
|
||||
/**
|
||||
* Edit Site Settings Administration Screen
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Multisite
|
||||
* @since 3.1.0
|
||||
*/
|
||||
|
||||
/** Load WordPress Administration Bootstrap */
|
||||
require_once( './admin.php' );
|
||||
|
||||
if ( ! is_multisite() )
|
||||
wp_die( __( 'Multisite support is not enabled.' ) );
|
||||
|
||||
if ( ! current_user_can( 'manage_sites' ) )
|
||||
wp_die( __( 'You do not have sufficient permissions to edit this site.' ) );
|
||||
|
||||
get_current_screen()->add_help_tab( array(
|
||||
'id' => 'overview',
|
||||
'title' => __('Overview'),
|
||||
'content' =>
|
||||
'<p>' . __('The menu is for editing information specific to individual sites, particularly if the admin area of a site is unavailable.') . '</p>' .
|
||||
'<p>' . __('<strong>Info</strong> - The domain and path are rarely edited as this can cause the site to not work properly. The Registered date and Last Updated date are displayed. Network admins can mark a site as archived, spam, deleted and mature, to remove from public listings or disable.') . '</p>' .
|
||||
'<p>' . __('<strong>Users</strong> - This displays the users associated with this site. You can also change their role, reset their password, or remove them from the site. Removing the user from the site does not remove the user from the network.') . '</p>' .
|
||||
'<p>' . sprintf( __('<strong>Themes</strong> - This area shows themes that are not already enabled across the network. Enabling a theme in this menu makes it accessible to this site. It does not activate the theme, but allows it to show in the site’s Appearance menu. To enable a theme for the entire network, see the <a href="%s">Network Themes</a> screen.' ), network_admin_url( 'themes.php' ) ) . '</p>' .
|
||||
'<p>' . __('<strong>Settings</strong> - This page shows a list of all settings associated with this site. Some are created by WordPress and others are created by plugins you activate. Note that some fields are grayed out and say Serialized Data. You cannot modify these values due to the way the setting is stored in the database.') . '</p>'
|
||||
) );
|
||||
|
||||
get_current_screen()->set_help_sidebar(
|
||||
'<p><strong>' . __('For more information:') . '</strong></p>' .
|
||||
'<p>' . __('<a href="http://codex.wordpress.org/Network_Admin_Sites_Screen" target="_blank">Documentation on Site Management</a>') . '</p>' .
|
||||
'<p>' . __('<a href="http://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
|
||||
);
|
||||
|
||||
$id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0;
|
||||
|
||||
if ( ! $id )
|
||||
wp_die( __('Invalid site ID.') );
|
||||
|
||||
$details = get_blog_details( $id );
|
||||
if ( !can_edit_network( $details->site_id ) )
|
||||
wp_die( __( 'You do not have permission to access this page.' ) );
|
||||
|
||||
$is_main_site = is_main_site( $id );
|
||||
|
||||
if ( isset($_REQUEST['action']) && 'update-site' == $_REQUEST['action'] && is_array( $_POST['option'] ) ) {
|
||||
check_admin_referer( 'edit-site' );
|
||||
|
||||
switch_to_blog( $id );
|
||||
|
||||
$c = 1;
|
||||
$count = count( $_POST['option'] );
|
||||
$skip_options = array( 'allowedthemes' ); // Don't update these options since they are handled elsewhere in the form.
|
||||
foreach ( (array) $_POST['option'] as $key => $val ) {
|
||||
if ( $key === 0 || is_array( $val ) || in_array($key, $skip_options) )
|
||||
continue; // Avoids "0 is a protected WP option and may not be modified" error when edit blog options
|
||||
if ( $c == $count )
|
||||
update_option( $key, stripslashes( $val ) );
|
||||
else
|
||||
update_option( $key, stripslashes( $val ), false ); // no need to refresh blog details yet
|
||||
$c++;
|
||||
}
|
||||
|
||||
do_action( 'wpmu_update_blog_options' );
|
||||
restore_current_blog();
|
||||
wp_redirect( add_query_arg( array( 'update' => 'updated', 'id' => $id ), 'site-settings.php') );
|
||||
exit;
|
||||
}
|
||||
|
||||
if ( isset($_GET['update']) ) {
|
||||
$messages = array();
|
||||
if ( 'updated' == $_GET['update'] )
|
||||
$messages[] = __('Site options updated.');
|
||||
}
|
||||
|
||||
$site_url_no_http = preg_replace( '#^http(s)?://#', '', get_blogaddress_by_id( $id ) );
|
||||
$title_site_url_linked = sprintf( __('Edit Site: <a href="%1$s">%2$s</a>'), get_blogaddress_by_id( $id ), $site_url_no_http );
|
||||
$title = sprintf( __('Edit Site: %s'), $site_url_no_http );
|
||||
|
||||
$parent_file = 'sites.php';
|
||||
$submenu_file = 'sites.php';
|
||||
|
||||
require('../admin-header.php');
|
||||
|
||||
?>
|
||||
|
||||
<div class="wrap">
|
||||
<?php screen_icon('ms-admin'); ?>
|
||||
<h2 id="edit-site"><?php echo $title_site_url_linked ?></h2>
|
||||
<h3 class="nav-tab-wrapper">
|
||||
<?php
|
||||
$tabs = array(
|
||||
'site-info' => array( 'label' => __( 'Info' ), 'url' => 'site-info.php' ),
|
||||
'site-users' => array( 'label' => __( 'Users' ), 'url' => 'site-users.php' ),
|
||||
'site-themes' => array( 'label' => __( 'Themes' ), 'url' => 'site-themes.php' ),
|
||||
'site-settings' => array( 'label' => __( 'Settings' ), 'url' => 'site-settings.php' ),
|
||||
);
|
||||
foreach ( $tabs as $tab_id => $tab ) {
|
||||
$class = ( $tab['url'] == $pagenow ) ? ' nav-tab-active' : '';
|
||||
echo '<a href="' . $tab['url'] . '?id=' . $id .'" class="nav-tab' . $class . '">' . esc_html( $tab['label'] ) . '</a>';
|
||||
}
|
||||
?>
|
||||
</h3>
|
||||
<?php
|
||||
if ( ! empty( $messages ) ) {
|
||||
foreach ( $messages as $msg )
|
||||
echo '<div id="message" class="updated"><p>' . $msg . '</p></div>';
|
||||
} ?>
|
||||
<form method="post" action="site-settings.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
|
||||
$blog_prefix = $wpdb->get_blog_prefix( $id );
|
||||
$options = $wpdb->get_results( "SELECT * FROM {$blog_prefix}options WHERE option_name NOT LIKE '\_%' AND option_name NOT LIKE '%user_roles'" );
|
||||
foreach ( $options as $option ) {
|
||||
if ( $option->option_name == 'default_role' )
|
||||
$editblog_default_role = $option->option_value;
|
||||
$disabled = false;
|
||||
$class = 'all-options';
|
||||
if ( is_serialized( $option->option_value ) ) {
|
||||
if ( is_serialized_string( $option->option_value ) ) {
|
||||
$option->option_value = esc_html( maybe_unserialize( $option->option_value ), 'single' );
|
||||
} else {
|
||||
$option->option_value = 'SERIALIZED DATA';
|
||||
$disabled = true;
|
||||
$class = 'all-options disabled';
|
||||
}
|
||||
}
|
||||
if ( strpos( $option->option_value, "\n" ) !== false ) {
|
||||
?>
|
||||
<tr class="form-field">
|
||||
<th scope="row"><?php echo ucwords( str_replace( "_", " ", $option->option_name ) ) ?></th>
|
||||
<td><textarea class="<?php echo $class; ?>" rows="5" cols="40" name="option[<?php echo esc_attr( $option->option_name ) ?>]" id="<?php echo esc_attr( $option->option_name ) ?>"<?php disabled( $disabled ) ?>><?php echo esc_textarea( $option->option_value ) ?></textarea></td>
|
||||
</tr>
|
||||
<?php
|
||||
} else {
|
||||
?>
|
||||
<tr class="form-field">
|
||||
<th scope="row"><?php echo esc_html( ucwords( str_replace( "_", " ", $option->option_name ) ) ); ?></th>
|
||||
<?php if ( $is_main_site && in_array( $option->option_name, array( 'siteurl', 'home' ) ) ) { ?>
|
||||
<td><code><?php echo esc_html( $option->option_value ) ?></code></td>
|
||||
<?php } else { ?>
|
||||
<td><input class="<?php echo $class; ?>" name="option[<?php echo esc_attr( $option->option_name ) ?>]" type="text" id="<?php echo esc_attr( $option->option_name ) ?>" value="<?php echo esc_attr( $option->option_value ) ?>" size="40" <?php disabled( $disabled ) ?> /></td>
|
||||
<?php } ?>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
} // End foreach
|
||||
do_action( 'wpmueditblogaction', $id );
|
||||
?>
|
||||
</table>
|
||||
<?php submit_button(); ?>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<?php
|
||||
require('../admin-footer.php');
|
182
wp-admin/network/site-themes.php
Normal file
182
wp-admin/network/site-themes.php
Normal file
@ -0,0 +1,182 @@
|
||||
<?php
|
||||
/**
|
||||
* Edit Site Themes Administration Screen
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Multisite
|
||||
* @since 3.1.0
|
||||
*/
|
||||
|
||||
/** Load WordPress Administration Bootstrap */
|
||||
require_once( './admin.php' );
|
||||
|
||||
if ( ! is_multisite() )
|
||||
wp_die( __( 'Multisite support is not enabled.' ) );
|
||||
|
||||
if ( ! current_user_can( 'manage_sites' ) )
|
||||
wp_die( __( 'You do not have sufficient permissions to manage themes for this site.' ) );
|
||||
|
||||
get_current_screen()->add_help_tab( array(
|
||||
'id' => 'overview',
|
||||
'title' => __('Overview'),
|
||||
'content' =>
|
||||
'<p>' . __('The menu is for editing information specific to individual sites, particularly if the admin area of a site is unavailable.') . '</p>' .
|
||||
'<p>' . __('<strong>Info</strong> - The domain and path are rarely edited as this can cause the site to not work properly. The Registered date and Last Updated date are displayed. Network admins can mark a site as archived, spam, deleted and mature, to remove from public listings or disable.') . '</p>' .
|
||||
'<p>' . __('<strong>Users</strong> - This displays the users associated with this site. You can also change their role, reset their password, or remove them from the site. Removing the user from the site does not remove the user from the network.') . '</p>' .
|
||||
'<p>' . sprintf( __('<strong>Themes</strong> - This area shows themes that are not already enabled across the network. Enabling a theme in this menu makes it accessible to this site. It does not activate the theme, but allows it to show in the site’s Appearance menu. To enable a theme for the entire network, see the <a href="%s">Network Themes</a> screen.' ), network_admin_url( 'themes.php' ) ) . '</p>' .
|
||||
'<p>' . __('<strong>Settings</strong> - This page shows a list of all settings associated with this site. Some are created by WordPress and others are created by plugins you activate. Note that some fields are grayed out and say Serialized Data. You cannot modify these values due to the way the setting is stored in the database.') . '</p>'
|
||||
) );
|
||||
|
||||
get_current_screen()->set_help_sidebar(
|
||||
'<p><strong>' . __('For more information:') . '</strong></p>' .
|
||||
'<p>' . __('<a href="http://codex.wordpress.org/Network_Admin_Sites_Screen" target="_blank">Documentation on Site Management</a>') . '</p>' .
|
||||
'<p>' . __('<a href="http://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
|
||||
);
|
||||
|
||||
$wp_list_table = _get_list_table('WP_MS_Themes_List_Table');
|
||||
|
||||
$action = $wp_list_table->current_action();
|
||||
|
||||
$s = isset($_REQUEST['s']) ? $_REQUEST['s'] : '';
|
||||
|
||||
// Clean up request URI from temporary args for screen options/paging uri's to work as expected.
|
||||
$temp_args = array( 'enabled', 'disabled', 'error' );
|
||||
$_SERVER['REQUEST_URI'] = remove_query_arg( $temp_args, $_SERVER['REQUEST_URI'] );
|
||||
$referer = remove_query_arg( $temp_args, wp_get_referer() );
|
||||
|
||||
$id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0;
|
||||
|
||||
if ( ! $id )
|
||||
wp_die( __('Invalid site ID.') );
|
||||
|
||||
$wp_list_table->prepare_items();
|
||||
|
||||
$details = get_blog_details( $id );
|
||||
if ( !can_edit_network( $details->site_id ) )
|
||||
wp_die( __( 'You do not have permission to access this page.' ) );
|
||||
|
||||
$is_main_site = is_main_site( $id );
|
||||
|
||||
if ( $action ) {
|
||||
switch_to_blog( $id );
|
||||
$allowed_themes = get_option( 'allowedthemes' );
|
||||
|
||||
switch ( $action ) {
|
||||
case 'enable':
|
||||
check_admin_referer( 'enable-theme_' . $_GET['theme'] );
|
||||
$theme = $_GET['theme'];
|
||||
$action = 'enabled';
|
||||
$n = 1;
|
||||
if ( !$allowed_themes )
|
||||
$allowed_themes = array( $theme => true );
|
||||
else
|
||||
$allowed_themes[$theme] = true;
|
||||
break;
|
||||
case 'disable':
|
||||
check_admin_referer( 'disable-theme_' . $_GET['theme'] );
|
||||
$theme = $_GET['theme'];
|
||||
$action = 'disabled';
|
||||
$n = 1;
|
||||
if ( !$allowed_themes )
|
||||
$allowed_themes = array();
|
||||
else
|
||||
unset( $allowed_themes[$theme] );
|
||||
break;
|
||||
case 'enable-selected':
|
||||
check_admin_referer( 'bulk-themes' );
|
||||
if ( isset( $_POST['checked'] ) ) {
|
||||
$themes = (array) $_POST['checked'];
|
||||
$action = 'enabled';
|
||||
$n = count( $themes );
|
||||
foreach( (array) $themes as $theme )
|
||||
$allowed_themes[ $theme ] = true;
|
||||
} else {
|
||||
$action = 'error';
|
||||
$n = 'none';
|
||||
}
|
||||
break;
|
||||
case 'disable-selected':
|
||||
check_admin_referer( 'bulk-themes' );
|
||||
if ( isset( $_POST['checked'] ) ) {
|
||||
$themes = (array) $_POST['checked'];
|
||||
$action = 'disabled';
|
||||
$n = count( $themes );
|
||||
foreach( (array) $themes as $theme )
|
||||
unset( $allowed_themes[ $theme ] );
|
||||
} else {
|
||||
$action = 'error';
|
||||
$n = 'none';
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
update_option( 'allowedthemes', $allowed_themes );
|
||||
restore_current_blog();
|
||||
|
||||
wp_safe_redirect( add_query_arg( array( 'id' => $id, $action => $n ), $referer ) );
|
||||
exit;
|
||||
}
|
||||
|
||||
if ( isset( $_GET['action'] ) && 'update-site' == $_GET['action'] ) {
|
||||
wp_safe_redirect( $referer );
|
||||
exit();
|
||||
}
|
||||
|
||||
add_thickbox();
|
||||
add_screen_option( 'per_page', array( 'label' => _x( 'Themes', 'themes per page (screen options)' ) ) );
|
||||
|
||||
$site_url_no_http = preg_replace( '#^http(s)?://#', '', get_blogaddress_by_id( $id ) );
|
||||
$title_site_url_linked = sprintf( __('Edit Site: <a href="%1$s">%2$s</a>'), get_blogaddress_by_id( $id ), $site_url_no_http );
|
||||
$title = sprintf( __('Edit Site: %s'), $site_url_no_http );
|
||||
|
||||
$parent_file = 'sites.php';
|
||||
$submenu_file = 'sites.php';
|
||||
|
||||
require('../admin-header.php'); ?>
|
||||
|
||||
<div class="wrap">
|
||||
<?php screen_icon('ms-admin'); ?>
|
||||
<h2 id="edit-site"><?php echo $title_site_url_linked ?></h2>
|
||||
<h3 class="nav-tab-wrapper">
|
||||
<?php
|
||||
$tabs = array(
|
||||
'site-info' => array( 'label' => __( 'Info' ), 'url' => 'site-info.php' ),
|
||||
'site-users' => array( 'label' => __( 'Users' ), 'url' => 'site-users.php' ),
|
||||
'site-themes' => array( 'label' => __( 'Themes' ), 'url' => 'site-themes.php' ),
|
||||
'site-settings' => array( 'label' => __( 'Settings' ), 'url' => 'site-settings.php' ),
|
||||
);
|
||||
foreach ( $tabs as $tab_id => $tab ) {
|
||||
$class = ( $tab['url'] == $pagenow ) ? ' nav-tab-active' : '';
|
||||
echo '<a href="' . $tab['url'] . '?id=' . $id .'" class="nav-tab' . $class . '">' . esc_html( $tab['label'] ) . '</a>';
|
||||
}
|
||||
?>
|
||||
</h3><?php
|
||||
|
||||
if ( isset( $_GET['enabled'] ) ) {
|
||||
$_GET['enabled'] = absint( $_GET['enabled'] );
|
||||
echo '<div id="message" class="updated"><p>' . sprintf( _n( 'Theme enabled.', '%s themes enabled.', $_GET['enabled'] ), number_format_i18n( $_GET['enabled'] ) ) . '</p></div>';
|
||||
} elseif ( isset( $_GET['disabled'] ) ) {
|
||||
$_GET['disabled'] = absint( $_GET['disabled'] );
|
||||
echo '<div id="message" class="updated"><p>' . sprintf( _n( 'Theme disabled.', '%s themes disabled.', $_GET['disabled'] ), number_format_i18n( $_GET['disabled'] ) ) . '</p></div>';
|
||||
} elseif ( isset( $_GET['error'] ) && 'none' == $_GET['error'] ) {
|
||||
echo '<div id="message" class="error"><p>' . __( 'No theme selected.' ) . '</p></div>';
|
||||
} ?>
|
||||
|
||||
<p><?php _e( 'Network enabled themes are not shown on this screen.' ) ?></p>
|
||||
|
||||
<form method="get" action="">
|
||||
<?php $wp_list_table->search_box( __( 'Search Installed Themes' ), 'theme' ); ?>
|
||||
<input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
|
||||
</form>
|
||||
|
||||
<?php $wp_list_table->views(); ?>
|
||||
|
||||
<form method="post" action="site-themes.php?action=update-site">
|
||||
<input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
|
||||
|
||||
<?php $wp_list_table->display(); ?>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<?php include(ABSPATH . 'wp-admin/admin-footer.php'); ?>
|
312
wp-admin/network/site-users.php
Normal file
312
wp-admin/network/site-users.php
Normal file
@ -0,0 +1,312 @@
|
||||
<?php
|
||||
/**
|
||||
* Edit Site Users Administration Screen
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Multisite
|
||||
* @since 3.1.0
|
||||
*/
|
||||
|
||||
/** Load WordPress Administration Bootstrap */
|
||||
require_once( './admin.php' );
|
||||
|
||||
if ( ! is_multisite() )
|
||||
wp_die( __( 'Multisite support is not enabled.' ) );
|
||||
|
||||
if ( ! current_user_can('manage_sites') )
|
||||
wp_die(__('You do not have sufficient permissions to edit this site.'));
|
||||
|
||||
$wp_list_table = _get_list_table('WP_Users_List_Table');
|
||||
$wp_list_table->prepare_items();
|
||||
|
||||
get_current_screen()->add_help_tab( array(
|
||||
'id' => 'overview',
|
||||
'title' => __('Overview'),
|
||||
'content' =>
|
||||
'<p>' . __('The menu is for editing information specific to individual sites, particularly if the admin area of a site is unavailable.') . '</p>' .
|
||||
'<p>' . __('<strong>Info</strong> - The domain and path are rarely edited as this can cause the site to not work properly. The Registered date and Last Updated date are displayed. Network admins can mark a site as archived, spam, deleted and mature, to remove from public listings or disable.') . '</p>' .
|
||||
'<p>' . __('<strong>Users</strong> - This displays the users associated with this site. You can also change their role, reset their password, or remove them from the site. Removing the user from the site does not remove the user from the network.') . '</p>' .
|
||||
'<p>' . sprintf( __('<strong>Themes</strong> - This area shows themes that are not already enabled across the network. Enabling a theme in this menu makes it accessible to this site. It does not activate the theme, but allows it to show in the site’s Appearance menu. To enable a theme for the entire network, see the <a href="%s">Network Themes</a> screen.' ), network_admin_url( 'themes.php' ) ) . '</p>' .
|
||||
'<p>' . __('<strong>Settings</strong> - This page shows a list of all settings associated with this site. Some are created by WordPress and others are created by plugins you activate. Note that some fields are grayed out and say Serialized Data. You cannot modify these values due to the way the setting is stored in the database.') . '</p>'
|
||||
) );
|
||||
|
||||
get_current_screen()->set_help_sidebar(
|
||||
'<p><strong>' . __('For more information:') . '</strong></p>' .
|
||||
'<p>' . __('<a href="http://codex.wordpress.org/Network_Admin_Sites_Screen" target="_blank">Documentation on Site Management</a>') . '</p>' .
|
||||
'<p>' . __('<a href="http://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
|
||||
);
|
||||
|
||||
$_SERVER['REQUEST_URI'] = remove_query_arg( 'update', $_SERVER['REQUEST_URI'] );
|
||||
$referer = remove_query_arg( 'update', wp_get_referer() );
|
||||
|
||||
$id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0;
|
||||
|
||||
if ( ! $id )
|
||||
wp_die( __('Invalid site ID.') );
|
||||
|
||||
$details = get_blog_details( $id );
|
||||
if ( ! can_edit_network( $details->site_id ) )
|
||||
wp_die( __( 'You do not have permission to access this page.' ) );
|
||||
|
||||
$is_main_site = is_main_site( $id );
|
||||
|
||||
switch_to_blog( $id );
|
||||
|
||||
$editblog_roles = $wp_roles->roles;
|
||||
|
||||
$default_role = get_option( 'default_role' );
|
||||
|
||||
$action = $wp_list_table->current_action();
|
||||
|
||||
if ( $action ) {
|
||||
|
||||
switch ( $action ) {
|
||||
case 'newuser':
|
||||
check_admin_referer( 'add-user', '_wpnonce_add-new-user' );
|
||||
$user = $_POST['user'];
|
||||
if ( ! is_array( $_POST['user'] ) || empty( $user['username'] ) || empty( $user['email'] ) ) {
|
||||
$update = 'err_new';
|
||||
} else {
|
||||
$password = wp_generate_password( 12, false);
|
||||
$user_id = wpmu_create_user( esc_html( strtolower( $user['username'] ) ), $password, esc_html( $user['email'] ) );
|
||||
|
||||
if ( false == $user_id ) {
|
||||
$update = 'err_new_dup';
|
||||
} else {
|
||||
wp_new_user_notification( $user_id, $password );
|
||||
add_user_to_blog( $id, $user_id, $_POST['new_role'] );
|
||||
$update = 'newuser';
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 'adduser':
|
||||
check_admin_referer( 'add-user', '_wpnonce_add-user' );
|
||||
if ( !empty( $_POST['newuser'] ) ) {
|
||||
$update = 'adduser';
|
||||
$newuser = $_POST['newuser'];
|
||||
$userid = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM " . $wpdb->users . " WHERE user_login = %s", $newuser ) );
|
||||
if ( $userid ) {
|
||||
$blog_prefix = $wpdb->get_blog_prefix( $id );
|
||||
$user = $wpdb->get_var( "SELECT user_id FROM " . $wpdb->usermeta . " WHERE user_id='$userid' AND meta_key='{$blog_prefix}capabilities'" );
|
||||
if ( $user == false )
|
||||
add_user_to_blog( $id, $userid, $_POST['new_role'] );
|
||||
else
|
||||
$update = 'err_add_member';
|
||||
} else {
|
||||
$update = 'err_add_notfound';
|
||||
}
|
||||
} else {
|
||||
$update = 'err_add_notfound';
|
||||
}
|
||||
break;
|
||||
|
||||
case 'remove':
|
||||
if ( ! current_user_can( 'remove_users' ) )
|
||||
die(__('You can’t remove users.'));
|
||||
check_admin_referer( 'bulk-users' );
|
||||
|
||||
$update = 'remove';
|
||||
if ( isset( $_REQUEST['users'] ) ) {
|
||||
$userids = $_REQUEST['users'];
|
||||
|
||||
foreach ( $userids as $user_id ) {
|
||||
$user_id = (int) $user_id;
|
||||
remove_user_from_blog( $user_id, $id );
|
||||
}
|
||||
} elseif ( isset( $_GET['user'] ) ) {
|
||||
remove_user_from_blog( $_GET['user'] );
|
||||
} else {
|
||||
$update = 'err_remove';
|
||||
}
|
||||
break;
|
||||
|
||||
case 'promote':
|
||||
check_admin_referer( 'bulk-users' );
|
||||
$editable_roles = get_editable_roles();
|
||||
if ( empty( $editable_roles[$_REQUEST['new_role']] ) )
|
||||
wp_die(__('You can’t give users that role.'));
|
||||
|
||||
if ( isset( $_REQUEST['users'] ) ) {
|
||||
$userids = $_REQUEST['users'];
|
||||
$update = 'promote';
|
||||
foreach ( $userids as $user_id ) {
|
||||
$user_id = (int) $user_id;
|
||||
|
||||
// If the user doesn't already belong to the blog, bail.
|
||||
if ( !is_user_member_of_blog( $user_id ) )
|
||||
wp_die(__('Cheatin’ uh?'));
|
||||
|
||||
$user = get_userdata( $user_id );
|
||||
$user->set_role( $_REQUEST['new_role'] );
|
||||
}
|
||||
} else {
|
||||
$update = 'err_promote';
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
wp_safe_redirect( add_query_arg( 'update', $update, $referer ) );
|
||||
exit();
|
||||
}
|
||||
|
||||
restore_current_blog();
|
||||
|
||||
if ( isset( $_GET['action'] ) && 'update-site' == $_GET['action'] ) {
|
||||
wp_safe_redirect( $referer );
|
||||
exit();
|
||||
}
|
||||
|
||||
add_screen_option( 'per_page', array( 'label' => _x( 'Users', 'users per page (screen options)' ) ) );
|
||||
|
||||
$site_url_no_http = preg_replace( '#^http(s)?://#', '', get_blogaddress_by_id( $id ) );
|
||||
$title_site_url_linked = sprintf( __('Edit Site: <a href="%1$s">%2$s</a>'), get_blogaddress_by_id( $id ), $site_url_no_http );
|
||||
$title = sprintf( __('Edit Site: %s'), $site_url_no_http );
|
||||
|
||||
$parent_file = 'sites.php';
|
||||
$submenu_file = 'sites.php';
|
||||
|
||||
if ( ! wp_is_large_network( 'users' ) && apply_filters( 'show_network_site_users_add_existing_form', true ) )
|
||||
wp_enqueue_script( 'user-suggest' );
|
||||
|
||||
require('../admin-header.php'); ?>
|
||||
|
||||
<script type='text/javascript'>
|
||||
/* <![CDATA[ */
|
||||
var current_site_id = <?php echo $id; ?>;
|
||||
/* ]]> */
|
||||
</script>
|
||||
|
||||
|
||||
<div class="wrap">
|
||||
<?php screen_icon('ms-admin'); ?>
|
||||
<h2 id="edit-site"><?php echo $title_site_url_linked ?></h2>
|
||||
<h3 class="nav-tab-wrapper">
|
||||
<?php
|
||||
$tabs = array(
|
||||
'site-info' => array( 'label' => __( 'Info' ), 'url' => 'site-info.php' ),
|
||||
'site-users' => array( 'label' => __( 'Users' ), 'url' => 'site-users.php' ),
|
||||
'site-themes' => array( 'label' => __( 'Themes' ), 'url' => 'site-themes.php' ),
|
||||
'site-settings' => array( 'label' => __( 'Settings' ), 'url' => 'site-settings.php' ),
|
||||
);
|
||||
foreach ( $tabs as $tab_id => $tab ) {
|
||||
$class = ( $tab['url'] == $pagenow ) ? ' nav-tab-active' : '';
|
||||
echo '<a href="' . $tab['url'] . '?id=' . $id .'" class="nav-tab' . $class . '">' . esc_html( $tab['label'] ) . '</a>';
|
||||
}
|
||||
?>
|
||||
</h3><?php
|
||||
|
||||
if ( isset($_GET['update']) ) :
|
||||
switch($_GET['update']) {
|
||||
case 'adduser':
|
||||
echo '<div id="message" class="updated"><p>' . __( 'User added.' ) . '</p></div>';
|
||||
break;
|
||||
case 'err_add_member':
|
||||
echo '<div id="message" class="error"><p>' . __( 'User is already a member of this site.' ) . '</p></div>';
|
||||
break;
|
||||
case 'err_add_notfound':
|
||||
echo '<div id="message" class="error"><p>' . __( 'Enter the username of an existing user.' ) . '</p></div>';
|
||||
break;
|
||||
case 'promote':
|
||||
echo '<div id="message" class="updated"><p>' . __( 'Changed roles.' ) . '</p></div>';
|
||||
break;
|
||||
case 'err_promote':
|
||||
echo '<div id="message" class="error"><p>' . __( 'Select a user to change role.' ) . '</p></div>';
|
||||
break;
|
||||
case 'remove':
|
||||
echo '<div id="message" class="updated"><p>' . __( 'User removed from this site.' ) . '</p></div>';
|
||||
break;
|
||||
case 'err_remove':
|
||||
echo '<div id="message" class="error"><p>' . __( 'Select a user to remove.' ) . '</p></div>';
|
||||
break;
|
||||
case 'newuser':
|
||||
echo '<div id="message" class="updated"><p>' . __( 'User created.' ) . '</p></div>';
|
||||
break;
|
||||
case 'err_new':
|
||||
echo '<div id="message" class="error"><p>' . __( 'Enter the username and email.' ) . '</p></div>';
|
||||
break;
|
||||
case 'err_new_dup':
|
||||
echo '<div id="message" class="error"><p>' . __( 'Duplicated username or email address.' ) . '</p></div>';
|
||||
break;
|
||||
}
|
||||
endif; ?>
|
||||
|
||||
<form class="search-form" action="" method="get">
|
||||
<?php $wp_list_table->search_box( __( 'Search Users' ), 'user' ); ?>
|
||||
<input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
|
||||
</form>
|
||||
|
||||
<?php $wp_list_table->views(); ?>
|
||||
|
||||
<form method="post" action="site-users.php?action=update-site">
|
||||
<input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
|
||||
|
||||
<?php $wp_list_table->display(); ?>
|
||||
|
||||
</form>
|
||||
|
||||
<?php do_action( 'network_site_users_after_list_table', '' );?>
|
||||
|
||||
<?php if ( current_user_can( 'promote_users' ) && apply_filters( 'show_network_site_users_add_existing_form', true ) ) : ?>
|
||||
<h3 id="add-existing-user"><?php _e( 'Add Existing User' ); ?></h3>
|
||||
<form action="site-users.php?action=adduser" id="adduser" method="post">
|
||||
<input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
|
||||
<table class="form-table">
|
||||
<tr>
|
||||
<th scope="row"><?php _e( 'Username' ); ?></th>
|
||||
<td><input type="text" class="regular-text wp-suggest-user" name="newuser" id="newuser" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><?php _e( 'Role' ); ?></th>
|
||||
<td><select name="new_role" id="new_role_0">
|
||||
<?php
|
||||
reset( $editblog_roles );
|
||||
foreach ( $editblog_roles as $role => $role_assoc ) {
|
||||
$name = translate_user_role( $role_assoc['name'] );
|
||||
echo '<option ' . selected( $default_role, $role, false ) . ' value="' . esc_attr( $role ) . '">' . esc_html( $name ) . '</option>';
|
||||
}
|
||||
?>
|
||||
</select></td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php wp_nonce_field( 'add-user', '_wpnonce_add-user' ) ?>
|
||||
<?php submit_button( __( 'Add User' ), 'primary', 'add-user', true, array( 'id' => 'submit-add-existing-user' ) ); ?>
|
||||
</form>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ( current_user_can( 'create_users' ) && apply_filters( 'show_network_site_users_add_new_form', true ) ) : ?>
|
||||
<h3 id="add-new-user"><?php _e( 'Add New User' ); ?></h3>
|
||||
<form action="<?php echo network_admin_url('site-users.php?action=newuser'); ?>" id="newuser" method="post">
|
||||
<input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
|
||||
<table class="form-table">
|
||||
<tr>
|
||||
<th scope="row"><?php _e( 'Username' ) ?></th>
|
||||
<td><input type="text" class="regular-text" name="user[username]" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><?php _e( 'Email' ) ?></th>
|
||||
<td><input type="text" class="regular-text" name="user[email]" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><?php _e( 'Role' ); ?></th>
|
||||
<td><select name="new_role" id="new_role_0">
|
||||
<?php
|
||||
reset( $editblog_roles );
|
||||
foreach ( $editblog_roles as $role => $role_assoc ) {
|
||||
$name = translate_user_role( $role_assoc['name'] );
|
||||
echo '<option ' . selected( $default_role, $role, false ) . ' value="' . esc_attr( $role ) . '">' . esc_html( $name ) . '</option>';
|
||||
}
|
||||
?>
|
||||
</select></td>
|
||||
</tr>
|
||||
<tr class="form-field">
|
||||
<td colspan="2"><?php _e( 'Username and password will be mailed to the above email address.' ) ?></td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php wp_nonce_field( 'add-user', '_wpnonce_add-new-user' ) ?>
|
||||
<?php submit_button( __( 'Add New User' ), 'primary', 'add-user', true, array( 'id' => 'submit-add-user' ) ); ?>
|
||||
</form>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<?php
|
||||
require('../admin-footer.php');
|
257
wp-admin/network/sites.php
Normal file
257
wp-admin/network/sites.php
Normal file
@ -0,0 +1,257 @@
|
||||
<?php
|
||||
/**
|
||||
* Multisite sites administration panel.
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Multisite
|
||||
* @since 3.0.0
|
||||
*/
|
||||
|
||||
/** Load WordPress Administration Bootstrap */
|
||||
require_once( './admin.php' );
|
||||
|
||||
if ( ! is_multisite() )
|
||||
wp_die( __( 'Multisite support is not enabled.' ) );
|
||||
|
||||
if ( ! current_user_can( 'manage_sites' ) )
|
||||
wp_die( __( 'You do not have permission to access this page.' ) );
|
||||
|
||||
$wp_list_table = _get_list_table( 'WP_MS_Sites_List_Table' );
|
||||
$pagenum = $wp_list_table->get_pagenum();
|
||||
|
||||
$title = __( 'Sites' );
|
||||
$parent_file = 'sites.php';
|
||||
|
||||
add_screen_option( 'per_page', array( 'label' => _x( 'Sites', 'sites per page (screen options)' ) ) );
|
||||
|
||||
get_current_screen()->add_help_tab( array(
|
||||
'id' => 'overview',
|
||||
'title' => __('Overview'),
|
||||
'content' =>
|
||||
'<p>' . __('Add New takes you to the Add New Site screen. You can search for a site by Name, ID number, or IP address. Screen Options allows you to choose how many sites to display on one page.') . '</p>' .
|
||||
'<p>' . __('This is the main table of all sites on this network. Switch between list and excerpt views by using the icons above the right side of the table.') . '</p>' .
|
||||
'<p>' . __('Hovering over each site reveals seven options (three for the primary site):') . '</p>' .
|
||||
'<ul><li>' . __('An Edit link to a separate Edit Site screen.') . '</li>' .
|
||||
'<li>' . __('Dashboard leads to the Dashboard for that site.') . '</li>' .
|
||||
'<li>' . __('Deactivate, Archive, and Spam which lead to confirmation screens. These actions can be reversed later.') . '</li>' .
|
||||
'<li>' . __('Delete which is a permanent action after the confirmation screens.') . '</li>' .
|
||||
'<li>' . __('Visit to go to the frontend site live.') . '</li></ul>' .
|
||||
'<p>' . __('The site ID is used internally, and is not shown on the front end of the site or to users/viewers.') . '</p>' .
|
||||
'<p>' . __('Clicking on bold headings can re-sort this table.') . '</p>'
|
||||
) );
|
||||
|
||||
get_current_screen()->set_help_sidebar(
|
||||
'<p><strong>' . __('For more information:') . '</strong></p>' .
|
||||
'<p>' . __('<a href="http://codex.wordpress.org/Network_Admin_Sites_Screen" target="_blank">Documentation on Site Management</a>') . '</p>' .
|
||||
'<p>' . __('<a href="http://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
|
||||
);
|
||||
|
||||
$id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0;
|
||||
|
||||
if ( isset( $_GET['action'] ) ) {
|
||||
do_action( 'wpmuadminedit' , '' );
|
||||
|
||||
if ( 'confirm' === $_GET['action'] ) {
|
||||
check_admin_referer( 'confirm' );
|
||||
|
||||
if ( ! headers_sent() ) {
|
||||
nocache_headers();
|
||||
header( 'Content-Type: text/html; charset=utf-8' );
|
||||
}
|
||||
if ( $current_site->blog_id == $id )
|
||||
wp_die( __( 'You are not allowed to change the current site.' ) );
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
|
||||
<head>
|
||||
<title><?php _e( 'WordPress › Confirm your action' ); ?></title>
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<?php
|
||||
wp_admin_css( 'install', true );
|
||||
wp_admin_css( 'ie', true );
|
||||
?>
|
||||
</head>
|
||||
<body class="wp-core-ui">
|
||||
<h1 id="logo"><a href="<?php esc_attr_e( 'http://wordpress.org/' ); ?>"><?php _e( 'WordPress' ); ?></a></h1>
|
||||
<form action="sites.php?action=<?php echo esc_attr( $_GET['action2'] ) ?>" method="post">
|
||||
<input type="hidden" name="action" value="<?php echo esc_attr( $_GET['action2'] ) ?>" />
|
||||
<input type="hidden" name="id" value="<?php echo esc_attr( $id ); ?>" />
|
||||
<input type="hidden" name="_wp_http_referer" value="<?php echo esc_attr( wp_get_referer() ); ?>" />
|
||||
<?php wp_nonce_field( $_GET['action2'], '_wpnonce', false ); ?>
|
||||
<p><?php echo esc_html( stripslashes( $_GET['msg'] ) ); ?></p>
|
||||
<?php submit_button( __('Confirm'), 'button' ); ?>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
exit();
|
||||
}
|
||||
|
||||
$updated_action = '';
|
||||
|
||||
$manage_actions = array( 'deleteblog', 'allblogs', 'archiveblog', 'unarchiveblog', 'activateblog', 'deactivateblog', 'unspamblog', 'spamblog', 'unmatureblog', 'matureblog' );
|
||||
if ( in_array( $_GET['action'], $manage_actions ) ) {
|
||||
$action = $_GET['action'];
|
||||
if ( 'allblogs' === $action )
|
||||
$action = 'bulk-sites';
|
||||
|
||||
check_admin_referer( $action );
|
||||
}
|
||||
|
||||
switch ( $_GET['action'] ) {
|
||||
|
||||
case 'deleteblog':
|
||||
if ( ! current_user_can( 'delete_sites' ) )
|
||||
wp_die( __( 'You do not have permission to access this page.' ) );
|
||||
|
||||
$updated_action = 'not_deleted';
|
||||
if ( $id != '0' && $id != $current_site->blog_id && current_user_can( 'delete_site', $id ) ) {
|
||||
wpmu_delete_blog( $id, true );
|
||||
$updated_action = 'delete';
|
||||
}
|
||||
break;
|
||||
|
||||
case 'allblogs':
|
||||
if ( ( isset( $_POST['action'] ) || isset( $_POST['action2'] ) ) && isset( $_POST['allblogs'] ) ) {
|
||||
$doaction = $_POST['action'] != -1 ? $_POST['action'] : $_POST['action2'];
|
||||
|
||||
foreach ( (array) $_POST['allblogs'] as $key => $val ) {
|
||||
if ( $val != '0' && $val != $current_site->blog_id ) {
|
||||
switch ( $doaction ) {
|
||||
case 'delete':
|
||||
if ( ! current_user_can( 'delete_site', $val ) )
|
||||
wp_die( __( 'You are not allowed to delete the site.' ) );
|
||||
|
||||
$updated_action = 'all_delete';
|
||||
wpmu_delete_blog( $val, true );
|
||||
break;
|
||||
|
||||
case 'spam':
|
||||
case 'notspam':
|
||||
$updated_action = ( 'spam' === $doaction ) ? 'all_spam' : 'all_notspam';
|
||||
update_blog_status( $val, 'spam', ( 'spam' === $doaction ) ? '1' : '0' );
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
wp_die( __( 'You are not allowed to change the current site.' ) );
|
||||
}
|
||||
}
|
||||
} else {
|
||||
wp_redirect( network_admin_url( 'sites.php' ) );
|
||||
exit();
|
||||
}
|
||||
break;
|
||||
|
||||
case 'archiveblog':
|
||||
case 'unarchiveblog':
|
||||
update_blog_status( $id, 'archived', ( 'archiveblog' === $_GET['action'] ) ? '1' : '0' );
|
||||
break;
|
||||
|
||||
case 'activateblog':
|
||||
update_blog_status( $id, 'deleted', '0' );
|
||||
do_action( 'activate_blog', $id );
|
||||
break;
|
||||
|
||||
case 'deactivateblog':
|
||||
do_action( 'deactivate_blog', $id );
|
||||
update_blog_status( $id, 'deleted', '1' );
|
||||
break;
|
||||
|
||||
case 'unspamblog':
|
||||
case 'spamblog':
|
||||
update_blog_status( $id, 'spam', ( 'spamblog' === $_GET['action'] ) ? '1' : '0' );
|
||||
break;
|
||||
|
||||
case 'unmatureblog':
|
||||
case 'matureblog':
|
||||
update_blog_status( $id, 'mature', ( 'matureblog' === $_GET['action'] ) ? '1' : '0' );
|
||||
break;
|
||||
}
|
||||
|
||||
if ( empty( $updated_action ) && in_array( $_GET['action'], $manage_actions ) )
|
||||
$updated_action = $_GET['action'];
|
||||
|
||||
if ( ! empty( $updated_action ) ) {
|
||||
wp_safe_redirect( add_query_arg( array( 'updated' => $updated_action ), wp_get_referer() ) );
|
||||
exit();
|
||||
}
|
||||
}
|
||||
|
||||
$msg = '';
|
||||
if ( isset( $_GET['updated'] ) ) {
|
||||
switch ( $_GET['updated'] ) {
|
||||
case 'all_notspam':
|
||||
$msg = __( 'Sites removed from spam.' );
|
||||
break;
|
||||
case 'all_spam':
|
||||
$msg = __( 'Sites marked as spam.' );
|
||||
break;
|
||||
case 'all_delete':
|
||||
$msg = __( 'Sites deleted.' );
|
||||
break;
|
||||
case 'delete':
|
||||
$msg = __( 'Site deleted.' );
|
||||
break;
|
||||
case 'not_deleted':
|
||||
$msg = __( 'You do not have permission to delete that site.' );
|
||||
break;
|
||||
case 'archiveblog':
|
||||
$msg = __( 'Site archived.' );
|
||||
break;
|
||||
case 'unarchiveblog':
|
||||
$msg = __( 'Site unarchived.' );
|
||||
break;
|
||||
case 'activateblog':
|
||||
$msg = __( 'Site activated.' );
|
||||
break;
|
||||
case 'deactivateblog':
|
||||
$msg = __( 'Site deactivated.' );
|
||||
break;
|
||||
case 'unspamblog':
|
||||
$msg = __( 'Site removed from spam.' );
|
||||
break;
|
||||
case 'spamblog':
|
||||
$msg = __( 'Site marked as spam.' );
|
||||
break;
|
||||
default:
|
||||
$msg = apply_filters( 'network_sites_updated_message_' . $_GET['updated'], __( 'Settings saved.' ) );
|
||||
break;
|
||||
}
|
||||
|
||||
if ( ! empty( $msg ) )
|
||||
$msg = '<div class="updated" id="message"><p>' . $msg . '</p></div>';
|
||||
}
|
||||
|
||||
$wp_list_table->prepare_items();
|
||||
|
||||
require_once( '../admin-header.php' );
|
||||
?>
|
||||
|
||||
<div class="wrap">
|
||||
<?php screen_icon( 'ms-admin' ); ?>
|
||||
<h2><?php _e( 'Sites' ) ?>
|
||||
|
||||
<?php if ( current_user_can( 'create_sites') ) : ?>
|
||||
<a href="<?php echo network_admin_url('site-new.php'); ?>" class="add-new-h2"><?php echo esc_html_x( 'Add New', 'site' ); ?></a>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ( isset( $_REQUEST['s'] ) && $_REQUEST['s'] ) {
|
||||
printf( '<span class="subtitle">' . __( 'Search results for “%s”' ) . '</span>', esc_html( $s ) );
|
||||
} ?>
|
||||
</h2>
|
||||
|
||||
<?php echo $msg; ?>
|
||||
|
||||
<form action="" method="get" id="ms-search">
|
||||
<?php $wp_list_table->search_box( __( 'Search Sites' ), 'site' ); ?>
|
||||
<input type="hidden" name="action" value="blogs" />
|
||||
</form>
|
||||
|
||||
<form id="form-site-list" action="sites.php?action=allblogs" method="post">
|
||||
<?php $wp_list_table->display(); ?>
|
||||
</form>
|
||||
</div>
|
||||
<?php
|
||||
|
||||
require_once( '../admin-footer.php' ); ?>
|
16
wp-admin/network/theme-editor.php
Normal file
16
wp-admin/network/theme-editor.php
Normal file
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
/**
|
||||
* Theme editor network administration panel.
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Multisite
|
||||
* @since 3.1.0
|
||||
*/
|
||||
|
||||
/** Load WordPress Administration Bootstrap */
|
||||
require_once( './admin.php' );
|
||||
|
||||
if ( ! is_multisite() )
|
||||
wp_die( __( 'Multisite support is not enabled.' ) );
|
||||
|
||||
require( '../theme-editor.php' );
|
19
wp-admin/network/theme-install.php
Normal file
19
wp-admin/network/theme-install.php
Normal file
@ -0,0 +1,19 @@
|
||||
<?php
|
||||
/**
|
||||
* Install theme network administration panel.
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Multisite
|
||||
* @since 3.1.0
|
||||
*/
|
||||
|
||||
if ( isset( $_GET['tab'] ) && ( 'theme-information' == $_GET['tab'] ) )
|
||||
define( 'IFRAME_REQUEST', true );
|
||||
|
||||
/** Load WordPress Administration Bootstrap */
|
||||
require_once( './admin.php' );
|
||||
|
||||
if ( ! is_multisite() )
|
||||
wp_die( __( 'Multisite support is not enabled.' ) );
|
||||
|
||||
require( '../theme-install.php' );
|
273
wp-admin/network/themes.php
Normal file
273
wp-admin/network/themes.php
Normal file
@ -0,0 +1,273 @@
|
||||
<?php
|
||||
/**
|
||||
* Multisite themes administration panel.
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Multisite
|
||||
* @since 3.1.0
|
||||
*/
|
||||
|
||||
/** Load WordPress Administration Bootstrap */
|
||||
require_once( './admin.php' );
|
||||
|
||||
if ( ! is_multisite() )
|
||||
wp_die( __( 'Multisite support is not enabled.' ) );
|
||||
|
||||
if ( !current_user_can('manage_network_themes') )
|
||||
wp_die( __( 'You do not have sufficient permissions to manage network themes.' ) );
|
||||
|
||||
$wp_list_table = _get_list_table('WP_MS_Themes_List_Table');
|
||||
$pagenum = $wp_list_table->get_pagenum();
|
||||
|
||||
$action = $wp_list_table->current_action();
|
||||
|
||||
$s = isset($_REQUEST['s']) ? $_REQUEST['s'] : '';
|
||||
|
||||
// Clean up request URI from temporary args for screen options/paging uri's to work as expected.
|
||||
$temp_args = array( 'enabled', 'disabled', 'deleted', 'error' );
|
||||
$_SERVER['REQUEST_URI'] = remove_query_arg( $temp_args, $_SERVER['REQUEST_URI'] );
|
||||
$referer = remove_query_arg( $temp_args, wp_get_referer() );
|
||||
|
||||
if ( $action ) {
|
||||
$allowed_themes = get_site_option( 'allowedthemes' );
|
||||
switch ( $action ) {
|
||||
case 'enable':
|
||||
check_admin_referer('enable-theme_' . $_GET['theme']);
|
||||
$allowed_themes[ $_GET['theme'] ] = true;
|
||||
update_site_option( 'allowedthemes', $allowed_themes );
|
||||
if ( false === strpos( $referer, '/network/themes.php' ) )
|
||||
wp_redirect( network_admin_url( 'themes.php?enabled=1' ) );
|
||||
else
|
||||
wp_safe_redirect( add_query_arg( 'enabled', 1, $referer ) );
|
||||
exit;
|
||||
break;
|
||||
case 'disable':
|
||||
check_admin_referer('disable-theme_' . $_GET['theme']);
|
||||
unset( $allowed_themes[ $_GET['theme'] ] );
|
||||
update_site_option( 'allowedthemes', $allowed_themes );
|
||||
wp_safe_redirect( add_query_arg( 'disabled', '1', $referer ) );
|
||||
exit;
|
||||
break;
|
||||
case 'enable-selected':
|
||||
check_admin_referer('bulk-themes');
|
||||
$themes = isset( $_POST['checked'] ) ? (array) $_POST['checked'] : array();
|
||||
if ( empty($themes) ) {
|
||||
wp_safe_redirect( add_query_arg( 'error', 'none', $referer ) );
|
||||
exit;
|
||||
}
|
||||
foreach( (array) $themes as $theme )
|
||||
$allowed_themes[ $theme ] = true;
|
||||
update_site_option( 'allowedthemes', $allowed_themes );
|
||||
wp_safe_redirect( add_query_arg( 'enabled', count( $themes ), $referer ) );
|
||||
exit;
|
||||
break;
|
||||
case 'disable-selected':
|
||||
check_admin_referer('bulk-themes');
|
||||
$themes = isset( $_POST['checked'] ) ? (array) $_POST['checked'] : array();
|
||||
if ( empty($themes) ) {
|
||||
wp_safe_redirect( add_query_arg( 'error', 'none', $referer ) );
|
||||
exit;
|
||||
}
|
||||
foreach( (array) $themes as $theme )
|
||||
unset( $allowed_themes[ $theme ] );
|
||||
update_site_option( 'allowedthemes', $allowed_themes );
|
||||
wp_safe_redirect( add_query_arg( 'disabled', count( $themes ), $referer ) );
|
||||
exit;
|
||||
break;
|
||||
case 'update-selected' :
|
||||
check_admin_referer( 'bulk-themes' );
|
||||
|
||||
if ( isset( $_GET['themes'] ) )
|
||||
$themes = explode( ',', $_GET['themes'] );
|
||||
elseif ( isset( $_POST['checked'] ) )
|
||||
$themes = (array) $_POST['checked'];
|
||||
else
|
||||
$themes = array();
|
||||
|
||||
$title = __( 'Update Themes' );
|
||||
$parent_file = 'themes.php';
|
||||
|
||||
require_once(ABSPATH . 'wp-admin/admin-header.php');
|
||||
|
||||
echo '<div class="wrap">';
|
||||
screen_icon();
|
||||
echo '<h2>' . esc_html( $title ) . '</h2>';
|
||||
|
||||
$url = self_admin_url('update.php?action=update-selected-themes&themes=' . urlencode( join(',', $themes) ));
|
||||
$url = wp_nonce_url($url, 'bulk-update-themes');
|
||||
|
||||
echo "<iframe src='$url' style='width: 100%; height:100%; min-height:850px;'></iframe>";
|
||||
echo '</div>';
|
||||
require_once(ABSPATH . 'wp-admin/admin-footer.php');
|
||||
exit;
|
||||
break;
|
||||
case 'delete-selected':
|
||||
if ( ! current_user_can( 'delete_themes' ) )
|
||||
wp_die( __('You do not have sufficient permissions to delete themes for this site.') );
|
||||
check_admin_referer( 'bulk-themes' );
|
||||
|
||||
$themes = isset( $_REQUEST['checked'] ) ? (array) $_REQUEST['checked'] : array();
|
||||
|
||||
unset( $themes[ get_option( 'stylesheet' ) ], $themes[ get_option( 'template' ) ] );
|
||||
|
||||
if ( empty( $themes ) ) {
|
||||
wp_safe_redirect( add_query_arg( 'error', 'none', $referer ) );
|
||||
exit;
|
||||
}
|
||||
|
||||
$files_to_delete = $theme_info = array();
|
||||
foreach ( $themes as $key => $theme ) {
|
||||
$theme_info[ $theme ] = wp_get_theme( $theme );
|
||||
$files_to_delete = array_merge( $files_to_delete, list_files( $theme_info[ $theme ]->get_stylesheet_directory() ) );
|
||||
}
|
||||
|
||||
if ( empty( $themes ) ) {
|
||||
wp_safe_redirect( add_query_arg( 'error', 'main', $referer ) );
|
||||
exit;
|
||||
}
|
||||
|
||||
include(ABSPATH . 'wp-admin/update.php');
|
||||
|
||||
$parent_file = 'themes.php';
|
||||
|
||||
if ( ! isset( $_REQUEST['verify-delete'] ) ) {
|
||||
wp_enqueue_script( 'jquery' );
|
||||
require_once( ABSPATH . 'wp-admin/admin-header.php' );
|
||||
?>
|
||||
<div class="wrap">
|
||||
<?php
|
||||
$themes_to_delete = count( $themes );
|
||||
screen_icon();
|
||||
echo '<h2>' . _n( 'Delete Theme', 'Delete Themes', $themes_to_delete ) . '</h2>';
|
||||
?>
|
||||
<div class="error"><p><strong><?php _e( 'Caution:' ); ?></strong> <?php echo _n( 'This theme may be active on other sites in the network.', 'These themes may be active on other sites in the network.', $themes_to_delete ); ?></p></div>
|
||||
<p><?php echo _n( 'You are about to remove the following theme:', 'You are about to remove the following themes:', $themes_to_delete ); ?></p>
|
||||
<ul class="ul-disc">
|
||||
<?php foreach ( $theme_info as $theme )
|
||||
echo '<li>', sprintf( __('<strong>%1$s</strong> by <em>%2$s</em>' ), $theme->display('Name'), $theme->display('Author') ), '</li>'; /* translators: 1: theme name, 2: theme author */ ?>
|
||||
</ul>
|
||||
<p><?php _e('Are you sure you wish to delete these themes?'); ?></p>
|
||||
<form method="post" action="<?php echo esc_url($_SERVER['REQUEST_URI']); ?>" style="display:inline;">
|
||||
<input type="hidden" name="verify-delete" value="1" />
|
||||
<input type="hidden" name="action" value="delete-selected" />
|
||||
<?php
|
||||
foreach ( (array) $themes as $theme )
|
||||
echo '<input type="hidden" name="checked[]" value="' . esc_attr($theme) . '" />';
|
||||
?>
|
||||
<?php wp_nonce_field('bulk-themes') ?>
|
||||
<?php submit_button( _n( 'Yes, Delete this theme', 'Yes, Delete these themes', $themes_to_delete ), 'button', 'submit', false ); ?>
|
||||
</form>
|
||||
<form method="post" action="<?php echo esc_url(wp_get_referer()); ?>" style="display:inline;">
|
||||
<?php submit_button( __( 'No, Return me to the theme list' ), 'button', 'submit', false ); ?>
|
||||
</form>
|
||||
|
||||
<p><a href="#" onclick="jQuery('#files-list').toggle(); return false;"><?php _e('Click to view entire list of files which will be deleted'); ?></a></p>
|
||||
<div id="files-list" style="display:none;">
|
||||
<ul class="code">
|
||||
<?php
|
||||
foreach ( (array) $files_to_delete as $file )
|
||||
echo '<li>' . esc_html( str_replace( WP_CONTENT_DIR . "/themes", '', $file) ) . '</li>';
|
||||
?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
require_once(ABSPATH . 'wp-admin/admin-footer.php');
|
||||
exit;
|
||||
} // Endif verify-delete
|
||||
|
||||
foreach ( $themes as $theme ) {
|
||||
$delete_result = delete_theme( $theme, esc_url( add_query_arg( array(
|
||||
'verify-delete' => 1,
|
||||
'action' => 'delete-selected',
|
||||
'checked' => $_REQUEST['checked'],
|
||||
'_wpnonce' => $_REQUEST['_wpnonce']
|
||||
), network_admin_url( 'themes.php' ) ) ) );
|
||||
}
|
||||
|
||||
$paged = ( $_REQUEST['paged'] ) ? $_REQUEST['paged'] : 1;
|
||||
wp_redirect( add_query_arg( array(
|
||||
'deleted' => count( $themes ),
|
||||
'paged' => $paged,
|
||||
's' => $s
|
||||
), network_admin_url( 'themes.php' ) ) );
|
||||
exit;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$wp_list_table->prepare_items();
|
||||
|
||||
add_thickbox();
|
||||
|
||||
add_screen_option( 'per_page', array('label' => _x( 'Themes', 'themes per page (screen options)' )) );
|
||||
|
||||
get_current_screen()->add_help_tab( array(
|
||||
'id' => 'overview',
|
||||
'title' => __('Overview'),
|
||||
'content' =>
|
||||
'<p>' . __('This screen enables and disables the inclusion of themes available to choose in the Appearance menu for each site. It does not activate or deactivate which theme a site is currently using.') . '</p>' .
|
||||
'<p>' . __('If the network admin disables a theme that is in use, it can still remain selected on that site. If another theme is chosen, the disabled theme will not appear in the site’s Appearance > Themes screen.') . '</p>' .
|
||||
'<p>' . __('Themes can be enabled on a site by site basis by the network admin on the Edit Site screen (which has a Themes tab); get there via the Edit action link on the All Sites screen. Only network admins are able to install or edit themes.') . '</p>'
|
||||
) );
|
||||
|
||||
get_current_screen()->set_help_sidebar(
|
||||
'<p><strong>' . __('For more information:') . '</strong></p>' .
|
||||
'<p>' . __('<a href="http://codex.wordpress.org/Network_Admin_Themes_Screen" target="_blank">Documentation on Network Themes</a>') . '</p>' .
|
||||
'<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
|
||||
);
|
||||
|
||||
$title = __('Themes');
|
||||
$parent_file = 'themes.php';
|
||||
|
||||
require_once(ABSPATH . 'wp-admin/admin-header.php');
|
||||
|
||||
?>
|
||||
|
||||
<div class="wrap">
|
||||
<?php screen_icon('themes'); ?>
|
||||
<h2><?php echo esc_html( $title ); if ( current_user_can('install_themes') ) { ?> <a href="theme-install.php" class="add-new-h2"><?php echo esc_html_x('Add New', 'theme'); ?></a><?php }
|
||||
if ( $s )
|
||||
printf( '<span class="subtitle">' . __('Search results for “%s”') . '</span>', esc_html( $s ) ); ?>
|
||||
</h2>
|
||||
|
||||
<?php
|
||||
if ( isset( $_GET['enabled'] ) ) {
|
||||
$_GET['enabled'] = absint( $_GET['enabled'] );
|
||||
echo '<div id="message" class="updated"><p>' . sprintf( _n( 'Theme enabled.', '%s themes enabled.', $_GET['enabled'] ), number_format_i18n( $_GET['enabled'] ) ) . '</p></div>';
|
||||
} elseif ( isset( $_GET['disabled'] ) ) {
|
||||
$_GET['disabled'] = absint( $_GET['disabled'] );
|
||||
echo '<div id="message" class="updated"><p>' . sprintf( _n( 'Theme disabled.', '%s themes disabled.', $_GET['disabled'] ), number_format_i18n( $_GET['disabled'] ) ) . '</p></div>';
|
||||
} elseif ( isset( $_GET['deleted'] ) ) {
|
||||
$_GET['deleted'] = absint( $_GET['deleted'] );
|
||||
echo '<div id="message" class="updated"><p>' . sprintf( _nx( 'Theme deleted.', '%s themes deleted.', $_GET['deleted'], 'network' ), number_format_i18n( $_GET['deleted'] ) ) . '</p></div>';
|
||||
} elseif ( isset( $_GET['error'] ) && 'none' == $_GET['error'] ) {
|
||||
echo '<div id="message" class="error"><p>' . __( 'No theme selected.' ) . '</p></div>';
|
||||
} elseif ( isset( $_GET['error'] ) && 'main' == $_GET['error'] ) {
|
||||
echo '<div class="error"><p>' . __( 'You cannot delete a theme while it is active on the main site.' ) . '</p></div>';
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<form method="get" action="">
|
||||
<?php $wp_list_table->search_box( __( 'Search Installed Themes' ), 'theme' ); ?>
|
||||
</form>
|
||||
|
||||
<?php
|
||||
$wp_list_table->views();
|
||||
|
||||
if ( 'broken' == $status )
|
||||
echo '<p class="clear">' . __('The following themes are installed but incomplete. Themes must have a stylesheet and a template.') . '</p>';
|
||||
?>
|
||||
|
||||
<form method="post" action="">
|
||||
<input type="hidden" name="theme_status" value="<?php echo esc_attr($status) ?>" />
|
||||
<input type="hidden" name="paged" value="<?php echo esc_attr($page) ?>" />
|
||||
|
||||
<?php $wp_list_table->display(); ?>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
<?php
|
||||
include(ABSPATH . 'wp-admin/admin-footer.php');
|
16
wp-admin/network/update-core.php
Normal file
16
wp-admin/network/update-core.php
Normal file
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
/**
|
||||
* Updates network administration panel.
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Multisite
|
||||
* @since 3.1.0
|
||||
*/
|
||||
|
||||
/** Load WordPress Administration Bootstrap */
|
||||
require_once( './admin.php' );
|
||||
|
||||
if ( ! is_multisite() )
|
||||
wp_die( __( 'Multisite support is not enabled.' ) );
|
||||
|
||||
require( '../update-core.php' );
|
19
wp-admin/network/update.php
Normal file
19
wp-admin/network/update.php
Normal file
@ -0,0 +1,19 @@
|
||||
<?php
|
||||
/**
|
||||
* Update/Install Plugin/Theme network administration panel.
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Multisite
|
||||
* @since 3.1.0
|
||||
*/
|
||||
|
||||
if ( isset( $_GET['action'] ) && in_array( $_GET['action'], array( 'update-selected', 'activate-plugin', 'update-selected-themes' ) ) )
|
||||
define( 'IFRAME_REQUEST', true );
|
||||
|
||||
/** Load WordPress Administration Bootstrap */
|
||||
require_once( './admin.php' );
|
||||
|
||||
if ( ! is_multisite() )
|
||||
wp_die( __( 'Multisite support is not enabled.' ) );
|
||||
|
||||
require( '../update.php' );
|
95
wp-admin/network/upgrade.php
Normal file
95
wp-admin/network/upgrade.php
Normal file
@ -0,0 +1,95 @@
|
||||
<?php
|
||||
/**
|
||||
* Multisite upgrade administration panel.
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Multisite
|
||||
* @since 3.0.0
|
||||
*/
|
||||
|
||||
/** Load WordPress Administration Bootstrap */
|
||||
require_once( './admin.php' );
|
||||
|
||||
if ( ! is_multisite() )
|
||||
wp_die( __( 'Multisite support is not enabled.' ) );
|
||||
|
||||
require_once( ABSPATH . WPINC . '/http.php' );
|
||||
|
||||
$title = __( 'Update Network' );
|
||||
$parent_file = 'upgrade.php';
|
||||
|
||||
get_current_screen()->add_help_tab( array(
|
||||
'id' => 'overview',
|
||||
'title' => __('Overview'),
|
||||
'content' =>
|
||||
'<p>' . __('Only use this screen once you have updated to a new version of WordPress through Updates/Available Updates (via the Network Administration navigation menu or the Toolbar). Clicking the Update Network button will step through each site in the network, five at a time, and make sure any database updates are applied.') . '</p>' .
|
||||
'<p>' . __('If a version update to core has not happened, clicking this button won’t affect anything.') . '</p>' .
|
||||
'<p>' . __('If this process fails for any reason, users logging in to their sites will force the same update.') . '</p>'
|
||||
) );
|
||||
|
||||
get_current_screen()->set_help_sidebar(
|
||||
'<p><strong>' . __('For more information:') . '</strong></p>' .
|
||||
'<p>' . __('<a href="http://codex.wordpress.org/Network_Admin_Updates_Screen" target="_blank">Documentation on Update Network</a>') . '</p>' .
|
||||
'<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
|
||||
);
|
||||
|
||||
require_once('../admin-header.php');
|
||||
|
||||
if ( ! current_user_can( 'manage_network' ) )
|
||||
wp_die( __( 'You do not have permission to access this page.' ) );
|
||||
|
||||
echo '<div class="wrap">';
|
||||
screen_icon('tools');
|
||||
echo '<h2>' . __( 'Update Network' ) . '</h2>';
|
||||
|
||||
$action = isset($_GET['action']) ? $_GET['action'] : 'show';
|
||||
|
||||
switch ( $action ) {
|
||||
case "upgrade":
|
||||
$n = ( isset($_GET['n']) ) ? intval($_GET['n']) : 0;
|
||||
|
||||
if ( $n < 5 ) {
|
||||
global $wp_db_version;
|
||||
update_site_option( 'wpmu_upgrade_site', $wp_db_version );
|
||||
}
|
||||
|
||||
$blogs = $wpdb->get_results( "SELECT * FROM {$wpdb->blogs} WHERE site_id = '{$wpdb->siteid}' AND spam = '0' AND deleted = '0' AND archived = '0' ORDER BY registered DESC LIMIT {$n}, 5", ARRAY_A );
|
||||
if ( empty( $blogs ) ) {
|
||||
echo '<p>' . __( 'All done!' ) . '</p>';
|
||||
break;
|
||||
}
|
||||
echo "<ul>";
|
||||
foreach ( (array) $blogs as $details ) {
|
||||
switch_to_blog( $details['blog_id'] );
|
||||
$siteurl = site_url();
|
||||
$upgrade_url = admin_url( 'upgrade.php?step=upgrade_db' );
|
||||
restore_current_blog();
|
||||
echo "<li>$siteurl</li>";
|
||||
$response = wp_remote_get( $upgrade_url, array( 'timeout' => 120, 'httpversion' => '1.1' ) );
|
||||
if ( is_wp_error( $response ) )
|
||||
wp_die( sprintf( __( 'Warning! Problem updating %1$s. Your server may not be able to connect to sites running on it. Error message: <em>%2$s</em>' ), $siteurl, $response->get_error_message() ) );
|
||||
do_action( 'after_mu_upgrade', $response );
|
||||
do_action( 'wpmu_upgrade_site', $details[ 'blog_id' ] );
|
||||
}
|
||||
echo "</ul>";
|
||||
?><p><?php _e( 'If your browser doesn’t start loading the next page automatically, click this link:' ); ?> <a class="button" href="upgrade.php?action=upgrade&n=<?php echo ($n + 5) ?>"><?php _e("Next Sites"); ?></a></p>
|
||||
<script type='text/javascript'>
|
||||
<!--
|
||||
function nextpage() {
|
||||
location.href = "upgrade.php?action=upgrade&n=<?php echo ($n + 5) ?>";
|
||||
}
|
||||
setTimeout( "nextpage()", 250 );
|
||||
//-->
|
||||
</script><?php
|
||||
break;
|
||||
case 'show':
|
||||
default:
|
||||
?><p><?php _e( 'You can update all the sites on your network through this page. It works by calling the update script of each site automatically. Hit the link below to update.' ); ?></p>
|
||||
<p><a class="button" href="upgrade.php?action=upgrade"><?php _e("Update Network"); ?></a></p><?php
|
||||
do_action( 'wpmu_upgrade_page' );
|
||||
break;
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
|
||||
<?php include('../admin-footer.php'); ?>
|
16
wp-admin/network/user-edit.php
Normal file
16
wp-admin/network/user-edit.php
Normal file
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
/**
|
||||
* Edit user network administration panel.
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Multisite
|
||||
* @since 3.1.0
|
||||
*/
|
||||
|
||||
/** Load WordPress Administration Bootstrap */
|
||||
require_once( './admin.php' );
|
||||
|
||||
if ( ! is_multisite() )
|
||||
wp_die( __( 'Multisite support is not enabled.' ) );
|
||||
|
||||
require( '../user-edit.php' );
|
107
wp-admin/network/user-new.php
Normal file
107
wp-admin/network/user-new.php
Normal file
@ -0,0 +1,107 @@
|
||||
<?php
|
||||
/**
|
||||
* Add Site Administration Screen
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Multisite
|
||||
* @since 3.1.0
|
||||
*/
|
||||
|
||||
/** Load WordPress Administration Bootstrap */
|
||||
require_once( './admin.php' );
|
||||
|
||||
if ( ! is_multisite() )
|
||||
wp_die( __( 'Multisite support is not enabled.' ) );
|
||||
|
||||
if ( ! current_user_can('create_users') )
|
||||
wp_die(__('You do not have sufficient permissions to add users to this network.'));
|
||||
|
||||
get_current_screen()->add_help_tab( array(
|
||||
'id' => 'overview',
|
||||
'title' => __('Overview'),
|
||||
'content' =>
|
||||
'<p>' . __('Add User will set up a new user account on the network and send that person an email with username and password.') . '</p>' .
|
||||
'<p>' . __('Users who are signed up to the network without a site are added as subscribers to the main or primary dashboard site, giving them profile pages to manage their accounts. These users will only see Dashboard and My Sites in the main navigation until a site is created for them.') . '</p>'
|
||||
) );
|
||||
|
||||
get_current_screen()->set_help_sidebar(
|
||||
'<p><strong>' . __('For more information:') . '</strong></p>' .
|
||||
'<p>' . __('<a href="http://codex.wordpress.org/Network_Admin_Users_Screen" target="_blank">Documentation on Network Users</a>') . '</p>' .
|
||||
'<p>' . __('<a href="http://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
|
||||
);
|
||||
|
||||
if ( isset($_REQUEST['action']) && 'add-user' == $_REQUEST['action'] ) {
|
||||
check_admin_referer( 'add-user', '_wpnonce_add-user' );
|
||||
if ( ! current_user_can( 'manage_network_users' ) )
|
||||
wp_die( __( 'You do not have permission to access this page.' ) );
|
||||
|
||||
if ( ! is_array( $_POST['user'] ) )
|
||||
wp_die( __( 'Cannot create an empty user.' ) );
|
||||
|
||||
$user = $_POST['user'];
|
||||
|
||||
$user_details = wpmu_validate_user_signup( $user['username'], $user['email'] );
|
||||
if ( is_wp_error( $user_details[ 'errors' ] ) && ! empty( $user_details[ 'errors' ]->errors ) ) {
|
||||
$add_user_errors = $user_details[ 'errors' ];
|
||||
} else {
|
||||
$password = wp_generate_password( 12, false);
|
||||
$user_id = wpmu_create_user( esc_html( strtolower( $user['username'] ) ), $password, esc_html( $user['email'] ) );
|
||||
|
||||
if ( ! $user_id ) {
|
||||
$add_user_errors = new WP_Error( 'add_user_fail', __( 'Cannot add user.' ) );
|
||||
} else {
|
||||
wp_new_user_notification( $user_id, $password );
|
||||
wp_redirect( add_query_arg( array('update' => 'added'), 'user-new.php' ) );
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( isset($_GET['update']) ) {
|
||||
$messages = array();
|
||||
if ( 'added' == $_GET['update'] )
|
||||
$messages[] = __('User added.');
|
||||
}
|
||||
|
||||
$title = __('Add New User');
|
||||
$parent_file = 'users.php';
|
||||
|
||||
require('../admin-header.php'); ?>
|
||||
|
||||
<div class="wrap">
|
||||
<?php screen_icon(); ?>
|
||||
<h2 id="add-new-user"><?php _e('Add New User') ?></h2>
|
||||
<?php
|
||||
if ( ! empty( $messages ) ) {
|
||||
foreach ( $messages as $msg )
|
||||
echo '<div id="message" class="updated"><p>' . $msg . '</p></div>';
|
||||
}
|
||||
|
||||
if ( isset( $add_user_errors ) && is_wp_error( $add_user_errors ) ) { ?>
|
||||
<div class="error">
|
||||
<?php
|
||||
foreach ( $add_user_errors->get_error_messages() as $message )
|
||||
echo "<p>$message</p>";
|
||||
?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<form action="<?php echo network_admin_url('user-new.php?action=add-user'); ?>" id="adduser" method="post">
|
||||
<table class="form-table">
|
||||
<tr class="form-field form-required">
|
||||
<th scope="row"><?php _e( 'Username' ) ?></th>
|
||||
<td><input type="text" class="regular-text" name="user[username]" /></td>
|
||||
</tr>
|
||||
<tr class="form-field form-required">
|
||||
<th scope="row"><?php _e( 'Email' ) ?></th>
|
||||
<td><input type="text" class="regular-text" name="user[email]" /></td>
|
||||
</tr>
|
||||
<tr class="form-field">
|
||||
<td colspan="2"><?php _e( 'Username and password will be mailed to the above email address.' ) ?></td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php wp_nonce_field( 'add-user', '_wpnonce_add-user' ) ?>
|
||||
<?php submit_button( __('Add User'), 'primary', 'add-user' ); ?>
|
||||
</form>
|
||||
</div>
|
||||
<?php
|
||||
require('../admin-footer.php');
|
299
wp-admin/network/users.php
Normal file
299
wp-admin/network/users.php
Normal file
@ -0,0 +1,299 @@
|
||||
<?php
|
||||
/**
|
||||
* Multisite users administration panel.
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Multisite
|
||||
* @since 3.0.0
|
||||
*/
|
||||
|
||||
/** Load WordPress Administration Bootstrap */
|
||||
require_once( './admin.php' );
|
||||
|
||||
if ( ! is_multisite() )
|
||||
wp_die( __( 'Multisite support is not enabled.' ) );
|
||||
|
||||
if ( ! current_user_can( 'manage_network_users' ) )
|
||||
wp_die( __( 'You do not have permission to access this page.' ) );
|
||||
|
||||
function confirm_delete_users( $users ) {
|
||||
$current_user = wp_get_current_user();
|
||||
if ( !is_array( $users ) )
|
||||
return false;
|
||||
|
||||
screen_icon();
|
||||
?>
|
||||
<h2><?php esc_html_e( 'Users' ); ?></h2>
|
||||
<p><?php _e( 'Transfer or delete posts before deleting users.' ); ?></p>
|
||||
<form action="users.php?action=dodelete" method="post">
|
||||
<input type="hidden" name="dodelete" />
|
||||
<?php
|
||||
wp_nonce_field( 'ms-users-delete' );
|
||||
$site_admins = get_super_admins();
|
||||
$admin_out = "<option value='$current_user->ID'>$current_user->user_login</option>";
|
||||
|
||||
foreach ( ( $allusers = (array) $_POST['allusers'] ) as $key => $val ) {
|
||||
if ( $val != '' && $val != '0' ) {
|
||||
$delete_user = get_userdata( $val );
|
||||
|
||||
if ( ! current_user_can( 'delete_user', $delete_user->ID ) )
|
||||
wp_die( sprintf( __( 'Warning! User %s cannot be deleted.' ), $delete_user->user_login ) );
|
||||
|
||||
if ( in_array( $delete_user->user_login, $site_admins ) )
|
||||
wp_die( sprintf( __( 'Warning! User cannot be deleted. The user %s is a network administrator.' ), $delete_user->user_login ) );
|
||||
|
||||
echo "<input type='hidden' name='user[]' value='{$val}'/>\n";
|
||||
$blogs = get_blogs_of_user( $val, true );
|
||||
|
||||
if ( !empty( $blogs ) ) {
|
||||
?>
|
||||
<br /><fieldset><p><legend><?php printf( __( "What should be done with posts owned by <em>%s</em>?" ), $delete_user->user_login ); ?></legend></p>
|
||||
<?php
|
||||
foreach ( (array) $blogs as $key => $details ) {
|
||||
$blog_users = get_users( array( 'blog_id' => $details->userblog_id ) );
|
||||
if ( is_array( $blog_users ) && !empty( $blog_users ) ) {
|
||||
$user_site = "<a href='" . esc_url( get_home_url( $details->userblog_id ) ) . "'>{$details->blogname}</a>";
|
||||
$user_dropdown = "<select name='blog[$val][{$key}]'>";
|
||||
$user_list = '';
|
||||
foreach ( $blog_users as $user ) {
|
||||
if ( ! in_array( $user->ID, $allusers ) )
|
||||
$user_list .= "<option value='{$user->ID}'>{$user->user_login}</option>";
|
||||
}
|
||||
if ( '' == $user_list )
|
||||
$user_list = $admin_out;
|
||||
$user_dropdown .= $user_list;
|
||||
$user_dropdown .= "</select>\n";
|
||||
?>
|
||||
<ul style="list-style:none;">
|
||||
<li><?php printf( __( 'Site: %s' ), $user_site ); ?></li>
|
||||
<li><label><input type="radio" id="delete_option0" name="delete[<?php echo $details->userblog_id . '][' . $delete_user->ID ?>]" value="delete" checked="checked" />
|
||||
<?php _e( 'Delete all posts.' ); ?></label></li>
|
||||
<li><label><input type="radio" id="delete_option1" name="delete[<?php echo $details->userblog_id . '][' . $delete_user->ID ?>]" value="reassign" />
|
||||
<?php echo __( 'Attribute all posts to:' ) . '</label>' . $user_dropdown; ?></li>
|
||||
</ul>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
echo "</fieldset>";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
submit_button( __('Confirm Deletion'), 'delete' );
|
||||
?>
|
||||
</form>
|
||||
<?php
|
||||
return true;
|
||||
}
|
||||
|
||||
if ( isset( $_GET['action'] ) ) {
|
||||
do_action( 'wpmuadminedit' , '' );
|
||||
|
||||
switch ( $_GET['action'] ) {
|
||||
case 'deleteuser':
|
||||
if ( ! current_user_can( 'manage_network_users' ) )
|
||||
wp_die( __( 'You do not have permission to access this page.' ) );
|
||||
|
||||
check_admin_referer( 'deleteuser' );
|
||||
|
||||
$id = intval( $_GET['id'] );
|
||||
if ( $id != '0' && $id != '1' ) {
|
||||
$_POST['allusers'] = array( $id ); // confirm_delete_users() can only handle with arrays
|
||||
$title = __( 'Users' );
|
||||
$parent_file = 'users.php';
|
||||
require_once( '../admin-header.php' );
|
||||
echo '<div class="wrap">';
|
||||
confirm_delete_users( $_POST['allusers'] );
|
||||
echo '</div>';
|
||||
require_once( '../admin-footer.php' );
|
||||
} else {
|
||||
wp_redirect( network_admin_url( 'users.php' ) );
|
||||
}
|
||||
exit();
|
||||
break;
|
||||
|
||||
case 'allusers':
|
||||
if ( !current_user_can( 'manage_network_users' ) )
|
||||
wp_die( __( 'You do not have permission to access this page.' ) );
|
||||
|
||||
if ( ( isset( $_POST['action']) || isset($_POST['action2'] ) ) && isset( $_POST['allusers'] ) ) {
|
||||
check_admin_referer( 'bulk-users-network' );
|
||||
|
||||
$doaction = $_POST['action'] != -1 ? $_POST['action'] : $_POST['action2'];
|
||||
$userfunction = '';
|
||||
|
||||
foreach ( (array) $_POST['allusers'] as $key => $val ) {
|
||||
if ( !empty( $val ) ) {
|
||||
switch ( $doaction ) {
|
||||
case 'delete':
|
||||
if ( ! current_user_can( 'delete_users' ) )
|
||||
wp_die( __( 'You do not have permission to access this page.' ) );
|
||||
$title = __( 'Users' );
|
||||
$parent_file = 'users.php';
|
||||
require_once( '../admin-header.php' );
|
||||
echo '<div class="wrap">';
|
||||
confirm_delete_users( $_POST['allusers'] );
|
||||
echo '</div>';
|
||||
require_once( '../admin-footer.php' );
|
||||
exit();
|
||||
break;
|
||||
|
||||
case 'spam':
|
||||
$user = get_userdata( $val );
|
||||
if ( is_super_admin( $user->ID ) )
|
||||
wp_die( sprintf( __( 'Warning! User cannot be modified. The user %s is a network administrator.' ), esc_html( $user->user_login ) ) );
|
||||
|
||||
$userfunction = 'all_spam';
|
||||
$blogs = get_blogs_of_user( $val, true );
|
||||
foreach ( (array) $blogs as $key => $details ) {
|
||||
if ( $details->userblog_id != $current_site->blog_id ) // main blog not a spam !
|
||||
update_blog_status( $details->userblog_id, 'spam', '1' );
|
||||
}
|
||||
update_user_status( $val, 'spam', '1' );
|
||||
break;
|
||||
|
||||
case 'notspam':
|
||||
$userfunction = 'all_notspam';
|
||||
$blogs = get_blogs_of_user( $val, true );
|
||||
foreach ( (array) $blogs as $key => $details )
|
||||
update_blog_status( $details->userblog_id, 'spam', '0' );
|
||||
|
||||
update_user_status( $val, 'spam', '0' );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
wp_safe_redirect( add_query_arg( array( 'updated' => 'true', 'action' => $userfunction ), wp_get_referer() ) );
|
||||
} else {
|
||||
$location = network_admin_url( 'users.php' );
|
||||
|
||||
if ( ! empty( $_REQUEST['paged'] ) )
|
||||
$location = add_query_arg( 'paged', (int) $_REQUEST['paged'], $location );
|
||||
wp_redirect( $location );
|
||||
}
|
||||
exit();
|
||||
break;
|
||||
|
||||
case 'dodelete':
|
||||
check_admin_referer( 'ms-users-delete' );
|
||||
if ( ! ( current_user_can( 'manage_network_users' ) && current_user_can( 'delete_users' ) ) )
|
||||
wp_die( __( 'You do not have permission to access this page.' ) );
|
||||
|
||||
if ( ! empty( $_POST['blog'] ) && is_array( $_POST['blog'] ) ) {
|
||||
foreach ( $_POST['blog'] as $id => $users ) {
|
||||
foreach ( $users as $blogid => $user_id ) {
|
||||
if ( ! current_user_can( 'delete_user', $id ) )
|
||||
continue;
|
||||
|
||||
if ( ! empty( $_POST['delete'] ) && 'reassign' == $_POST['delete'][$blogid][$id] )
|
||||
remove_user_from_blog( $id, $blogid, $user_id );
|
||||
else
|
||||
remove_user_from_blog( $id, $blogid );
|
||||
}
|
||||
}
|
||||
}
|
||||
$i = 0;
|
||||
if ( is_array( $_POST['user'] ) && ! empty( $_POST['user'] ) )
|
||||
foreach( $_POST['user'] as $id ) {
|
||||
if ( ! current_user_can( 'delete_user', $id ) )
|
||||
continue;
|
||||
wpmu_delete_user( $id );
|
||||
$i++;
|
||||
}
|
||||
|
||||
if ( $i == 1 )
|
||||
$deletefunction = 'delete';
|
||||
else
|
||||
$deletefunction = 'all_delete';
|
||||
|
||||
wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => $deletefunction ), network_admin_url( 'users.php' ) ) );
|
||||
exit();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$wp_list_table = _get_list_table('WP_MS_Users_List_Table');
|
||||
$pagenum = $wp_list_table->get_pagenum();
|
||||
$wp_list_table->prepare_items();
|
||||
$total_pages = $wp_list_table->get_pagination_arg( 'total_pages' );
|
||||
|
||||
if ( $pagenum > $total_pages && $total_pages > 0 ) {
|
||||
wp_redirect( add_query_arg( 'paged', $total_pages ) );
|
||||
exit;
|
||||
}
|
||||
$title = __( 'Users' );
|
||||
$parent_file = 'users.php';
|
||||
|
||||
add_screen_option( 'per_page', array('label' => _x( 'Users', 'users per page (screen options)' )) );
|
||||
|
||||
get_current_screen()->add_help_tab( array(
|
||||
'id' => 'overview',
|
||||
'title' => __('Overview'),
|
||||
'content' =>
|
||||
'<p>' . __('This table shows all users across the network and the sites to which they are assigned.') . '</p>' .
|
||||
'<p>' . __('Hover over any user on the list to make the edit links appear. The Edit link on the left will take you to his or her Edit User profile page; the Edit link on the right by any site name goes to an Edit Site screen for that site.') . '</p>' .
|
||||
'<p>' . __('You can also go to the user’s profile page by clicking on the individual username.') . '</p>' .
|
||||
'<p>' . __('You can sort the table by clicking on any of the bold headings and switch between list and excerpt views by using the icons in the upper right.') . '</p>' .
|
||||
'<p>' . __('The bulk action will permanently delete selected users, or mark/unmark those selected as spam. Spam users will have posts removed and will be unable to sign up again with the same email addresses.') . '</p>' .
|
||||
'<p>' . __('You can make an existing user an additional super admin by going to the Edit User profile page and checking the box to grant that privilege.') . '</p>'
|
||||
) );
|
||||
|
||||
get_current_screen()->set_help_sidebar(
|
||||
'<p><strong>' . __('For more information:') . '</strong></p>' .
|
||||
'<p>' . __('<a href="http://codex.wordpress.org/Network_Admin_Users_Screen" target="_blank">Documentation on Network Users</a>') . '</p>' .
|
||||
'<p>' . __('<a href="http://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
|
||||
);
|
||||
|
||||
require_once( '../admin-header.php' );
|
||||
|
||||
if ( isset( $_REQUEST['updated'] ) && $_REQUEST['updated'] == 'true' && ! empty( $_REQUEST['action'] ) ) {
|
||||
?>
|
||||
<div id="message" class="updated"><p>
|
||||
<?php
|
||||
switch ( $_REQUEST['action'] ) {
|
||||
case 'delete':
|
||||
_e( 'User deleted.' );
|
||||
break;
|
||||
case 'all_spam':
|
||||
_e( 'Users marked as spam.' );
|
||||
break;
|
||||
case 'all_notspam':
|
||||
_e( 'Users removed from spam.' );
|
||||
break;
|
||||
case 'all_delete':
|
||||
_e( 'Users deleted.' );
|
||||
break;
|
||||
case 'add':
|
||||
_e( 'User added.' );
|
||||
break;
|
||||
}
|
||||
?>
|
||||
</p></div>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<div class="wrap">
|
||||
<?php screen_icon(); ?>
|
||||
<h2><?php esc_html_e( 'Users' );
|
||||
if ( current_user_can( 'create_users') ) : ?>
|
||||
<a href="<?php echo network_admin_url('user-new.php'); ?>" class="add-new-h2"><?php echo esc_html_x( 'Add New', 'user' ); ?></a><?php
|
||||
endif;
|
||||
|
||||
if ( !empty( $usersearch ) )
|
||||
printf( '<span class="subtitle">' . __( 'Search results for “%s”' ) . '</span>', esc_html( $usersearch ) );
|
||||
?>
|
||||
</h2>
|
||||
|
||||
<?php $wp_list_table->views(); ?>
|
||||
|
||||
<form action="" method="get" class="search-form">
|
||||
<?php $wp_list_table->search_box( __( 'Search Users' ), 'all-user' ); ?>
|
||||
</form>
|
||||
|
||||
<form id="form-user-list" action='users.php?action=allusers' method='post'>
|
||||
<?php $wp_list_table->display(); ?>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<?php require_once( '../admin-footer.php' ); ?>
|
Reference in New Issue
Block a user