web/wp-admin/maint/repair.php
changeset 194 32102edaa81b
parent 136 bde1974c263b
child 204 09a1c134465b
equal deleted inserted replaced
193:2f6f6f7551ca 194:32102edaa81b
     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 &rsaquo; Database Repair'); ?></title>
    18 	<title><?php _e( 'WordPress &rsaquo; 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&hellip;";
    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&hellip;' ) , "<code>$table</code>", "<code>$check->Msg_text</code>" );
       
    52 
       
    53 			$repair = $wpdb->get_row( "REPAIR TABLE $table" );
       
    54 
       
    55 			echo '<br />&nbsp;&nbsp;&nbsp;&nbsp;';
    45 			if ( 'OK' == $check->Msg_text ) {
    56 			if ( 'OK' == $check->Msg_text ) {
    46 				echo "<br />&nbsp;&nbsp;&nbsp;&nbsp;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 />&nbsp;&nbsp;&nbsp;&nbsp;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 />&nbsp;&nbsp;&nbsp;&nbsp;';
    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 />&nbsp;&nbsp;&nbsp;&nbsp;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 />&nbsp;&nbsp;&nbsp;&nbsp;Sucessfully optimized the {$wpdb->prefix}$table table.";
    77 				echo '<br />&nbsp;&nbsp;&nbsp;&nbsp;';
    61 				else
    78 				if ( 'OK' == $check->Msg_text || 'Table is already up to date' == $check->Msg_text ) {
    62 					echo "<br />&nbsp;&nbsp;&nbsp;&nbsp;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 &#8220;Repair Database&#8221; 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>