Wordpress 2.0.4
[autoinstalls/wordpress.git] / wp-settings.php
1 <?php
2 // Turn register globals off
3 function unregister_GLOBALS() {
4         if ( !ini_get('register_globals') )
5                 return;
6
7         if ( isset($_REQUEST['GLOBALS']) )
8                 die('GLOBALS overwrite attempt detected');
9
10         // Variables that shouldn't be unset
11         $noUnset = array('GLOBALS', '_GET', '_POST', '_COOKIE', '_REQUEST', '_SERVER', '_ENV', '_FILES', 'table_prefix');
12         
13         $input = array_merge($_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_FILES, isset($_SESSION) && is_array($_SESSION) ? $_SESSION : array());
14         foreach ( $input as $k => $v ) 
15                 if ( !in_array($k, $noUnset) && isset($GLOBALS[$k]) )
16                         unset($GLOBALS[$k]);
17 }
18
19 unregister_GLOBALS(); 
20
21 unset( $wp_filter, $cache_userdata, $cache_lastcommentmodified, $cache_lastpostdate, $cache_settings, $category_cache, $cache_categories );
22
23 if ( ! isset($blog_id) )
24         $blog_id = 1;
25
26 // Fix for IIS, which doesn't set REQUEST_URI
27 if ( empty( $_SERVER['REQUEST_URI'] ) ) {
28         $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME']; // Does this work under CGI?
29         
30         // Append the query string if it exists and isn't null
31         if (isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING'])) {
32                 $_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING'];
33         }
34 }
35
36 // Fix for PHP as CGI hosts that set SCRIPT_FILENAME to something ending in php.cgi for all requests
37 if ( isset($_SERVER['SCRIPT_FILENAME']) && ( strpos($_SERVER['SCRIPT_FILENAME'], 'php.cgi') == strlen($_SERVER['SCRIPT_FILENAME']) - 7 ) )
38         $_SERVER['SCRIPT_FILENAME'] = $_SERVER['PATH_TRANSLATED'];
39
40 // Fix for Dreamhost and other PHP as CGI hosts
41 if ( strstr( $_SERVER['SCRIPT_NAME'], 'php.cgi' ) )
42         unset($_SERVER['PATH_INFO']);
43
44 // Fix empty PHP_SELF
45 $PHP_SELF = $_SERVER['PHP_SELF'];
46 if ( empty($PHP_SELF) )
47         $_SERVER['PHP_SELF'] = $PHP_SELF = preg_replace("/(\?.*)?$/",'',$_SERVER["REQUEST_URI"]);
48
49 if ( !(phpversion() >= '4.1') )
50         die( 'Your server is running PHP version ' . phpversion() . ' but WordPress requires at least 4.1' );
51
52 if ( !extension_loaded('mysql') )
53         die( 'Your PHP installation appears to be missing the MySQL which is required for WordPress.' );
54
55 function timer_start() {
56         global $timestart;
57         $mtime = explode(' ', microtime() );
58         $mtime = $mtime[1] + $mtime[0];
59         $timestart = $mtime;
60         return true;
61 }
62 timer_start();
63
64 // Change to E_ALL for development/debugging
65 error_reporting(E_ALL ^ E_NOTICE);
66
67 // For an advanced caching plugin to use, static because you would only want one
68 if ( defined('WP_CACHE') )
69         require (ABSPATH . 'wp-content/advanced-cache.php');
70
71 define('WPINC', 'wp-includes');
72 require_once (ABSPATH . WPINC . '/wp-db.php');
73
74 // Table names
75 $wpdb->posts            = $table_prefix . 'posts';
76 $wpdb->users            = $table_prefix . 'users';
77 $wpdb->categories       = $table_prefix . 'categories';
78 $wpdb->post2cat         = $table_prefix . 'post2cat';
79 $wpdb->comments         = $table_prefix . 'comments';
80 $wpdb->links            = $table_prefix . 'links';
81 $wpdb->linkcategories   = $table_prefix . 'linkcategories';
82 $wpdb->options          = $table_prefix . 'options';
83 $wpdb->postmeta         = $table_prefix . 'postmeta';
84 $wpdb->usermeta         = $table_prefix . 'usermeta';
85
86 $wpdb->prefix           = $table_prefix;
87
88 if ( defined('CUSTOM_USER_TABLE') )
89         $wpdb->users = CUSTOM_USER_TABLE;
90 if ( defined('CUSTOM_USER_META_TABLE') )
91         $wpdb->usermeta = CUSTOM_USER_META_TABLE;
92
93 // We're going to need to keep this around for a few months even though we're not using it internally
94
95 $tableposts = $wpdb->posts;
96 $tableusers = $wpdb->users;
97 $tablecategories = $wpdb->categories;
98 $tablepost2cat = $wpdb->post2cat;
99 $tablecomments = $wpdb->comments;
100 $tablelinks = $wpdb->links;
101 $tablelinkcategories = $wpdb->linkcategories;
102 $tableoptions = $wpdb->options;
103 $tablepostmeta = $wpdb->postmeta;
104
105 if ( file_exists(ABSPATH . 'wp-content/object-cache.php') )
106         require (ABSPATH . 'wp-content/object-cache.php');
107 else
108         require (ABSPATH . WPINC . '/cache.php');
109
110 // To disable persistant caching, add the below line to your wp-config.php file, uncommented of course.
111 // define('DISABLE_CACHE', true);
112
113 wp_cache_init();
114
115 require (ABSPATH . WPINC . '/functions.php');
116 require (ABSPATH . WPINC . '/default-filters.php');
117 require_once (ABSPATH . WPINC . '/wp-l10n.php');
118
119 $wpdb->hide_errors();
120 $db_check = $wpdb->get_var("SELECT option_value FROM $wpdb->options WHERE option_name = 'siteurl'");
121 if ( !$db_check && (!strstr($_SERVER['PHP_SELF'], 'install.php') && !defined('WP_INSTALLING')) ) {
122         if ( strstr($_SERVER['PHP_SELF'], 'wp-admin') )
123                 $link = 'install.php';
124         else
125                 $link = 'wp-admin/install.php';
126         die(sprintf(__("It doesn't look like you've installed WP yet. Try running <a href='%s'>install.php</a>."), $link));
127 }
128 $wpdb->show_errors();
129
130 require (ABSPATH . WPINC . '/functions-formatting.php');
131 require (ABSPATH . WPINC . '/functions-post.php');
132 require (ABSPATH . WPINC . '/capabilities.php');
133 require (ABSPATH . WPINC . '/classes.php');
134 require (ABSPATH . WPINC . '/template-functions-general.php');
135 require (ABSPATH . WPINC . '/template-functions-links.php');
136 require (ABSPATH . WPINC . '/template-functions-author.php');
137 require (ABSPATH . WPINC . '/template-functions-post.php');
138 require (ABSPATH . WPINC . '/template-functions-category.php');
139 require (ABSPATH . WPINC . '/comment-functions.php');
140 require (ABSPATH . WPINC . '/feed-functions.php');
141 require (ABSPATH . WPINC . '/links.php');
142 require (ABSPATH . WPINC . '/kses.php');
143 require (ABSPATH . WPINC . '/version.php');
144
145 if (!strstr($_SERVER['PHP_SELF'], 'install.php')) :
146     // Used to guarantee unique hash cookies
147     $cookiehash = md5(get_settings('siteurl')); // Remove in 1.4
148         define('COOKIEHASH', $cookiehash); 
149 endif;
150
151 if ( !defined('USER_COOKIE') )
152         define('USER_COOKIE', 'wordpressuser_'. COOKIEHASH);
153 if ( !defined('PASS_COOKIE') )
154         define('PASS_COOKIE', 'wordpresspass_'. COOKIEHASH);
155 if ( !defined('COOKIEPATH') )
156         define('COOKIEPATH', preg_replace('|https?://[^/]+|i', '', get_settings('home') . '/' ) );
157 if ( !defined('SITECOOKIEPATH') )
158         define('SITECOOKIEPATH', preg_replace('|https?://[^/]+|i', '', get_settings('siteurl') . '/' ) );
159 if ( !defined('COOKIE_DOMAIN') )
160         define('COOKIE_DOMAIN', false);
161
162 require (ABSPATH . WPINC . '/vars.php');
163
164 // Check for hacks file if the option is enabled
165 if (get_settings('hack_file')) {
166         if (file_exists(ABSPATH . '/my-hacks.php'))
167                 require(ABSPATH . '/my-hacks.php');
168 }
169
170 if ( get_settings('active_plugins') ) {
171         $current_plugins = get_settings('active_plugins');
172         if ( is_array($current_plugins) ) {
173                 foreach ($current_plugins as $plugin) {
174                         if ('' != $plugin && file_exists(ABSPATH . 'wp-content/plugins/' . $plugin))
175                                 include_once(ABSPATH . 'wp-content/plugins/' . $plugin);
176                 }
177         }
178 }
179
180 require (ABSPATH . WPINC . '/pluggable-functions.php');
181
182 if ( defined('WP_CACHE') && function_exists('wp_cache_postload') )
183         wp_cache_postload();
184
185 do_action('plugins_loaded');
186
187 // If already slashed, strip.
188 if ( get_magic_quotes_gpc() ) {
189         $_GET    = stripslashes_deep($_GET   );
190         $_POST   = stripslashes_deep($_POST  );
191         $_COOKIE = stripslashes_deep($_COOKIE);
192 }
193
194 // Escape with wpdb.
195 $_GET    = add_magic_quotes($_GET   );
196 $_POST   = add_magic_quotes($_POST  );
197 $_COOKIE = add_magic_quotes($_COOKIE);
198 $_SERVER = add_magic_quotes($_SERVER);
199
200 do_action('sanitize_comment_cookies');
201
202 $wp_query   = new WP_Query();
203 $wp_rewrite = new WP_Rewrite();
204 $wp         = new WP();
205
206 define('TEMPLATEPATH', get_template_directory());
207
208 // Load the default text localization domain.
209 load_default_textdomain();
210
211 // Pull in locale data after loading text domain.
212 require_once(ABSPATH . WPINC . '/locale.php');
213
214 // Load functions for active theme.
215 if ( file_exists(TEMPLATEPATH . "/functions.php") )
216         include(TEMPLATEPATH . "/functions.php");
217
218 function shutdown_action_hook() {
219         do_action('shutdown');
220         wp_cache_close();
221 }
222 register_shutdown_function('shutdown_action_hook');
223
224 // Everything is loaded and initialized.
225 do_action('init');
226
227 ?>