web/wp-admin/maint/repair.php
branchwordpress
changeset 132 4d4862461b8d
child 194 32102edaa81b
equal deleted inserted replaced
131:a4642baaf829 132:4d4862461b8d
       
     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 {$wpdb->prefix}$table");
       
    45 			if ( 'OK' == $check->Msg_text ) {
       
    46 				echo "<br />&nbsp;&nbsp;&nbsp;&nbsp;Sucessfully repaired the {$wpdb->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 {$wpdb->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 {$wpdb->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>