16 <head> |
16 <head> |
17 <meta name="viewport" content="width=device-width" /> |
17 <meta name="viewport" content="width=device-width" /> |
18 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
18 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
19 <meta name="robots" content="noindex,nofollow" /> |
19 <meta name="robots" content="noindex,nofollow" /> |
20 <title><?php _e( 'WordPress › Database Repair' ); ?></title> |
20 <title><?php _e( 'WordPress › Database Repair' ); ?></title> |
21 <?php |
21 <?php wp_admin_css( 'install', true ); ?> |
22 wp_admin_css( 'install', true ); |
|
23 ?> |
|
24 </head> |
22 </head> |
25 <body class="wp-core-ui"> |
23 <body class="wp-core-ui"> |
26 <p id="logo"><a href="<?php echo esc_url( __( 'https://wordpress.org/' ) ); ?>" tabindex="-1"><?php _e( 'WordPress' ); ?></a></p> |
24 <p id="logo"><a href="<?php echo esc_url( __( 'https://wordpress.org/' ) ); ?>"><?php _e( 'WordPress' ); ?></a></p> |
27 |
25 |
28 <?php |
26 <?php |
29 |
27 |
30 if ( ! defined( 'WP_ALLOW_REPAIR' ) ) { |
28 if ( ! defined( 'WP_ALLOW_REPAIR' ) || ! WP_ALLOW_REPAIR ) { |
31 |
29 |
32 echo '<h1 class="screen-reader-text">' . __( 'Allow automatic database repair' ) . '</h1>'; |
30 echo '<h1 class="screen-reader-text">' . __( 'Allow automatic database repair' ) . '</h1>'; |
33 |
31 |
34 echo '<p>'; |
32 echo '<p>'; |
35 printf( |
33 printf( |
63 |
61 |
64 if ( $duplicated_keys || $missing_key ) { |
62 if ( $duplicated_keys || $missing_key ) { |
65 |
63 |
66 echo '<h2 class="screen-reader-text">' . __( 'Check secret keys' ) . '</h2>'; |
64 echo '<h2 class="screen-reader-text">' . __( 'Check secret keys' ) . '</h2>'; |
67 |
65 |
68 // Translators: 1: wp-config.php; 2: Secret key service URL. |
66 /* translators: 1: wp-config.php, 2: secret key service URL */ |
69 echo '<p>' . sprintf( __( 'While you are editing your %1$s file, take a moment to make sure you have all 8 keys and that they are unique. You can generate these using the <a href="%2$s">WordPress.org secret key service</a>.' ), '<code>wp-config.php</code>', 'https://api.wordpress.org/secret-key/1.1/salt/' ) . '</p>'; |
67 echo '<p>' . sprintf( __( 'While you are editing your %1$s file, take a moment to make sure you have all 8 keys and that they are unique. You can generate these using the <a href="%2$s">WordPress.org secret key service</a>.' ), '<code>wp-config.php</code>', 'https://api.wordpress.org/secret-key/1.1/salt/' ) . '</p>'; |
70 } |
68 } |
71 |
|
72 } elseif ( isset( $_GET['repair'] ) ) { |
69 } elseif ( isset( $_GET['repair'] ) ) { |
73 |
70 |
74 echo '<h1 class="screen-reader-text">' . __( 'Database repair results' ) . '</h1>'; |
71 echo '<h1 class="screen-reader-text">' . __( 'Database repair results' ) . '</h1>'; |
75 |
72 |
76 $optimize = 2 == $_GET['repair']; |
73 $optimize = 2 == $_GET['repair']; |
77 $okay = true; |
74 $okay = true; |
78 $problems = array(); |
75 $problems = array(); |
79 |
76 |
80 $tables = $wpdb->tables(); |
77 $tables = $wpdb->tables(); |
81 |
78 |
82 // Sitecategories may not exist if global terms are disabled. |
79 // Sitecategories may not exist if global terms are disabled. |
83 $query = $wpdb->prepare( "SHOW TABLES LIKE %s", $wpdb->esc_like( $wpdb->sitecategories ) ); |
80 $query = $wpdb->prepare( 'SHOW TABLES LIKE %s', $wpdb->esc_like( $wpdb->sitecategories ) ); |
84 if ( is_multisite() && ! $wpdb->get_var( $query ) ) { |
81 if ( is_multisite() && ! $wpdb->get_var( $query ) ) { |
85 unset( $tables['sitecategories'] ); |
82 unset( $tables['sitecategories'] ); |
86 } |
83 } |
87 |
84 |
88 /** |
85 /** |
89 * Filters additional database tables to repair. |
86 * Filters additional database tables to repair. |
90 * |
87 * |
91 * @since 3.0.0 |
88 * @since 3.0.0 |
92 * |
89 * |
93 * @param array $tables Array of prefixed table names to be repaired. |
90 * @param string[] $tables Array of prefixed table names to be repaired. |
94 */ |
91 */ |
95 $tables = array_merge( $tables, (array) apply_filters( 'tables_to_repair', array() ) ); |
92 $tables = array_merge( $tables, (array) apply_filters( 'tables_to_repair', array() ) ); |
96 |
93 |
97 // Loop over the tables, checking and repairing as needed. |
94 // Loop over the tables, checking and repairing as needed. |
98 foreach ( $tables as $table ) { |
95 foreach ( $tables as $table ) { |
102 if ( 'OK' == $check->Msg_text ) { |
99 if ( 'OK' == $check->Msg_text ) { |
103 /* translators: %s: table name */ |
100 /* translators: %s: table name */ |
104 printf( __( 'The %s table is okay.' ), "<code>$table</code>" ); |
101 printf( __( 'The %s table is okay.' ), "<code>$table</code>" ); |
105 } else { |
102 } else { |
106 /* translators: 1: table name, 2: error message, */ |
103 /* translators: 1: table name, 2: error message, */ |
107 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>" ); |
104 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>" ); |
108 |
105 |
109 $repair = $wpdb->get_row( "REPAIR TABLE $table" ); |
106 $repair = $wpdb->get_row( "REPAIR TABLE $table" ); |
110 |
107 |
111 echo '<br /> '; |
108 echo '<br /> '; |
112 if ( 'OK' == $check->Msg_text ) { |
109 if ( 'OK' == $check->Msg_text ) { |
113 /* translators: %s: table name */ |
110 /* translators: %s: table name */ |
114 printf( __( 'Successfully repaired the %s table.' ), "<code>$table</code>" ); |
111 printf( __( 'Successfully repaired the %s table.' ), "<code>$table</code>" ); |
115 } else { |
112 } else { |
116 /* translators: 1: table name, 2: error message, */ |
113 /* translators: 1: table name, 2: error message, */ |
117 echo sprintf( __( 'Failed to repair the %1$s table. Error: %2$s' ), "<code>$table</code>", "<code>$check->Msg_text</code>" ) . '<br />'; |
114 echo sprintf( __( 'Failed to repair the %1$s table. Error: %2$s' ), "<code>$table</code>", "<code>$check->Msg_text</code>" ) . '<br />'; |
118 $problems[$table] = $check->Msg_text; |
115 $problems[ $table ] = $check->Msg_text; |
119 $okay = false; |
116 $okay = false; |
120 } |
117 } |
121 } |
118 } |
122 |
119 |
123 if ( $okay && $optimize ) { |
120 if ( $okay && $optimize ) { |
124 $check = $wpdb->get_row( "ANALYZE TABLE $table" ); |
121 $check = $wpdb->get_row( "ANALYZE TABLE $table" ); |
125 |
122 |
126 echo '<br /> '; |
123 echo '<br /> '; |
127 if ( 'Table is already up to date' == $check->Msg_text ) { |
124 if ( 'Table is already up to date' == $check->Msg_text ) { |
128 /* translators: %s: table name */ |
125 /* translators: %s: table name */ |
129 printf( __( 'The %s table is already optimized.' ), "<code>$table</code>" ); |
126 printf( __( 'The %s table is already optimized.' ), "<code>$table</code>" ); |
130 } else { |
127 } else { |
131 $check = $wpdb->get_row( "OPTIMIZE TABLE $table" ); |
128 $check = $wpdb->get_row( "OPTIMIZE TABLE $table" ); |
132 |
129 |
142 } |
139 } |
143 echo '</p>'; |
140 echo '</p>'; |
144 } |
141 } |
145 |
142 |
146 if ( $problems ) { |
143 if ( $problems ) { |
147 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>', __( 'https://wordpress.org/support/forum/how-to-and-troubleshooting' ) ); |
144 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>', __( 'https://wordpress.org/support/forum/how-to-and-troubleshooting' ) ); |
148 $problem_output = ''; |
145 $problem_output = ''; |
149 foreach ( $problems as $table => $problem ) |
146 foreach ( $problems as $table => $problem ) { |
150 $problem_output .= "$table: $problem\n"; |
147 $problem_output .= "$table: $problem\n"; |
|
148 } |
151 echo '<p><textarea name="errors" id="errors" rows="20" cols="60">' . esc_textarea( $problem_output ) . '</textarea></p>'; |
149 echo '<p><textarea name="errors" id="errors" rows="20" cols="60">' . esc_textarea( $problem_output ) . '</textarea></p>'; |
152 } else { |
150 } else { |
153 echo '<p>' . __( 'Repairs complete. Please remove the following line from wp-config.php to prevent this page from being used by unauthorized users.' ) . "</p><p><code>define('WP_ALLOW_REPAIR', true);</code></p>"; |
151 echo '<p>' . __( 'Repairs complete. Please remove the following line from wp-config.php to prevent this page from being used by unauthorized users.' ) . "</p><p><code>define('WP_ALLOW_REPAIR', true);</code></p>"; |
154 } |
152 } |
155 } else { |
153 } else { |
156 |
154 |
157 echo '<h1 class="screen-reader-text">' . __( 'WordPress database repair' ) . '</h1>'; |
155 echo '<h1 class="screen-reader-text">' . __( 'WordPress database repair' ) . '</h1>'; |
158 |
156 |
159 if ( isset( $_GET['referrer'] ) && 'is_blog_installed' == $_GET['referrer'] ) |
157 if ( isset( $_GET['referrer'] ) && 'is_blog_installed' == $_GET['referrer'] ) { |
160 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>'; |
158 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>'; |
161 else |
159 } else { |
162 echo '<p>' . __( 'WordPress can automatically look for some common database problems and repair them. Repairing can take a while, so please be patient.' ) . '</p>'; |
160 echo '<p>' . __( 'WordPress can automatically look for some common database problems and repair them. Repairing can take a while, so please be patient.' ) . '</p>'; |
163 ?> |
161 } |
|
162 ?> |
164 <p class="step"><a class="button button-large" href="repair.php?repair=1"><?php _e( 'Repair Database' ); ?></a></p> |
163 <p class="step"><a class="button button-large" href="repair.php?repair=1"><?php _e( 'Repair Database' ); ?></a></p> |
165 <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> |
164 <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> |
166 <p class="step"><a class="button button-large" href="repair.php?repair=2"><?php _e( 'Repair and Optimize Database' ); ?></a></p> |
165 <p class="step"><a class="button button-large" href="repair.php?repair=2"><?php _e( 'Repair and Optimize Database' ); ?></a></p> |
167 <?php |
166 <?php |
168 } |
167 } |
169 ?> |
168 ?> |
170 </body> |
169 </body> |
171 </html> |
170 </html> |