From 0cbe2f0d8420e0de91dba675091f6ee58cd5311f Mon Sep 17 00:00:00 2001 From: ryan Date: Sun, 16 Dec 2007 21:38:24 +0000 Subject: [PATCH] Suppress display of DB error messages by default. Props filosofo. see #5473 git-svn-id: http://svn.automattic.com/wordpress/trunk@6391 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/functions.php | 16 ++++++++-------- wp-includes/user.php | 4 ++-- wp-includes/wp-db.php | 35 ++++++++++++++++++++++------------- 3 files changed, 32 insertions(+), 23 deletions(-) diff --git a/wp-includes/functions.php b/wp-includes/functions.php index d46363c53..74d10c90b 100644 --- a/wp-includes/functions.php +++ b/wp-includes/functions.php @@ -206,11 +206,11 @@ function get_option( $setting ) { if ( false === $value ) { if ( defined( 'WP_INSTALLING' ) ) - $wpdb->hide_errors(); + $show = $wpdb->hide_errors(); // expected_slashed ($setting) $row = $wpdb->get_row( "SELECT option_value FROM $wpdb->options WHERE option_name = '$setting' LIMIT 1" ); if ( defined( 'WP_INSTALLING' ) ) - $wpdb->show_errors(); + $wpdb->show_errors($show); if ( is_object( $row) ) { // Has to be get_row instead of get_var because of funkiness with 0, false, null values $value = $row->option_value; @@ -246,10 +246,10 @@ function form_option( $option ) { function get_alloptions() { global $wpdb, $wp_queries; - $wpdb->hide_errors(); + $show = $wpdb->hide_errors(); if ( !$options = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options WHERE autoload = 'yes'" ) ) $options = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options" ); - $wpdb->show_errors(); + $wpdb->show_errors($show); foreach ( $options as $option ) { // "When trying to design a foolproof system, @@ -269,10 +269,10 @@ function wp_load_alloptions() { $alloptions = wp_cache_get( 'alloptions', 'options' ); if ( !$alloptions ) { - $wpdb->hide_errors(); + $show = $wpdb->hide_errors(); if ( !$alloptions_db = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options WHERE autoload = 'yes'" ) ) $alloptions_db = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options" ); - $wpdb->show_errors(); + $wpdb->show_errors($show); $alloptions = array(); foreach ( (array) $alloptions_db as $o ) $alloptions[$o->option_name] = $o->option_value; @@ -949,9 +949,9 @@ function is_blog_installed() { if ( wp_cache_get('is_blog_installed') ) return true; - $wpdb->hide_errors(); + $show = $wpdb->hide_errors(); $installed = $wpdb->get_var( "SELECT option_value FROM $wpdb->options WHERE option_name = 'siteurl'" ); - $wpdb->show_errors(); + $wpdb->show_errors($show); $installed = !empty( $installed ) ? true : false; wp_cache_set('is_blog_installed', $installed); diff --git a/wp-includes/user.php b/wp-includes/user.php index 38b7db7e4..cc0a03961 100644 --- a/wp-includes/user.php +++ b/wp-includes/user.php @@ -236,9 +236,9 @@ function wp_dropdown_users( $args = '' ) { function _fill_user( &$user ) { global $wpdb; - $wpdb->hide_errors(); + $show = $wpdb->hide_errors(); $metavalues = $wpdb->get_results($wpdb->prepare("SELECT meta_key, meta_value FROM $wpdb->usermeta WHERE user_id = %d", $user->ID)); - $wpdb->show_errors(); + $wpdb->show_errors($show); if ( $metavalues ) { foreach ( $metavalues as $meta ) { diff --git a/wp-includes/wp-db.php b/wp-includes/wp-db.php index a6b7707f4..96c12b76e 100644 --- a/wp-includes/wp-db.php +++ b/wp-includes/wp-db.php @@ -15,7 +15,7 @@ if (!defined('SAVEQUERIES')) class wpdb { - var $show_errors = true; + var $show_errors = false; var $num_queries = 0; var $last_query; var $col_info; @@ -170,29 +170,38 @@ class wpdb { $EZSQL_ERROR[] = array ('query' => $this->last_query, 'error_str' => $str); + $error_str = "WordPress database error $str for query $this->last_query"; + if ( $caller = $this->get_caller() ) + $error_str .= " made by $caller"; + error_log($error_str, 0); + + // Is error output turned on or not.. + if ( !$this->show_errors ) + return false; + $str = htmlspecialchars($str, ENT_QUOTES); $query = htmlspecialchars($this->last_query, ENT_QUOTES); - // Is error output turned on or not.. - if ( $this->show_errors ) { - // If there is an error then take note of it - print "
-

WordPress database error: [$str]
- $query

-
"; - } else { - return false; - } + + // If there is an error then take note of it + print "
+

WordPress database error: [$str]
+ $query

+
"; } // ================================================================== // Turn error handling on or off.. - function show_errors() { - $this->show_errors = true; + function show_errors( $show = true ) { + $errors = $this->show_errors; + $this->show_errors = $show; + return $errors; } function hide_errors() { + $show = $this->show_errors; $this->show_errors = false; + return $show; } // ==================================================================