/** * populate network settings * * @since 3.0.0 * * @param int $network_id id of network to populate * @return bool|nxt_Error True on success, or nxt_Error on warning (with the install otherwise successful, * so the error code must be checked) or failure. */ function populate_network($network_id = 1, $domain = '', $email = '', $site_name = '', $path = '/', $subdomain_install = false) { global $nxtdb, $current_site, $nxt_db_version, $nxt_rewrite; $errors = new nxt_Error(); if ('' == $domain) { $errors->add('empty_domain', __('You must provide a domain name.')); } if ('' == $site_name) { $errors->add('empty_sitename', __('You must provide a name for your network of sites.')); } // check for network collision if ($network_id == $nxtdb->get_var($nxtdb->prepare("SELECT id FROM {$nxtdb->site} WHERE id = %d", $network_id))) { $errors->add('siteid_exists', __('The network already exists.')); } $site_user = get_user_by('email', $email); if (!is_email($email)) { $errors->add('invalid_email', __('You must provide a valid e-mail address.')); } if ($errors->get_error_code()) { return $errors; } // set up site tables $template = get_option('template'); $stylesheet = get_option('stylesheet'); $allowed_themes = array($stylesheet => true); if ($template != $stylesheet) { $allowed_themes[$template] = true; } if (nxt_DEFAULT_THEME != $stylesheet && nxt_DEFAULT_THEME != $template) { $allowed_themes[nxt_DEFAULT_THEME] = true; } if (1 == $network_id) { $nxtdb->insert($nxtdb->site, array('domain' => $domain, 'path' => $path)); $network_id = $nxtdb->insert_id; } else { $nxtdb->insert($nxtdb->site, array('domain' => $domain, 'path' => $path, 'id' => $network_id)); } if (!is_multisite()) { $site_admins = array($site_user->user_login); $users = get_users(array('fields' => array('ID', 'user_login'))); if ($users) { foreach ($users as $user) { if (is_super_admin($user->ID) && !in_array($user->user_login, $site_admins)) { $site_admins[] = $user->user_login; } } } } else { $site_admins = get_site_option('site_admins'); } $welcome_email = __('Dear User, Your new SITE_NAME site has been successfully set up at: BLOG_URL You can log in to the administrator account with the following information: Username: USERNAME Password: PASSWORD Log in here: BLOG_URLnxt-login.php We hope you enjoy your new site. Thanks! --The SITE_NAME Team'); $sitemeta = array('site_name' => $site_name, 'admin_email' => $site_user->user_email, 'admin_user_id' => $site_user->ID, 'registration' => 'none', 'upload_filetypes' => 'jpg jpeg png gif mp3 mov avi wmv midi mid pdf', 'blog_upload_space' => 10, 'fileupload_maxk' => 1500, 'site_admins' => $site_admins, 'allowedthemes' => $allowed_themes, 'illegal_names' => array('www', 'web', 'root', 'admin', 'main', 'invite', 'administrator', 'files'), 'nxtmu_upgrade_site' => $nxt_db_version, 'welcome_email' => $welcome_email, 'first_post' => __('Welcome to <a href="SITE_URL">SITE_NAME</a>. This is your first post. Edit or delete it, then start blogging!'), 'siteurl' => get_option('siteurl') . '/', 'add_new_users' => '0', 'upload_space_check_disabled' => '0', 'subdomain_install' => intval($subdomain_install), 'global_terms_enabled' => global_terms_enabled() ? '1' : '0', 'initial_db_version' => get_option('initial_db_version'), 'active_sitewide_plugins' => array()); if (!$subdomain_install) { $sitemeta['illegal_names'][] = 'blog'; } $insert = ''; foreach ($sitemeta as $meta_key => $meta_value) { $meta_key = $nxtdb->escape($meta_key); if (is_array($meta_value)) { $meta_value = serialize($meta_value); } $meta_value = $nxtdb->escape($meta_value); if (!empty($insert)) { $insert .= ', '; } $insert .= "( {$network_id}, '{$meta_key}', '{$meta_value}')"; } $nxtdb->query("INSERT INTO {$nxtdb->sitemeta} ( site_id, meta_key, meta_value ) VALUES " . $insert); $current_site->domain = $domain; $current_site->path = $path; $current_site->site_name = ucfirst($domain); if (!is_multisite()) { $nxtdb->insert($nxtdb->blogs, array('site_id' => $network_id, 'domain' => $domain, 'path' => $path, 'registered' => current_time('mysql'))); $blog_id = $nxtdb->insert_id; update_user_meta($site_user->ID, 'source_domain', $domain); update_user_meta($site_user->ID, 'primary_blog', $blog_id); if (!($upload_path = get_option('upload_path'))) { $upload_path = substr(nxt_CONTENT_DIR, strlen(ABSPATH)) . '/uploads'; update_option('upload_path', $upload_path); } update_option('fileupload_url', get_option('siteurl') . '/' . $upload_path); } if ($subdomain_install) { update_option('permalink_structure', '/%year%/%monthnum%/%day%/%postname%/'); } else { update_option('permalink_structure', '/blog/%year%/%monthnum%/%day%/%postname%/'); } $nxt_rewrite->flush_rules(); if ($subdomain_install) { $vhost_ok = false; $errstr = ''; $hostname = substr(md5(time()), 0, 6) . '.' . $domain; // Very random hostname! $page = nxt_remote_get('http://' . $hostname, array('timeout' => 5, 'httpversion' => '1.1')); if (is_nxt_error($page)) { $errstr = $page->get_error_message(); } elseif (200 == nxt_remote_retrieve_response_code($page)) { $vhost_ok = true; } if (!$vhost_ok) { $msg = '<p><strong>' . __('Warning! Wildcard DNS may not be configured correctly!') . '</strong></p>'; $msg .= '<p>' . sprintf(__('The installer attempted to contact a random hostname (<code>%1$s</code>) on your domain.'), $hostname); if (!empty($errstr)) { $msg .= ' ' . sprintf(__('This resulted in an error message: %s'), '<code>' . $errstr . '</code>'); } $msg .= '</p>'; $msg .= '<p>' . __('To use a subdomain configuration, you must have a wildcard entry in your DNS. This usually means adding a <code>*</code> hostname record pointing at your web server in your DNS configuration tool.') . '</p>'; $msg .= '<p>' . __('You can still use your site but any subdomain you create may not be accessible. If you know your DNS is correct, ignore this message.') . '</p>'; return new nxt_Error('no_wildcard_dns', $msg); } } return true; }
$user_exists = true; } else { $user_exists = !empty($_POST['log']) && (bool) bb_get_user($_POST['log'], array('by' => 'login')); } // Check for errors on post method if ('post' == strtolower($_SERVER['REQUEST_METHOD'])) { // If the user doesn't exist then add that error if (empty($user_exists)) { if (!empty($_POST['log'])) { $bb_login_error->add('user_login', __('User does not exist.')); } else { $bb_login_error->add('user_login', $email_login ? __('Enter a username or email address.') : __('Enter a username.')); } } // If the password was wrong then add that error if (!$bb_login_error->get_error_code()) { $bb_login_error->add('password', __('Incorrect password.')); } } /** * If trying to log in with email address, don't leak whether or not email * address exists in the db. is_email() is not perfect. Usernames can be * valid email addresses potentially. */ if (!empty($email_login) && $bb_login_error->get_error_codes() && false !== is_email(@$_POST['log'])) { $bb_login_error = new nxt_Error('user_login', __('Username and Password do not match.')); } /** Prepare for display *******************************************************/ // Sanitze variables for display $remember_checked = @$_POST['rememberme'] ? ' checked="checked"' : ''; $user_login = esc_attr(sanitize_user(@$_POST['log'], true));