$v ) { if ( !in_array( $k, $noUnset ) && isset( $GLOBALS[$k] ) ) { $GLOBALS[$k] = NULL; unset( $GLOBALS[$k] ); } } } bb_unregister_GLOBALS(); /** * 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 ); } elseif ( BB_IS_ADMIN ) { $bb_hardcoded = (array) $bb; } /** * Whether the current script is part of the installation process or not * @since 1.0 */ if ( !defined( 'BB_INSTALLING' ) ) { define( 'BB_INSTALLING', false ); } /** * Whether to load deprecated routines, constants and functions * @since 1.0 */ if ( !defined( 'BB_LOAD_DEPRECATED' ) ) { define( 'BB_LOAD_DEPRECATED', true ); } /** * Remove filters and action that have been set by an included WordPress install */ if ( defined( 'ABSPATH' ) ) { $wp_filter = array(); $wp_actions = array(); $merged_filters = array(); $wp_current_filter = array(); } /** * 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_once( BACKPRESS_PATH . 'functions.core.php' ); require_once( BACKPRESS_PATH . 'functions.compat.php' ); require_once( BACKPRESS_PATH . 'functions.formatting.php' ); // WP_Error if ( !class_exists( 'WP_Error' ) ) { require_once( 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' ); } /** * Define the name of the database class */ if ( !defined( 'BB_DATABASE_CLASS' ) ) { define( 'BB_DATABASE_CLASS', 'BPDB_Multi' ); } if ( in_array( BB_DATABASE_CLASS, array( 'BPDB', 'BPDB_Multi' ) ) ) { /** * Define BackPress Database errors if not already done - no localisation at this stage */ if ( !defined( 'BPDB__CONNECT_ERROR_MESSAGE' ) ) { define( 'BPDB__CONNECT_ERROR_MESSAGE', 'ERROR: Could not establish 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
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
);
// 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.' );
}
// Set a site id if there isn't one already
if ( !isset( $bb->site_id ) ) {
$bb->site_id = 1;
}
/**
* Load core bbPress libraries
*/
require_once( BB_PATH . BB_INC . 'functions.bb-core.php' );
require_once( BB_PATH . BB_INC . 'functions.bb-forums.php' );
require_once( BB_PATH . BB_INC . 'functions.bb-topics.php' );
require_once( BB_PATH . BB_INC . 'functions.bb-posts.php' );
require_once( BB_PATH . BB_INC . 'functions.bb-topic-tags.php' );
require_once( BB_PATH . BB_INC . 'functions.bb-users.php' );
require_once( BB_PATH . BB_INC . 'functions.bb-meta.php' );
require_once( BB_PATH . BB_INC . 'class.bb-query.php' );
require_once( BB_PATH . BB_INC . 'class.bb-walker.php' );
/**
* Load API and object handling BackPress libraries
*/
// Plugin API
if ( !function_exists( 'add_filter' ) ) {
require_once( BACKPRESS_PATH . 'functions.plugin-api.php' );
}
// Shortcodes API
if ( !function_exists( 'add_shortcode' ) ) {
require_once( BACKPRESS_PATH . 'functions.shortcodes.php' );
} else {
remove_all_shortcodes();
}
/**
* Define the full path to the object cache functions include
*/
$_internal_object_cache_functions_include = BACKPRESS_PATH . 'loader.wp-object-cache.php';
$_memcached_object_cache_functions_include = BACKPRESS_PATH . 'loader.wp-object-cache-memcached.php';
if ( !defined( 'BB_OBJECT_CACHE_FUNCTIONS_INCLUDE' ) ) {
if ( defined( 'BB_OBJECT_CACHE_TYPE' ) && 'memcached' === BB_OBJECT_CACHE_TYPE ) {
define( 'BB_OBJECT_CACHE_FUNCTIONS_INCLUDE', $_memcached_object_cache_functions_include );
} else {
define( 'BB_OBJECT_CACHE_FUNCTIONS_INCLUDE', $_internal_object_cache_functions_include );
}
}
// See if a caching class is already loaded (by WordPress)
if ( function_exists( 'wp_cache_init' ) ) {
if ( isset( $_wp_using_ext_object_cache ) ) {
$_bb_using_ext_object_cache = $_wp_using_ext_object_cache;
} else {
$_bb_using_ext_object_cache = false;
}
} elseif ( BB_OBJECT_CACHE_FUNCTIONS_INCLUDE ) {
// Load the object cache class
require_once( BB_OBJECT_CACHE_FUNCTIONS_INCLUDE );
if ( BB_OBJECT_CACHE_FUNCTIONS_INCLUDE === $_internal_object_cache_functions_include ) {
$_bb_using_ext_object_cache = false;
} else {
$_bb_using_ext_object_cache = true;
}
}
unset( $_internal_object_cache_functions_include );
// Instantiate the $wp_object_cache object using wp_cache_init()
if ( function_exists( 'wp_cache_init' ) ) {
// Clear WordPress cache if it exists already - maybe should save and re-load?
unset( $wp_object_cache );
wp_cache_init();
if ( function_exists( 'wp_cache_add_global_groups' ) ) {
wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'useremail', 'usernicename' ) );
}
}
/**
* Load mapping class for BackPress to store options
*/
require_once( BB_PATH . BB_INC . 'class.bp-options.php' );
require_once( BACKPRESS_PATH . 'functions.bp-options.php' );
/**
* Load WP_Http class
*/
if ( !class_exists( 'WP_Http' ) ) {
require_once( 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 ( BB_LOAD_DEPRECATED && defined( 'BBLANGDIR' ) ) {
// User has set old constant
bb_log_deprecated( 'constant', 'BBLANGDIR', 'BB_LANG_DIR' );
define( 'BB_LANG_DIR', BBLANGDIR );
} else {
define( 'BB_LANG_DIR', BB_PATH . 'my-languages/' ); // absolute path with trailing slash
}
}
/**
* The language in which to display bbPress
*/
if ( BB_LOAD_DEPRECATED && !defined( 'BB_LANG' ) && defined( 'BBLANG' ) && '' != BBLANG ) {
// User has set old constant
bb_log_deprecated( 'constant', 'BBLANG', 'BB_LANG' );
define( 'BB_LANG', BBLANG );
}
if ( !class_exists( 'MO' ) ) {
require_once( BACKPRESS_PATH . 'pomo/mo.php' );
}
// Is WordPress loaded
if ( !defined( 'BB_IS_WP_LOADED') ) {
define( 'BB_IS_WP_LOADED', defined( 'DB_NAME' ) );
}
// Only load this if WordPress isn't loaded
if ( !BB_IS_WP_LOADED ) {
require_once( BACKPRESS_PATH . 'functions.kses.php' );
}
require_once( BB_PATH . BB_INC . 'functions.bb-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_once( 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_once( BB_PATH . BB_INC . 'functions.bb-pluggable.php' );
wp_redirect( $link );
die();
}
// Setup some variables in the $bb class if they don't exist - some of these are deprecated
if ( BB_LOAD_DEPRECATED ) {
foreach ( array( 'use_cache' => false, 'debug' => false ) as $o => $oo ) {
if ( !isset( $bb->$o ) ) {
$bb->$o = $oo;
} else {
bb_log_deprecated( 'variable', '$bb->' . $o );
}
}
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_once( BB_PATH . BB_INC . 'functions.bb-formatting.php' );
require_once( BB_PATH . BB_INC . 'functions.bb-template.php' );
require_once( BB_PATH . BB_INC . 'functions.bb-capabilities.php' );
require_once( BB_PATH . BB_INC . 'class.bb-pingbacks.php' );
// Cache options from the database
if ( !isset( $bb->load_options ) ) {
$bb->load_options = true;
}
if ( $bb->load_options ) {
$bbdb->suppress_errors();
bb_cache_all_options();
$bbdb->suppress_errors( false );
}
/**
* Set the URI and derivitaves
*/
if ( $bb->uri = bb_get_option( 'uri' ) ) {
$bb->uri = rtrim( trim( $bb->uri ), " \t\n\r\0\x0B/" ) . '/';
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 );
} elseif ( BB_LOAD_DEPRECATED ) {
// Backwards compatibility
// These were never set in the database
if ( isset( $bb->domain ) ) {
bb_log_deprecated( 'variable', '$bb->domain', '$bb->uri' );
$bb->domain = rtrim( trim( $bb->domain ), " \t\n\r\0\x0B/" );
}
if ( isset( $bb->path ) ) {
bb_log_deprecated( 'variable', '$bb->path', '$bb->uri' );
$bb->path = trim( $bb->path );
if ( $bb->path != '/' ) $bb->path = '/' . trim( $bb->path, " \t\n\r\0\x0B/" ) . '/';
}
// 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 );
}
force_ssl_login( 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 );
}
force_ssl_admin( BB_FORCE_SSL_ADMIN );
// Load default filters
require_once( BB_PATH . BB_INC . 'defaults.bb-filters.php' );
// Load default scripts
require_once( BB_PATH . BB_INC . 'functions.bb-script-loader.php' );
/* Check if the globals have been sanitized by WordPress or not (else there would be extra slashes while deep integration) */
if ( !function_exists( 'wp_magic_quotes' ) ) {
// Sanitise external input
$_GET = bb_global_sanitize( $_GET );
$_POST = bb_global_sanitize( $_POST );
$_COOKIE = bb_global_sanitize( $_COOKIE, false );
$_SERVER = bb_global_sanitize( $_SERVER );
}
/**
* 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 ( BB_LOAD_DEPRECATED && defined( 'BBPLUGINDIR' ) ) {
// User has set old constant
bb_log_deprecated( 'constant', 'BBPLUGINDIR', 'BB_PLUGIN_DIR' );
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 ( BB_LOAD_DEPRECATED && defined( 'BBPLUGINURL' ) ) {
// User has set old constant
bb_log_deprecated( 'constant', 'BBPLUGINURL', 'BB_PLUGIN_URL' );
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 ( BB_LOAD_DEPRECATED && defined( 'BBTHEMEDIR' ) ) {
// User has set old constant
bb_log_deprecated( 'constant', 'BBTHEMEDIR', 'BB_THEME_DIR' );
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 ( BB_LOAD_DEPRECATED && defined( 'BBTHEMEURL' ) ) {
// User has set old constant
bb_log_deprecated( 'constant', 'BBTHEMEURL', 'BB_THEME_URL' );
define( 'BB_THEME_URL', BBTHEMEURL );
} else {
define( 'BB_THEME_URL', $bb->uri . 'my-templates/' );
}
}
/**
* Look-up arrays provide easier access to arbitrary plugin and theme locations
*/
$_default_plugin_locations = array(
'core' => array(
'dir' => BB_CORE_PLUGIN_DIR,
'url' => BB_CORE_PLUGIN_URL,
'cap' => 'manage_plugins'
),
'user' => array(
'dir' => BB_PLUGIN_DIR,
'url' => BB_PLUGIN_URL,
'cap' => 'manage_plugins'
)
);
if ( isset( $bb->plugin_locations ) && is_array( $bb->plugin_locations ) ) {
$bb->plugin_locations = array_merge( $_default_plugin_locations, $bb->plugin_locations );
} else {
$bb->plugin_locations = $_default_plugin_locations;
}
// Don't accept a plugin location called "all". Unlikely, but really not desirable.
if ( isset( $bb->plugin_locations['all'] ) ) {
unset( $bb->plugin_locations['all'] );
}
$_default_theme_locations = array(
'core' => array(
'dir' => BB_CORE_THEME_DIR,
'url' => BB_CORE_THEME_URL,
'cap' => 'manage_themes'
),
'user' => array(
'dir' => BB_THEME_DIR,
'url' => BB_THEME_URL,
'cap' => 'manage_themes'
)
);
if ( isset( $bb->theme_locations ) && is_array( $bb->theme_locations ) ) {
$bb->theme_locations = array_merge( $_default_theme_locations, $bb->theme_locations );
} else {
$bb->theme_locations = $_default_theme_locations;
}
/**
* 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( $bbdb->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( trim( $bb->wp_siteurl ), " \t\n\r\0\x0B/" );
}
$bb->wp_home = bb_get_option( 'wp_home' );
if ( $bb->wp_home ) {
$bb->wp_home = rtrim( trim( $bb->wp_home ), " \t\n\r\0\x0B/" );
}
$bb->wp_cookies_integrated = false;
$bb->cookiedomain = bb_get_option( 'cookiedomain' );
$bb->cookiepath = bb_get_option( 'cookiepath' );
$bb->wordpress_mu_primary_blog_id = bb_get_option( 'wordpress_mu_primary_blog_id' );
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 ) ) {
if ( $bb->wordpress_mu_primary_blog_id ) {
$bb->cookiedomain = '.' . $cookiedomain;
}
if ( !$bb->cookiepath ) {
$bb->cookiepath = bb_get_common_paths( $bb->uri, $bb->wp_home );
}
$bb->wp_cookies_integrated = true;
} elseif ( $cookiedomain && strpos( $cookiedomain, '.' ) !== false ) {
$bb->cookiedomain = '.' . $cookiedomain;
if ( !$bb->cookiepath ) {
$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 ) );
if ( BB_LOAD_DEPRECATED ) {
// Deprecated setting
$bb->usercookie = bb_get_option( 'usercookie' );
if ( !$bb->usercookie ) {
$bb->usercookie = ( $bb->wp_cookies_integrated ? 'wordpressuser_' : 'bb_user_' ) . BB_HASH;
} else {
bb_log_deprecated( 'variable', '$bb->usercookie' );
}
// Deprecated setting
$bb->passcookie = bb_get_option( 'passcookie' );
if ( !$bb->passcookie ) {
$bb->passcookie = ( $bb->wp_cookies_integrated ? 'wordpresspass_' : 'bb_pass_' ) . BB_HASH;
} else {
bb_log_deprecated( 'variable', '$bb->passcookie' );
}
}
$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;
}
// Cookie path was set before integration logic above
if ( !$bb->cookiepath ) {
$bb->cookiepath = $bb->wp_cookies_integrated ? preg_replace( '|https?://[^/]+|i', '', $bb->wp_home ) : $bb->path;
}
$bb->cookiepath = rtrim( trim( $bb->cookiepath ), " \t\n\r\0\x0B/" ) . '/';
$bb->admin_cookie_path = bb_get_option( 'admin_cookie_path' );
if ( !$bb->admin_cookie_path ) {
$bb->admin_cookie_path = $bb->path . 'bb-admin';
}
if ( '/' !== $bb->admin_cookie_path = trim( $bb->admin_cookie_path ) ) {
$bb->admin_cookie_path = rtrim( $bb->admin_cookie_path, " \t\n\r\0\x0B/" );
}
if ( BB_LOAD_DEPRECATED ) {
$_plugin_cookie_paths = bb_get_option( 'plugin_cookie_paths' );
// Deprecated settings
if ( $_plugin_cookie_paths ) {
if ( isset( $_plugin_cookie_paths['core'] ) && $_plugin_cookie_paths['core'] ) {
$bb->core_plugins_cookie_path = $_plugin_cookie_paths['core'];
}
if ( isset( $_plugin_cookie_paths['user'] ) && $_plugin_cookie_paths['user'] ) {
$bb->user_plugins_cookie_path = $_plugin_cookie_paths['user'];
}
} else {
if ( $bb->core_plugins_cookie_path = bb_get_option( 'core_plugins_cookie_path' ) ) {
bb_log_deprecated( 'variable', '$bb->core_plugins_cookie_path', '$bb->plugin_cookie_paths[\'core\']' );
}
if ( $bb->user_plugins_cookie_path = bb_get_option( 'user_plugins_cookie_path' ) ) {
bb_log_deprecated( 'variable', '$bb->core_plugins_cookie_path', '$bb->plugin_cookie_paths[\'user\']' );
}
}
if ( !$bb->core_plugins_cookie_path && isset( $bb->plugin_locations['core']['url'] ) && $bb->plugin_locations['core']['url'] ) {
$bb->core_plugins_cookie_path = preg_replace( '|https?://[^/]+|i', '', $bb->plugin_locations['core']['url'] );
}
$bb->core_plugins_cookie_path = rtrim( trim( $bb->core_plugins_cookie_path ), " \t\n\r\0\x0B/" );
if ( !$bb->user_plugins_cookie_path && isset( $bb->plugin_locations['user']['url'] ) && $bb->plugin_locations['user']['url'] ) {
$bb->user_plugins_cookie_path = preg_replace( '|https?://[^/]+|i', '', $bb->plugin_locations['user']['url'] );
}
$bb->user_plugins_cookie_path = rtrim( trim( $bb->user_plugins_cookie_path ), " \t\n\r\0\x0B/" );
if ( !$_plugin_cookie_paths ) {
$bb->plugin_cookie_paths = array();
}
if ( !isset( $_plugin_cookie_paths['core'] ) ) {
$bb->plugin_cookie_paths['core'] = $bb->core_plugins_cookie_path;
}
if ( !isset( $_plugin_cookie_paths['user'] ) ) {
$bb->plugin_cookie_paths['user'] = $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;
}
$bb->sitecookiepath = rtrim( trim( $bb->sitecookiepath ), " \t\n\r\0\x0B/" ) . '/';
$bb->wp_admin_cookie_path = bb_get_option( 'wp_admin_cookie_path' );
if ( !$bb->wp_admin_cookie_path && $bb->wp_cookies_integrated ) {
if ( $bb->wordpress_mu_primary_blog_id ) {
$bb->wp_admin_cookie_path = $_bb_sitecookiepath;
} else {
$bb->wp_admin_cookie_path = $_bb_sitecookiepath . '/wp-admin';
}
}
if ( '/' !== $bb->wp_admin_cookie_path = trim( $bb->wp_admin_cookie_path ) ) {
$bb->wp_admin_cookie_path = rtrim( $bb->wp_admin_cookie_path, " \t\n\r\0\x0B/" );
}
$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';
}
if ( '/' !== $bb->wp_plugins_cookie_path = trim( $bb->wp_plugins_cookie_path ) ) {
$bb->wp_plugins_cookie_path = rtrim( $bb->wp_plugins_cookie_path, " \t\n\r\0\x0B/" );
}
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';
/**
* Initialise localisation
*/
// Load the default text localization domain.
bb_load_default_textdomain();
// Pull in locale data after loading text domain.
require_once( BB_PATH . BB_INC . 'class.bb-locale.php' );
/**
* Localisation object
*/
$bb_locale = new BB_Locale();
/**
* Remaining BackPress
*/
// WP_Pass
if ( !class_exists( 'WP_Pass' ) ) {
require_once( BACKPRESS_PATH . 'class.wp-pass.php' );
}
// WP_Users
if ( !class_exists( 'WP_Users' ) ) {
require_once( BACKPRESS_PATH . 'class.wp-users.php' );
$wp_users_object = new WP_Users( $bbdb );
}
if ( !class_exists( 'BP_Roles' ) ) {
require_once( BACKPRESS_PATH . 'class.bp-roles.php' );
}
/**
* BP_Roles object
*/
$wp_roles = new BP_Roles( $bbdb );
// BP_User
if ( !class_exists( 'BP_User' ) ) {
require_once( BACKPRESS_PATH . 'class.bp-user.php' );
}
// WP_Auth
if ( !class_exists( 'WP_Auth' ) ) {
require_once( 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
);
$_plugin_cookie_paths = bb_get_option( 'plugin_cookie_paths' );
foreach ( $bb->plugin_locations as $_name => $_data ) {
if ( isset( $_data['cookie_path'] ) && !empty( $_data['cookie_path'] ) ) {
$_cookie_path = $_data['cookie_path'];
} elseif ( !$_plugin_cookie_paths || !isset( $_plugin_cookie_paths[$_name] ) || !$_plugin_cookie_paths[$_name] ) {
$_cookie_path = preg_replace( '|https?://[^/]+|i', '', $_data['url'] );
} else {
$_cookie_path = $_plugin_cookie_paths[$_name];
}
if ( '/' !== $_cookie_path = trim( $_cookie_path ) ) {
$_cookie_path = rtrim( $_cookie_path, " \t\n\r\0\x0B/" );
}
if ( !$_cookie_path ) {
continue;
}
$_auth = array(
'domain' => $bb->cookiedomain,
'path' => $_cookie_path,
'name' => $bb->authcookie
);
if ( !in_array( $_auth, $cookies['auth'] ) ) {
$cookies['auth'][] = $_auth;
}
$_secure_auth = array(
'domain' => $bb->cookiedomain,
'path' => $_cookie_path,
'name' => $bb->secure_auth_cookie,
'secure' => true
);
if ( !in_array( $_secure_auth, $cookies['secure_auth'] ) ) {
$cookies['secure_auth'][] = $_secure_auth;
}
}
unset( $_plugin_cookie_paths, $_type, $_data, $_cookie_path, $_auth, $_secure_auth );
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
);
}
/**
* The current cookie version
*
* Version 1 is for WordPress >= 2.6 and < 2.8
* Version 2 is for Wordpress >= 2.8
*/
if ( !defined( 'WP_AUTH_COOKIE_VERSION' ) ) {
define( 'WP_AUTH_COOKIE_VERSION', 2 );
}
/**
* 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_once( BACKPRESS_PATH . 'class.wp-dependencies.php' );
}
if ( !class_exists( 'WP_Scripts' ) ) {
require_once( BACKPRESS_PATH . 'class.wp-scripts.php' );
require_once( BACKPRESS_PATH . 'functions.wp-scripts.php' );
} else {
unset( $wp_scripts );
}
if ( !class_exists( 'WP_Styles' ) ) {
require_once( BACKPRESS_PATH . 'class.wp-styles.php' );
require_once( BACKPRESS_PATH . 'functions.wp-styles.php' );
} else {
unset( $wp_styles );
}
// WP_Taxonomy
if ( !class_exists( 'WP_Taxonomy' ) ) {
require_once( BACKPRESS_PATH . 'class.wp-taxonomy.php' );
}
if ( !class_exists( 'BB_Taxonomy' ) ) {
require_once( 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
// preserve the references
$tax =& $wp_taxonomy_object->taxonomies;
$wp_taxonomy_object = new BB_Taxonomy( $bbdb );
$wp_taxonomy_object->taxonomies =& $tax;
unset( $tax );
}
$wp_taxonomy_object->register_taxonomy( 'bb_topic_tag', 'bb_topic' );
$wp_taxonomy_object->register_taxonomy( 'bb_subscribe', 'bb_user' );
do_action( 'bb_options_loaded' );
/**
* Load deprecated constants and functions
*/
// Skip loading of deprecated stuff unless specifically requested
if ( BB_LOAD_DEPRECATED ) {
/**
* Define deprecated constants for plugin compatibility
* $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 ) {
// only define if new one is defined
if ( !defined( $old ) && defined( $new ) ) {
define( $old, constant( $new ) );
} elseif ( defined( $old ) ) {
bb_log_deprecated( 'constant', $old, $new );
}
}
$deprecated_constants = array(
'USER_BBDB_NAME' => 'user_bbdb_name',
'USER_BBDB_USER' => 'user_bbdb_user',
'USER_BBDB_PASSWORD' => 'user_bbdb_password',
'USER_BBDB_HOST' => 'user_bbdb_host',
'USER_BBDB_CHARSET' => 'user_bbdb_charset',
'CUSTOM_USER_TABLE' => 'custom_user_table',
'CUSTOM_USER_META_TABLE' => 'custom_user_meta_table',
);
foreach ( $deprecated_constants as $old => $new ) {
if ( !defined( $old ) ) {
define( $old, $bb->$new );
} else {
bb_log_deprecated( 'constant', $old, '$bb->' . $new );
}
}
unset($deprecated_constants, $old, $new);
/**
* Load deprecated functions
*/
require_once( BB_PATH . BB_INC . 'functions.bb-deprecated.php' );
/**
* Old cache global object for backwards compatibility
*/
$bb_cache = new BB_Cache();
}
/**
* Load active template functions.php file
*/
$template_functions_include = bb_get_active_theme_directory() . 'functions.php';
if ( file_exists( $template_functions_include ) ) {
require_once( $template_functions_include );
}
unset( $template_functions_include );
/**
* Load Plugins
*/
// Skip plugin loading in "safe" mode
if ( $bb->plugin_locations && ( !isset( $bb->safemode ) || $bb->safemode !== true ) ) {
// Autoloaded "underscore" plugins
foreach ( $bb->plugin_locations as $_name => $_data ) {
foreach ( bb_glob( $_data['dir'] . '_*.php' ) as $_plugin ) {
require_once( $_plugin );
}
unset( $_plugin );
}
unset( $_name, $_data );
do_action( 'bb_underscore_plugins_loaded' );
// Normal plugins
if ( $_plugins = bb_get_option( 'active_plugins' ) ) {
foreach ( (array) $_plugins as $_plugin ) {
if ( !preg_match( '/^([a-z0-9_-]+)#((?:[a-z0-9\/\\_-]+.)+)(php)$/i', $_plugin, $_matches ) ) {
// The plugin entry in the database is invalid
continue;
}
$_directory = $bb->plugin_locations[$_matches[1]]['dir'];
$_plugin = $_matches[2] . $_matches[3];
if ( !$_plugin ) {
// Not likely
continue;
}
if ( validate_file( $_plugin ) ) {
// $plugin has .., :, etc.
continue;
}
if ( !file_exists( $_directory . $_plugin ) ) {
// The plugin isn't there
continue;
}
require_once( $_directory . $_plugin );
}
}
unset( $_plugins, $_plugin, $_directory );
do_action( 'bb_plugins_loaded' );
}
require_once( BB_PATH . BB_INC . 'functions.bb-pluggable.php' );
/**
* Reference to $wp_roles
*/
$bb_roles =& $wp_roles;
do_action( 'bb_got_roles' );
/**
* 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_once( BACKPRESS_PATH . 'functions.wp-cron.php' );
}
if ( ( !defined('DOING_CRON') || !DOING_CRON ) ) {
wp_cron();
}
/**
* The currently viewed page number
*/
$page = bb_get_uri_page();
/**
* 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();
}
/**
* Send HTTP headers
*/
bb_send_headers();