[ XREF Home ] [ Index ]

PHP Cross Reference of WordPress Trunk

Provided by Yoast

title

Body

[close]

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

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


Generated: Wed Jun 1 08:30:02 2011 Cross-referenced by PHPXref 0.7
Provided by Yoast and awesome WordPress Hosting