Don't use unbounded SHOW TABLES in is_blog_installed(). Do a more targeted DESCRIBE loop over the blog table list. fixes #19026
git-svn-id: http://svn.automattic.com/wordpress/trunk@19039 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
f708c5eaff
commit
7a3fc7d36c
|
@ -1899,32 +1899,35 @@ function is_blog_installed() {
|
||||||
if ( $installed )
|
if ( $installed )
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
$suppress = $wpdb->suppress_errors();
|
// If visiting repair.php, return true and let it take over.
|
||||||
$tables = $wpdb->get_col('SHOW TABLES');
|
if ( defined( 'WP_REPAIRING' ) )
|
||||||
$wpdb->suppress_errors( $suppress );
|
return true;
|
||||||
|
|
||||||
|
$suppress = $wpdb->suppress_errors();
|
||||||
|
|
||||||
$wp_tables = $wpdb->tables();
|
|
||||||
// Loop over the WP tables. If none exist, then scratch install is allowed.
|
// Loop over the WP tables. If none exist, then scratch install is allowed.
|
||||||
// If one or more exist, suggest table repair since we got here because the options
|
// If one or more exist, suggest table repair since we got here because the options
|
||||||
// table could not be accessed.
|
// table could not be accessed.
|
||||||
|
$wp_tables = $wpdb->tables();
|
||||||
foreach ( $wp_tables as $table ) {
|
foreach ( $wp_tables as $table ) {
|
||||||
// If one of the WP tables exist, then we are in an insane state.
|
// The existence of custom user tables shouldn't suggest an insane state or prevent a clean install.
|
||||||
if ( in_array( $table, $tables ) ) {
|
if ( defined( 'CUSTOM_USER_TABLE' ) && CUSTOM_USER_TABLE == $table )
|
||||||
// The existence of custom user tables shouldn't suggest an insane state or prevent a clean install.
|
continue;
|
||||||
if ( defined( 'CUSTOM_USER_TABLE' ) && CUSTOM_USER_TABLE == $table )
|
if ( defined( 'CUSTOM_USER_META_TABLE' ) && CUSTOM_USER_META_TABLE == $table )
|
||||||
continue;
|
continue;
|
||||||
if ( defined( 'CUSTOM_USER_META_TABLE' ) && CUSTOM_USER_META_TABLE == $table )
|
|
||||||
continue;
|
|
||||||
|
|
||||||
// If visiting repair.php, return true and let it take over.
|
if ( ! $wpdb->get_results( "DESCRIBE $table;" ) )
|
||||||
if ( defined('WP_REPAIRING') )
|
continue;
|
||||||
return true;
|
|
||||||
// Die with a DB error.
|
// One or more tables exist. We are insane.
|
||||||
$wpdb->error = sprintf( /*WP_I18N_NO_TABLES*/'One or more database tables are unavailable. The database may need to be <a href="%s">repaired</a>.'/*/WP_I18N_NO_TABLES*/, 'maint/repair.php?referrer=is_blog_installed' );
|
|
||||||
dead_db();
|
// Die with a DB error.
|
||||||
}
|
$wpdb->error = sprintf( /*WP_I18N_NO_TABLES*/'One or more database tables are unavailable. The database may need to be <a href="%s">repaired</a>.'/*/WP_I18N_NO_TABLES*/, 'maint/repair.php?referrer=is_blog_installed' );
|
||||||
|
dead_db();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$wpdb->suppress_errors( $suppress );
|
||||||
|
|
||||||
wp_cache_set( 'is_blog_installed', false );
|
wp_cache_set( 'is_blog_installed', false );
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Reference in New Issue