Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
 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);
 }