1 <?php |
1 <?php |
2 |
2 /** |
|
3 * Database Repair and Optimization Script. |
|
4 * |
|
5 * @package WordPress |
|
6 * @subpackage Database |
|
7 */ |
3 define('WP_REPAIRING', true); |
8 define('WP_REPAIRING', true); |
4 |
9 |
5 require_once('../../wp-load.php'); |
10 require_once('../../wp-load.php'); |
6 |
11 |
7 header( 'Content-Type: text/html; charset=utf-8' ); |
12 header( 'Content-Type: text/html; charset=utf-8' ); |
8 ?> |
13 ?> |
9 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
14 <!DOCTYPE html> |
10 <html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>> |
15 <html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>> |
11 <head> |
16 <head> |
12 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
17 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
13 <title><?php _e('WordPress › Database Repair'); ?></title> |
18 <title><?php _e( 'WordPress › Database Repair' ); ?></title> |
14 <?php wp_admin_css( 'install', true ); ?> |
19 <?php wp_admin_css( 'install', true ); ?> |
15 </head> |
20 </head> |
16 <body> |
21 <body> |
17 <h1 id="logo"><img alt="WordPress" src="../images/wordpress-logo.png" /></h1> |
22 <h1 id="logo"><img alt="WordPress" src="../images/wordpress-logo.png?ver=20120216" /></h1> |
18 |
23 |
19 <?php |
24 <?php |
20 |
25 |
21 if ( !defined('WP_ALLOW_REPAIR') ) { |
26 if ( ! defined( 'WP_ALLOW_REPAIR' ) ) { |
22 _e("<p>To allow use of this page to automatically repair database problems, please add the following line to your wp-config.php file. Once this line is added to your config, reload this page.</p><code>define('WP_ALLOW_REPAIR', true);</code>"); |
27 echo '<p>' . __( 'To allow use of this page to automatically repair database problems, please add the following line to your <code>wp-config.php</code> file. Once this line is added to your config, reload this page.' ) . "</p><code>define('WP_ALLOW_REPAIR', true);</code>"; |
23 } elseif ( isset($_GET['repair']) ) { |
28 } elseif ( isset( $_GET['repair'] ) ) { |
|
29 $optimize = 2 == $_GET['repair']; |
|
30 $okay = true; |
24 $problems = array(); |
31 $problems = array(); |
25 check_admin_referer('repair_db'); |
|
26 |
32 |
27 if ( 2 == $_GET['repair'] ) |
33 $tables = $wpdb->tables(); |
28 $optimize = true; |
|
29 else |
|
30 $optimize = false; |
|
31 |
34 |
32 $okay = true; |
35 // Sitecategories may not exist if global terms are disabled. |
|
36 if ( is_multisite() && ! $wpdb->get_var( "SHOW TABLES LIKE '$wpdb->sitecategories'" ) ) |
|
37 unset( $tables['sitecategories'] ); |
33 |
38 |
34 // Loop over the WP tables, checking and repairing as needed. |
39 $tables = array_merge( $tables, (array) apply_filters( 'tables_to_repair', array() ) ); // Return tables with table prefixes. |
35 foreach ($wpdb->tables as $table) { |
|
36 if ( in_array($table, $wpdb->old_tables) ) |
|
37 continue; |
|
38 |
40 |
39 $check = $wpdb->get_row("CHECK TABLE {$wpdb->prefix}$table"); |
41 // Loop over the tables, checking and repairing as needed. |
|
42 foreach ( $tables as $table ) { |
|
43 $check = $wpdb->get_row( "CHECK TABLE $table" ); |
|
44 |
|
45 echo '<p>'; |
40 if ( 'OK' == $check->Msg_text ) { |
46 if ( 'OK' == $check->Msg_text ) { |
41 echo "<p>The {$wpdb->prefix}$table table is okay."; |
47 /* translators: %s: table name */ |
|
48 printf( __( 'The %s table is okay.' ), "<code>$table</code>" ); |
42 } else { |
49 } else { |
43 echo "<p>The {$wpdb->prefix}$table table is not okay. It is reporting the following error: <code>$check->Msg_text</code>. WordPress will attempt to repair this table…"; |
50 /* translators: 1: table name, 2: error message, */ |
44 $repair = $wpdb->get_row("REPAIR TABLE {$wpdb->prefix}$table"); |
51 printf( __( 'The %1$s table is not okay. It is reporting the following error: %2$s. WordPress will attempt to repair this table…' ) , "<code>$table</code>", "<code>$check->Msg_text</code>" ); |
|
52 |
|
53 $repair = $wpdb->get_row( "REPAIR TABLE $table" ); |
|
54 |
|
55 echo '<br /> '; |
45 if ( 'OK' == $check->Msg_text ) { |
56 if ( 'OK' == $check->Msg_text ) { |
46 echo "<br /> Sucessfully repaired the {$wpdb->prefix}$table table."; |
57 /* translators: %s: table name */ |
|
58 printf( __( 'Successfully repaired the %s table.' ), "<code>$table</code>" ); |
47 } else { |
59 } else { |
48 echo "<br /> Failed to repair the {$wpdb->prefix}$table table. Error: $check->Msg_text<br />"; |
60 /* translators: 1: table name, 2: error message, */ |
49 $problems["{$wpdb->prefix}$table"] = $check->Msg_text; |
61 echo sprintf( __( 'Failed to repair the %1$s table. Error: %2$s' ), "<code>$table</code>", "<code>$check->Msg_text</code>" ) . '<br />'; |
|
62 $problems[$table] = $check->Msg_text; |
50 $okay = false; |
63 $okay = false; |
51 } |
64 } |
52 } |
65 } |
|
66 |
53 if ( $okay && $optimize ) { |
67 if ( $okay && $optimize ) { |
54 $check = $wpdb->get_row("ANALYZE TABLE {$wpdb->prefix}$table"); |
68 $check = $wpdb->get_row( "ANALYZE TABLE $table" ); |
|
69 |
|
70 echo '<br /> '; |
55 if ( 'Table is already up to date' == $check->Msg_text ) { |
71 if ( 'Table is already up to date' == $check->Msg_text ) { |
56 echo "<br /> The {$wpdb->prefix}$table table is already optimized."; |
72 /* translators: %s: table name */ |
|
73 printf( __( 'The %s table is already optimized.' ), "<code>$table</code>" ); |
57 } else { |
74 } else { |
58 $check = $wpdb->get_row("OPTIMIZE TABLE {$wpdb->prefix}$table"); |
75 $check = $wpdb->get_row( "OPTIMIZE TABLE $table" ); |
59 if ( 'OK' == $check->Msg_text || 'Table is already up to date' == $check->Msg_text ) |
76 |
60 echo "<br /> Sucessfully optimized the {$wpdb->prefix}$table table."; |
77 echo '<br /> '; |
61 else |
78 if ( 'OK' == $check->Msg_text || 'Table is already up to date' == $check->Msg_text ) { |
62 echo "<br /> Failed to optimize the {$wpdb->prefix}$table table. Error: $check->Msg_text"; |
79 /* translators: %s: table name */ |
|
80 printf( __( 'Successfully optimized the %s table.' ), "<code>$table</code>" ); |
|
81 } else { |
|
82 /* translators: 1: table name, 2: error message, */ |
|
83 printf( __( 'Failed to optimize the %1$s table. Error: %2$s' ), "<code>$table</code>", "<code>$check->Msg_text</code>" ); |
|
84 } |
63 } |
85 } |
64 } |
86 } |
65 echo '</p>'; |
87 echo '</p>'; |
66 } |
88 } |
67 |
89 |
68 if ( !empty($problems) ) { |
90 if ( $problems ) { |
69 printf(__('<p>Some database problems could not be repaired. Please copy-and-paste the following list of errors to the <a href="%s">WordPress support forums</a> to get additional assistance.</p>'), 'http://wordpress.org/support/forum/3'); |
91 printf( '<p>' . __('Some database problems could not be repaired. Please copy-and-paste the following list of errors to the <a href="%s">WordPress support forums</a> to get additional assistance.') . '</p>', __( 'http://wordpress.org/support/forum/how-to-and-troubleshooting' ) ); |
70 $problem_output = array(); |
92 $problem_output = ''; |
71 foreach ( $problems as $table => $problem ) |
93 foreach ( $problems as $table => $problem ) |
72 $problem_output[] = "$table: $problem"; |
94 $problem_output .= "$table: $problem\n"; |
73 echo '<textarea name="errors" id="errors" rows="20" cols="60">' . format_to_edit(implode("\n", $problem_output)) . '</textarea>'; |
95 echo '<p><textarea name="errors" id="errors" rows="20" cols="60">' . esc_textarea( $problem_output ) . '</textarea></p>'; |
74 } else { |
96 } else { |
75 _e("<p>Repairs complete. Please remove the following line from wp-config.php to prevent this page from being used by unauthorized users.</p><code>define('WP_ALLOW_REPAIR', true);</code>"); |
97 echo '<p>' . __( 'Repairs complete. Please remove the following line from wp-config.php to prevent this page from being used by unauthorized users.' ) . "</p><code>define('WP_ALLOW_REPAIR', true);</code>"; |
76 } |
98 } |
77 } else { |
99 } else { |
78 if ( isset($_GET['referrer']) && 'is_blog_installed' == $_GET['referrer'] ) |
100 if ( isset( $_GET['referrer'] ) && 'is_blog_installed' == $_GET['referrer'] ) |
79 _e('One or more database tables is unavailable. To allow WordPress to attempt to repair these tables, press the "Repair Database" button. Repairing can take awhile, so please be patient.'); |
101 echo '<p>' . __( 'One or more database tables are unavailable. To allow WordPress to attempt to repair these tables, press the “Repair Database” button. Repairing can take a while, so please be patient.' ) . '</p>'; |
80 else |
102 else |
81 _e('WordPress can automatically look for some common database problems and repair them. Repairing can take awhile, so please be patient.') |
103 echo '<p>' . __( 'WordPress can automatically look for some common database problems and repair them. Repairing can take a while, so please be patient.' ) . '</p>'; |
82 ?> |
104 ?> |
83 <p class="step"><a class="button" href="<?php echo wp_nonce_url('repair.php?repair=1', 'repair_db') ?>"><?php _e( 'Repair Database' ); ?></a></p> |
105 <p class="step"><a class="button" href="repair.php?repair=1"><?php _e( 'Repair Database' ); ?></a></p> |
84 <?php _e('WordPress can also attempt to optimize the database. This improves performance in some situations. Repairing and optimizing the database can take a long time and the database will be locked while optimizing.'); ?> |
106 <p><?php _e( 'WordPress can also attempt to optimize the database. This improves performance in some situations. Repairing and optimizing the database can take a long time and the database will be locked while optimizing.' ); ?></p> |
85 <p class="step"><a class="button" href="<?php echo wp_nonce_url('repair.php?repair=2', 'repair_db') ?>"><?php _e( 'Repair and Optimize Database' ); ?></a></p> |
107 <p class="step"><a class="button" href="repair.php?repair=2"><?php _e( 'Repair and Optimize Database' ); ?></a></p> |
86 <?php |
108 <?php |
87 } |
109 } |
88 ?> |
110 ?> |
89 </body> |
111 </body> |
90 </html> |
112 </html> |