$v )
if ( !in_array($k, $noUnset) && isset($GLOBALS[$k]) ) {
$GLOBALS[$k] = NULL;
unset($GLOBALS[$k]);
}
}
bb_unregister_GLOBALS();
/**
* bb_timer_start() - PHP 4 standard microtime start capture
*
* @access private
* @global int $bb_timestart Seconds and Microseconds added together from when function is called
* @return bool Always returns true
*/
function bb_timer_start() {
global $bb_timestart;
$mtime = explode(' ', microtime() );
$bb_timestart = $mtime[1] + $mtime[0];
return true;
}
bb_timer_start();
/**
* Whether the server software is IIS or something else
* @global bool $is_IIS
*/
$is_IIS = strstr($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS') ? 1 : 0;
/**
* Stabilise $_SERVER variables in various PHP environments
*/
// Fix for IIS, which doesn't set REQUEST_URI
if ( empty( $_SERVER['REQUEST_URI'] ) ) {
// IIS Mod-Rewrite
if (isset($_SERVER['HTTP_X_ORIGINAL_URL'])) {
$_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_ORIGINAL_URL'];
}
// IIS Isapi_Rewrite
else if (isset($_SERVER['HTTP_X_REWRITE_URL'])) {
$_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL'];
}
else
{
// Use ORIG_PATH_INFO if there is no PATH_INFO
if ( !isset($_SERVER['PATH_INFO']) && isset($_SERVER['ORIG_PATH_INFO']) )
$_SERVER['PATH_INFO'] = $_SERVER['ORIG_PATH_INFO'];
// Some IIS + PHP configurations puts the script-name in the path-info (No need to append it twice)
if ( isset($_SERVER['PATH_INFO']) ) {
if ( $_SERVER['PATH_INFO'] == $_SERVER['SCRIPT_NAME'] )
$_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO'];
else
$_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] . $_SERVER['PATH_INFO'];
}
// Append the query string if it exists and isn't null
if (isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING'])) {
$_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING'];
}
}
}
// Fix for PHP as CGI hosts that set SCRIPT_FILENAME to something ending in php.cgi for all requests
if ( isset($_SERVER['SCRIPT_FILENAME']) && ( strpos($_SERVER['SCRIPT_FILENAME'], 'php.cgi') == strlen($_SERVER['SCRIPT_FILENAME']) - 7 ) )
$_SERVER['SCRIPT_FILENAME'] = $_SERVER['PATH_TRANSLATED'];
// Fix for Dreamhost and other PHP as CGI hosts
if (strpos($_SERVER['SCRIPT_NAME'], 'php.cgi') !== false)
unset($_SERVER['PATH_INFO']);
// Fix empty PHP_SELF
$PHP_SELF = $_SERVER['PHP_SELF'];
if ( empty($PHP_SELF) )
$_SERVER['PHP_SELF'] = $PHP_SELF = preg_replace("/(\?.*)?$/",'',$_SERVER["REQUEST_URI"]);
/**
* Let bbPress know what we are up to at the moment
*/
/**
* Whether the current script is in the admin area or not
*/
if ( !defined( 'BB_IS_ADMIN' ) )
define( 'BB_IS_ADMIN', false );
/**
* Whether the current script is part of the installation process or not
* @since 1.0
*/
if ( !defined( 'BB_INSTALLING' ) )
define( 'BB_INSTALLING', false );
/**
* Define include paths and load core BackPress libraries
*/
/**
* The full path to the BackPress libraries
*/
if ( !defined( 'BACKPRESS_PATH' ) )
define( 'BACKPRESS_PATH', BB_PATH . BB_INC . 'backpress/' );
// Load logging class
require_once( BACKPRESS_PATH . 'class.bp-log.php' );
$bb_log = new BP_Log();
if ( defined( 'BB_LOG_LEVEL' ) )
$bb_log->set_level( BB_LOG_LEVEL );
if ( defined( 'BB_LOG_TYPE' ) )
$bb_log->set_type( BB_LOG_TYPE );
if ( defined( 'BB_LOG_FILENAME' ) )
$bb_log->set_filename( BB_LOG_FILENAME );
$bb_log->notice('Logging started');
// Load core BackPress functions
require( BACKPRESS_PATH . 'functions.core.php' );
require( BACKPRESS_PATH . 'functions.compat.php' );
// WP_Error
if ( !class_exists( 'WP_Error' ) )
require( BACKPRESS_PATH . 'class.wp-error.php' );
/**
* Set up database parameters based on config and initialise
*/
/**
* Define the full path to the database class
*/
if ( !defined('BB_DATABASE_CLASS_INCLUDE') )
define('BB_DATABASE_CLASS_INCLUDE', BACKPRESS_PATH . 'class.bpdb-multi.php' );
// Load the database class
if ( BB_DATABASE_CLASS_INCLUDE )
require( BB_DATABASE_CLASS_INCLUDE );
/**
* Define the name of the database class
*/
if ( !defined( 'BB_DATABASE_CLASS' ) )
define( 'BB_DATABASE_CLASS', 'BPDB_Multi' );
// Die if there is no database table prefix
if ( !$bb_table_prefix )
die('You must specify a table prefix in your bb-config.php file.');
// Setup the global database connection
$bbdb_class = BB_DATABASE_CLASS;
$bbdb =& new $bbdb_class( array(
'name' => BBDB_NAME,
'user' => BBDB_USER,
'password' => BBDB_PASSWORD,
'host' => BBDB_HOST,
'charset' => defined( 'BBDB_CHARSET' ) ? BBDB_CHARSET : false,
'collate' => defined( 'BBDB_COLLATE' ) ? BBDB_COLLATE : false
) );
unset($bbdb_class);
/**
* bbPress tables
*/
$bbdb->tables = array(
'forums' => false,
'meta' => false,
'posts' => false,
'tagged' => false, // Deprecated
'tags' => false, // Deprecated
'terms' => false,
'term_relationships' => false,
'term_taxonomy' => false,
'topics' => false,
'topicmeta' => false, // Deprecated
'users' => false,
'usermeta' => false
);
/**
* Define BackPress Database errors if not already done - no internationalisation at this stage
*/
if (!defined('BPDB__CONNECT_ERROR_MESSAGE'))
define(BPDB__CONNECT_ERROR_MESSAGE, 'ERROR: Error establishing a database connection');
if (!defined('BPDB__CONNECT_ERROR_MESSAGE'))
define(BPDB__SELECT_ERROR_MESSAGE, 'ERROR: Can\'t select database.');
if (!defined('BPDB__ERROR_STRING'))
define(BPDB__ERROR_STRING, 'ERROR: bbPress database error - "%s" for query "%s" via caller "%s"');
if (!defined('BPDB__ERROR_HTML'))
define(BPDB__ERROR_HTML, '
Database error: [%s]
%s
Caller: %s
');
if (!defined('BPDB__DB_VERSION_ERROR'))
define(BPDB__DB_VERSION_ERROR, 'ERROR: bbPress requires MySQL 4.0.0 or higher');
// Set the prefix on the tables
if ( is_wp_error( $bbdb->set_prefix( $bb_table_prefix ) ) )
die('Your table prefix may only contain letters, numbers and underscores.');
/**
* Load core bbPress libraries
*/
require( BB_PATH . BB_INC . 'wp-functions.php');
require( BB_PATH . BB_INC . 'functions.php');
require( BB_PATH . BB_INC . 'classes.php');
/**
* Load API and object handling BackPress libraries
*/
// Plugin API
if ( !function_exists( 'add_filter' ) )
require( BACKPRESS_PATH . 'functions.plugin-api.php' );
// Shortcodes API
if ( !function_exists( 'add_shortcode' ) )
require( BACKPRESS_PATH . 'functions.shortcodes.php' );
else
remove_all_shortcodes();
/**
* Define the full path to the object cache functions include
*/
if ( !defined( 'BB_OBJECT_CACHE_FUNCTIONS_INCLUDE' ) )
define( 'BB_OBJECT_CACHE_FUNCTIONS_INCLUDE', BACKPRESS_PATH . 'functions.wp-object-cache.php' );
// Load the database class
if ( BB_OBJECT_CACHE_FUNCTIONS_INCLUDE && !function_exists( 'wp_cache_init' ) )
require( BB_OBJECT_CACHE_FUNCTIONS_INCLUDE );
// Instantiate the $wp_object_cache object using wp_cache_init()
if ( !isset( $wp_object_cache ) && function_exists( 'wp_cache_init' ) )
wp_cache_init();
/**
* Load mapping class for BackPress to store options
*/
require( BB_PATH . BB_INC . 'class.bp-options.php' );
/**
* Load WP_Http class
*/
if ( !class_exists( 'WP_Http' ) )
require( BACKPRESS_PATH . 'class.wp-http.php' );
/**
* Determine language settings and load i10n libraries as required
*/
/**
* The full path to the directory containing language files
*/
if ( !defined('BB_LANG_DIR') )
if ( defined('BBLANGDIR') ) // User has set old constant
// TODO: Completely remove old constants on version 1.0
define('BB_LANG_DIR', BBLANGDIR);
else
define('BB_LANG_DIR', BB_PATH . BB_INC . 'languages/'); // absolute path with trailing slash
/**
* The language in which to display bbPress
*/
if ( !defined('BB_LANG') && defined('BBLANG') && '' != BBLANG ) { // User has set old constant
// TODO: Completely remove old constants on version 1.0
define('BB_LANG', BBLANG);
}
if ( defined('BB_LANG') && '' != BB_LANG ) {
if ( !class_exists( 'gettext_reader' ) )
require( BACKPRESS_PATH . 'class.gettext-reader.php' );
if ( !class_exists( 'StreamReader' ) )
require( BACKPRESS_PATH . 'class.streamreader.php' );
}
// Is WordPress loaded
if ( !defined('BB_IS_WP_LOADED') )
define('BB_IS_WP_LOADED', defined('DB_NAME'));
// Only load these if WordPress isn't loaded
if ( !BB_IS_WP_LOADED ) {
require( BACKPRESS_PATH . 'functions.kses.php');
require( BB_PATH . BB_INC . 'l10n.php');
}
/**
* Routines related to installation
*/
// Load BB_CHANNELS_INCLUDE if it exists, must be done before the install is completed
if ( defined( 'BB_CHANNELS_INCLUDE' ) && file_exists( BB_CHANNELS_INCLUDE ) && !is_dir( BB_CHANNELS_INCLUDE ) )
require( BB_CHANNELS_INCLUDE );
// If there is no forum table in the database then redirect to the installer
if ( !BB_INSTALLING && !bb_is_installed() ) {
$link = preg_replace('|(/bb-admin)?/[^/]+?$|', '/', $_SERVER['PHP_SELF']) . 'bb-admin/install.php';
require( BB_PATH . BB_INC . 'pluggable.php');
wp_redirect($link);
die();
}
// Setup some variables in the $bb class if they don't exist - some of these are deprecated
foreach ( array('use_cache' => false, 'debug' => false, 'static_title' => false, 'load_options' => true, 'email_login' => false) as $o => $oo)
if ( !isset($bb->$o) )
$bb->$o = $oo;
unset($o, $oo);
// Disable plugins during installation
if ( BB_INSTALLING ) {
foreach ( array('active_plugins') as $i )
$bb->$i = false;
unset($i);
}
/**
* Load additional bbPress libraries
*/
require( BB_PATH . BB_INC . 'formatting-functions.php');
require( BB_PATH . BB_INC . 'template-functions.php');
require( BB_PATH . BB_INC . 'capabilities.php');
require( BB_PATH . BB_INC . 'class.bb-pingbacks.php');
require( BB_PATH . BB_INC . 'deprecated.php');
/**
* Old cache global object for backwards compatibility
*/
$bb_cache = new BB_Cache();
// Cache options from the database
if ( $bb->load_options ) {
$bbdb->suppress_errors();
bb_cache_all_options();
$bbdb->suppress_errors(false);
}
require( BB_PATH . BB_INC . 'default-filters.php');
require( BB_PATH . BB_INC . 'script-loader.php');
// Sanitise external input
$_GET = bb_global_sanitize($_GET);
$_POST = bb_global_sanitize($_POST);
$_COOKIE = bb_global_sanitize($_COOKIE, false);
$_SERVER = bb_global_sanitize($_SERVER);
/**
* Set the URI and derivitaves
*/
if ( $bb->uri = bb_get_option('uri') ) {
$bb->uri = rtrim($bb->uri, '/') . '/';
if ( preg_match( '@^(https?://[^/]+)((?:/.*)*/{1,1})$@i', $bb->uri, $matches ) ) {
// Used when setting up cookie domain
$bb->domain = $matches[1];
// Used when setting up cookie paths
$bb->path = $matches[2];
}
unset($matches);
} else {
// Backwards compatibility
// These were never set in the database
// TODO: Completely remove old constants on version 1.0
if ( isset($bb->domain) ) {
$bb->domain = rtrim( trim( $bb->domain ), '/' );
}
if ( isset($bb->path) ) {
$bb->path = trim($bb->path);
if ( $bb->path != '/' ) $bb->path = '/' . trim($bb->path, '/') . '/';
}
// We need both to build a uri
if ( $bb->domain && $bb->path ) {
$bb->uri = $bb->domain . $bb->path;
}
}
// Die if no URI
if ( !BB_INSTALLING && !$bb->uri ) {
bb_die( __('Could not determine site URI') );
}
/**
* BB_FORCE_SSL_USER_FORMS - Whether to force use of ssl on user forms like login, registration and profile editing
*/
if ( !defined('BB_FORCE_SSL_USER_FORMS') ) {
define('BB_FORCE_SSL_USER_FORMS', false);
}
bb_force_ssl_user_forms(BB_FORCE_SSL_USER_FORMS);
/**
* BB_FORCE_SSL_ADMIN - Whether to force use of ssl in the admin area
*/
if ( !defined('BB_FORCE_SSL_ADMIN') ) {
define('BB_FORCE_SSL_ADMIN', false);
}
bb_force_ssl_admin(BB_FORCE_SSL_ADMIN);
/**
* Define theme and plugin constants
*/
/**
* Full path to the location of the core plugins directory
*/
define('BB_CORE_PLUGIN_DIR', BB_PATH . 'bb-plugins/');
/**
* Full URL of the core plugins directory
*/
define('BB_CORE_PLUGIN_URL', $bb->uri . 'bb-plugins/');
/**
* Full path to the location of the core themes directory
*/
define('BB_CORE_THEME_DIR', BB_PATH . 'bb-templates/');
/**
* Full URL of the core themes directory
*/
define('BB_CORE_THEME_URL', $bb->uri . 'bb-templates/');
/**
* The default theme
*/
define('BB_DEFAULT_THEME', 'core#kakumei');
/**
* Full path to the location of the default theme directory
*/
define('BB_DEFAULT_THEME_DIR', BB_CORE_THEME_DIR . 'kakumei/');
/**
* Full URL of the default theme directory
*/
define('BB_DEFAULT_THEME_URL', BB_CORE_THEME_URL . 'kakumei/');
/**
* Full path to the location of the user plugins directory
*/
if ( !defined('BB_PLUGIN_DIR') )
if ( defined('BBPLUGINDIR') ) // User has set old constant
// TODO: Completely remove old constants on version 1.0
define('BB_PLUGIN_DIR', BBPLUGINDIR);
else
define('BB_PLUGIN_DIR', BB_PATH . 'my-plugins/');
/**
* Full URL of the user plugins directory
*/
if ( !defined('BB_PLUGIN_URL') )
if ( defined('BBPLUGINURL') ) // User has set old constant
// TODO: Completely remove old constants on version 1.0
define('BB_PLUGIN_URL', BBPLUGINURL);
else
define('BB_PLUGIN_URL', $bb->uri . 'my-plugins/');
/**
* Full path to the location of the user themes directory
*/
if ( !defined('BB_THEME_DIR') )
if ( defined('BBTHEMEDIR') ) // User has set old constant
// TODO: Completely remove old constants on version 1.0
define('BB_THEME_DIR', BBTHEMEDIR);
else
define('BB_THEME_DIR', BB_PATH . 'my-templates/');
/**
* Full URL of the user themes directory
*/
if ( !defined('BB_THEME_URL') )
if ( defined('BBTHEMEURL') ) // User has set old constant
// TODO: Completely remove old constants on version 1.0
define('BB_THEME_URL', BBTHEMEURL);
else
define('BB_THEME_URL', $bb->uri . 'my-templates/');
/**
* Add custom tables if present
*/
// Resolve the various ways custom user tables might be setup
bb_set_custom_user_tables();
// Add custom databases if required
if (isset($bb->custom_databases))
foreach ($bb->custom_databases as $connection => $database)
$bbdb->add_db_server($connection, $database);
unset($connection, $database);
// Add custom tables if required
if (isset($bb->custom_tables)) {
$bbdb->tables = array_merge($bbdb->tables, $bb->custom_tables);
if ( is_wp_error( $bbdb->set_prefix( $bb_table_prefix ) ) )
die(__('Your user table prefix may only contain letters, numbers and underscores.'));
}
/**
* Sort out cookies so they work with WordPress (if required)
* Note that database integration is no longer a pre-requisite for cookie integration
*/
$bb->wp_siteurl = bb_get_option('wp_siteurl');
if ( $bb->wp_siteurl ) {
$bb->wp_siteurl = rtrim($bb->wp_siteurl, '/');
}
$bb->wp_home = bb_get_option('wp_home');
if ( $bb->wp_home ) {
$bb->wp_home = rtrim($bb->wp_home, '/');
}
$bb->wp_cookies_integrated = false;
$bb->cookiedomain = bb_get_option('cookiedomain');
if ( $bb->wp_siteurl && $bb->wp_home ) {
if ( $bb->cookiedomain ) {
$bb->wp_cookies_integrated = true;
} else {
$cookiedomain = bb_get_common_domains($bb->uri, $bb->wp_home);
if ( bb_match_domains($bb->uri, $bb->wp_home) ) {
$bb->cookiepath = bb_get_common_paths($bb->uri, $bb->wp_home);
$bb->wp_cookies_integrated = true;
} elseif ($cookiedomain && strpos($cookiedomain, '.') !== false) {
$bb->cookiedomain = '.' . $cookiedomain;
$bb->cookiepath = bb_get_common_paths($bb->uri, $bb->wp_home);
$bb->wp_cookies_integrated = true;
}
unset($cookiedomain);
}
}
define('BB_HASH', $bb->wp_cookies_integrated ? md5($bb->wp_siteurl) : md5($bb->uri));
// Deprecated setting
// TODO: Completely remove old constants on version 1.0
$bb->usercookie = bb_get_option('usercookie');
if ( !$bb->usercookie ) {
$bb->usercookie = ( $bb->wp_cookies_integrated ? 'wordpressuser_' : 'bb_user_' ) . BB_HASH;
}
// Deprecated setting
// TODO: Completely remove old constants on version 1.0
$bb->passcookie = bb_get_option('passcookie');
if ( !$bb->passcookie ) {
$bb->passcookie = ( $bb->wp_cookies_integrated ? 'wordpresspass_' : 'bb_pass_' ) . BB_HASH;
}
$bb->authcookie = bb_get_option('authcookie');
if ( !$bb->authcookie ) {
$bb->authcookie = ($bb->wp_cookies_integrated ? 'wordpress_' : 'bbpress_') . BB_HASH;
}
$bb->secure_auth_cookie = bb_get_option('secure_auth_cookie');
if ( !$bb->secure_auth_cookie ) {
$bb->secure_auth_cookie = ($bb->wp_cookies_integrated ? 'wordpress_sec_' : 'bbpress_sec_') . BB_HASH;
}
$bb->logged_in_cookie = bb_get_option('logged_in_cookie');
if ( !$bb->logged_in_cookie ) {
$bb->logged_in_cookie = ($bb->wp_cookies_integrated ? 'wordpress_logged_in_' : 'bbpress_logged_in_') . BB_HASH;
}
$bb->cookiepath = bb_get_option('cookiepath');
if ( !$bb->cookiepath ) {
$bb->cookiepath = $bb->wp_cookies_integrated ? preg_replace('|https?://[^/]+|i', '', $bb->wp_home ) : $bb->path;
}
$bb->cookiepath = rtrim($bb->cookiepath, '/');
$bb->admin_cookie_path = bb_get_option('admin_cookie_path');
if ( !$bb->admin_cookie_path ) {
$bb->admin_cookie_path = $bb->path . 'bb-admin';
}
$bb->admin_cookie_path = rtrim($bb->admin_cookie_path, '/');
$bb->core_plugins_cookie_path = bb_get_option('core_plugins_cookie_path');
if ( !$bb->core_plugins_cookie_path ) {
$bb->core_plugins_cookie_path = preg_replace('|https?://[^/]+|i', '', BB_CORE_PLUGIN_URL);
}
$bb->core_plugins_cookie_path = rtrim($bb->core_plugins_cookie_path, '/');
$bb->user_plugins_cookie_path = bb_get_option('user_plugins_cookie_path');
if ( !$bb->user_plugins_cookie_path ) {
$bb->user_plugins_cookie_path = preg_replace('|https?://[^/]+|i', '', BB_PLUGIN_URL);
}
$bb->user_plugins_cookie_path = rtrim($bb->user_plugins_cookie_path, '/');
$bb->sitecookiepath = bb_get_option('sitecookiepath');
$_bb_sitecookiepath = $bb->sitecookiepath;
if ( !$bb->sitecookiepath && $bb->wp_cookies_integrated ) {
$bb->sitecookiepath = preg_replace('|https?://[^/]+|i', '', $bb->wp_siteurl );
$_bb_sitecookiepath = $bb->sitecookiepath;
if (bb_get_common_paths($bb->sitecookiepath, $bb->cookiepath) == $bb->cookiepath) {
$bb->sitecookiepath = $bb->cookiepath;
}
}
$bb->sitecookiepath = rtrim($bb->sitecookiepath, '/');
$bb->wp_admin_cookie_path = bb_get_option('wp_admin_cookie_path');
if ( !$bb->wp_admin_cookie_path && $bb->wp_cookies_integrated ) {
$bb->wp_admin_cookie_path = $_bb_sitecookiepath . '/wp-admin';
}
$bb->wp_admin_cookie_path = rtrim($bb->wp_admin_cookie_path, '/');
$bb->wp_plugins_cookie_path = bb_get_option('wp_plugins_cookie_path');
if ( !$bb->wp_plugins_cookie_path && $bb->wp_cookies_integrated ) {
// This is a best guess only, should be manually set to match WP_PLUGIN_URL
$bb->wp_plugins_cookie_path = $_bb_sitecookiepath . '/wp-content/plugins';
}
$bb->wp_plugins_cookie_path = rtrim($bb->wp_plugins_cookie_path, '/');
unset($_bb_sitecookiepath);
/**
* Should be exactly the same as the default value of the KEYS in bb-config-sample.php
* @since 1.0
*/
$bb_default_secret_key = 'put your unique phrase here';
/**
* Remaining BackPress
*/
// WP_Pass
if ( !class_exists( 'WP_Pass' ) )
require( BACKPRESS_PATH . 'class.wp-pass.php' );
// WP_Users
if ( !class_exists( 'WP_Users' ) ) {
require( BACKPRESS_PATH . 'class.wp-users.php' );
$wp_users_object = new WP_Users( $bbdb );
}
if ( !class_exists( 'BP_Roles' ) )
require( BACKPRESS_PATH . 'class.bp-roles.php' );
/**
* BP_Roles object
*/
$wp_roles = new BP_Roles( $bbdb );
// WP_User
if ( !class_exists( 'WP_User' ) )
require( BACKPRESS_PATH . 'class.wp-user.php' );
// WP_Auth
if ( !class_exists( 'WP_Auth' ) ) {
require( BACKPRESS_PATH . 'class.wp-auth.php' );
$cookies = array();
$cookies['logged_in'][] = array(
'domain' => $bb->cookiedomain,
'path' => $bb->cookiepath,
'name' => $bb->logged_in_cookie
);
if ($bb->sitecookiepath && $bb->cookiepath != $bb->sitecookiepath) {
$cookies['logged_in'][] = array(
'domain' => $bb->cookiedomain,
'path' => $bb->sitecookiepath,
'name' => $bb->logged_in_cookie
);
}
$cookies['auth'][] = array(
'domain' => $bb->cookiedomain,
'path' => $bb->admin_cookie_path,
'name' => $bb->authcookie
);
$cookies['secure_auth'][] = array(
'domain' => $bb->cookiedomain,
'path' => $bb->admin_cookie_path,
'name' => $bb->secure_auth_cookie,
'secure' => true
);
$cookies['auth'][] = array(
'domain' => $bb->cookiedomain,
'path' => $bb->core_plugins_cookie_path,
'name' => $bb->authcookie
);
$cookies['secure_auth'][] = array(
'domain' => $bb->cookiedomain,
'path' => $bb->core_plugins_cookie_path,
'name' => $bb->secure_auth_cookie,
'secure' => true
);
$cookies['auth'][] = array(
'domain' => $bb->cookiedomain,
'path' => $bb->user_plugins_cookie_path,
'name' => $bb->authcookie
);
$cookies['secure_auth'][] = array(
'domain' => $bb->cookiedomain,
'path' => $bb->user_plugins_cookie_path,
'name' => $bb->secure_auth_cookie,
'secure' => true
);
if ($bb->wp_admin_cookie_path) {
$cookies['auth'][] = array(
'domain' => $bb->cookiedomain,
'path' => $bb->wp_admin_cookie_path,
'name' => $bb->authcookie
);
$cookies['secure_auth'][] = array(
'domain' => $bb->cookiedomain,
'path' => $bb->wp_admin_cookie_path,
'name' => $bb->secure_auth_cookie,
'secure' => true
);
}
if ($bb->wp_plugins_cookie_path) {
$cookies['auth'][] = array(
'domain' => $bb->cookiedomain,
'path' => $bb->wp_plugins_cookie_path,
'name' => $bb->authcookie
);
$cookies['secure_auth'][] = array(
'domain' => $bb->cookiedomain,
'path' => $bb->wp_plugins_cookie_path,
'name' => $bb->secure_auth_cookie,
'secure' => true
);
}
/**
* WP_Auth object
*/
$wp_auth_object = new WP_Auth(
$bbdb,
$wp_users_object,
$cookies
);
unset($cookies);
}
/**
* Current user object
*/
$bb_current_user =& $wp_auth_object->current;
// WP_Scripts/WP_Styles
if ( !class_exists( 'WP_Dependencies' ) )
require( BACKPRESS_PATH . 'class.wp-dependencies.php' );
if ( !class_exists( 'WP_Scripts' ) ) {
require( BACKPRESS_PATH . 'class.wp-scripts.php' );
require( BACKPRESS_PATH . 'functions.wp-scripts.php' );
}
if ( !class_exists( 'WP_Styles' ) ) {
require( BACKPRESS_PATH . 'class.wp-styles.php' );
require( BACKPRESS_PATH . 'functions.wp-styles.php' );
}
// WP_Taxonomy
if ( !class_exists( 'WP_Taxonomy' ) )
require( BACKPRESS_PATH . 'class.wp-taxonomy.php' );
if ( !class_exists( 'BB_Taxonomy' ) )
require( BB_PATH . BB_INC . 'class.bb-taxonomy.php' );
if ( !isset($wp_taxonomy_object) ) { // Clean slate
$wp_taxonomy_object = new BB_Taxonomy( $bbdb );
} elseif ( !is_a($wp_taxonomy_object, 'BB_Taxonomy') ) { // exists, but it's not good enough, translate it
$tax =& $wp_taxonomy_object->taxonomies; // preserve the references
$wp_taxonomy_object = new BB_Taxonomy( $bbdb );
$wp_taxonomy_object->taxonomies =& $tax;
unset($tax);
}
$wp_taxonomy_object->register_taxonomy( 'bb_topic_tag', 'bb_topic' );
do_action( 'bb_options_loaded' );
/**
* Define deprecated constants for plugin compatibility
* TODO: Completely remove old constants on version 1.0
* $deprecated_constants below is a complete array of old constants and their replacements
*/
$deprecated_constants = array(
'BBPATH' => 'BB_PATH',
'BBINC' => 'BB_INC',
'BBLANG' => 'BB_LANG',
'BBLANGDIR' => 'BB_LANG_DIR',
'BBPLUGINDIR' => 'BB_PLUGIN_DIR',
'BBPLUGINURL' => 'BB_PLUGIN_URL',
'BBTHEMEDIR' => 'BB_THEME_DIR',
'BBTHEMEURL' => 'BB_THEME_URL',
'BBHASH' => 'BB_HASH'
);
foreach ( $deprecated_constants as $old => $new )
if ( !defined($old) && defined($new)) // only define if new one is defined
define($old, constant($new));
$deprecated_constants = array(
'USER_BBDB_NAME' => $bb->user_bbdb_name,
'USER_BBDB_USER' => $bb->user_bbdb_user,
'USER_BBDB_PASSWORD' => $bb->user_bbdb_password,
'USER_BBDB_HOST' => $bb->user_bbdb_host,
'USER_BBDB_CHARSET' => $bb->user_bbdb_charset,
'CUSTOM_USER_TABLE' => $bb->custom_user_table,
'CUSTOM_USER_META_TABLE' => $bb->custom_user_meta_table,
);
foreach ( $deprecated_constants as $old => $new )
if ( !defined($old) )
define($old, $new);
unset($deprecated_constants, $old, $new);
/**
* Load Plugins
*/
// Autoloaded "underscore" plugins
// First BB_CORE_PLUGIN_DIR
foreach ( bb_glob(BB_CORE_PLUGIN_DIR . '_*.php') as $_plugin )
require( $_plugin );
unset( $_plugin );
// Second BB_PLUGIN_DIR, with no name clash testing
foreach ( bb_glob(BB_PLUGIN_DIR . '_*.php') as $_plugin )
require( $_plugin );
unset( $_plugin );
do_action( 'bb_underscore_plugins_loaded' );
// Normal plugins
if ( $plugins = bb_get_option( 'active_plugins' ) ) {
foreach ( (array) $plugins as $plugin ) {
if ( strpos($plugin, 'core#') === 0 || strpos($plugin, 'user#') === 0 ) {
if ( validate_file($plugin) ) // $plugin has .., :, etc.
continue;
$plugin = str_replace(
array('core#', 'user#'),
array(BB_CORE_PLUGIN_DIR, BB_PLUGIN_DIR),
$plugin
);
if (
BB_CORE_PLUGIN_DIR != $plugin &&
BB_PLUGIN_DIR != $plugin &&
file_exists( $plugin )
) {
require( $plugin );
}
}
}
}
do_action( 'bb_plugins_loaded' );
unset($plugins, $plugin);
require( BB_PATH . BB_INC . 'pluggable.php');
/**
* Initialise localisation
*/
// Load the default text localization domain.
load_default_textdomain();
// Pull in locale data after loading text domain.
require_once(BB_PATH . BB_INC . 'locale.php');
/**
* Localisation object
*/
$bb_locale = new BB_Locale();
/**
* Reference to $wp_roles
*/
$bb_roles =& $wp_roles;
do_action('bb_got_roles');
/**
* Load active template functions.php file
*/
$template_functions_include = bb_get_active_theme_directory() . 'functions.php';
if ( file_exists($template_functions_include) )
include($template_functions_include);
unset($template_functions_include);
/**
* Create an API hook to run on shutdown
*/
function bb_shutdown_action_hook() {
do_action('bb_shutdown');
}
register_shutdown_function('bb_shutdown_action_hook');
/**
* Get details of the current user
*/
bb_current_user();
/**
* Initialise CRON
*/
if ( !function_exists('wp_schedule_single_event') )
require( BACKPRESS_PATH . 'functions.wp-cron.php' );
if ((!defined('DOING_CRON') || !DOING_CRON))
wp_cron();
/**
* Initialisation complete API hook
*/
do_action('bb_init');
/**
* Block user if they deserve it
*/
if ( bb_is_user_logged_in() && bb_has_broken_pass() )
bb_block_current_user();
/**
* The currently viewed page number
*/
$page = bb_get_uri_page();
/**
* Send HTTP headers
*/
bb_send_headers();