Make WordPress Core

Ticket #11881: 11881.3.diff

File 11881.3.diff, 49.5 KB (added by nacin, 15 years ago)

Somewhat improved patch.

  • wp-settings.php

     
    99 * @package WordPress
    1010 */
    1111
    12 
    1312/**
    14  * Whether Multisite support is enabled
     13 * Stores the location of the WordPress directory of functions, classes, and core content.
    1514 *
    16  * @since 3.0
    17  *
    18  * @return bool True if multisite is enabled, false otherwise.
     15 * @since 1.0.0
    1916 */
    20 function is_multisite() {
    21         if ( ( defined('MULTISITE') && MULTISITE ) || defined('VHOST') || defined('SUNRISE') )
    22                 return true;
     17define('WPINC', 'wp-includes');
    2318
    24         return false;
    25 }
     19require (ABSPATH . WPINC . '/load.php');
     20require (ABSPATH . WPINC . '/default-constants.php');
     21require (ABSPATH . WPINC . '/version.php');
    2622
    27 if ( !defined('WP_MEMORY_LIMIT') ) {
    28         if( is_multisite() ) {
    29                 define('WP_MEMORY_LIMIT', '64M');
    30         } else {
    31                 define('WP_MEMORY_LIMIT', '32M');
    32         }
    33 }
     23wp_default_constants('init');
    3424
    35 if ( function_exists('memory_get_usage') && ( (int) @ini_get('memory_limit') < abs(intval(WP_MEMORY_LIMIT)) ) )
    36         @ini_set('memory_limit', WP_MEMORY_LIMIT);
    37 
    3825set_magic_quotes_runtime(0);
    3926@ini_set('magic_quotes_sybase', 0);
    4027
    4128if ( function_exists('date_default_timezone_set') )
    4229        date_default_timezone_set('UTC');
    4330
    44 /**
    45  * Turn register globals off.
    46  *
    47  * @access private
    48  * @since 2.1.0
    49  * @return null Will return null if register_globals PHP directive was disabled
    50  */
    51 function wp_unregister_GLOBALS() {
    52         if ( !ini_get('register_globals') )
    53                 return;
    54 
    55         if ( isset($_REQUEST['GLOBALS']) )
    56                 die('GLOBALS overwrite attempt detected');
    57 
    58         // Variables that shouldn't be unset
    59         $noUnset = array('GLOBALS', '_GET', '_POST', '_COOKIE', '_REQUEST', '_SERVER', '_ENV', '_FILES', 'table_prefix');
    60 
    61         $input = array_merge($_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_FILES, isset($_SESSION) && is_array($_SESSION) ? $_SESSION : array());
    62         foreach ( $input as $k => $v )
    63                 if ( !in_array($k, $noUnset) && isset($GLOBALS[$k]) ) {
    64                         $GLOBALS[$k] = NULL;
    65                         unset($GLOBALS[$k]);
    66                 }
    67 }
    68 
    6931wp_unregister_GLOBALS();
    7032
    7133unset( $wp_filter, $cache_lastcommentmodified, $cache_lastpostdate );
    7234
    73 /**
    74  * The $blog_id global, which you can change in the config allows you to create a simple
    75  * multiple blog installation using just one WordPress and changing $blog_id around.
    76  *
    77  * @global int $blog_id
    78  * @since 2.0.0
    79  */
    80 if ( ! isset($blog_id) )
    81         $blog_id = 1;
     35wp_fix_server_vars();
    8236
    83 // Fix for IIS when running with PHP ISAPI
    84 if ( empty( $_SERVER['REQUEST_URI'] ) || ( php_sapi_name() != 'cgi-fcgi' && preg_match( '/^Microsoft-IIS\//', $_SERVER['SERVER_SOFTWARE'] ) ) ) {
     37wp_check_php_mysql_versions();
    8538
    86         // IIS Mod-Rewrite
    87         if (isset($_SERVER['HTTP_X_ORIGINAL_URL'])) {
    88                 $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_ORIGINAL_URL'];
    89         }
    90         // IIS Isapi_Rewrite
    91         else if (isset($_SERVER['HTTP_X_REWRITE_URL'])) {
    92                 $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL'];
    93         }
    94         else
    95         {
    96                 // Use ORIG_PATH_INFO if there is no PATH_INFO
    97                 if ( !isset($_SERVER['PATH_INFO']) && isset($_SERVER['ORIG_PATH_INFO']) )
    98                         $_SERVER['PATH_INFO'] = $_SERVER['ORIG_PATH_INFO'];
     39wp_maintenance();
    9940
    100                 // Some IIS + PHP configurations puts the script-name in the path-info (No need to append it twice)
    101                 if ( isset($_SERVER['PATH_INFO']) ) {
    102                         if ( $_SERVER['PATH_INFO'] == $_SERVER['SCRIPT_NAME'] )
    103                                 $_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO'];
    104                         else
    105                                 $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] . $_SERVER['PATH_INFO'];
    106                 }
    107 
    108                 // Append the query string if it exists and isn't null
    109                 if (isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING'])) {
    110                         $_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING'];
    111                 }
    112         }
    113 }
    114 
    115 // Fix for PHP as CGI hosts that set SCRIPT_FILENAME to something ending in php.cgi for all requests
    116 if ( isset($_SERVER['SCRIPT_FILENAME']) && ( strpos($_SERVER['SCRIPT_FILENAME'], 'php.cgi') == strlen($_SERVER['SCRIPT_FILENAME']) - 7 ) )
    117         $_SERVER['SCRIPT_FILENAME'] = $_SERVER['PATH_TRANSLATED'];
    118 
    119 // Fix for Dreamhost and other PHP as CGI hosts
    120 if (strpos($_SERVER['SCRIPT_NAME'], 'php.cgi') !== false)
    121         unset($_SERVER['PATH_INFO']);
    122 
    123 // Fix empty PHP_SELF
    124 $PHP_SELF = $_SERVER['PHP_SELF'];
    125 if ( empty($PHP_SELF) )
    126         $_SERVER['PHP_SELF'] = $PHP_SELF = preg_replace("/(\?.*)?$/",'',$_SERVER["REQUEST_URI"]);
    127 
    128 if ( version_compare( '4.3', phpversion(), '>' ) ) {
    129         die( sprintf( /*WP_I18N_OLD_PHP*/'Your server is running PHP version %s but WordPress requires at least 4.3.'/*/WP_I18N_OLD_PHP*/, phpversion() ) );
    130 }
    131 
    132 if ( !defined('WP_CONTENT_DIR') )
    133         define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' ); // no trailing slash, full paths only - WP_CONTENT_URL is defined further down
    134 
    135 if ( file_exists(ABSPATH . '.maintenance') && !defined('WP_INSTALLING') ) {
    136         include(ABSPATH . '.maintenance');
    137         // If the $upgrading timestamp is older than 10 minutes, don't die.
    138         if ( ( time() - $upgrading ) < 600 ) {
    139                 if ( file_exists( WP_CONTENT_DIR . '/maintenance.php' ) ) {
    140                         require_once( WP_CONTENT_DIR . '/maintenance.php' );
    141                         die();
    142                 }
    143 
    144                 $protocol = $_SERVER["SERVER_PROTOCOL"];
    145                 if ( 'HTTP/1.1' != $protocol && 'HTTP/1.0' != $protocol )
    146                         $protocol = 'HTTP/1.0';
    147                 header( "$protocol 503 Service Unavailable", true, 503 );
    148                 header( 'Content-Type: text/html; charset=utf-8' );
    149                 header( 'Retry-After: 600' );
    150 ?>
    151 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    152 <html xmlns="http://www.w3.org/1999/xhtml">
    153 <head>
    154 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    155         <title>Maintenance</title>
    156 
    157 </head>
    158 <body>
    159         <h1>Briefly unavailable for scheduled maintenance. Check back in a minute.</h1>
    160 </body>
    161 </html>
    162 <?php
    163                 die();
    164         }
    165 }
    166 
    167 if ( !extension_loaded('mysql') && !file_exists(WP_CONTENT_DIR . '/db.php') )
    168         die( /*WP_I18N_OLD_MYSQL*/'Your PHP installation appears to be missing the MySQL extension which is required by WordPress.'/*/WP_I18N_OLD_MYSQL*/ );
    169 
    170 /**
    171  * PHP 4 standard microtime start capture.
    172  *
    173  * @access private
    174  * @since 0.71
    175  * @global int $timestart Seconds and Microseconds added together from when function is called.
    176  * @return bool Always returns true.
    177  */
    178 function timer_start() {
    179         global $timestart;
    180         $mtime = explode(' ', microtime() );
    181         $mtime = $mtime[1] + $mtime[0];
    182         $timestart = $mtime;
    183         return true;
    184 }
    185 
    186 /**
    187  * Return and/or display the time from the page start to when function is called.
    188  *
    189  * You can get the results and print them by doing:
    190  * <code>
    191  * $nTimePageTookToExecute = timer_stop();
    192  * echo $nTimePageTookToExecute;
    193  * </code>
    194  *
    195  * Or instead, you can do:
    196  * <code>
    197  * timer_stop(1);
    198  * </code>
    199  * which will do what the above does. If you need the result, you can assign it to a variable, but
    200  * most cases, you only need to echo it.
    201  *
    202  * @since 0.71
    203  * @global int $timestart Seconds and Microseconds added together from when timer_start() is called
    204  * @global int $timeend  Seconds and Microseconds added together from when function is called
    205  *
    206  * @param int $display Use '0' or null to not echo anything and 1 to echo the total time
    207  * @param int $precision The amount of digits from the right of the decimal to display. Default is 3.
    208  * @return float The "second.microsecond" finished time calculation
    209  */
    210 function timer_stop($display = 0, $precision = 3) { //if called like timer_stop(1), will echo $timetotal
    211         global $timestart, $timeend;
    212         $mtime = microtime();
    213         $mtime = explode(' ',$mtime);
    214         $mtime = $mtime[1] + $mtime[0];
    215         $timeend = $mtime;
    216         $timetotal = $timeend-$timestart;
    217         $r = ( function_exists('number_format_i18n') ) ? number_format_i18n($timetotal, $precision) : number_format($timetotal, $precision);
    218         if ( $display )
    219                 echo $r;
    220         return $r;
    221 }
    22241timer_start();
    22342
    224 // Add define('WP_DEBUG', true); to wp-config.php to enable display of notices during development.
    225 if ( !defined('WP_DEBUG') )
    226         define( 'WP_DEBUG', false );
     43wp_debug_mode();
    22744
    228 if ( WP_DEBUG ) {
    229         if ( defined('E_DEPRECATED') )
    230                 error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT);
    231         else
    232                 error_reporting(E_ALL);
    233         // Add define('WP_DEBUG_DISPLAY', false); to wp-config.php to use the globally configured setting for display_errors and not force it to On
    234         if ( ! defined('WP_DEBUG_DISPLAY') || WP_DEBUG_DISPLAY )
    235                 ini_set('display_errors', 1);
    236         // Add define('WP_DEBUG_LOG', true); to enable php debug logging to WP_CONTENT_DIR/debug.log
    237         if ( defined('WP_DEBUG_LOG') && WP_DEBUG_LOG ) {
    238                 ini_set('log_errors', 1);
    239                 ini_set('error_log', WP_CONTENT_DIR . '/debug.log');
    240         }
    241 } else {
    242         if ( defined('E_RECOVERABLE_ERROR') )
    243                 error_reporting(E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR);
    244         else
    245                 error_reporting(E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING);
    246 }
    247 
    24845// For an advanced caching plugin to use, static because you would only want one
    249 if ( defined('WP_CACHE') && WP_CACHE )
     46if ( WP_CACHE )
    25047        @include WP_CONTENT_DIR . '/advanced-cache.php';
    25148
    252 /**
    253  * Private
    254  */
    255 if ( !defined('MEDIA_TRASH') )
    256         define('MEDIA_TRASH', false);
     49wp_set_lang_dir();
    25750
    258 /**
    259  * Stores the location of the WordPress directory of functions, classes, and core content.
    260  *
    261  * @since 1.0.0
    262  */
    263 define('WPINC', 'wp-includes');
    264 
    265 if ( !defined('WP_LANG_DIR') ) {
    266         /**
    267          * Stores the location of the language directory. First looks for language folder in WP_CONTENT_DIR
    268          * and uses that folder if it exists. Or it uses the "languages" folder in WPINC.
    269          *
    270          * @since 2.1.0
    271          */
    272         if ( file_exists(WP_CONTENT_DIR . '/languages') && @is_dir(WP_CONTENT_DIR . '/languages') ) {
    273                 define('WP_LANG_DIR', WP_CONTENT_DIR . '/languages'); // no leading slash, no trailing slash, full path, not relative to ABSPATH
    274                 if (!defined('LANGDIR')) {
    275                         // Old static relative path maintained for limited backwards compatibility - won't work in some cases
    276                         define('LANGDIR', 'wp-content/languages');
    277                 }
    278         } else {
    279                 define('WP_LANG_DIR', ABSPATH . WPINC . '/languages'); // no leading slash, no trailing slash, full path, not relative to ABSPATH
    280                 if (!defined('LANGDIR')) {
    281                         // Old relative path maintained for backwards compatibility
    282                         define('LANGDIR', WPINC . '/languages');
    283                 }
    284         }
    285 }
    286 
    28751require (ABSPATH . WPINC . '/compat.php');
    28852require (ABSPATH . WPINC . '/functions.php');
    28953require (ABSPATH . WPINC . '/classes.php');
    29054
    29155require_wp_db();
    29256
    293 if ( !empty($wpdb->error) )
    294         dead_db();
     57wp_set_wpdb_vars();
    29558
    296 /**
    297  * Format specifiers for DB columns. Columns not listed here default to %s.
    298  * @since 2.8.0
    299  * @see wpdb:$field_types
    300  * @see wpdb:prepare()
    301  * @see wpdb:insert()
    302  * @see wpdb:update()
    303  */
    304 $wpdb->field_types = array( 'post_author' => '%d', 'post_parent' => '%d', 'menu_order' => '%d', 'term_id' => '%d', 'term_group' => '%d', 'term_taxonomy_id' => '%d',
    305         'parent' => '%d', 'count' => '%d','object_id' => '%d', 'term_order' => '%d', 'ID' => '%d', 'commment_ID' => '%d', 'comment_post_ID' => '%d', 'comment_parent' => '%d',
    306         'user_id' => '%d', 'link_id' => '%d', 'link_owner' => '%d', 'link_rating' => '%d', 'option_id' => '%d', 'blog_id' => '%d', 'meta_id' => '%d', 'post_id' => '%d',
    307         'user_status' => '%d', 'umeta_id' => '%d', 'comment_karma' => '%d', 'comment_count' => '%d');
     59wp_start_object_cache();
    30860
    309 $prefix = $wpdb->set_prefix($table_prefix);
    310 
    311 if ( is_wp_error($prefix) )
    312         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*/);
    313 
    314 /**
    315  * Copy an object.
    316  *
    317  * Returns a cloned copy of an object.
    318  *
    319  * @since 2.7.0
    320  *
    321  * @param object $object The object to clone
    322  * @return object The cloned object
    323  */
    324 function wp_clone( $object ) {
    325         static $can_clone;
    326         if ( !isset( $can_clone ) ) {
    327                 $can_clone = version_compare( phpversion(), '5.0', '>=' );
    328         }
    329         return $can_clone ? clone( $object ) : $object;
    330 }
    331 
    332 /**
    333  * Whether the current request is in WordPress admin Panel
    334  *
    335  * Does not inform on whether the user is an admin! Use capability checks to
    336  * tell if the user should be accessing a section or not.
    337  *
    338  * @since 1.5.1
    339  *
    340  * @return bool True if inside WordPress administration pages.
    341  */
    342 function is_admin() {
    343         if ( defined('WP_ADMIN') )
    344                 return WP_ADMIN;
    345         return false;
    346 }
    347 
    348 if ( file_exists(WP_CONTENT_DIR . '/object-cache.php') ) {
    349         require_once (WP_CONTENT_DIR . '/object-cache.php');
    350         $_wp_using_ext_object_cache = true;
    351 } else {
    352         require_once (ABSPATH . WPINC . '/cache.php');
    353         $_wp_using_ext_object_cache = false;
    354 }
    355 
    356 wp_cache_init();
    357 if ( function_exists('wp_cache_add_global_groups') ) {
    358         if( is_multisite() ) {
    359                 wp_cache_add_global_groups(array ('users', 'userlogins', 'usermeta', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss'));
    360         } else {
    361                 wp_cache_add_global_groups(array ('users', 'userlogins', 'usermeta', 'site-transient'));
    362         }
    363         wp_cache_add_non_persistent_groups(array( 'comment', 'counts', 'plugins' ));
    364 }
    365 
    366 if( is_multisite() ) {
     61if( is_multisite() )
    36762    require (ABSPATH . WPINC . '/ms-load.php');
    368 }
    36963
    37064require (ABSPATH . WPINC . '/plugin.php');
    37165require (ABSPATH . WPINC . '/default-filters.php');
    37266include_once(ABSPATH . WPINC . '/pomo/mo.php');
    37367
    374 if( is_multisite() && defined( "SHORTINIT" ) && SHORTINIT ) // stop most of WP being loaded, we just want the basics
     68if( is_multisite() && SHORTINIT ) // stop most of WP being loaded, we just want the basics
    37569        return false;
    37670
    37771require_once (ABSPATH . WPINC . '/l10n.php');
    37872
    379 if( is_multisite() ) {
    380         if ( !is_blog_installed() && !defined('WP_INSTALLING') ) {
    381                 die( __( 'The blog you have requested is not installed properly. Please contact the system administrator.' ) ); // have to die here ~ Mark
    382         }
    383 } elseif ( !is_blog_installed() && (strpos($_SERVER['PHP_SELF'], 'install.php') === false && !defined('WP_INSTALLING')) ) {
    384         if ( defined('WP_SITEURL') )
    385                 $link = WP_SITEURL . '/wp-admin/install.php';
    386         elseif (strpos($_SERVER['PHP_SELF'], 'wp-admin') !== false)
    387                 $link = preg_replace('|/wp-admin/?.*?$|', '/', $_SERVER['PHP_SELF']) . 'wp-admin/install.php';
    388         else
    389                 $link = preg_replace('|/[^/]+?$|', '/', $_SERVER['PHP_SELF']) . 'wp-admin/install.php';
    390         require_once(ABSPATH . WPINC . '/kses.php');
    391         require_once(ABSPATH . WPINC . '/pluggable.php');
    392         require_once(ABSPATH . WPINC . '/formatting.php');
    393         wp_redirect($link);
    394         die(); // have to die here ~ Mark
    395 }
     73wp_not_installed();
    39674
    39775require (ABSPATH . WPINC . '/formatting.php');
    39876require (ABSPATH . WPINC . '/capabilities.php');
     
    41593require (ABSPATH . WPINC . '/bookmark-template.php');
    41694require (ABSPATH . WPINC . '/kses.php');
    41795require (ABSPATH . WPINC . '/cron.php');
    418 require (ABSPATH . WPINC . '/version.php');
    41996require (ABSPATH . WPINC . '/deprecated.php');
    42097require (ABSPATH . WPINC . '/script-loader.php');
    42198require (ABSPATH . WPINC . '/taxonomy.php');
     
    432109        require_once( ABSPATH . WPINC . '/ms-deprecated.php' );
    433110}
    434111
    435 if ( !defined('WP_CONTENT_URL') )
    436         define( 'WP_CONTENT_URL', get_option('siteurl') . '/wp-content'); // full url - WP_CONTENT_DIR is defined further up
     112wp_default_constants('wp_included');
    437113
    438 /**
    439  * Allows for the plugins directory to be moved from the default location.
    440  *
    441  * @since 2.6.0
    442  */
    443 if ( !defined('WP_PLUGIN_DIR') )
    444         define( 'WP_PLUGIN_DIR', WP_CONTENT_DIR . '/plugins' ); // full path, no trailing slash
     114wp_load_mu_plugins();
    445115
    446116/**
    447  * Allows for the plugins directory to be moved from the default location.
    448  *
    449  * @since 2.6.0
    450  */
    451 if ( !defined('WP_PLUGIN_URL') )
    452         define( 'WP_PLUGIN_URL', WP_CONTENT_URL . '/plugins' ); // full url, no trailing slash
    453 
    454 /**
    455  * Allows for the plugins directory to be moved from the default location.
    456  *
    457  * @since 2.1.0
    458  */
    459 if ( !defined('PLUGINDIR') )
    460         define( 'PLUGINDIR', 'wp-content/plugins' ); // Relative to ABSPATH.  For back compat.
    461 
    462 if( is_multisite() )
    463         ms_network_settings();
    464 /**
    465  * Allows for the mu-plugins directory to be moved from the default location.
    466  *
    467  * @since 2.8.0
    468  */
    469 if ( !defined('WPMU_PLUGIN_DIR') )
    470         define( 'WPMU_PLUGIN_DIR', WP_CONTENT_DIR . '/mu-plugins' ); // full path, no trailing slash
    471 
    472 /**
    473  * Allows for the mu-plugins directory to be moved from the default location.
    474  *
    475  * @since 2.8.0
    476  */
    477 if ( !defined('WPMU_PLUGIN_URL') )
    478         define( 'WPMU_PLUGIN_URL', WP_CONTENT_URL . '/mu-plugins' ); // full url, no trailing slash
    479 
    480 /**
    481  * Allows for the mu-plugins directory to be moved from the default location.
    482  *
    483  * @since 2.8.0
    484  */
    485 if ( !defined( 'MUPLUGINDIR' ) )
    486         define( 'MUPLUGINDIR', 'wp-content/mu-plugins' ); // Relative to ABSPATH.  For back compat.
    487 
    488 if ( is_dir( WPMU_PLUGIN_DIR ) ) {
    489         if ( $dh = opendir( WPMU_PLUGIN_DIR ) ) {
    490                 $mu_plugins = array ();
    491                 while ( ( $plugin = readdir( $dh ) ) !== false ) {
    492                         if ( substr( $plugin, -4 ) == '.php' ) {
    493                                 $mu_plugins[] = $plugin;
    494                         }
    495                 }
    496                
    497                 closedir( $dh );
    498 
    499                 if( is_multisite() )
    500                         sort( $mu_plugins );
    501                
    502                 foreach( $mu_plugins as $mu_plugin ) {
    503                         include_once( WPMU_PLUGIN_DIR . '/' . $mu_plugin );
    504                 }
    505         }
    506 }
    507 /**
    508117 * Used to load network wide plugins
    509118 * @since 3.0
    510119 */
    511 if( is_multisite() ) {
     120if( is_multisite() )
    512121        ms_network_plugins();
    513 }
    514122
    515123do_action('muplugins_loaded');
    516124
     
    522130        ms_site_check();
    523131        ms_network_cookies();
    524132}
    525 /**
    526  * Used to guarantee unique hash cookies
    527  * @since 1.5
    528  */
    529 if( !defined('COOKIEHASH') )
    530         define('COOKIEHASH', md5(get_option('siteurl')));
    531133
    532 /**
    533  * Should be exactly the same as the default value of SECRET_KEY in wp-config-sample.php
    534  * @since 2.5.0
    535  */
    536 $wp_default_secret_key = 'put your unique phrase here';
     134wp_default_constants('ms_loaded');
    537135
    538 /**
    539  * It is possible to define this in wp-config.php
    540  * @since 2.0.0
    541  */
    542 if ( !defined('USER_COOKIE') )
    543         define('USER_COOKIE', 'wordpressuser_' . COOKIEHASH);
    544 
    545 /**
    546  * It is possible to define this in wp-config.php
    547  * @since 2.0.0
    548  */
    549 if ( !defined('PASS_COOKIE') )
    550         define('PASS_COOKIE', 'wordpresspass_' . COOKIEHASH);
    551 
    552 /**
    553  * It is possible to define this in wp-config.php
    554  * @since 2.5.0
    555  */
    556 if ( !defined('AUTH_COOKIE') )
    557         define('AUTH_COOKIE', 'wordpress_' . COOKIEHASH);
    558 
    559 /**
    560  * It is possible to define this in wp-config.php
    561  * @since 2.6.0
    562  */
    563 if ( !defined('SECURE_AUTH_COOKIE') )
    564         define('SECURE_AUTH_COOKIE', 'wordpress_sec_' . COOKIEHASH);
    565 
    566 /**
    567  * It is possible to define this in wp-config.php
    568  * @since 2.6.0
    569  */
    570 if ( !defined('LOGGED_IN_COOKIE') )
    571         define('LOGGED_IN_COOKIE', 'wordpress_logged_in_' . COOKIEHASH);
    572 
    573 /**
    574  * It is possible to define this in wp-config.php
    575  * @since 2.3.0
    576  */
    577 if ( !defined('TEST_COOKIE') )
    578         define('TEST_COOKIE', 'wordpress_test_cookie');
    579 
    580 /**
    581  * It is possible to define this in wp-config.php
    582  * @since 1.2.0
    583  */
    584 if ( !defined('COOKIEPATH') )
    585         define('COOKIEPATH', preg_replace('|https?://[^/]+|i', '', get_option('home') . '/' ) );
    586 
    587 /**
    588  * It is possible to define this in wp-config.php
    589  * @since 1.5.0
    590  */
    591 if ( !defined('SITECOOKIEPATH') )
    592         define('SITECOOKIEPATH', preg_replace('|https?://[^/]+|i', '', get_option('siteurl') . '/' ) );
    593 
    594 /**
    595  * It is possible to define this in wp-config.php
    596  * @since 2.6.0
    597  */
    598 if ( !defined('ADMIN_COOKIE_PATH') )
    599         define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . 'wp-admin' );
    600 
    601 /**
    602  * It is possible to define this in wp-config.php
    603  * @since 2.6.0
    604  */
    605 if ( !defined('PLUGINS_COOKIE_PATH') )
    606         define( 'PLUGINS_COOKIE_PATH', preg_replace('|https?://[^/]+|i', '', WP_PLUGIN_URL)  );
    607 
    608 /**
    609  * It is possible to define this in wp-config.php
    610  * @since 2.0.0
    611  */
    612 if ( !defined('COOKIE_DOMAIN') )
    613         define('COOKIE_DOMAIN', false);
    614 
    615 /**
    616  * It is possible to define this in wp-config.php
    617  * @since 2.6.0
    618  */
    619 if ( !defined('FORCE_SSL_ADMIN') )
    620         define('FORCE_SSL_ADMIN', false);
    621 force_ssl_admin(FORCE_SSL_ADMIN);
    622 
    623 /**
    624  * It is possible to define this in wp-config.php
    625  * @since 2.6.0
    626  */
    627 if ( !defined('FORCE_SSL_LOGIN') )
    628         define('FORCE_SSL_LOGIN', false);
    629 force_ssl_login(FORCE_SSL_LOGIN);
    630 
    631 /**
    632  * It is possible to define this in wp-config.php
    633  * @since 2.5.0
    634  */
    635 if ( !defined( 'AUTOSAVE_INTERVAL' ) )
    636         define( 'AUTOSAVE_INTERVAL', 60 );
    637 
    638 /**
    639  * It is possible to define this in wp-config.php
    640  * @since 2.9.0
    641  */
    642 if ( !defined( 'EMPTY_TRASH_DAYS' ) )
    643         define( 'EMPTY_TRASH_DAYS', 30 );
    644 
    645136require (ABSPATH . WPINC . '/vars.php');
    646137
    647138// make taxonomies available to plugins and themes
    648139// @plugin authors: warning: this gets registered again on the init hook
    649140create_initial_taxonomies();
    650141
    651 // Check for hacks file if the option is enabled
    652 if ( get_option('hack_file') ) {
    653         if ( file_exists(ABSPATH . 'my-hacks.php') )
    654                 require(ABSPATH . 'my-hacks.php');
    655 }
     142wp_load_plugins();
    656143
    657 $current_plugins = apply_filters( 'active_plugins', get_option( 'active_plugins' ) );
    658 if ( is_array($current_plugins) && !defined('WP_INSTALLING') ) {
    659         foreach ( $current_plugins as $plugin ) {
    660                 // check the $plugin filename
    661                 // Validate plugin filename
    662                 if ( validate_file($plugin) // $plugin must validate as file
    663                         || '.php' != substr($plugin, -4) // $plugin must end with '.php'
    664                         || !file_exists(WP_PLUGIN_DIR . '/' . $plugin)  // $plugin must exist
    665                         )
    666                         continue;
    667 
    668                 include_once(WP_PLUGIN_DIR . '/' . $plugin);
    669         }
    670         unset($plugin);
    671 }
    672 unset($current_plugins);
    673 
    674144require (ABSPATH . WPINC . '/pluggable.php');
    675145
    676 /*
    677  * In most cases the default internal encoding is latin1, which is of no use,
    678  * since we want to use the mb_ functions for utf-8 strings
    679  */
    680 if (function_exists('mb_internal_encoding')) {
    681         if (!@mb_internal_encoding(get_option('blog_charset')))
    682                 mb_internal_encoding('UTF-8');
    683 }
     146wp_set_internal_encoding();
    684147
    685 
    686 if ( defined('WP_CACHE') && function_exists('wp_cache_postload') )
     148if ( WP_CACHE && function_exists('wp_cache_postload') )
    687149        wp_cache_postload();
    688150
    689151do_action('plugins_loaded');
    690152
    691 $default_constants = array( 'WP_POST_REVISIONS' => true );
    692 foreach ( $default_constants as $c => $v )
    693         @define( $c, $v ); // will fail if the constant is already defined
    694 unset($default_constants, $c, $v);
     153wp_default_constants('plugins_loaded');
    695154
    696 // If already slashed, strip.
    697 if ( get_magic_quotes_gpc() ) {
    698         $_GET    = stripslashes_deep($_GET   );
    699         $_POST   = stripslashes_deep($_POST  );
    700         $_COOKIE = stripslashes_deep($_COOKIE);
    701 }
     155wp_magic_quotes();
    702156
    703 // Escape with wpdb.
    704 $_GET    = add_magic_quotes($_GET   );
    705 $_POST   = add_magic_quotes($_POST  );
    706 $_COOKIE = add_magic_quotes($_COOKIE);
    707 $_SERVER = add_magic_quotes($_SERVER);
    708 
    709 // Force REQUEST to be GET + POST.  If SERVER, COOKIE, or ENV are needed, use those superglobals directly.
    710 $_REQUEST = array_merge($_GET, $_POST);
    711 
    712157do_action('sanitize_comment_cookies');
    713158
    714 /**
    715  * WordPress Query object
    716  * @global object $wp_the_query
    717  * @since 2.0.0
    718  */
    719 $wp_the_query =& new WP_Query();
     159wp_init_objects();
    720160
    721 /**
    722  * Holds the reference to @see $wp_the_query
    723  * Use this global for WordPress queries
    724  * @global object $wp_query
    725  * @since 1.5.0
    726  */
    727 $wp_query     =& $wp_the_query;
    728 
    729 /**
    730  * Holds the WordPress Rewrite object for creating pretty URLs
    731  * @global object $wp_rewrite
    732  * @since 1.5.0
    733  */
    734 $wp_rewrite   =& new WP_Rewrite();
    735 
    736 /**
    737  * WordPress Object
    738  * @global object $wp
    739  * @since 2.0.0
    740  */
    741 $wp           =& new WP();
    742 
    743 /**
    744  * WordPress Widget Factory Object
    745  * @global object $wp_widget_factory
    746  * @since 2.8.0
    747  */
    748 $wp_widget_factory =& new WP_Widget_Factory();
    749 
    750161do_action('setup_theme');
    751162
    752 /**
    753  * Web Path to the current active template directory
    754  * @since 1.5.0
    755  */
    756 define('TEMPLATEPATH', get_template_directory());
     163wp_default_constants('setup_theme');
    757164
    758 /**
    759  * Web Path to the current active template stylesheet directory
    760  * @since 2.1.0
    761  */
    762 define('STYLESHEETPATH', get_stylesheet_directory());
    763 
    764165// Load the default text localization domain.
    765166load_default_textdomain();
    766167
    767 /**
    768  * The locale of the blog
    769  * @since 1.5.0
    770  */
    771 $locale = get_locale();
    772 $locale_file = WP_LANG_DIR . "/$locale.php";
    773 if ( is_readable($locale_file) )
    774         require_once($locale_file);
     168wp_set_locale();
    775169
    776 // Pull in locale data after loading text domain.
    777 require_once(ABSPATH . WPINC . '/locale.php');
     170wp_load_theme_functions();
    778171
    779 /**
    780  * WordPress Locale object for loading locale domain date and various strings.
    781  * @global object $wp_locale
    782  * @since 2.1.0
    783  */
    784 $wp_locale =& new WP_Locale();
    785 
    786 // Load functions for active theme.
    787 if ( TEMPLATEPATH !== STYLESHEETPATH && file_exists(STYLESHEETPATH . '/functions.php') )
    788         include(STYLESHEETPATH . '/functions.php');
    789 if ( file_exists(TEMPLATEPATH . '/functions.php') )
    790         include(TEMPLATEPATH . '/functions.php');
    791 
    792 // Load in support for template functions which the theme supports
    793 require_if_theme_supports( 'post-thumbnails', ABSPATH . WPINC . '/post-thumbnail-template.php' );
    794 
    795 /**
    796  * Runs just before PHP shuts down execution.
    797  *
    798  * @access private
    799  * @since 1.2.0
    800  */
    801 function shutdown_action_hook() {
    802         do_action('shutdown');
    803         wp_cache_close();
    804 }
    805172register_shutdown_function('shutdown_action_hook');
    806173
    807174$wp->init();  // Sets up current user.
  • wp-includes/default-constants.php

     
     1<?php
     2
     3/**
     4 * Defines constants and global variables that can be overridden, usually in wp-config.php.
     5 *
     6 * @package WordPress
     7 */
     8
     9/**
     10 * Defines WordPress default constants.
     11 *
     12 * @since 3.0.0
     13 * @param $context
     14 */
     15function wp_default_constants( $context ) {
     16
     17        switch( $context ) {
     18
     19                case 'init' :
     20
     21                        // set memory limits
     22                        if ( !defined('WP_MEMORY_LIMIT') ) {
     23                                if( is_multisite() ) {
     24                                        define('WP_MEMORY_LIMIT', '64M');
     25                                } else {
     26                                        define('WP_MEMORY_LIMIT', '32M');
     27                                }
     28                        }
     29                       
     30                        /**
     31                         * The $blog_id global, which you can change in the config allows you to create a simple
     32                         * multiple blog installation using just one WordPress and changing $blog_id around.
     33                         *
     34                         * @global int $blog_id
     35                         * @since 2.0.0
     36                         */
     37                        if ( ! isset($blog_id) )
     38                                $blog_id = 1;
     39                       
     40                        // set memory limits.
     41                        if ( function_exists('memory_get_usage') && ( (int) @ini_get('memory_limit') < abs(intval(WP_MEMORY_LIMIT)) ) )
     42                                @ini_set('memory_limit', WP_MEMORY_LIMIT);
     43                       
     44                        if ( !defined('WP_CONTENT_DIR') )
     45                                define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' ); // no trailing slash, full paths only - WP_CONTENT_URL is defined further down
     46                       
     47                        // Add define('WP_DEBUG', true); to wp-config.php to enable display of notices during development.
     48                        if ( !defined('WP_DEBUG') )
     49                                define( 'WP_DEBUG', false );
     50                       
     51                        // Add define('WP_DEBUG_DISPLAY', false); to wp-config.php to use the globally configured setting for display_errors and not force it to On
     52                        if ( !defined('WP_DEBUG_DISPLAY') )
     53                                define( 'WP_DEBUG_DISPLAY', true );
     54                       
     55                        // Add define('WP_DEBUG_LOG', true); to enable php debug logging to WP_CONTENT_DIR/debug.log
     56                        if ( !defined('WP_DEBUG_LOG') )
     57                                define('WP_DEBUG_LOG', false);
     58                       
     59                        if ( !defined('WP_CACHE') )
     60                                define('WP_CACHE', false);
     61                       
     62                        /**
     63                         * Private
     64                         */
     65                        if ( !defined('MEDIA_TRASH') )
     66                                define('MEDIA_TRASH', false);
     67                       
     68                        if ( !defined('SHORTINIT') )
     69                                define('SHORTINIT', false);
     70
     71                break;
     72                case 'wp_included':
     73
     74                        if ( !defined('WP_CONTENT_URL') )
     75                                define( 'WP_CONTENT_URL', get_option('siteurl') . '/wp-content'); // full url - WP_CONTENT_DIR is defined further up
     76               
     77                        /**
     78                         * Allows for the plugins directory to be moved from the default location.
     79                         *
     80                         * @since 2.6.0
     81                         */
     82                        if ( !defined('WP_PLUGIN_DIR') )
     83                                define( 'WP_PLUGIN_DIR', WP_CONTENT_DIR . '/plugins' ); // full path, no trailing slash
     84               
     85                        /**
     86                         * Allows for the plugins directory to be moved from the default location.
     87                         *
     88                         * @since 2.6.0
     89                         */
     90                        if ( !defined('WP_PLUGIN_URL') )
     91                                define( 'WP_PLUGIN_URL', WP_CONTENT_URL . '/plugins' ); // full url, no trailing slash
     92               
     93                        /**
     94                         * Allows for the plugins directory to be moved from the default location.
     95                         *
     96                         * @since 2.1.0
     97                         */
     98                        if ( !defined('PLUGINDIR') )
     99                                define( 'PLUGINDIR', 'wp-content/plugins' ); // Relative to ABSPATH.  For back compat.
     100               
     101                        /**
     102                         * Allows for the mu-plugins directory to be moved from the default location.
     103                         *
     104                         * @since 2.8.0
     105                         */
     106                        if ( !defined('WPMU_PLUGIN_DIR') )
     107                                define( 'WPMU_PLUGIN_DIR', WP_CONTENT_DIR . '/mu-plugins' ); // full path, no trailing slash
     108               
     109                        /**
     110                         * Allows for the mu-plugins directory to be moved from the default location.
     111                         *
     112                         * @since 2.8.0
     113                         */
     114                        if ( !defined('WPMU_PLUGIN_URL') )
     115                                define( 'WPMU_PLUGIN_URL', WP_CONTENT_URL . '/mu-plugins' ); // full url, no trailing slash
     116               
     117                        /**
     118                         * Allows for the mu-plugins directory to be moved from the default location.
     119                         *
     120                         * @since 2.8.0
     121                         */
     122                        if ( !defined( 'MUPLUGINDIR' ) )
     123                                define( 'MUPLUGINDIR', 'wp-content/mu-plugins' ); // Relative to ABSPATH.  For back compat.
     124
     125                break;
     126                case 'ms_loaded';
     127
     128                        global $wp_default_secret_key;
     129               
     130                        /**
     131                         * Used to guarantee unique hash cookies
     132                         * @since 1.5
     133                         */
     134                        if( !defined('COOKIEHASH') )
     135                                        define('COOKIEHASH', md5(get_option('siteurl')));
     136               
     137                        /**
     138                         * Should be exactly the same as the default value of SECRET_KEY in wp-config-sample.php
     139                         * @since 2.5.0
     140                         */
     141                        $wp_default_secret_key = 'put your unique phrase here';
     142               
     143                        /**
     144                         * It is possible to define this in wp-config.php
     145                         * @since 2.0.0
     146                         */
     147                        if ( !defined('USER_COOKIE') )
     148                                define('USER_COOKIE', 'wordpressuser_' . COOKIEHASH);
     149               
     150                        /**
     151                         * It is possible to define this in wp-config.php
     152                         * @since 2.0.0
     153                         */
     154                        if ( !defined('PASS_COOKIE') )
     155                                define('PASS_COOKIE', 'wordpresspass_' . COOKIEHASH);
     156               
     157                        /**
     158                         * It is possible to define this in wp-config.php
     159                         * @since 2.5.0
     160                         */
     161                        if ( !defined('AUTH_COOKIE') )
     162                                define('AUTH_COOKIE', 'wordpress_' . COOKIEHASH);
     163               
     164                        /**
     165                         * It is possible to define this in wp-config.php
     166                         * @since 2.6.0
     167                         */
     168                        if ( !defined('SECURE_AUTH_COOKIE') )
     169                                define('SECURE_AUTH_COOKIE', 'wordpress_sec_' . COOKIEHASH);
     170               
     171                        /**
     172                         * It is possible to define this in wp-config.php
     173                         * @since 2.6.0
     174                         */
     175                        if ( !defined('LOGGED_IN_COOKIE') )
     176                                define('LOGGED_IN_COOKIE', 'wordpress_logged_in_' . COOKIEHASH);
     177               
     178                        /**
     179                         * It is possible to define this in wp-config.php
     180                         * @since 2.3.0
     181                         */
     182                        if ( !defined('TEST_COOKIE') )
     183                                define('TEST_COOKIE', 'wordpress_test_cookie');
     184               
     185                        /**
     186                         * It is possible to define this in wp-config.php
     187                         * @since 1.2.0
     188                         */
     189                        if ( !defined('COOKIEPATH') )
     190                                define('COOKIEPATH', preg_replace('|https?://[^/]+|i', '', get_option('home') . '/' ) );
     191               
     192                        /**
     193                         * It is possible to define this in wp-config.php
     194                         * @since 1.5.0
     195                         */
     196                        if ( !defined('SITECOOKIEPATH') )
     197                                define('SITECOOKIEPATH', preg_replace('|https?://[^/]+|i', '', get_option('siteurl') . '/' ) );
     198               
     199                        /**
     200                         * It is possible to define this in wp-config.php
     201                         * @since 2.6.0
     202                         */
     203                        if ( !defined('ADMIN_COOKIE_PATH') )
     204                                define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . 'wp-admin' );
     205               
     206                        /**
     207                         * It is possible to define this in wp-config.php
     208                         * @since 2.6.0
     209                         */
     210                        if ( !defined('PLUGINS_COOKIE_PATH') )
     211                                define( 'PLUGINS_COOKIE_PATH', preg_replace('|https?://[^/]+|i', '', WP_PLUGIN_URL)  );
     212               
     213                        /**
     214                         * It is possible to define this in wp-config.php
     215                         * @since 2.0.0
     216                         */
     217                        if ( !defined('COOKIE_DOMAIN') )
     218                                define('COOKIE_DOMAIN', false);
     219               
     220                        /**
     221                         * It is possible to define this in wp-config.php
     222                         * @since 2.6.0
     223                         */
     224                        if ( !defined('FORCE_SSL_ADMIN') )
     225                                define('FORCE_SSL_ADMIN', false);
     226                        force_ssl_admin(FORCE_SSL_ADMIN);
     227               
     228                        /**
     229                         * It is possible to define this in wp-config.php
     230                         * @since 2.6.0
     231                         */
     232                        if ( !defined('FORCE_SSL_LOGIN') )
     233                                define('FORCE_SSL_LOGIN', false);
     234                        force_ssl_login(FORCE_SSL_LOGIN);
     235               
     236                        /**
     237                         * It is possible to define this in wp-config.php
     238                         * @since 2.5.0
     239                         */
     240                        if ( !defined( 'AUTOSAVE_INTERVAL' ) )
     241                                define( 'AUTOSAVE_INTERVAL', 60 );
     242               
     243                        /**
     244                         * It is possible to define this in wp-config.php
     245                         * @since 2.9.0
     246                         */
     247                        if ( !defined( 'EMPTY_TRASH_DAYS' ) )
     248                                define( 'EMPTY_TRASH_DAYS', 30 );
     249                break;
     250                case 'plugins_loaded':
     251
     252                        if ( !defined('WP_POST_REVISIONS') )
     253                        define('WP_POST_REVISIONS', true);
     254
     255                break;
     256                case 'setup_theme':
     257                        /**
     258                         * Web Path to the current active template directory
     259                         * @since 1.5.0
     260                         */
     261                        define('TEMPLATEPATH', get_template_directory());
     262               
     263                        /**
     264                         * Web Path to the current active template stylesheet directory
     265                         * @since 2.1.0
     266                         */
     267                        define('STYLESHEETPATH', get_stylesheet_directory());
     268                break;
     269
     270        }
     271}
     272
     273?>
     274 No newline at end of file
  • wp-includes/load.php

     
     1<?php
     2
     3/**
     4 * Initialization functions.
     5 *
     6 * @package WordPress
     7 */
     8
     9/**
     10 * Whether Multisite support is enabled
     11 *
     12 * @since 3.0
     13 *
     14 * @return bool True if multisite is enabled, false otherwise.
     15 */
     16function is_multisite() {
     17        if ( ( defined('MULTISITE') && MULTISITE ) || defined('VHOST') || defined('SUNRISE') )
     18                return true;
     19
     20        return false;
     21}
     22
     23/**
     24 * Turn register globals off.
     25 *
     26 * @access private
     27 * @since 2.1.0
     28 * @return null Will return null if register_globals PHP directive was disabled
     29 */
     30function wp_unregister_GLOBALS() {
     31        if ( !ini_get('register_globals') )
     32                return;
     33
     34        if ( isset($_REQUEST['GLOBALS']) )
     35                die('GLOBALS overwrite attempt detected');
     36
     37        // Variables that shouldn't be unset
     38        $noUnset = array('GLOBALS', '_GET', '_POST', '_COOKIE', '_REQUEST', '_SERVER', '_ENV', '_FILES', 'table_prefix');
     39
     40        $input = array_merge($_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_FILES, isset($_SESSION) && is_array($_SESSION) ? $_SESSION : array());
     41        foreach ( $input as $k => $v )
     42                if ( !in_array($k, $noUnset) && isset($GLOBALS[$k]) ) {
     43                        $GLOBALS[$k] = NULL;
     44                        unset($GLOBALS[$k]);
     45                }
     46}
     47
     48function wp_fix_server_vars() {
     49        global $PHP_SELF;
     50        // Fix for IIS when running with PHP ISAPI
     51        if ( empty( $_SERVER['REQUEST_URI'] ) || ( php_sapi_name() != 'cgi-fcgi' && preg_match( '/^Microsoft-IIS\//', $_SERVER['SERVER_SOFTWARE'] ) ) ) {
     52
     53                // IIS Mod-Rewrite
     54                if (isset($_SERVER['HTTP_X_ORIGINAL_URL'])) {
     55                        $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_ORIGINAL_URL'];
     56                }
     57                // IIS Isapi_Rewrite
     58                else if (isset($_SERVER['HTTP_X_REWRITE_URL'])) {
     59                        $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL'];
     60                }
     61                else
     62                {
     63                        // Use ORIG_PATH_INFO if there is no PATH_INFO
     64                        if ( !isset($_SERVER['PATH_INFO']) && isset($_SERVER['ORIG_PATH_INFO']) )
     65                                $_SERVER['PATH_INFO'] = $_SERVER['ORIG_PATH_INFO'];
     66
     67                        // Some IIS + PHP configurations puts the script-name in the path-info (No need to append it twice)
     68                        if ( isset($_SERVER['PATH_INFO']) ) {
     69                                if ( $_SERVER['PATH_INFO'] == $_SERVER['SCRIPT_NAME'] )
     70                                        $_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO'];
     71                                else
     72                                        $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] . $_SERVER['PATH_INFO'];
     73                        }
     74
     75                        // Append the query string if it exists and isn't null
     76                        if (isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING'])) {
     77                                $_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING'];
     78                        }
     79                }
     80        }
     81
     82        // Fix for PHP as CGI hosts that set SCRIPT_FILENAME to something ending in php.cgi for all requests
     83        if ( isset($_SERVER['SCRIPT_FILENAME']) && ( strpos($_SERVER['SCRIPT_FILENAME'], 'php.cgi') == strlen($_SERVER['SCRIPT_FILENAME']) - 7 ) )
     84                $_SERVER['SCRIPT_FILENAME'] = $_SERVER['PATH_TRANSLATED'];
     85
     86        // Fix for Dreamhost and other PHP as CGI hosts
     87        if (strpos($_SERVER['SCRIPT_NAME'], 'php.cgi') !== false)
     88                unset($_SERVER['PATH_INFO']);
     89
     90        // Fix empty PHP_SELF
     91        $PHP_SELF = $_SERVER['PHP_SELF'];
     92        if ( empty($PHP_SELF) )
     93                $_SERVER['PHP_SELF'] = $PHP_SELF = preg_replace("/(\?.*)?$/",'',$_SERVER["REQUEST_URI"]);
     94}
     95
     96function wp_check_php_mysql_versions() {
     97        // we can probably extend this function to check if wp_die() exists then use translated strings, and then use it in install.php etc.
     98
     99        global $required_php_version, $wp_version;
     100        $php_version = phpversion();
     101        if ( version_compare( $required_php_version, $php_version, '>' ) )
     102                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 ) );
     103
     104        if ( !extension_loaded('mysql') && !file_exists(WP_CONTENT_DIR . '/db.php') )
     105                die( /*WP_I18N_OLD_MYSQL*/'Your PHP installation appears to be missing the MySQL extension which is required by WordPress.'/*/WP_I18N_OLD_MYSQL*/ );
     106}
     107
     108function wp_maintenance() {
     109        if ( file_exists(ABSPATH . '.maintenance') && !defined('WP_INSTALLING') ) {
     110                include(ABSPATH . '.maintenance');
     111                // If the $upgrading timestamp is older than 10 minutes, don't die.
     112                if ( ( time() - $upgrading ) < 600 ) {
     113                        if ( file_exists( WP_CONTENT_DIR . '/maintenance.php' ) ) {
     114                                require_once( WP_CONTENT_DIR . '/maintenance.php' );
     115                                die();
     116                        }
     117
     118                        $protocol = $_SERVER["SERVER_PROTOCOL"];
     119                        if ( 'HTTP/1.1' != $protocol && 'HTTP/1.0' != $protocol )
     120                                $protocol = 'HTTP/1.0';
     121                        header( "$protocol 503 Service Unavailable", true, 503 );
     122                        header( 'Content-Type: text/html; charset=utf-8' );
     123                        header( 'Retry-After: 600' );
     124        ?>
     125        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     126        <html xmlns="http://www.w3.org/1999/xhtml">
     127        <head>
     128        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     129                <title>Maintenance</title>
     130
     131        </head>
     132        <body>
     133                <h1>Briefly unavailable for scheduled maintenance. Check back in a minute.</h1>
     134        </body>
     135        </html>
     136        <?php
     137                        die();
     138                }
     139        }
     140}
     141
     142/**
     143 * PHP 4 standard microtime start capture.
     144 *
     145 * @access private
     146 * @since 0.71
     147 * @global int $timestart Seconds and Microseconds added together from when function is called.
     148 * @return bool Always returns true.
     149 */
     150function timer_start() {
     151        global $timestart;
     152        $mtime = explode(' ', microtime() );
     153        $mtime = $mtime[1] + $mtime[0];
     154        $timestart = $mtime;
     155        return true;
     156}
     157
     158/**
     159 * Return and/or display the time from the page start to when function is called.
     160 *
     161 * You can get the results and print them by doing:
     162 * <code>
     163 * $nTimePageTookToExecute = timer_stop();
     164 * echo $nTimePageTookToExecute;
     165 * </code>
     166 *
     167 * Or instead, you can do:
     168 * <code>
     169 * timer_stop(1);
     170 * </code>
     171 * which will do what the above does. If you need the result, you can assign it to a variable, but
     172 * most cases, you only need to echo it.
     173 *
     174 * @since 0.71
     175 * @global int $timestart Seconds and Microseconds added together from when timer_start() is called
     176 * @global int $timeend  Seconds and Microseconds added together from when function is called
     177 *
     178 * @param int $display Use '0' or null to not echo anything and 1 to echo the total time
     179 * @param int $precision The amount of digits from the right of the decimal to display. Default is 3.
     180 * @return float The "second.microsecond" finished time calculation
     181 */
     182function timer_stop($display = 0, $precision = 3) { //if called like timer_stop(1), will echo $timetotal
     183        global $timestart, $timeend;
     184        $mtime = microtime();
     185        $mtime = explode(' ',$mtime);
     186        $mtime = $mtime[1] + $mtime[0];
     187        $timeend = $mtime;
     188        $timetotal = $timeend-$timestart;
     189        $r = ( function_exists('number_format_i18n') ) ? number_format_i18n($timetotal, $precision) : number_format($timetotal, $precision);
     190        if ( $display )
     191                echo $r;
     192        return $r;
     193}
     194
     195function wp_set_lang_dir() {
     196        if ( !defined('WP_LANG_DIR') ) {
     197                /**
     198                 * Stores the location of the language directory. First looks for language folder in WP_CONTENT_DIR
     199                 * and uses that folder if it exists. Or it uses the "languages" folder in WPINC.
     200                 *
     201                 * @since 2.1.0
     202                 */
     203                if ( file_exists(WP_CONTENT_DIR . '/languages') && @is_dir(WP_CONTENT_DIR . '/languages') ) {
     204                        define('WP_LANG_DIR', WP_CONTENT_DIR . '/languages'); // no leading slash, no trailing slash, full path, not relative to ABSPATH
     205                        if (!defined('LANGDIR')) {
     206                                // Old static relative path maintained for limited backwards compatibility - won't work in some cases
     207                                define('LANGDIR', 'wp-content/languages');
     208                        }
     209                } else {
     210                        define('WP_LANG_DIR', ABSPATH . WPINC . '/languages'); // no leading slash, no trailing slash, full path, not relative to ABSPATH
     211                        if (!defined('LANGDIR')) {
     212                                // Old relative path maintained for backwards compatibility
     213                                define('LANGDIR', WPINC . '/languages');
     214                        }
     215                }
     216        }
     217}
     218
     219/**
     220 * Copy an object.
     221 *
     222 * Returns a cloned copy of an object.
     223 *
     224 * @since 2.7.0
     225 *
     226 * @param object $object The object to clone
     227 * @return object The cloned object
     228 */
     229function wp_clone( $object ) {
     230        static $can_clone;
     231        if ( !isset( $can_clone ) ) {
     232                $can_clone = version_compare( phpversion(), '5.0', '>=' );
     233        }
     234        return $can_clone ? clone( $object ) : $object;
     235}
     236
     237/**
     238 * Whether the current request is in WordPress admin Panel
     239 *
     240 * Does not inform on whether the user is an admin! Use capability checks to
     241 * tell if the user should be accessing a section or not.
     242 *
     243 * @since 1.5.1
     244 *
     245 * @return bool True if inside WordPress administration pages.
     246 */
     247function is_admin() {
     248        if ( defined('WP_ADMIN') )
     249                return WP_ADMIN;
     250        return false;
     251}
     252
     253function wp_start_object_cache() {
     254        global $_wp_using_ext_object_cache;
     255        if ( file_exists(WP_CONTENT_DIR . '/object-cache.php') ) {
     256                require_once (WP_CONTENT_DIR . '/object-cache.php');
     257                $_wp_using_ext_object_cache = true;
     258        } else {
     259                require_once (ABSPATH . WPINC . '/cache.php');
     260                $_wp_using_ext_object_cache = false;
     261        }
     262
     263        wp_cache_init();
     264        if ( function_exists('wp_cache_add_global_groups') ) {
     265                        if( is_multisite() ) {
     266                                        wp_cache_add_global_groups(array ('users', 'userlogins', 'usermeta', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss'));
     267                        } else {
     268                                wp_cache_add_global_groups(array ('users', 'userlogins', 'usermeta', 'site-transient'));
     269                        }
     270                wp_cache_add_non_persistent_groups(array( 'comment', 'counts', 'plugins' ));
     271        }
     272}
     273
     274function wp_set_wpdb_vars() {
     275        global $wpdb, $table_prefix;
     276        if ( !empty($wpdb->error) )
     277                dead_db();
     278
     279        /**
     280         * Format specifiers for DB columns. Columns not listed here default to %s.
     281         * @since 2.8.0
     282         * @see wpdb:$field_types
     283         * @see wpdb:prepare()
     284         * @see wpdb:insert()
     285         * @see wpdb:update()
     286         */
     287        $wpdb->field_types = array( 'post_author' => '%d', 'post_parent' => '%d', 'menu_order' => '%d', 'term_id' => '%d', 'term_group' => '%d', 'term_taxonomy_id' => '%d',
     288                'parent' => '%d', 'count' => '%d','object_id' => '%d', 'term_order' => '%d', 'ID' => '%d', 'commment_ID' => '%d', 'comment_post_ID' => '%d', 'comment_parent' => '%d',
     289                'user_id' => '%d', 'link_id' => '%d', 'link_owner' => '%d', 'link_rating' => '%d', 'option_id' => '%d', 'blog_id' => '%d', 'meta_id' => '%d', 'post_id' => '%d',
     290                'user_status' => '%d', 'umeta_id' => '%d', 'comment_karma' => '%d', 'comment_count' => '%d');
     291
     292        $prefix = $wpdb->set_prefix($table_prefix);
     293
     294        if ( is_wp_error($prefix) )
     295                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*/);
     296
     297}
     298
     299function wp_debug_mode() {
     300        if ( WP_DEBUG ) {
     301                if ( defined('E_DEPRECATED') )
     302                        error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT);
     303                else
     304                        error_reporting(E_ALL);
     305
     306                if ( WP_DEBUG_DISPLAY )
     307                        ini_set('display_errors', 1);
     308
     309                if ( WP_DEBUG_LOG ) {
     310                        ini_set('log_errors', 1);
     311                        ini_set('error_log', WP_CONTENT_DIR . '/debug.log');
     312                }
     313        } else {
     314                if ( defined('E_RECOVERABLE_ERROR') )
     315                        error_reporting(E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR);
     316                else
     317                        error_reporting(E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING);
     318        }
     319}
     320
     321function wp_not_installed() {
     322        if( is_multisite() ) {
     323                        if ( !is_blog_installed() && !defined('WP_INSTALLING') ) {
     324                                        die( __( 'The blog you have requested is not installed properly. Please contact the system administrator.' ) ); // have to die here ~ Mark
     325                        }
     326        } elseif ( !is_blog_installed() && (strpos($_SERVER['PHP_SELF'], 'install.php') === false && !defined('WP_INSTALLING')) ) {
     327                if ( defined('WP_SITEURL') )
     328                        $link = WP_SITEURL . '/wp-admin/install.php';
     329                elseif (strpos($_SERVER['PHP_SELF'], 'wp-admin') !== false)
     330                        $link = preg_replace('|/wp-admin/?.*?$|', '/', $_SERVER['PHP_SELF']) . 'wp-admin/install.php';
     331                else
     332                        $link = preg_replace('|/[^/]+?$|', '/', $_SERVER['PHP_SELF']) . 'wp-admin/install.php';
     333                require_once(ABSPATH . WPINC . '/kses.php');
     334                require_once(ABSPATH . WPINC . '/pluggable.php');
     335                require_once(ABSPATH . WPINC . '/formatting.php');
     336                wp_redirect($link);
     337                die();
     338        }
     339}
     340
     341function wp_load_mu_plugins() {
     342        if ( is_dir( WPMU_PLUGIN_DIR ) ) {
     343                if ( $dh = opendir( WPMU_PLUGIN_DIR ) ) {
     344                        $mu_plugins = array ();
     345                        while ( ( $plugin = readdir( $dh ) ) !== false )
     346                                if ( substr( $plugin, -4 ) == '.php' )
     347                                        $mu_plugins[] = $plugin;
     348                        closedir( $dh );
     349                                        if( is_multisite() )
     350                                        sort( $mu_plugins );
     351                        foreach( $mu_plugins as $mu_plugin )
     352                                include_once( WPMU_PLUGIN_DIR . '/' . $mu_plugin );
     353                }
     354        }
     355}
     356
     357function wp_load_plugins() {
     358        // Check for hacks file if the option is enabled
     359        if ( get_option('hack_file') ) {
     360                if ( file_exists(ABSPATH . 'my-hacks.php') )
     361                        require(ABSPATH . 'my-hacks.php');
     362        }
     363
     364        $current_plugins = apply_filters( 'active_plugins', get_option( 'active_plugins' ) );
     365        if ( is_array($current_plugins) && !defined('WP_INSTALLING') ) {
     366                foreach ( $current_plugins as $plugin ) {
     367                        // check the $plugin filename
     368                        // Validate plugin filename
     369                        if ( validate_file($plugin) // $plugin must validate as file
     370                                || '.php' != substr($plugin, -4) // $plugin must end with '.php'
     371                                || !file_exists(WP_PLUGIN_DIR . '/' . $plugin)  // $plugin must exist
     372                                )
     373                                continue;
     374
     375                        include_once(WP_PLUGIN_DIR . '/' . $plugin);
     376                }
     377                unset($plugin);
     378        }
     379        unset($current_plugins);
     380
     381}
     382
     383function wp_set_internal_encoding() {
     384        /*
     385         * In most cases the default internal encoding is latin1, which is of no use,
     386         * since we want to use the mb_ functions for utf-8 strings
     387         */
     388        if (function_exists('mb_internal_encoding')) {
     389                if (!@mb_internal_encoding(get_option('blog_charset')))
     390                        mb_internal_encoding('UTF-8');
     391        }
     392}
     393
     394function wp_magic_quotes() {
     395        // If already slashed, strip.
     396        if ( get_magic_quotes_gpc() ) {
     397                $_GET    = stripslashes_deep($_GET   );
     398                $_POST   = stripslashes_deep($_POST  );
     399                $_COOKIE = stripslashes_deep($_COOKIE);
     400        }
     401
     402        // Escape with wpdb.
     403        $_GET    = add_magic_quotes($_GET   );
     404        $_POST   = add_magic_quotes($_POST  );
     405        $_COOKIE = add_magic_quotes($_COOKIE);
     406        $_SERVER = add_magic_quotes($_SERVER);
     407
     408        // Force REQUEST to be GET + POST.  If SERVER, COOKIE, or ENV are needed, use those superglobals directly.
     409        $_REQUEST = array_merge($_GET, $_POST);
     410}
     411
     412function wp_set_locale() {
     413        global $locale, $locale_file, $wp_locale;
     414        /**
     415         * The locale of the blog
     416         * @since 1.5.0
     417         */
     418        $locale = get_locale();
     419        $locale_file = WP_LANG_DIR . "/$locale.php";
     420        if ( is_readable($locale_file) )
     421                require_once($locale_file);
     422
     423        // Pull in locale data after loading text domain.
     424        require_once(ABSPATH . WPINC . '/locale.php');
     425
     426        /**
     427         * WordPress Locale object for loading locale domain date and various strings.
     428         * @global object $wp_locale
     429         * @since 2.1.0
     430         */
     431        $wp_locale = new WP_Locale();
     432}
     433
     434function wp_load_theme_functions() {
     435
     436        // Load functions for active theme.
     437        if ( TEMPLATEPATH !== STYLESHEETPATH && file_exists(STYLESHEETPATH . '/functions.php') )
     438                include(STYLESHEETPATH . '/functions.php');
     439        if ( file_exists(TEMPLATEPATH . '/functions.php') )
     440                include(TEMPLATEPATH . '/functions.php');
     441
     442        // Load in support for template functions which the theme supports
     443        require_if_theme_supports( 'post-thumbnails', ABSPATH . WPINC . '/post-thumbnail-template.php' );
     444
     445}
     446
     447function wp_init_objects() {
     448        global $wp_the_query, $wp_query, $wp_rewrite, $wp, $wp_widget_factory;
     449        // It seems PHP4 creates references to global variables, so =& will fail.
     450
     451        /**
     452         * WordPress Query object
     453         * @global object $wp_the_query
     454         * @since 2.0.0
     455         */
     456        $wp_the_query = new WP_Query();
     457
     458        /**
     459         * Holds the reference to @see $wp_the_query
     460         * Use this global for WordPress queries
     461         * @global object $wp_query
     462         * @since 1.5.0
     463         */
     464        $wp_query     = $wp_the_query;
     465
     466        /**
     467         * Holds the WordPress Rewrite object for creating pretty URLs
     468         * @global object $wp_rewrite
     469         * @since 1.5.0
     470         */
     471        $wp_rewrite   = new WP_Rewrite();
     472
     473        /**
     474         * WordPress Object
     475         * @global object $wp
     476         * @since 2.0.0
     477         */
     478        $wp           = new WP();
     479
     480        /**
     481         * WordPress Widget Factory Object
     482         * @global object $wp_widget_factory
     483         * @since 2.8.0
     484         */
     485        $wp_widget_factory = new WP_Widget_Factory();
     486}
     487
     488/**
     489 * Runs just before PHP shuts down execution.
     490 *
     491 * @access private
     492 * @since 1.2.0
     493 */
     494function shutdown_action_hook() {
     495        do_action('shutdown');
     496        wp_cache_close();
     497}
     498
     499?>
     500 No newline at end of file
  • wp-admin/setup-config.php

     
    3131define('ABSPATH', dirname(dirname(__FILE__)).'/');
    3232define('WPINC', 'wp-includes');
    3333define('WP_CONTENT_DIR', ABSPATH . 'wp-content');
     34define('WP_DEBUG', false);
    3435/**#@-*/
    3536
     37require_once(ABSPATH . WPINC . '/load.php');
    3638require_once(ABSPATH . WPINC . '/compat.php');
    3739require_once(ABSPATH . WPINC . '/functions.php');
    3840require_once(ABSPATH . WPINC . '/classes.php');