]> scripts.mit.edu Git - autoinstalls/wordpress.git/blob - wp-admin/maint/repair.php
7eb3abbf9a08227f6130b7ca1962498c189acacc
[autoinstalls/wordpress.git] / wp-admin / maint / repair.php
1 <?php
2
3 define('WP_REPAIRING', true);
4
5 require_once('../../wp-load.php');
6
7 header( 'Content-Type: text/html; charset=utf-8' );
8 ?>
9 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
10 <html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
11 <head>
12         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
13         <title><?php _e('WordPress &rsaquo; Database Repair'); ?></title>
14         <?php wp_admin_css( 'install', true ); ?>
15 </head>
16 <body>
17 <h1 id="logo"><img alt="WordPress" src="../images/wordpress-logo.png" /></h1>
18
19 <?php
20
21 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>");
23 } elseif ( isset($_GET['repair']) ) {
24         $problems = array();
25         check_admin_referer('repair_db');
26
27         if ( 2 == $_GET['repair'] )
28                 $optimize = true;
29         else
30                 $optimize = false;
31
32         $okay = true;
33
34         // Loop over the WP tables, checking and repairing as needed.
35         foreach ($wpdb->tables as $table) {
36                 if ( in_array($table, $wpdb->old_tables) )
37                         continue;
38
39                 $check = $wpdb->get_row("CHECK TABLE {$wpdb->prefix}$table");
40                 if ( 'OK' == $check->Msg_text ) {
41                         echo "<p>The {$wpdb->prefix}$table table is okay.";
42                 } 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&hellip;";
44                         $repair = $wpdb->get_row("REPAIR TABLE {$wpb->prefix}$table");
45                         if ( 'OK' == $check->Msg_text ) {
46                                 echo "<br />&nbsp;&nbsp;&nbsp;&nbsp;Sucessfully repaired the {$wpb->prefix}$table table.";
47                         } else {
48                                 echo "<br />&nbsp;&nbsp;&nbsp;&nbsp;Failed to repair the {$wpdb->prefix}$table table. Error: $check->Msg_text<br />";
49                                 $problems["{$wpdb->prefix}$table"] = $check->Msg_text;
50                                 $okay = false;
51                         }
52                 }
53                 if ( $okay && $optimize ) {
54                         $check = $wpdb->get_row("ANALYZE TABLE {$wpdb->prefix}$table");
55                         if ( 'Table is already up to date' == $check->Msg_text )  {
56                                 echo "<br />&nbsp;&nbsp;&nbsp;&nbsp;The {$wpb->prefix}$table table is already optimized.";
57                         } else {
58                                 $check = $wpdb->get_row("OPTIMIZE TABLE {$wpdb->prefix}$table");
59                                 if ( 'OK' == $check->Msg_text || 'Table is already up to date' == $check->Msg_text )
60                                         echo "<br />&nbsp;&nbsp;&nbsp;&nbsp;Sucessfully optimized the {$wpb->prefix}$table table.";
61                                 else
62                                         echo "<br />&nbsp;&nbsp;&nbsp;&nbsp;Failed to optimize the {$wpdb->prefix}$table table. Error: $check->Msg_text";
63                         }
64                 }
65                 echo '</p>';
66         }
67
68         if ( !empty($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');
70                 $problem_output = array();
71                 foreach ( $problems as $table => $problem )
72                         $problem_output[] = "$table: $problem";
73                 echo '<textarea name="errors" id="errors" rows="20" cols="60">' . format_to_edit(implode("\n", $problem_output)) . '</textarea>';
74         } 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>");
76         }
77 } else {
78         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.');
80         else
81                 _e('WordPress can automatically look for some common database problems and repair them.  Repairing can take awhile, so please be patient.')
82 ?>
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>
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.'); ?>
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>
86 <?php
87 }
88 ?>
89 </body>
90 </html>