public static function create_new_multisite($user_id, $config, $lead, $password) { global $current_site; $form = RGFormsModel::get_form_meta($lead['form_id']); $ms_options = rgars($config, 'meta/multisite_options'); $is_update_feed = rgars($config, 'meta/feed_type') == 'update'; $user = new WP_User($user_id); $password_field = rgars($config, 'meta/password'); $set_password = $password_field && rgar($lead, $password_field); $password = $password ? $password : rgar($lead, $password_field); // @review, verify what this is doing and notate here if (!$set_password) { remove_filter('update_welcome_email', 'bp_core_filter_blog_welcome_email'); } // is create site option enabled? if (!rgar($ms_options, 'create_site')) { return false; } $site_data = self::get_site_data($lead, $form, $config, $is_update_feed); if (!$site_data) { return false; } // create the new site! $meta = apply_filters('gform_user_registration_new_site_meta', array('public' => 1), $form, $lead, $config, $user_id, $is_update_feed); $blog_id = wpmu_create_blog($site_data['domain'], $site_data['path'], $site_data['title'], $user_id, $meta, $current_site->id); if (is_wp_error($blog_id)) { return false; } // add entry ID to site meta for new site GFUserData::update_site_meta($blog_id, 'entry_id', $lead['id']); if (!is_super_admin($user_id) && get_user_option('primary_blog', $user_id) == $current_site->blog_id) { update_user_option($user_id, 'primary_blog', $blog_id, true); } if (rgar($ms_options, 'site_role')) { $user = new WP_User($user_id, null, $blog_id); $user->set_role(rgar($ms_options, 'site_role')); } $root_role = rgar($ms_options, 'root_role'); // if no root role, remove user from current site if (!$root_role) { remove_user_from_blog($user_id); } else { if ($root_role == 'gfur_preserve_role') { } else { $user = new WP_User($user_id); $user->set_role($root_role); } } self::log_debug("Calling wpmu_welcome_notification to send multisite welcome - blog_id: {$blog_id} user_id: {$user_id}"); wpmu_welcome_notification($blog_id, $user_id, $password, $site_data['title'], array('public' => 1)); self::log_debug("Done with wpmu_welcome_notification"); do_action('gform_site_created', $blog_id, $user_id, $lead, $config, $password); // return new blog ID return $blog_id; }
public static function create_new_multisite($user_id, $config, $entry, $password) { global $wpdb, $current_site, $current_user, $base; $multisite_options = $config['meta']['multisite_options']; $user = get_userdata($user_id); $user_set_pass = rgar($config['meta'], 'password') && rgar($entry, rgar($config['meta'], 'password')); $pass = rgar($entry, rgar($config['meta'], 'password')); if (!$user_set_pass) { remove_filter('update_welcome_email', 'bp_core_filter_blog_welcome_email'); } // make sure multisite 'create site' option is set (user registration plugin) if (empty($multisite_options['create_site'])) { return; } // get the domain name $domain = ''; $site_address = $entry[$multisite_options['site_address']]; if (!preg_match('/(--)/', $site_address) && preg_match('|^([a-zA-Z0-9-])+$|', $site_address)) { $domain = strtolower($site_address); } // get the site title and user email $title = $entry[$multisite_options['site_title']]; $email = $user->user_email; // final check to make sure our essentials are good to go if (empty($domain) || empty($email) || !is_email($email)) { return; } if (is_subdomain_install()) { $newdomain = $domain . '.' . preg_replace('|^www\\.|', '', $current_site->domain); $path = $base; } else { $newdomain = $current_site->domain; $path = $base . $domain . '/'; } // create the new site! $id = wpmu_create_blog($newdomain, $path, $title, $user_id, array('public' => 1), $current_site->id); if (is_wp_error($id)) { return; } // add entry ID to site meta for new site GFUserData::update_site_meta($id, 'entry_id', $entry['id']); $dashboard_blog = get_dashboard_blog(); if (!is_super_admin($user_id) && get_user_option('primary_blog', $user_id) == $dashboard_blog->blog_id) { update_user_option($user_id, 'primary_blog', $id, true); } if (rgar($multisite_options, 'site_role')) { $user = new WP_User($user_id, null, $id); $user->set_role(rgar($multisite_options, 'site_role')); } $root_role = rgar($multisite_options, 'root_role'); // if no root role, remove user from current site if (!$root_role) { remove_user_from_blog($user_id); } else { $user = new WP_User($user_id); $user->set_role($root_role); } $content_mail = sprintf(__("New site created by %1s\n\nAddress: http://%2s\nName: %3s", "gravityformsuserregistration"), $current_user->user_login, $newdomain . $path, stripslashes($title)); wp_mail(get_site_option('admin_email'), sprintf(__('[%s] New Site Created', "gravityformsuserregistration"), $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)); do_action('gform_site_created', $id, $user_id, $entry, $config, $password); }