2010-10-21 09:49:49 -04:00
< ? php
/**
* Add Site Administration Screen
*
* @ package WordPress
2010-11-10 09:27:15 -05:00
* @ subpackage Multisite
2010-10-21 11:38:50 -04:00
* @ since 3.1 . 0
2010-10-21 09:49:49 -04:00
*/
/** Load WordPress Administration Bootstrap */
2013-09-24 20:18:11 -04:00
require_once ( dirname ( __FILE__ ) . '/admin.php' );
2010-10-21 09:49:49 -04:00
if ( ! is_multisite () )
wp_die ( __ ( 'Multisite support is not enabled.' ) );
2010-12-16 02:41:38 -05:00
if ( ! current_user_can ( 'manage_sites' ) )
wp_die ( __ ( 'You do not have sufficient permissions to add sites to this network.' ) );
2010-10-21 09:49:49 -04:00
2011-11-30 21:22:07 -05:00
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>'
) );
2011-11-02 01:33:53 -04:00
2011-11-02 17:32:16 -04:00
get_current_screen () -> set_help_sidebar (
2010-12-16 01:52:47 -05:00
'<p><strong>' . __ ( 'For more information:' ) . '</strong></p>' .
2012-05-03 09:34:33 -04:00
'<p>' . __ ( '<a href="http://codex.wordpress.org/Network_Admin_Sites_Screen" target="_blank">Documentation on Site Management</a>' ) . '</p>' .
2010-12-25 14:21:00 -05:00
'<p>' . __ ( '<a href="http://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>' ) . '</p>'
2010-12-16 01:52:47 -05:00
);
2010-10-21 09:49:49 -04:00
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.' ) );
2010-12-16 02:41:38 -05:00
if ( ! is_array ( $_POST [ 'blog' ] ) )
2010-11-11 11:57:22 -05:00
wp_die ( __ ( 'Can’t create an empty site.' ) );
2013-03-01 11:28:40 -05:00
$blog = $_POST [ 'blog' ];
2010-10-21 09:49:49 -04:00
$domain = '' ;
2011-07-26 17:35:39 -04:00
if ( preg_match ( '|^([a-zA-Z0-9-])+$|' , $blog [ 'domain' ] ) )
2010-10-21 09:49:49 -04:00
$domain = strtolower ( $blog [ 'domain' ] );
// If not a subdomain install, make sure the domain isn't a reserved word
if ( ! is_subdomain_install () ) {
2013-10-30 10:39:10 -04:00
/** This filter is documented in wp-includes/ms-functions.php */
2010-10-21 09:49:49 -04:00
$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 );
2012-09-27 02:07:21 -04:00
$path = $current_site -> path ;
2010-10-21 09:49:49 -04:00
} else {
$newdomain = $current_site -> domain ;
2012-09-27 02:07:21 -04:00
$path = $current_site -> path . $domain . '/' ;
2010-10-21 09:49:49 -04:00
}
$password = 'N/A' ;
$user_id = email_exists ( $email );
if ( ! $user_id ) { // Create a new user with a random password
2010-11-10 18:31:54 -05:00
$password = wp_generate_password ( 12 , false );
2010-10-21 09:49:49 -04:00
$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 );
2012-11-19 01:11:42 -05:00
$content_mail = sprintf ( __ ( ' New site created by % 1 $s
Address : % 2 $s
2013-03-01 12:14:09 -05:00
Name : % 3 $s ' ), $current_user -> user_login , get_site_url ( $id ), wp_unslash ( $title ) );
2010-11-11 11:57:22 -05:00
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' ) . '>' );
2010-10-21 09:49:49 -04:00
wpmu_welcome_notification ( $id , $user_id , $password , $title , array ( 'public' => 1 ) );
2011-09-22 03:17:27 -04:00
wp_redirect ( add_query_arg ( array ( 'update' => 'added' , 'id' => $id ), 'site-new.php' ) );
2010-10-21 09:49:49 -04:00
exit ;
} else {
wp_die ( $id -> get_error_message () );
}
}
if ( isset ( $_GET [ 'update' ]) ) {
$messages = array ();
if ( 'added' == $_GET [ 'update' ] )
2011-09-22 03:17:27 -04:00
$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' ] ) ) );
2010-10-21 09:49:49 -04:00
}
$title = __ ( 'Add New Site' );
$parent_file = 'sites.php' ;
2013-09-24 20:18:11 -04:00
require ( ABSPATH . 'wp-admin/admin-header.php' );
2010-10-21 09:49:49 -04:00
?>
< div class = " wrap " >
2010-10-21 16:31:01 -04:00
< ? php screen_icon ( 'ms-admin' ); ?>
2010-10-21 09:49:49 -04:00
< 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 () ) { ?>
2012-04-27 15:02:10 -04:00
< 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>
2010-10-21 09:49:49 -04:00
< ? php } else {
2011-10-20 11:04:46 -04:00
echo $current_site -> domain . $current_site -> path ?> <input name="blog[domain]" class="regular-text" type="text" title="<?php esc_attr_e( 'Domain' ) ?>"/>
2010-10-21 09:49:49 -04:00
< ? php }
2012-10-05 15:04:34 -04:00
echo '<p>' . __ ( 'Only lowercase letters (a-z) and numbers are allowed.' ) . '</p>' ;
2010-10-21 09:49:49 -04:00
?>
</ td >
</ tr >
< tr class = " form-field form-required " >
< th scope = " row " >< ? php _e ( 'Site Title' ) ?> </th>
2011-10-20 11:04:46 -04:00
< td >< input name = " blog[title] " type = " text " class = " regular-text " title = " <?php esc_attr_e( 'Title' ) ?> " /></ td >
2010-10-21 09:49:49 -04:00
</ tr >
< tr class = " form-field form-required " >
< th scope = " row " >< ? php _e ( 'Admin Email' ) ?> </th>
2011-10-20 11:04:46 -04:00
< td >< input name = " blog[email] " type = " text " class = " regular-text " title = " <?php esc_attr_e( 'Email' ) ?> " /></ td >
2010-10-21 09:49:49 -04:00
</ 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
2013-09-24 20:18:11 -04:00
require ( ABSPATH . 'wp-admin/admin-footer.php' );