Exemple #1
0
/**
 * 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;
}
Exemple #2
0
    $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));