[ Index ]

PHP Cross Reference of WordPress

title

Body

[close]

/wp-includes/ -> load.php (source)

   1  <?php
   2  /**
   3   * These functions are needed to load WordPress.
   4   *
   5   * @internal This file must be parsable by PHP4.
   6   *
   7   * @package WordPress
   8   */
   9  
  10  /**
  11   * Turn register globals off.
  12   *
  13   * @access private
  14   * @since 2.1.0
  15   * @return null Will return null if register_globals PHP directive was disabled
  16   */
  17  function wp_unregister_GLOBALS() {
  18      if ( !ini_get( 'register_globals' ) )
  19          return;
  20  
  21      if ( isset( $_REQUEST['GLOBALS'] ) )
  22          die( 'GLOBALS overwrite attempt detected' );
  23  
  24      // Variables that shouldn't be unset
  25      $no_unset = array( 'GLOBALS', '_GET', '_POST', '_COOKIE', '_REQUEST', '_SERVER', '_ENV', '_FILES', 'table_prefix' );
  26  
  27      $input = array_merge( $_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_FILES, isset( $_SESSION ) && is_array( $_SESSION ) ? $_SESSION : array() );
  28      foreach ( $input as $k => $v )
  29          if ( !in_array( $k, $no_unset ) && isset( $GLOBALS[$k] ) ) {
  30              $GLOBALS[$k] = null;
  31              unset( $GLOBALS[$k] );
  32          }
  33  }
  34  
  35  /**
  36   * Fix $_SERVER variables for various setups.
  37   *
  38   * @access private
  39   * @since 3.0.0
  40   */
  41  function wp_fix_server_vars() {
  42      global $PHP_SELF;
  43  
  44      $default_server_values = array(
  45          'SERVER_SOFTWARE' => '',
  46          'REQUEST_URI' => '',
  47      );
  48  
  49      $_SERVER = array_merge( $default_server_values, $_SERVER );
  50  
  51      // Fix for IIS when running with PHP ISAPI
  52      if ( empty( $_SERVER['REQUEST_URI'] ) || ( php_sapi_name() != 'cgi-fcgi' && preg_match( '/^Microsoft-IIS\//', $_SERVER['SERVER_SOFTWARE'] ) ) ) {
  53  
  54          // IIS Mod-Rewrite
  55          if ( isset( $_SERVER['HTTP_X_ORIGINAL_URL'] ) ) {
  56              $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_ORIGINAL_URL'];
  57          }
  58          // IIS Isapi_Rewrite
  59          else if ( isset( $_SERVER['HTTP_X_REWRITE_URL'] ) ) {
  60              $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL'];
  61          } else {
  62              // Use ORIG_PATH_INFO if there is no PATH_INFO
  63              if ( !isset( $_SERVER['PATH_INFO'] ) && isset( $_SERVER['ORIG_PATH_INFO'] ) )
  64                  $_SERVER['PATH_INFO'] = $_SERVER['ORIG_PATH_INFO'];
  65  
  66              // Some IIS + PHP configurations puts the script-name in the path-info (No need to append it twice)
  67              if ( isset( $_SERVER['PATH_INFO'] ) ) {
  68                  if ( $_SERVER['PATH_INFO'] == $_SERVER['SCRIPT_NAME'] )
  69                      $_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO'];
  70                  else
  71                      $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] . $_SERVER['PATH_INFO'];
  72              }
  73  
  74              // Append the query string if it exists and isn't null
  75              if ( ! empty( $_SERVER['QUERY_STRING'] ) ) {
  76                  $_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING'];
  77              }
  78          }
  79      }
  80  
  81      // Fix for PHP as CGI hosts that set SCRIPT_FILENAME to something ending in php.cgi for all requests
  82      if ( isset( $_SERVER['SCRIPT_FILENAME'] ) && ( strpos( $_SERVER['SCRIPT_FILENAME'], 'php.cgi' ) == strlen( $_SERVER['SCRIPT_FILENAME'] ) - 7 ) )
  83          $_SERVER['SCRIPT_FILENAME'] = $_SERVER['PATH_TRANSLATED'];
  84  
  85      // Fix for Dreamhost and other PHP as CGI hosts
  86      if ( strpos( $_SERVER['SCRIPT_NAME'], 'php.cgi' ) !== false )
  87          unset( $_SERVER['PATH_INFO'] );
  88  
  89      // Fix empty PHP_SELF
  90      $PHP_SELF = $_SERVER['PHP_SELF'];
  91      if ( empty( $PHP_SELF ) )
  92          $_SERVER['PHP_SELF'] = $PHP_SELF = preg_replace( '/(\?.*)?$/', '', $_SERVER["REQUEST_URI"] );
  93  }
  94  
  95  /**
  96   * Check for the required PHP version, and the MySQL extension or a database drop-in.
  97   *
  98   * Dies if requirements are not met.
  99   *
 100   * @access private
 101   * @since 3.0.0
 102   */
 103  function wp_check_php_mysql_versions() {
 104      global $required_php_version, $wp_version;
 105      $php_version = phpversion();
 106      if ( version_compare( $required_php_version, $php_version, '>' ) ) {
 107          wp_load_translations_early();
 108          wp_die( sprintf( __( 'Your server is running PHP version %1$s but WordPress %2$s requires at least %3$s.' ), $php_version, $wp_version, $required_php_version ) );
 109      }
 110  
 111      if ( ! extension_loaded( 'mysql' ) && ! file_exists( WP_CONTENT_DIR . '/db.php' ) ) {
 112          wp_load_translations_early();
 113          wp_die( __( 'Your PHP installation appears to be missing the MySQL extension which is required by WordPress.' ) );
 114      }
 115  }
 116  
 117  /**
 118   * Don't load all of WordPress when handling a favicon.ico request.
 119   * Instead, send the headers for a zero-length favicon and bail.
 120   *
 121   * @since 3.0.0
 122   */
 123  function wp_favicon_request() {
 124      if ( '/favicon.ico' == $_SERVER['REQUEST_URI'] ) {
 125          header('Content-Type: image/vnd.microsoft.icon');
 126          header('Content-Length: 0');
 127          exit;
 128      }
 129  }
 130  
 131  /**
 132   * Dies with a maintenance message when conditions are met.
 133   *
 134   * Checks for a file in the WordPress root directory named ".maintenance".
 135   * This file will contain the variable $upgrading, set to the time the file
 136   * was created. If the file was created less than 10 minutes ago, WordPress
 137   * enters maintenance mode and displays a message.
 138   *
 139   * The default message can be replaced by using a drop-in (maintenance.php in
 140   * the wp-content directory).
 141   *
 142   * @access private
 143   * @since 3.0.0
 144   */
 145  function wp_maintenance() {
 146      if ( !file_exists( ABSPATH . '.maintenance' ) || defined( 'WP_INSTALLING' ) )
 147          return;
 148  
 149      global $upgrading;
 150  
 151      include( ABSPATH . '.maintenance' );
 152      // If the $upgrading timestamp is older than 10 minutes, don't die.
 153      if ( ( time() - $upgrading ) >= 600 )
 154          return;
 155  
 156      if ( file_exists( WP_CONTENT_DIR . '/maintenance.php' ) ) {
 157          require_once( WP_CONTENT_DIR . '/maintenance.php' );
 158          die();
 159      }
 160  
 161      wp_load_translations_early();
 162  
 163      $protocol = $_SERVER["SERVER_PROTOCOL"];
 164      if ( 'HTTP/1.1' != $protocol && 'HTTP/1.0' != $protocol )
 165          $protocol = 'HTTP/1.0';
 166      header( "$protocol 503 Service Unavailable", true, 503 );
 167      header( 'Content-Type: text/html; charset=utf-8' );
 168      header( 'Retry-After: 600' );
 169  ?>
 170      <!DOCTYPE html>
 171      <html xmlns="http://www.w3.org/1999/xhtml">
 172      <head>
 173      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 174          <title><?php _e( 'Maintenance' ); ?></title>
 175  
 176      </head>
 177      <body>
 178          <h1><?php _e( 'Briefly unavailable for scheduled maintenance. Check back in a minute.' ); ?></h1>
 179      </body>
 180      </html>
 181  <?php
 182      die();
 183  }
 184  
 185  /**
 186   * PHP 5 standard microtime start capture.
 187   *
 188   * @access private
 189   * @since 0.71
 190   * @global float $timestart Seconds from when function is called.
 191   * @return bool Always returns true.
 192   */
 193  function timer_start() {
 194      global $timestart;
 195      $timestart = microtime( true );
 196      return true;
 197  }
 198  
 199  /**
 200   * Return and/or display the time from the page start to when function is called.
 201   *
 202   * You can get the results and print them by doing:
 203   * <code>
 204   * $nTimePageTookToExecute = timer_stop();
 205   * echo $nTimePageTookToExecute;
 206   * </code>
 207   *
 208   * Or instead, you can do:
 209   * <code>
 210   * timer_stop(1);
 211   * </code>
 212   * which will do what the above does. If you need the result, you can assign it to a variable, but
 213   * in most cases, you only need to echo it.
 214   *
 215   * @since 0.71
 216   * @global float $timestart Seconds from when timer_start() is called
 217   * @global float $timeend Seconds from when function is called
 218   *
 219   * @param int $display Use '0' or null to not echo anything and 1 to echo the total time
 220   * @param int $precision The amount of digits from the right of the decimal to display. Default is 3.
 221   * @return float The "second.microsecond" finished time calculation
 222   */
 223  function timer_stop( $display = 0, $precision = 3 ) { // if called like timer_stop(1), will echo $timetotal
 224      global $timestart, $timeend;
 225      $timeend = microtime( true );
 226      $timetotal = $timeend - $timestart;
 227      $r = ( function_exists( 'number_format_i18n' ) ) ? number_format_i18n( $timetotal, $precision ) : number_format( $timetotal, $precision );
 228      if ( $display )
 229          echo $r;
 230      return $r;
 231  }
 232  
 233  /**
 234   * Sets PHP error handling and handles WordPress debug mode.
 235   *
 236   * Uses three constants: WP_DEBUG, WP_DEBUG_DISPLAY, and WP_DEBUG_LOG. All three can be
 237   * defined in wp-config.php. Example: <code> define( 'WP_DEBUG', true ); </code>
 238   *
 239   * WP_DEBUG_DISPLAY and WP_DEBUG_LOG perform no function unless WP_DEBUG is true.
 240   * WP_DEBUG defaults to false.
 241   *
 242   * When WP_DEBUG is true, all PHP notices are reported. WordPress will also display
 243   * notices, including one when a deprecated WordPress function, function argument,
 244   * or file is used. Deprecated code may be removed from a later version.
 245   *
 246   * It is strongly recommended that plugin and theme developers use WP_DEBUG in their
 247   * development environments.
 248   *
 249   * When WP_DEBUG_DISPLAY is true, WordPress will force errors to be displayed.
 250   * WP_DEBUG_DISPLAY defaults to true. Defining it as null prevents WordPress from
 251   * changing the global configuration setting. Defining WP_DEBUG_DISPLAY as false
 252   * will force errors to be hidden.
 253   *
 254   * When WP_DEBUG_LOG is true, errors will be logged to wp-content/debug.log.
 255   * WP_DEBUG_LOG defaults to false.
 256   *
 257   * @access private
 258   * @since 3.0.0
 259   */
 260  function wp_debug_mode() {
 261      if ( WP_DEBUG ) {
 262          // E_DEPRECATED is a core PHP constant in PHP 5.3. Don't define this yourself.
 263          // The two statements are equivalent, just one is for 5.3+ and for less than 5.3.
 264          if ( defined( 'E_DEPRECATED' ) )
 265              error_reporting( E_ALL & ~E_DEPRECATED & ~E_STRICT );
 266          else
 267              error_reporting( E_ALL );
 268  
 269          if ( WP_DEBUG_DISPLAY )
 270              ini_set( 'display_errors', 1 );
 271          elseif ( null !== WP_DEBUG_DISPLAY )
 272              ini_set( 'display_errors', 0 );
 273  
 274          if ( WP_DEBUG_LOG ) {
 275              ini_set( 'log_errors', 1 );
 276              ini_set( 'error_log', WP_CONTENT_DIR . '/debug.log' );
 277          }
 278      } else {
 279          error_reporting( E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR );
 280      }
 281  }
 282  
 283  /**
 284   * Sets the location of the language directory.
 285   *
 286   * To set directory manually, define <code>WP_LANG_DIR</code> in wp-config.php.
 287   *
 288   * If the language directory exists within WP_CONTENT_DIR, that is used.
 289   * Otherwise if the language directory exists within WPINC, that's used.
 290   * Finally, if neither of the preceding directories are found,
 291   * WP_CONTENT_DIR/languages is used.
 292   *
 293   * The WP_LANG_DIR constant was introduced in 2.1.0.
 294   *
 295   * @access private
 296   * @since 3.0.0
 297   */
 298  function wp_set_lang_dir() {
 299      if ( !defined( 'WP_LANG_DIR' ) ) {
 300          if ( file_exists( WP_CONTENT_DIR . '/languages' ) && @is_dir( WP_CONTENT_DIR . '/languages' ) || !@is_dir(ABSPATH . WPINC . '/languages') ) {
 301              define( 'WP_LANG_DIR', WP_CONTENT_DIR . '/languages' ); // no leading slash, no trailing slash, full path, not relative to ABSPATH
 302              if ( !defined( 'LANGDIR' ) ) {
 303                  // Old static relative path maintained for limited backwards compatibility - won't work in some cases
 304                  define( 'LANGDIR', 'wp-content/languages' );
 305              }
 306          } else {
 307              define( 'WP_LANG_DIR', ABSPATH . WPINC . '/languages' ); // no leading slash, no trailing slash, full path, not relative to ABSPATH
 308              if ( !defined( 'LANGDIR' ) ) {
 309                  // Old relative path maintained for backwards compatibility
 310                  define( 'LANGDIR', WPINC . '/languages' );
 311              }
 312          }
 313      }
 314  }
 315  
 316  /**
 317   * Load the correct database class file.
 318   *
 319   * This function is used to load the database class file either at runtime or by
 320   * wp-admin/setup-config.php. We must globalize $wpdb to ensure that it is
 321   * defined globally by the inline code in wp-db.php.
 322   *
 323   * @since 2.5.0
 324   * @global $wpdb WordPress Database Object
 325   */
 326  function require_wp_db() {
 327      global $wpdb;
 328  
 329      require_once ( ABSPATH . WPINC . '/wp-db.php' );
 330      if ( file_exists( WP_CONTENT_DIR . '/db.php' ) )
 331          require_once( WP_CONTENT_DIR . '/db.php' );
 332  
 333      if ( isset( $wpdb ) )
 334          return;
 335  
 336      $wpdb = new wpdb( DB_USER, DB_PASSWORD, DB_NAME, DB_HOST );
 337  }
 338  
 339  /**
 340   * Sets the database table prefix and the format specifiers for database table columns.
 341   *
 342   * Columns not listed here default to %s.
 343   *
 344   * @see wpdb::$field_types Since 2.8.0
 345   * @see wpdb::prepare()
 346   * @see wpdb::insert()
 347   * @see wpdb::update()
 348   * @see wpdb::set_prefix()
 349   *
 350   * @access private
 351   * @since 3.0.0
 352   */
 353  function wp_set_wpdb_vars() {
 354      global $wpdb, $table_prefix;
 355      if ( !empty( $wpdb->error ) )
 356          dead_db();
 357  
 358      $wpdb->field_types = array( 'post_author' => '%d', 'post_parent' => '%d', 'menu_order' => '%d', 'term_id' => '%d', 'term_group' => '%d', 'term_taxonomy_id' => '%d',
 359          'parent' => '%d', 'count' => '%d','object_id' => '%d', 'term_order' => '%d', 'ID' => '%d', 'commment_ID' => '%d', 'comment_post_ID' => '%d', 'comment_parent' => '%d',
 360          'user_id' => '%d', 'link_id' => '%d', 'link_owner' => '%d', 'link_rating' => '%d', 'option_id' => '%d', 'blog_id' => '%d', 'meta_id' => '%d', 'post_id' => '%d',
 361          'user_status' => '%d', 'umeta_id' => '%d', 'comment_karma' => '%d', 'comment_count' => '%d',
 362          // multisite:
 363          'active' => '%d', 'cat_id' => '%d', 'deleted' => '%d', 'lang_id' => '%d', 'mature' => '%d', 'public' => '%d', 'site_id' => '%d', 'spam' => '%d',
 364      );
 365  
 366      $prefix = $wpdb->set_prefix( $table_prefix );
 367  
 368      if ( is_wp_error( $prefix ) ) {
 369          wp_load_translations_early();
 370          wp_die( __( '<strong>ERROR</strong>: <code>$table_prefix</code> in <code>wp-config.php</code> can only contain numbers, letters, and underscores.' ) );
 371      }
 372  }
 373  
 374  /**
 375   * Starts the WordPress object cache.
 376   *
 377   * If an object-cache.php file exists in the wp-content directory,
 378   * it uses that drop-in as an external object cache.
 379   *
 380   * @access private
 381   * @since 3.0.0
 382   */
 383  function wp_start_object_cache() {
 384      global $_wp_using_ext_object_cache;
 385  
 386      $first_init = false;
 387       if ( ! function_exists( 'wp_cache_init' ) ) {
 388          if ( file_exists( WP_CONTENT_DIR . '/object-cache.php' ) ) {
 389              require_once ( WP_CONTENT_DIR . '/object-cache.php' );
 390              $_wp_using_ext_object_cache = true;
 391          } else {
 392              require_once  ( ABSPATH . WPINC . '/cache.php' );
 393              $_wp_using_ext_object_cache = false;
 394          }
 395          $first_init = true;
 396      } else if ( !$_wp_using_ext_object_cache && file_exists( WP_CONTENT_DIR . '/object-cache.php' ) ) {
 397          // Sometimes advanced-cache.php can load object-cache.php before it is loaded here.
 398          // This breaks the function_exists check above and can result in $_wp_using_ext_object_cache
 399          // being set incorrectly. Double check if an external cache exists.
 400          $_wp_using_ext_object_cache = true;
 401      }
 402  
 403      // If cache supports reset, reset instead of init if already initialized.
 404      // Reset signals to the cache that global IDs have changed and it may need to update keys
 405      // and cleanup caches.
 406      if ( !$first_init && function_exists('wp_cache_reset') )
 407          wp_cache_reset();
 408      else
 409          wp_cache_init();
 410  
 411      if ( function_exists( 'wp_cache_add_global_groups' ) ) {
 412          wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts' ) );
 413          wp_cache_add_non_persistent_groups( array( 'comment', 'counts', 'plugins' ) );
 414      }
 415  }
 416  
 417  /**
 418   * Redirects to the installer if WordPress is not installed.
 419   *
 420   * Dies with an error message when multisite is enabled.
 421   *
 422   * @access private
 423   * @since 3.0.0
 424   */
 425  function wp_not_installed() {
 426      if ( is_multisite() ) {
 427          if ( ! is_blog_installed() && ! defined( 'WP_INSTALLING' ) )
 428              wp_die( __( 'The site you have requested is not installed properly. Please contact the system administrator.' ) );
 429      } elseif ( ! is_blog_installed() && false === strpos( $_SERVER['PHP_SELF'], 'install.php' ) && !defined( 'WP_INSTALLING' ) ) {
 430  
 431          $link = wp_guess_url() . '/wp-admin/install.php';
 432  
 433          require ( ABSPATH . WPINC . '/kses.php' );
 434          require ( ABSPATH . WPINC . '/pluggable.php' );
 435          require ( ABSPATH . WPINC . '/formatting.php' );
 436          wp_redirect( $link );
 437          die();
 438      }
 439  }
 440  
 441  /**
 442   * Returns array of must-use plugin files to be included in global scope.
 443   *
 444   * The default directory is wp-content/mu-plugins. To change the default directory
 445   * manually, define <code>WPMU_PLUGIN_DIR</code> and <code>WPMU_PLUGIN_URL</code>
 446   * in wp-config.php.
 447   *
 448   * @access private
 449   * @since 3.0.0
 450   * @return array Files to include
 451   */
 452  function wp_get_mu_plugins() {
 453      $mu_plugins = array();
 454      if ( !is_dir( WPMU_PLUGIN_DIR ) )
 455          return $mu_plugins;
 456      if ( ! $dh = opendir( WPMU_PLUGIN_DIR ) )
 457          return $mu_plugins;
 458      while ( ( $plugin = readdir( $dh ) ) !== false ) {
 459          if ( substr( $plugin, -4 ) == '.php' )
 460              $mu_plugins[] = WPMU_PLUGIN_DIR . '/' . $plugin;
 461      }
 462      closedir( $dh );
 463      sort( $mu_plugins );
 464  
 465      return $mu_plugins;
 466  }
 467  
 468  /**
 469   * Returns array of plugin files to be included in global scope.
 470   *
 471   * The default directory is wp-content/plugins. To change the default directory
 472   * manually, define <code>WP_PLUGIN_DIR</code> and <code>WP_PLUGIN_URL</code>
 473   * in wp-config.php.
 474   *
 475   * @access private
 476   * @since 3.0.0
 477   * @return array Files to include
 478   */
 479  function wp_get_active_and_valid_plugins() {
 480      $plugins = array();
 481      $active_plugins = (array) get_option( 'active_plugins', array() );
 482  
 483      // Check for hacks file if the option is enabled
 484      if ( get_option( 'hack_file' ) && file_exists( ABSPATH . 'my-hacks.php' ) ) {
 485          _deprecated_file( 'my-hacks.php', '1.5' );
 486          array_unshift( $plugins, ABSPATH . 'my-hacks.php' );
 487      }
 488  
 489      if ( empty( $active_plugins ) || defined( 'WP_INSTALLING' ) )
 490          return $plugins;
 491  
 492      $network_plugins = is_multisite() ? wp_get_active_network_plugins() : false;
 493  
 494      foreach ( $active_plugins as $plugin ) {
 495          if ( ! validate_file( $plugin ) // $plugin must validate as file
 496              && '.php' == substr( $plugin, -4 ) // $plugin must end with '.php'
 497              && file_exists( WP_PLUGIN_DIR . '/' . $plugin ) // $plugin must exist
 498              // not already included as a network plugin
 499              && ( ! $network_plugins || ! in_array( WP_PLUGIN_DIR . '/' . $plugin, $network_plugins ) )
 500              )
 501          $plugins[] = WP_PLUGIN_DIR . '/' . $plugin;
 502      }
 503      return $plugins;
 504  }
 505  
 506  /**
 507   * Sets internal encoding using mb_internal_encoding().
 508   *
 509   * In most cases the default internal encoding is latin1, which is of no use,
 510   * since we want to use the mb_ functions for utf-8 strings.
 511   *
 512   * @access private
 513   * @since 3.0.0
 514   */
 515  function wp_set_internal_encoding() {
 516      if ( function_exists( 'mb_internal_encoding' ) ) {
 517          if ( !@mb_internal_encoding( get_option( 'blog_charset' ) ) )
 518              mb_internal_encoding( 'UTF-8' );
 519      }
 520  }
 521  
 522  /**
 523   * Add magic quotes to $_GET, $_POST, $_COOKIE, and $_SERVER.
 524   *
 525   * Also forces $_REQUEST to be $_GET + $_POST. If $_SERVER, $_COOKIE,
 526   * or $_ENV are needed, use those superglobals directly.
 527   *
 528   * @access private
 529   * @since 3.0.0
 530   */
 531  function wp_magic_quotes() {
 532      // If already slashed, strip.
 533      if ( get_magic_quotes_gpc() ) {
 534          $_GET    = stripslashes_deep( $_GET    );
 535          $_POST   = stripslashes_deep( $_POST   );
 536          $_COOKIE = stripslashes_deep( $_COOKIE );
 537      }
 538  
 539      // Escape with wpdb.
 540      $_GET    = add_magic_quotes( $_GET    );
 541      $_POST   = add_magic_quotes( $_POST   );
 542      $_COOKIE = add_magic_quotes( $_COOKIE );
 543      $_SERVER = add_magic_quotes( $_SERVER );
 544  
 545      // Force REQUEST to be GET + POST.
 546      $_REQUEST = array_merge( $_GET, $_POST );
 547  }
 548  
 549  /**
 550   * Runs just before PHP shuts down execution.
 551   *
 552   * @access private
 553   * @since 1.2.0
 554   */
 555  function shutdown_action_hook() {
 556      do_action( 'shutdown' );
 557      wp_cache_close();
 558  }
 559  
 560  /**
 561   * Copy an object.
 562   *
 563   * @since 2.7.0
 564   * @deprecated 3.2
 565   *
 566   * @param object $object The object to clone
 567   * @return object The cloned object
 568   */
 569  
 570  function wp_clone( $object ) {
 571      // Use parens for clone to accommodate PHP 4. See #17880
 572      return clone( $object );
 573  }
 574  
 575  /**
 576   * Whether the current request is for a network or blog admin page
 577   *
 578   * Does not inform on whether the user is an admin! Use capability checks to
 579   * tell if the user should be accessing a section or not.
 580   *
 581   * @since 1.5.1
 582   *
 583   * @return bool True if inside WordPress administration pages.
 584   */
 585  function is_admin() {
 586      if ( defined( 'WP_ADMIN' ) )
 587          return WP_ADMIN;
 588      return false;
 589  }
 590  
 591  /**
 592   * Whether the current request is for a blog admin screen /wp-admin/
 593   *
 594   * Does not inform on whether the user is a blog admin! Use capability checks to
 595   * tell if the user should be accessing a section or not.
 596   *
 597   * @since 3.1.0
 598   *
 599   * @return bool True if inside WordPress network administration pages.
 600   */
 601  function is_blog_admin() {
 602      if ( defined( 'WP_BLOG_ADMIN' ) )
 603          return WP_BLOG_ADMIN;
 604      return false;
 605  }
 606  
 607  /**
 608   * Whether the current request is for a network admin screen /wp-admin/network/
 609   *
 610   * Does not inform on whether the user is a network admin! Use capability checks to
 611   * tell if the user should be accessing a section or not.
 612   *
 613   * @since 3.1.0
 614   *
 615   * @return bool True if inside WordPress network administration pages.
 616   */
 617  function is_network_admin() {
 618      if ( defined( 'WP_NETWORK_ADMIN' ) )
 619          return WP_NETWORK_ADMIN;
 620      return false;
 621  }
 622  
 623  /**
 624   * Whether the current request is for a user admin screen /wp-admin/user/
 625   *
 626   * Does not inform on whether the user is an admin! Use capability checks to
 627   * tell if the user should be accessing a section or not.
 628   *
 629   * @since 3.1.0
 630   *
 631   * @return bool True if inside WordPress user administration pages.
 632   */
 633  function is_user_admin() {
 634      if ( defined( 'WP_USER_ADMIN' ) )
 635          return WP_USER_ADMIN;
 636      return false;
 637  }
 638  
 639  /**
 640   * Whether Multisite support is enabled
 641   *
 642   * @since 3.0.0
 643   *
 644   * @return bool True if multisite is enabled, false otherwise.
 645   */
 646  function is_multisite() {
 647      if ( defined( 'MULTISITE' ) )
 648          return MULTISITE;
 649  
 650      if ( defined( 'SUBDOMAIN_INSTALL' ) || defined( 'VHOST' ) || defined( 'SUNRISE' ) )
 651          return true;
 652  
 653      return false;
 654  }
 655  
 656  /**
 657   * Attempts an early load of translations.
 658   *
 659   * Used for errors encountered during the initial loading process, before the locale has been
 660   * properly detected and loaded.
 661   *
 662   * Designed for unusual load sequences (like setup-config.php) or for when the script will then
 663   * terminate with an error, otherwise there is a risk that a file can be double-included.
 664   *
 665   * @since 3.4.0
 666   * @access private
 667   */
 668  function wp_load_translations_early() {
 669      global $text_direction, $wp_locale;
 670  
 671      static $loaded = false;
 672      if ( $loaded )
 673          return;
 674      $loaded = true;
 675  
 676      if ( function_exists( 'did_action' ) && did_action( 'init' ) )
 677          return;
 678  
 679      // We need $wp_local_package
 680      require  ABSPATH . WPINC . '/version.php';
 681  
 682      // Translation and localization
 683      require_once  ABSPATH . WPINC . '/pomo/mo.php';
 684      require_once  ABSPATH . WPINC . '/l10n.php';
 685      require_once  ABSPATH . WPINC . '/locale.php';
 686  
 687      // General libraries
 688      require_once  ABSPATH . WPINC . '/functions.php';
 689      require_once  ABSPATH . WPINC . '/plugin.php';
 690  
 691      $locales = $locations = array();
 692  
 693      while ( true ) {
 694          if ( defined( 'WPLANG' ) ) {
 695              if ( '' == WPLANG )
 696                  break;
 697              $locales[] = WPLANG;
 698          }
 699  
 700          if ( isset( $wp_local_package ) )
 701              $locales[] = $wp_local_package;
 702  
 703          if ( ! $locales )
 704              break;
 705  
 706          if ( defined( 'WP_LANG_DIR' ) && @is_dir( WP_LANG_DIR ) )
 707              $locations[] = WP_LANG_DIR;
 708  
 709          if ( defined( 'WP_CONTENT_DIR' ) && @is_dir( WP_CONTENT_DIR . '/languages' ) )
 710              $locations[] = WP_CONTENT_DIR . '/languages';
 711  
 712          if ( @is_dir( ABSPATH . 'wp-content/languages' ) )
 713              $locations[] = ABSPATH . 'wp-content/languages';
 714  
 715          if ( @is_dir( ABSPATH . WPINC . '/languages' ) )
 716              $locations[] = ABSPATH . WPINC . '/languages';
 717  
 718          if ( ! $locations )
 719              break;
 720  
 721          $locations = array_unique( $locations );
 722  
 723          foreach ( $locales as $locale ) {
 724              foreach ( $locations as $location ) {
 725                  if ( file_exists( $location . '/' . $locale . '.mo' ) ) {
 726                      load_textdomain( 'default', $location . '/' . $locale . '.mo' );
 727                      if ( defined( 'WP_SETUP_CONFIG' ) && file_exists( $location . '/admin-' . $locale . '.mo' ) )
 728                          load_textdomain( 'default', $location . '/admin-' . $locale . '.mo' );
 729                      break 2;
 730                  }
 731              }
 732          }
 733  
 734          break;
 735      }
 736  
 737      $wp_locale = new WP_Locale();
 738  }


Generated: Tue Feb 7 03:55:55 2012 Hosted by follow the white rabbit.