Make WordPress Core

Changeset 12762


Ignore:
Timestamp:
01/19/2010 05:27:03 PM (15 years ago)
Author:
ryan
Message:

phpdoc for load.php, return some includes to global scope. Props nacin. see #11881

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/load.php

    r12755 r12762  
    1515 */
    1616function wp_unregister_GLOBALS() {
    17     if ( !ini_get('register_globals') )
     17    if ( !ini_get( 'register_globals' ) )
    1818        return;
    1919
    20     if ( isset($_REQUEST['GLOBALS']) )
    21         die('GLOBALS overwrite attempt detected');
     20    if ( isset( $_REQUEST['GLOBALS'] ) )
     21        die( 'GLOBALS overwrite attempt detected' );
    2222
    2323    // Variables that shouldn't be unset
    24     $noUnset = array('GLOBALS', '_GET', '_POST', '_COOKIE', '_REQUEST', '_SERVER', '_ENV', '_FILES', 'table_prefix');
    25 
    26     $input = array_merge($_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_FILES, isset($_SESSION) && is_array($_SESSION) ? $_SESSION : array());
     24    $noUnset = array( 'GLOBALS', '_GET', '_POST', '_COOKIE', '_REQUEST', '_SERVER', '_ENV', '_FILES', 'table_prefix' );
     25
     26    $input = array_merge( $_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_FILES, isset( $_SESSION ) && is_array( $_SESSION ) ? $_SESSION : array() );
    2727    foreach ( $input as $k => $v )
    28         if ( !in_array($k, $noUnset) && isset($GLOBALS[$k]) ) {
     28        if ( !in_array( $k, $noUnset ) && isset( $GLOBALS[$k] ) ) {
    2929            $GLOBALS[$k] = NULL;
    30             unset($GLOBALS[$k]);
     30            unset( $GLOBALS[$k] );
    3131        }
    3232}
    3333
     34/**
     35 * Fix $_SERVER variables for various setups.
     36 *
     37 * @access private
     38 * @since 3.0.0
     39 */
    3440function wp_fix_server_vars() {
    3541    global $PHP_SELF;
     
    3844
    3945        // IIS Mod-Rewrite
    40         if (isset($_SERVER['HTTP_X_ORIGINAL_URL'])) {
     46        if ( isset( $_SERVER['HTTP_X_ORIGINAL_URL'] ) ) {
    4147            $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_ORIGINAL_URL'];
    4248        }
    4349        // IIS Isapi_Rewrite
    44         else if (isset($_SERVER['HTTP_X_REWRITE_URL'])) {
     50        else if ( isset( $_SERVER['HTTP_X_REWRITE_URL'] ) ) {
    4551            $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL'];
    4652        }
     
    4854        {
    4955            // Use ORIG_PATH_INFO if there is no PATH_INFO
    50             if ( !isset($_SERVER['PATH_INFO']) && isset($_SERVER['ORIG_PATH_INFO']) )
     56            if ( !isset( $_SERVER['PATH_INFO'] ) && isset( $_SERVER['ORIG_PATH_INFO'] ) )
    5157                $_SERVER['PATH_INFO'] = $_SERVER['ORIG_PATH_INFO'];
    5258
    5359            // Some IIS + PHP configurations puts the script-name in the path-info (No need to append it twice)
    54             if ( isset($_SERVER['PATH_INFO']) ) {
     60            if ( isset( $_SERVER['PATH_INFO'] ) ) {
    5561                if ( $_SERVER['PATH_INFO'] == $_SERVER['SCRIPT_NAME'] )
    5662                    $_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO'];
     
    6066
    6167            // Append the query string if it exists and isn't null
    62             if (isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING'])) {
     68            if ( isset( $_SERVER['QUERY_STRING'] ) && !empty( $_SERVER['QUERY_STRING'] ) ) {
    6369                $_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING'];
    6470            }
     
    6773
    6874    // Fix for PHP as CGI hosts that set SCRIPT_FILENAME to something ending in php.cgi for all requests
    69     if ( isset($_SERVER['SCRIPT_FILENAME']) && ( strpos($_SERVER['SCRIPT_FILENAME'], 'php.cgi') == strlen($_SERVER['SCRIPT_FILENAME']) - 7 ) )
     75    if ( isset( $_SERVER['SCRIPT_FILENAME'] ) && ( strpos( $_SERVER['SCRIPT_FILENAME'], 'php.cgi' ) == strlen( $_SERVER['SCRIPT_FILENAME'] ) - 7 ) )
    7076        $_SERVER['SCRIPT_FILENAME'] = $_SERVER['PATH_TRANSLATED'];
    7177
    7278    // Fix for Dreamhost and other PHP as CGI hosts
    73     if (strpos($_SERVER['SCRIPT_NAME'], 'php.cgi') !== false)
    74         unset($_SERVER['PATH_INFO']);
     79    if ( strpos( $_SERVER['SCRIPT_NAME'], 'php.cgi' ) !== false )
     80        unset( $_SERVER['PATH_INFO'] );
    7581
    7682    // Fix empty PHP_SELF
    7783    $PHP_SELF = $_SERVER['PHP_SELF'];
    78     if ( empty($PHP_SELF) )
    79         $_SERVER['PHP_SELF'] = $PHP_SELF = preg_replace("/(\?.*)?$/",'',$_SERVER["REQUEST_URI"]);
    80 }
    81 
     84    if ( empty( $PHP_SELF ) )
     85        $_SERVER['PHP_SELF'] = $PHP_SELF = preg_replace( "/(\?.*)?$/",'',$_SERVER["REQUEST_URI"] );
     86}
     87
     88/**
     89 * Check for the required PHP version, and the MySQL extension or a database drop-in.
     90 *
     91 * Dies if requirements are not met.
     92 *
     93 * @access private
     94 * @since 3.0.0
     95 */
    8296function wp_check_php_mysql_versions() {
    8397    // we can probably extend this function to check if wp_die() exists then use translated strings, and then use it in install.php etc.
     
    88102        die( sprintf( /*WP_I18N_OLD_PHP*/'Your server is running PHP version %1$s but WordPress %2%s requires at least %2%s.'/*/WP_I18N_OLD_PHP*/, $php_version, $wp_version, $required_php_version ) );
    89103
    90     if ( !extension_loaded('mysql') && !file_exists(WP_CONTENT_DIR . '/db.php') )
     104    if ( !extension_loaded( 'mysql' ) && !file_exists( WP_CONTENT_DIR . '/db.php' ) )
    91105        die( /*WP_I18N_OLD_MYSQL*/'Your PHP installation appears to be missing the MySQL extension which is required by WordPress.'/*/WP_I18N_OLD_MYSQL*/ );
    92106}
    93107
     108/**
     109 * Dies with a maintenance message when conditions are met.
     110 *
     111 * Checks for a file in the WordPress root directory named ".maintenance".
     112 * This file will contain the variable $upgrading, set to the time the file
     113 * was created. If the file was created less than 10 minutes ago, WordPress
     114 * enters maintenance mode and displays a message.
     115 *
     116 * The default message can be replaced by using a drop-in (maintenance.php in
     117 * the wp-content directory).
     118 *
     119 * @access private
     120 * @since 3.0.0
     121 */
    94122function wp_maintenance() {
    95     if ( file_exists(ABSPATH . '.maintenance') && !defined('WP_INSTALLING') ) {
    96         include(ABSPATH . '.maintenance');
    97         // If the $upgrading timestamp is older than 10 minutes, don't die.
    98         if ( ( time() - $upgrading ) < 600 ) {
    99             if ( file_exists( WP_CONTENT_DIR . '/maintenance.php' ) ) {
    100                 require_once( WP_CONTENT_DIR . '/maintenance.php' );
    101                 die();
    102             }
    103 
    104             $protocol = $_SERVER["SERVER_PROTOCOL"];
    105             if ( 'HTTP/1.1' != $protocol && 'HTTP/1.0' != $protocol )
    106                 $protocol = 'HTTP/1.0';
    107             header( "$protocol 503 Service Unavailable", true, 503 );
    108             header( 'Content-Type: text/html; charset=utf-8' );
    109             header( 'Retry-After: 600' );
    110     ?>
     123    if ( !file_exists( ABSPATH . '.maintenance' ) || defined( 'WP_INSTALLING' ) )
     124        return;
     125
     126    include( ABSPATH . '.maintenance' );
     127    // If the $upgrading timestamp is older than 10 minutes, don't die.
     128    if ( ( time() - $upgrading ) >= 600 )
     129        return;
     130
     131    if ( file_exists( WP_CONTENT_DIR . '/maintenance.php' ) ) {
     132        require_once( WP_CONTENT_DIR . '/maintenance.php' );
     133        die();
     134    }
     135
     136    $protocol = $_SERVER["SERVER_PROTOCOL"];
     137    if ( 'HTTP/1.1' != $protocol && 'HTTP/1.0' != $protocol )
     138        $protocol = 'HTTP/1.0';
     139    header( "$protocol 503 Service Unavailable", true, 503 );
     140    header( 'Content-Type: text/html; charset=utf-8' );
     141    header( 'Retry-After: 600' );
     142?>
    111143    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    112144    <html xmlns="http://www.w3.org/1999/xhtml">
     
    120152    </body>
    121153    </html>
    122     <?php
    123             die();
    124         }
    125     }
     154<?php
     155    die();
    126156}
    127157
     
    136166function timer_start() {
    137167    global $timestart;
    138     $mtime = explode(' ', microtime() );
     168    $mtime = explode( ' ', microtime() );
    139169    $mtime = $mtime[1] + $mtime[0];
    140170    $timestart = $mtime;
     
    166196 * @return float The "second.microsecond" finished time calculation
    167197 */
    168 function timer_stop($display = 0, $precision = 3) { //if called like timer_stop(1), will echo $timetotal
     198function timer_stop( $display = 0, $precision = 3 ) { // if called like timer_stop(1), will echo $timetotal
    169199    global $timestart, $timeend;
    170200    $mtime = microtime();
    171     $mtime = explode(' ',$mtime);
     201    $mtime = explode( ' ',$mtime );
    172202    $mtime = $mtime[1] + $mtime[0];
    173203    $timeend = $mtime;
    174204    $timetotal = $timeend-$timestart;
    175     $r = ( function_exists('number_format_i18n') ) ? number_format_i18n($timetotal, $precision) : number_format($timetotal, $precision);
     205    $r = ( function_exists( 'number_format_i18n' ) ) ? number_format_i18n( $timetotal, $precision ) : number_format( $timetotal, $precision );
    176206    if ( $display )
    177207        echo $r;
     
    179209}
    180210
     211/**
     212 * Sets PHP error handling.
     213 *
     214 * Add <code>define('WP_DEBUG', true);</code> to wp-config.php to enable
     215 * the reporting of notices during development.
     216 *
     217 * Add <code>define('WP_DEBUG_DISPLAY', false);</code> to wp-config.php to
     218 * disable the display of errors.
     219 *
     220 * Add <code>define('WP_DEBUG_LOG', true);</code> to wp-config.php to log
     221 * eerrors to debug.log in the wp-content directory.
     222 *
     223 * @access private
     224 * @since 3.0.0
     225 */
    181226function wp_debug_mode() {
    182227    if ( WP_DEBUG ) {
    183         if ( defined('E_DEPRECATED') )
    184             error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT);
     228        if ( defined( 'E_DEPRECATED' ) )
     229            error_reporting( E_ALL & ~E_DEPRECATED & ~E_STRICT );
    185230        else
    186             error_reporting(E_ALL);
     231            error_reporting( E_ALL );
    187232
    188233        if ( WP_DEBUG_DISPLAY )
    189             ini_set('display_errors', 1);
     234            ini_set( 'display_errors', 1 );
    190235
    191236        if ( WP_DEBUG_LOG ) {
    192             ini_set('log_errors', 1);
    193             ini_set('error_log', WP_CONTENT_DIR . '/debug.log');
     237            ini_set( 'log_errors', 1 );
     238            ini_set( 'error_log', WP_CONTENT_DIR . '/debug.log' );
    194239        }
    195240    } else {
    196         if ( defined('E_RECOVERABLE_ERROR') )
    197             error_reporting(E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR);
     241        if ( defined( 'E_RECOVERABLE_ERROR' ) )
     242            error_reporting( E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR );
    198243        else
    199             error_reporting(E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING);
    200     }
    201 }
    202 
     244            error_reporting( E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING );
     245    }
     246}
     247
     248/**
     249 * Sets the location of the language directory.
     250 *
     251 * To set directory manually, define <code>WP_LANG_DIR</code> in wp-config.php.
     252 *
     253 * First looks for language folder in WP_CONTENT_DIR and uses that folder if it
     254 * exists. Or it uses the "languages" folder in WPINC.
     255 *
     256 * The WP_LANG_DIR constant was introduced in 2.1.0.
     257 *
     258 * @access private
     259 * @since 3.0.0
     260 */
    203261function wp_set_lang_dir() {
    204     if ( !defined('WP_LANG_DIR') ) {
    205         /**
    206          * Stores the location of the language directory. First looks for language folder in WP_CONTENT_DIR
    207          * and uses that folder if it exists. Or it uses the "languages" folder in WPINC.
    208          *
    209          * @since 2.1.0
    210          */
    211         if ( file_exists(WP_CONTENT_DIR . '/languages') && @is_dir(WP_CONTENT_DIR . '/languages') ) {
    212             define('WP_LANG_DIR', WP_CONTENT_DIR . '/languages'); // no leading slash, no trailing slash, full path, not relative to ABSPATH
    213             if (!defined('LANGDIR')) {
     262    if ( !defined( 'WP_LANG_DIR' ) ) {
     263        if ( file_exists( WP_CONTENT_DIR . '/languages' ) && @is_dir( WP_CONTENT_DIR . '/languages' ) ) {
     264            define( 'WP_LANG_DIR', WP_CONTENT_DIR . '/languages' ); // no leading slash, no trailing slash, full path, not relative to ABSPATH
     265            if ( !defined( 'LANGDIR' ) ) {
    214266                // Old static relative path maintained for limited backwards compatibility - won't work in some cases
    215                 define('LANGDIR', 'wp-content/languages');
     267                define( 'LANGDIR', 'wp-content/languages' );
    216268            }
    217269        } else {
    218             define('WP_LANG_DIR', ABSPATH . WPINC . '/languages'); // no leading slash, no trailing slash, full path, not relative to ABSPATH
    219             if (!defined('LANGDIR')) {
     270            define( 'WP_LANG_DIR', ABSPATH . WPINC . '/languages' ); // no leading slash, no trailing slash, full path, not relative to ABSPATH
     271            if ( !defined( 'LANGDIR' ) ) {
    220272                // Old relative path maintained for backwards compatibility
    221                 define('LANGDIR', WPINC . '/languages');
     273                define( 'LANGDIR', WPINC . '/languages' );
    222274            }
    223275        }
     
    225277}
    226278
     279/**
     280 * Sets the database table prefix and the format specifiers for database table columns.
     281 *
     282 * Columns not listed here default to %s.
     283 *
     284 * @see wpdb::$field_types Since 2.8.0
     285 * @see wpdb::prepare()
     286 * @see wpdb::insert()
     287 * @see wpdb::update()
     288 * @see wpdb::set_prefix()
     289 *
     290 * @access private
     291 * @since 3.0.0
     292 */
    227293function wp_set_wpdb_vars() {
    228294    global $wpdb, $table_prefix;
    229     if ( !empty($wpdb->error) )
     295    if ( !empty( $wpdb->error ) )
    230296        dead_db();
    231297
    232     /**
    233      * Format specifiers for DB columns. Columns not listed here default to %s.
    234      * @since 2.8.0
    235      * @see wpdb:$field_types
    236      * @see wpdb:prepare()
    237      * @see wpdb:insert()
    238      * @see wpdb:update()
    239      */
    240298    $wpdb->field_types = array( 'post_author' => '%d', 'post_parent' => '%d', 'menu_order' => '%d', 'term_id' => '%d', 'term_group' => '%d', 'term_taxonomy_id' => '%d',
    241299        'parent' => '%d', 'count' => '%d','object_id' => '%d', 'term_order' => '%d', 'ID' => '%d', 'commment_ID' => '%d', 'comment_post_ID' => '%d', 'comment_parent' => '%d',
    242300        'user_id' => '%d', 'link_id' => '%d', 'link_owner' => '%d', 'link_rating' => '%d', 'option_id' => '%d', 'blog_id' => '%d', 'meta_id' => '%d', 'post_id' => '%d',
    243         'user_status' => '%d', 'umeta_id' => '%d', 'comment_karma' => '%d', 'comment_count' => '%d');
    244 
    245     $prefix = $wpdb->set_prefix($table_prefix);
    246 
    247     if ( is_wp_error($prefix) )
    248         wp_die(/*WP_I18N_BAD_PREFIX*/'<strong>ERROR</strong>: <code>$table_prefix</code> in <code>wp-config.php</code> can only contain numbers, letters, and underscores.'/*/WP_I18N_BAD_PREFIX*/);
    249 
    250 }
    251 
     301        'user_status' => '%d', 'umeta_id' => '%d', 'comment_karma' => '%d', 'comment_count' => '%d' );
     302
     303    $prefix = $wpdb->set_prefix( $table_prefix );
     304
     305    if ( is_wp_error( $prefix ) )
     306        wp_die( /*WP_I18N_BAD_PREFIX*/'<strong>ERROR</strong>: <code>$table_prefix</code> in <code>wp-config.php</code> can only contain numbers, letters, and underscores.'/*/WP_I18N_BAD_PREFIX*/ );
     307}
     308
     309/**
     310 * Starts the WordPress object cache.
     311 *
     312 * If an object-cache.php file exists in the wp-content directory,
     313 * it uses that drop-in as an external object cache.
     314 *
     315 * @access private
     316 * @since 3.0.0
     317 */
    252318function wp_start_object_cache() {
    253319    global $_wp_using_ext_object_cache;
    254     if ( file_exists(WP_CONTENT_DIR . '/object-cache.php') ) {
    255         require_once (WP_CONTENT_DIR . '/object-cache.php');
     320    if ( file_exists( WP_CONTENT_DIR . '/object-cache.php' ) ) {
     321        require_once ( WP_CONTENT_DIR . '/object-cache.php' );
    256322        $_wp_using_ext_object_cache = true;
    257323    } else {
    258         require_once (ABSPATH . WPINC . '/cache.php');
     324        require_once ( ABSPATH . WPINC . '/cache.php' );
    259325        $_wp_using_ext_object_cache = false;
    260326    }
    261327
    262328    wp_cache_init();
    263 
    264     if ( function_exists('wp_cache_add_global_groups') ) {
    265         wp_cache_add_global_groups(array ('users', 'userlogins', 'usermeta', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss'));
    266         wp_cache_add_non_persistent_groups(array( 'comment', 'counts', 'plugins' ));
    267     }
    268 }
    269 
     329    if ( function_exists( 'wp_cache_add_global_groups' ) ) {
     330        wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss' ) );
     331        wp_cache_add_non_persistent_groups( array( 'comment', 'counts', 'plugins' ) );
     332    }
     333}
     334
     335/**
     336 * Redirects to the installer if WordPress is not installed.
     337 *
     338 * Dies with an error message when multisite is enabled.
     339 *
     340 * @access private
     341 * @since 3.0.0
     342 */
    270343function wp_not_installed() {
    271344    if ( is_multisite() ) {
    272         if ( !is_blog_installed() && !defined('WP_INSTALLING') )
    273             die( __( 'The blog you have requested is not installed properly. Please contact the system administrator.' ) ); // have to die here
    274     } elseif ( !is_blog_installed() && (strpos($_SERVER['PHP_SELF'], 'install.php') === false && !defined('WP_INSTALLING')) ) {
    275         if ( defined('WP_SITEURL') )
     345        if ( !is_blog_installed() && !defined( 'WP_INSTALLING' ) )
     346            wp_die( __( 'The blog you have requested is not installed properly. Please contact the system administrator.' ) );
     347    } elseif ( !is_blog_installed() && ( strpos( $_SERVER['PHP_SELF'], 'install.php' ) === false && !defined( 'WP_INSTALLING' ) ) ) {
     348        if ( defined( 'WP_SITEURL' ) )
    276349            $link = WP_SITEURL . '/wp-admin/install.php';
    277         elseif (strpos($_SERVER['PHP_SELF'], 'wp-admin') !== false)
    278             $link = preg_replace('|/wp-admin/?.*?$|', '/', $_SERVER['PHP_SELF']) . 'wp-admin/install.php';
     350        elseif ( strpos( $_SERVER['PHP_SELF'], 'wp-admin' ) !== false )
     351            $link = preg_replace( '|/wp-admin/?.*?$|', '/', $_SERVER['PHP_SELF'] ) . 'wp-admin/install.php';
    279352        else
    280             $link = preg_replace('|/[^/]+?$|', '/', $_SERVER['PHP_SELF']) . 'wp-admin/install.php';
    281         require_once(ABSPATH . WPINC . '/kses.php');
    282         require_once(ABSPATH . WPINC . '/pluggable.php');
    283         require_once(ABSPATH . WPINC . '/formatting.php');
    284         wp_redirect($link);
     353            $link = preg_replace( '|/[^/]+?$|', '/', $_SERVER['PHP_SELF'] ) . 'wp-admin/install.php';
     354        require_once( ABSPATH . WPINC . '/kses.php' );
     355        require_once( ABSPATH . WPINC . '/pluggable.php' );
     356        require_once( ABSPATH . WPINC . '/formatting.php' );
     357        wp_redirect( $link );
    285358        die();
    286359    }
    287360}
    288361
    289 function wp_load_mu_plugins() {
    290     if ( is_dir( WPMU_PLUGIN_DIR ) ) {
    291         if ( $dh = opendir( WPMU_PLUGIN_DIR ) ) {
    292             $mu_plugins = array ();
    293             while ( ( $plugin = readdir( $dh ) ) !== false ) {
    294                 if ( substr( $plugin, -4 ) == '.php' )
    295                     $mu_plugins[] = $plugin;
    296             }
    297             closedir( $dh );
    298             sort( $mu_plugins );
    299             foreach ( $mu_plugins as $mu_plugin )
    300                 include_once( WPMU_PLUGIN_DIR . '/' . $mu_plugin );
    301         }
    302     }
    303 }
    304 
    305 function wp_load_plugins() {
     362/**
     363 * Returns array of must-use plugin files to be included in global scope.
     364 *
     365 * The default directory is wp-content/mu-plugins. To change the default directory
     366 * manually, define <code>WPMU_PLUGIN_DIR</code> and <code>WPMU_PLUGIN_URL</code>
     367 * in wp-config.php.
     368 *
     369 * @access private
     370 * @since 3.0.0
     371 * @return array Files to include
     372 */
     373function wp_muplugins_to_load() {
     374    $mu_plugins = array();
     375    if ( !is_dir( WPMU_PLUGIN_DIR ) )
     376        return $mu_plugins;
     377    if ( ! $dh = opendir( WPMU_PLUGIN_DIR ) )
     378        return $mu_plugins;
     379    while ( ( $plugin = readdir( $dh ) ) !== false ) {
     380        if ( substr( $plugin, -4 ) == '.php' )
     381            $mu_plugins[] = WPMU_PLUGIN_DIR . '/' . $plugin;
     382    }
     383    closedir( $dh );
     384    sort( $mu_plugins );
     385
     386    return $mu_plugins;
     387}
     388
     389/**
     390 * Returns array of plugin files to be included in global scope.
     391 *
     392 * The default directory is wp-content/plugins. To change the default directory
     393 * manually, define <code>WP_PLUGIN_DIR</code> and <code>WP_PLUGIN_URL</code>
     394 * in wp-config.php.
     395 *
     396 * @access private
     397 * @since 3.0.0
     398 * @return array Files to include
     399 */
     400function wp_plugins_to_load() {
     401    $plugins = array();
     402
    306403    // Check for hacks file if the option is enabled
    307     if ( get_option('hack_file') ) {
    308         if ( file_exists(ABSPATH . 'my-hacks.php') )
    309             require(ABSPATH . 'my-hacks.php');
    310     }
    311 
    312     $current_plugins = apply_filters( 'active_plugins', get_option( 'active_plugins' ) );
    313     if ( is_array($current_plugins) && !defined('WP_INSTALLING') ) {
    314         foreach ( $current_plugins as $plugin ) {
    315             // check the $plugin filename
    316             // Validate plugin filename
    317             if ( validate_file($plugin) // $plugin must validate as file
    318                 || '.php' != substr($plugin, -4) // $plugin must end with '.php'
    319                 || !file_exists(WP_PLUGIN_DIR . '/' . $plugin)  // $plugin must exist
    320                 )
    321                 continue;
    322 
    323             include_once(WP_PLUGIN_DIR . '/' . $plugin);
    324         }
    325         unset($plugin);
    326     }
    327     unset($current_plugins);
    328 }
    329 
     404    if ( get_option( 'hack_file' ) && file_exists( ABSPATH . 'my-hacks.php' ) )
     405            $plugins[] = ABSPATH . 'my-hacks.php';
     406
     407    $active_plugins = apply_filters( 'active_plugins', get_option( 'active_plugins' ) );
     408    if ( !is_array( $active_plugins ) || defined( 'WP_INSTALLING' ) )
     409        return $plugins;
     410    foreach ( $active_plugins as $plugin ) {
     411        if ( validate_file( $plugin ) // $plugin must validate as file
     412            || '.php' != substr( $plugin, -4 ) // $plugin must end with '.php'
     413            || !file_exists( WP_PLUGIN_DIR . '/' . $plugin ) // $plugin must exist
     414            )
     415            continue;
     416        $plugins[] = WP_PLUGIN_DIR . '/' . $plugin;
     417    }
     418    return $plugins;
     419}
     420
     421/**
     422 * Sets internal encoding using mb_internal_encoding().
     423 *
     424 * In most cases the default internal encoding is latin1, which is of no use,
     425 * since we want to use the mb_ functions for utf-8 strings.
     426 *
     427 * @access private
     428 * @since 3.0.0
     429 */
    330430function wp_set_internal_encoding() {
    331     /*
    332      * In most cases the default internal encoding is latin1, which is of no use,
    333      * since we want to use the mb_ functions for utf-8 strings
    334      */
    335     if (function_exists('mb_internal_encoding')) {
    336         if (!@mb_internal_encoding(get_option('blog_charset')))
    337             mb_internal_encoding('UTF-8');
    338     }
    339 }
    340 
     431    if ( function_exists( 'mb_internal_encoding' ) ) {
     432        if ( !@mb_internal_encoding( get_option( 'blog_charset' ) ) )
     433            mb_internal_encoding( 'UTF-8' );
     434    }
     435}
     436
     437/**
     438 * Add magic quotes to $_GET, $_POST, $_COOKIE, and $_SERVER.
     439 *
     440 * Also forces $_REQUEST to be $_GET + $_POST. If $_SERVER, $_COOKIE,
     441 * or $_ENV are needed, use those superglobals directly.
     442 *
     443 * @access private
     444 * @since 3.0.0
     445 */
    341446function wp_magic_quotes() {
    342447    // If already slashed, strip.
    343448    if ( get_magic_quotes_gpc() ) {
    344         $_GET    = stripslashes_deep($_GET   );
    345         $_POST   = stripslashes_deep($_POST  );
    346         $_COOKIE = stripslashes_deep($_COOKIE);
     449        $_GET    = stripslashes_deep( $_GET    );
     450        $_POST   = stripslashes_deep( $_POST   );
     451        $_COOKIE = stripslashes_deep( $_COOKIE );
    347452    }
    348453
    349454    // Escape with wpdb.
    350     $_GET    = add_magic_quotes($_GET   );
    351     $_POST   = add_magic_quotes($_POST  );
    352     $_COOKIE = add_magic_quotes($_COOKIE);
    353     $_SERVER = add_magic_quotes($_SERVER);
    354 
    355     // Force REQUEST to be GET + POST.  If SERVER, COOKIE, or ENV are needed, use those superglobals directly.
    356     $_REQUEST = array_merge($_GET, $_POST);
    357 }
    358 
    359 function wp_find_locale() {
    360     global $locale, $locale_file;
    361     /**
    362      * The locale of the blog
    363      * @since 1.5.0
    364      */
    365     $locale = get_locale();
    366     $locale_file = WP_LANG_DIR . "/$locale.php";
    367     if ( is_readable($locale_file) )
    368         require_once($locale_file);
    369 
    370     // Pull in locale data after loading text domain.
    371     require_once(ABSPATH . WPINC . '/locale.php');
    372 }
    373 
    374 function wp_load_theme_functions() {
    375     // Load functions for active theme.
    376     if ( TEMPLATEPATH !== STYLESHEETPATH && file_exists(STYLESHEETPATH . '/functions.php') )
    377         include(STYLESHEETPATH . '/functions.php');
    378     if ( file_exists(TEMPLATEPATH . '/functions.php') )
    379         include(TEMPLATEPATH . '/functions.php');
    380 
    381     // Load in support for template functions which the theme supports
    382     require_if_theme_supports( 'post-thumbnails', ABSPATH . WPINC . '/post-thumbnail-template.php' );
     455    $_GET    = add_magic_quotes( $_GET    );
     456    $_POST   = add_magic_quotes( $_POST   );
     457    $_COOKIE = add_magic_quotes( $_COOKIE );
     458    $_SERVER = add_magic_quotes( $_SERVER );
     459
     460    // Force REQUEST to be GET + POST.
     461    $_REQUEST = array_merge( $_GET, $_POST );
    383462}
    384463
     
    390469 */
    391470function shutdown_action_hook() {
    392     do_action('shutdown');
     471    do_action( 'shutdown' );
    393472    wp_cache_close();
    394473}
     
    423502 */
    424503function is_admin() {
    425     if ( defined('WP_ADMIN') )
     504    if ( defined( 'WP_ADMIN' ) )
    426505        return WP_ADMIN;
    427506    return false;
     
    436515 */
    437516function is_multisite() {
    438     if ( ( defined('MULTISITE') && MULTISITE ) || defined('VHOST') || defined('SUNRISE') )
     517    if ( ( defined( 'MULTISITE' ) && MULTISITE ) || defined( 'VHOST' ) || defined( 'SUNRISE' ) )
    439518        return true;
    440519
  • trunk/wp-includes/ms-load.php

    r12730 r12762  
    1414    include_once( WP_CONTENT_DIR . '/sunrise.php' );
    1515
    16     require (ABSPATH . WPINC . '/ms-settings.php');
    17 $wpdb->blogid           = $current_blog->blog_id;
    18 $wpdb->siteid           = $current_blog->site_id;
     16    require( ABSPATH . WPINC . '/ms-settings.php' );
     17$wpdb->blogid = $current_blog->blog_id;
     18$wpdb->siteid = $current_blog->site_id;
    1919$wpdb->set_prefix($table_prefix); // set up blog tables
    2020$table_prefix = $wpdb->get_blog_prefix();
     
    4141
    4242function ms_network_settings() {
    43         global $wpdb, $current_site, $cookiehash;
     43    global $wpdb, $current_site, $cookiehash;
    4444
    45         if( !isset($current_site->site_name) )
    46                 $current_site->site_name = get_site_option('site_name');
     45    if( !isset($current_site->site_name) )
     46        $current_site->site_name = get_site_option('site_name');
    4747
    48         if( $current_site->site_name == false )
    49                 $current_site->site_name = ucfirst( $current_site->domain );
     48    if( $current_site->site_name == false )
     49        $current_site->site_name = ucfirst( $current_site->domain );
    5050
    51         if ( ! defined('WP_INSTALLING') ) {
    52                 // Used to guarantee unique hash cookies
    53                 if ( !isset($cookiehash) )
    54                         $cookiehash = '';
     51    if ( ! defined('WP_INSTALLING') ) {
     52        if ( !isset($cookiehash) )
     53            $cookiehash = '';
    5554
    56                 /**
    57                 * Used to guarantee unique hash cookies
    58                 * @since 1.5
    59                 */
    60                 if ( !defined('COOKIEHASH') )
    61                         define( 'COOKIEHASH', $cookiehash );
    62         }
     55        /**
     56        * Used to guarantee unique hash cookies
     57        * @since 1.5
     58        */
     59        if ( !defined('COOKIEHASH') )
     60                define( 'COOKIEHASH', $cookiehash );
     61    }
    6362
    64         $wpdb->hide_errors();
     63    $wpdb->hide_errors();
    6564}
    6665
    6766function ms_network_plugins() {
    68         $wpmu_sitewide_plugins = (array) maybe_unserialize( get_site_option( 'wpmu_sitewide_plugins' ) );
    69         foreach( $wpmu_sitewide_plugins as $plugin_file => $activation_time ) {
    70                 if ( !$plugin_file )
    71                         continue;
     67    $network_plugins = array();
     68    $wpmu_sitewide_plugins = (array) maybe_unserialize( get_site_option( 'wpmu_sitewide_plugins' ) );
     69    foreach( $wpmu_sitewide_plugins as $plugin_file => $activation_time ) {
     70        if ( !$plugin_file )
     71            continue;
    7272
    73                 if ( !file_exists( WP_PLUGIN_DIR . '/' . $plugin_file ) ) {
    74                         $deleted_sitewide_plugins[] = $plugin_file;
    75                 } else {
    76                         include_once( WP_PLUGIN_DIR . '/' . $plugin_file );
    77                 }
    78         }
     73        if ( !file_exists( WP_PLUGIN_DIR . '/' . $plugin_file ) ) {
     74            $deleted_sitewide_plugins[] = $plugin_file;
     75        } else {
     76            $network_plugins = WP_PLUGIN_DIR . '/' . $plugin_file;
     77        }
     78    }
    7979
    80         if ( isset( $deleted_sitewide_plugins ) ) {
    81                 $active_sitewide_plugins = maybe_unserialize( get_site_option( 'active_sitewide_plugins' ) );
     80    if ( isset( $deleted_sitewide_plugins ) ) {
     81        $active_sitewide_plugins = maybe_unserialize( get_site_option( 'active_sitewide_plugins' ) );
    8282
    83                 /* Remove any deleted plugins from the wpmu_sitewide_plugins array */
    84                 foreach( $deleted_sitewide_plugins as $plugin_file ) {
    85                         unset( $wpmu_sitewide_plugins[$plugin_file] );
    86                         unset( $active_sitewide_plugins[$plugin_file] );
    87                 }
     83        /* Remove any deleted plugins from the wpmu_sitewide_plugins array */
     84        foreach( $deleted_sitewide_plugins as $plugin_file ) {
     85            unset( $wpmu_sitewide_plugins[$plugin_file] );
     86            unset( $active_sitewide_plugins[$plugin_file] );
     87        }
    8888
    89                 update_site_option( 'wpmu_sitewide_plugins', $wpmu_sitewide_plugins );
    90                 update_site_option( 'active_sitewide_plugins', $wpmu_sitewide_plugins );
    91         }
     89        update_site_option( 'wpmu_sitewide_plugins', $wpmu_sitewide_plugins );
     90        update_site_option( 'active_sitewide_plugins', $wpmu_sitewide_plugins );
     91    }
    9292
     93    return $network_plugins;
    9394}
    9495
     
    100101        if ( '1' == $current_blog->deleted ) {
    101102                if ( file_exists( WP_CONTENT_DIR . '/blog-deleted.php' ) ) {
    102                         require_once( WP_CONTENT_DIR . '/blog-deleted.php' );
    103                         die();
     103                        return WP_CONTENT_DIR . '/blog-deleted.php';
    104104                } else {
    105105                        header('HTTP/1.1 410 Gone');
     
    110110        if ( '2' == $current_blog->deleted ) {
    111111                if ( file_exists( WP_CONTENT_DIR . '/blog-inactive.php' ) ) {
    112                         require_once( WP_CONTENT_DIR . '/blog-inactive.php' );
    113                         die();
     112                        return WP_CONTENT_DIR . '/blog-inactive.php';
    114113                } else {
    115114                        graceful_fail( sprintf( __( 'This blog has not been activated yet. If you are having problems activating your blog, please contact <a href="mailto:%1$s">%1$s</a>.' ), str_replace( '@', ' AT ', get_site_option( 'admin_email', "support@{$current_site->domain}" ) ) ) );
     
    119118        if( $current_blog->archived == '1' || $current_blog->spam == '1' ) {
    120119                if ( file_exists( WP_CONTENT_DIR . '/blog-suspended.php' ) ) {
    121                         require_once( WP_CONTENT_DIR . '/blog-suspended.php' );
    122                         die();
     120                        return WP_CONTENT_DIR . '/blog-suspended.php';
    123121                } else {
    124122                        header('HTTP/1.1 410 Gone');
     
    126124                }
    127125        }
     126        return true;
    128127}
    129128
  • trunk/wp-settings.php

    r12735 r12762  
    1414 * @since 1.0.0
    1515 */
    16 define('WPINC', 'wp-includes');
    17 
    18 require (ABSPATH . WPINC . '/load.php');
    19 require (ABSPATH . WPINC . '/default-constants.php');
    20 require (ABSPATH . WPINC . '/version.php');
    21 
    22 wp_default_constants('init');
    23 
    24 set_magic_quotes_runtime(0);
    25 @ini_set('magic_quotes_sybase', 0);
    26 
    27 if ( function_exists('date_default_timezone_set') )
    28     date_default_timezone_set('UTC');
    29 
     16define( 'WPINC', 'wp-includes' );
     17
     18// Include files required for initialization.
     19require( ABSPATH . WPINC . '/load.php' );
     20require( ABSPATH . WPINC . '/default-constants.php' );
     21require( ABSPATH . WPINC . '/version.php' );
     22
     23// Set initial default constants including WP_MEMORY_LIMIT, WP_DEBUG, WP_CONTENT_DIR and WP_CACHE.
     24wp_default_constants( 'init' );
     25
     26// Disable magic quotes at runtime. Magic quotes are added using wpdb later in wp-settings.php.
     27set_magic_quotes_runtime( 0 );
     28@ini_set( 'magic_quotes_sybase', 0 );
     29
     30// Set default timezone in PHP 5.
     31if ( function_exists( 'date_default_timezone_set' ) )
     32    date_default_timezone_set( 'UTC' );
     33
     34// Turn register_globals off.
    3035wp_unregister_GLOBALS();
    3136
     37// Ensure these global variables do not exist so they do not interfere with WordPress.
    3238unset( $wp_filter, $cache_lastcommentmodified, $cache_lastpostdate );
    3339
     40// Standardize $_SERVER variables across setups.
    3441wp_fix_server_vars();
    3542
     43// Check for the required PHP version and for the MySQL extension or a database drop-in.
    3644wp_check_php_mysql_versions();
    3745
     46// Check if we're in maintenance mode.
    3847wp_maintenance();
    3948
     49// Start loading timer.
    4050timer_start();
    4151
     52// Check if we're in WP_DEBUG mode.
    4253wp_debug_mode();
    4354
    44 // For an advanced caching plugin to use, static because you would only want one
     55// For an advanced caching plugin to use. Uses a static drop-in because you would only want one.
    4556if ( WP_CACHE )
    4657    @include WP_CONTENT_DIR . '/advanced-cache.php';
    4758
     59// Define WP_LANG_DIR if not set.
    4860wp_set_lang_dir();
    4961
    50 require (ABSPATH . WPINC . '/compat.php');
    51 require (ABSPATH . WPINC . '/functions.php');
    52 require (ABSPATH . WPINC . '/classes.php');
    53 
     62// Include early WordPress files.
     63require( ABSPATH . WPINC . '/compat.php' );
     64require( ABSPATH . WPINC . '/functions.php' );
     65require( ABSPATH . WPINC . '/classes.php' );
     66
     67// Include the wpdb class, or a db.php database drop-in if present.
    5468require_wp_db();
    5569
     70// Set the database table prefix and the format specifiers for database table columns.
    5671wp_set_wpdb_vars();
    5772
     73// Start the WordPress object cache, or an external object cache if the drop-in is present.
    5874wp_start_object_cache();
    5975
     76// Initialize multisite if enabled.
    6077if ( is_multisite() )
    61     require (ABSPATH . WPINC . '/ms-load.php');
    62 
    63 require (ABSPATH . WPINC . '/plugin.php');
    64 require (ABSPATH . WPINC . '/default-filters.php');
    65 include_once(ABSPATH . WPINC . '/pomo/mo.php');
    66 
    67 if ( SHORTINIT ) // stop most of WP being loaded, we just want the basics
     78    require( ABSPATH . WPINC . '/ms-load.php' );
     79
     80// Load early WordPress files.
     81require( ABSPATH . WPINC . '/plugin.php' );
     82require( ABSPATH . WPINC . '/default-filters.php' );
     83include_once( ABSPATH . WPINC . '/pomo/mo.php' );
     84
     85// Stop most of WordPress from being loaded if we just want the basics.
     86if ( SHORTINIT )
    6887    return false;
    6988
    70 require_once (ABSPATH . WPINC . '/l10n.php');
    71 
     89// Load the l18n library.
     90require_once ( ABSPATH . WPINC . '/l10n.php' );
     91
     92// Run the installer if WordPress is not installed.
    7293wp_not_installed();
    7394
    74 require (ABSPATH . WPINC . '/formatting.php');
    75 require (ABSPATH . WPINC . '/capabilities.php');
    76 require (ABSPATH . WPINC . '/query.php');
    77 require (ABSPATH . WPINC . '/theme.php');
    78 require (ABSPATH . WPINC . '/user.php');
    79 require (ABSPATH . WPINC . '/meta.php');
    80 require (ABSPATH . WPINC . '/general-template.php');
    81 require (ABSPATH . WPINC . '/link-template.php');
    82 require (ABSPATH . WPINC . '/author-template.php');
    83 require (ABSPATH . WPINC . '/post.php');
    84 require (ABSPATH . WPINC . '/post-template.php');
    85 require (ABSPATH . WPINC . '/category.php');
    86 require (ABSPATH . WPINC . '/category-template.php');
    87 require (ABSPATH . WPINC . '/comment.php');
    88 require (ABSPATH . WPINC . '/comment-template.php');
    89 require (ABSPATH . WPINC . '/rewrite.php');
    90 require (ABSPATH . WPINC . '/feed.php');
    91 require (ABSPATH . WPINC . '/bookmark.php');
    92 require (ABSPATH . WPINC . '/bookmark-template.php');
    93 require (ABSPATH . WPINC . '/kses.php');
    94 require (ABSPATH . WPINC . '/cron.php');
    95 require (ABSPATH . WPINC . '/deprecated.php');
    96 require (ABSPATH . WPINC . '/script-loader.php');
    97 require (ABSPATH . WPINC . '/taxonomy.php');
    98 require (ABSPATH . WPINC . '/update.php');
    99 require (ABSPATH . WPINC . '/canonical.php');
    100 require (ABSPATH . WPINC . '/shortcodes.php');
    101 require (ABSPATH . WPINC . '/media.php');
    102 require (ABSPATH . WPINC . '/http.php');
    103 require (ABSPATH . WPINC . '/widgets.php');
    104 
     95// Load most of WordPress.
     96require( ABSPATH . WPINC . '/formatting.php' );
     97require( ABSPATH . WPINC . '/capabilities.php' );
     98require( ABSPATH . WPINC . '/query.php' );
     99require( ABSPATH . WPINC . '/theme.php' );
     100require( ABSPATH . WPINC . '/user.php' );
     101require( ABSPATH . WPINC . '/meta.php' );
     102require( ABSPATH . WPINC . '/general-template.php' );
     103require( ABSPATH . WPINC . '/link-template.php' );
     104require( ABSPATH . WPINC . '/author-template.php' );
     105require( ABSPATH . WPINC . '/post.php' );
     106require( ABSPATH . WPINC . '/post-template.php' );
     107require( ABSPATH . WPINC . '/category.php' );
     108require( ABSPATH . WPINC . '/category-template.php' );
     109require( ABSPATH . WPINC . '/comment.php' );
     110require( ABSPATH . WPINC . '/comment-template.php' );
     111require( ABSPATH . WPINC . '/rewrite.php' );
     112require( ABSPATH . WPINC . '/feed.php' );
     113require( ABSPATH . WPINC . '/bookmark.php' );
     114require( ABSPATH . WPINC . '/bookmark-template.php' );
     115require( ABSPATH . WPINC . '/kses.php' );
     116require( ABSPATH . WPINC . '/cron.php' );
     117require( ABSPATH . WPINC . '/deprecated.php' );
     118require( ABSPATH . WPINC . '/script-loader.php' );
     119require( ABSPATH . WPINC . '/taxonomy.php' );
     120require( ABSPATH . WPINC . '/update.php' );
     121require( ABSPATH . WPINC . '/canonical.php' );
     122require( ABSPATH . WPINC . '/shortcodes.php' );
     123require( ABSPATH . WPINC . '/media.php' );
     124require( ABSPATH . WPINC . '/http.php' );
     125require( ABSPATH . WPINC . '/widgets.php' );
     126
     127// Load multisite-specific files.
    105128if ( is_multisite() ) {
    106129    require_once( ABSPATH . WPINC . '/ms-functions.php' );
     
    109132}
    110133
    111 wp_default_constants('wp_included');
    112 
     134// Define constants that rely on the API to obtain the default value.
     135wp_default_constants( 'wp_included' );
     136
     137// Set up multisite if enabled.
    113138if ( is_multisite() )
    114     ms_network_settings();
    115 
    116 wp_default_constants('ms_network_settings_loaded');
    117 
    118 wp_load_mu_plugins();
    119 
    120 /**
    121  * Used to load network wide plugins
    122  * @since 3.0
    123  */
    124 if ( is_multisite() )
    125     ms_network_plugins();
    126 
    127 do_action('muplugins_loaded');
    128 
    129 /**
    130  * Used to check site status
    131  * @since 3.0
    132  */
     139    ms_network_settings();
     140
     141// Define must-use plugin directory constants, which may be overridden in the sunrise.php drop-in.
     142wp_default_constants( 'ms_network_settings_loaded' );
     143
     144// Load must-use plugins.
     145foreach( wp_muplugins_to_load() as $mu_plugin )
     146    include_once( $mu_plugin );
     147unset( $mu_plugin );
     148
     149// Load network-wide plugins if multisite.
    133150if ( is_multisite() ) {
    134     ms_site_check();
     151    foreach ( ms_network_plugins() as $plugin_file )
     152        include_once( $plugin_file );
     153    unset( $plugin_file );
     154}
     155
     156do_action( 'muplugins_loaded' );
     157
     158// Check site status if multisite.
     159if ( is_multisite() ) {
     160    if ( true !== ( $file = ms_site_check() ) ) {
     161        require_once( $file );
     162        die();
     163    }
    135164    ms_network_cookies();
    136165}
    137166
    138 wp_default_constants('ms_loaded');
    139 
    140 require (ABSPATH . WPINC . '/vars.php');
    141 
    142 // make taxonomies available to plugins and themes
    143 // @plugin authors: warning: this gets registered again on the init hook
     167// Define constants after multisite is loaded. Cookie-related constants may be overridden in ms_network_cookies().
     168wp_default_constants( 'ms_loaded' );
     169
     170// Create common globals.
     171require( ABSPATH . WPINC . '/vars.php' );
     172
     173// Make taxonomies available to plugins and themes.
     174// @plugin authors: warning: this gets registered again on the init hook.
    144175create_initial_taxonomies();
    145176
    146 wp_load_plugins();
    147 
    148 require (ABSPATH . WPINC . '/pluggable.php');
    149 
     177// Load active plugins.
     178foreach( wp_plugins_to_load() as $plugin )
     179    include_once( $plugin );
     180unset( $plugin );
     181
     182// Load pluggable functions.
     183require( ABSPATH . WPINC . '/pluggable.php' );
     184
     185// Set internal encoding.
    150186wp_set_internal_encoding();
    151187
    152 if ( WP_CACHE && function_exists('wp_cache_postload') )
     188// Run wp_cache_postload() if object cache is enabled and the function exists.
     189if ( WP_CACHE && function_exists( 'wp_cache_postload' ) )
    153190    wp_cache_postload();
    154191
    155 do_action('plugins_loaded');
    156 
    157 wp_default_constants('plugins_loaded');
    158 
     192do_action( 'plugins_loaded' );
     193
     194// Define WP_POST_REVISIONS if not already defined.
     195wp_default_constants( 'plugins_loaded' );
     196
     197// Add magic quotes and set up $_REQUEST ( $_GET + $_POST )
    159198wp_magic_quotes();
    160199
    161 do_action('sanitize_comment_cookies');
     200do_action( 'sanitize_comment_cookies' );
    162201
    163202/**
     
    174213 * @since 1.5.0
    175214 */
    176 $wp_query     =& $wp_the_query;
     215$wp_query =& $wp_the_query;
    177216
    178217/**
     
    181220 * @since 1.5.0
    182221 */
    183 $wp_rewrite   =& new WP_Rewrite();
     222$wp_rewrite =& new WP_Rewrite();
    184223
    185224/**
     
    188227 * @since 2.0.0
    189228 */
    190 $wp           =& new WP();
     229$wp =& new WP();
    191230
    192231/**
     
    197236$wp_widget_factory =& new WP_Widget_Factory();
    198237
    199 do_action('setup_theme');
    200 
    201 wp_default_constants('setup_theme');
     238do_action( 'setup_theme' );
     239
     240// Define the TEMPLATEPATH and STYLESHEETPATH constants.
     241wp_default_constants( 'setup_theme' );
    202242
    203243// Load the default text localization domain.
    204244load_default_textdomain();
    205245
    206 wp_find_locale();
     246// Find the blog locale.
     247$locale = get_locale();
     248$locale_file = WP_LANG_DIR . "/$locale.php";
     249if ( is_readable( $locale_file ) )
     250    require_once( $locale_file );
     251
     252// Pull in locale data after loading text domain.
     253require_once( ABSPATH . WPINC . '/locale.php' );
    207254
    208255/**
     
    213260$wp_locale =& new WP_Locale();
    214261
    215 wp_load_theme_functions();
    216 
    217 register_shutdown_function('shutdown_action_hook');
    218 
    219 $wp->init();  // Sets up current user.
     262// Load the functions for the active theme, for both parent and child theme if applicable.
     263if ( TEMPLATEPATH !== STYLESHEETPATH && file_exists( STYLESHEETPATH . '/functions.php' ) )
     264    include( STYLESHEETPATH . '/functions.php' );
     265if ( file_exists( TEMPLATEPATH . '/functions.php' ) )
     266    include( TEMPLATEPATH . '/functions.php' );
     267
     268// Load any template functions the theme supports.
     269require_if_theme_supports( 'post-thumbnails', ABSPATH . WPINC . '/post-thumbnail-template.php' );
     270
     271register_shutdown_function( 'shutdown_action_hook' );
     272
     273// Set up current user.
     274$wp->init();
    220275
    221276// Everything is loaded and initialized.
    222 do_action('init');
     277do_action( 'init' );
    223278
    224279?>
Note: See TracChangeset for help on using the changeset viewer.