| @@ -32,9 +32,9 @@ | ||
| 32 | 32 | * |
| 33 | 33 | * @var string |
| 34 | 34 | * @since 0.0.0 |
| 35 | 35 | */ |
| 36 | - const VERSION = '1.2'; | |
| 36 | + const VERSION = '1.2.35'; | |
| 37 | 37 | |
| 38 | 38 | /** |
| 39 | 39 | * URL of plugin directory. |
| 40 | 40 | * |
| @@ -159,9 +159,10 @@ | ||
| 159 | 159 | $desired_protocol = 'https'; |
| 160 | 160 | } elseif ( !empty( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https' ) { |
| 161 | 161 | $desired_protocol = 'https'; |
| 162 | 162 | } elseif ( !empty( $_SERVER['protocol'] ) ) { |
| 163 | - $desired_protocol = strtolower( substr( $_SERVER["SERVER_PROTOCOL"], 0, 5 ) ) == 'https' ? 'https' : 'http'; | |
| 163 | + $server_protocol = isset( $_SERVER['SERVER_PROTOCOL'] ) ? sanitize_text_field( wp_unslash( $_SERVER['SERVER_PROTOCOL'] ) ) : ''; | |
| 164 | + $desired_protocol = strtolower( substr( $server_protocol, 0, 5 ) ) == 'https' ? 'https' : 'http'; | |
| 164 | 165 | } |
| 165 | 166 | } |
| 166 | 167 | |
| 167 | 168 | $url = $desired_protocol . '://' . substr( $url, $pos_of_colon_slash_slash + 3 ); |
| @@ -175,9 +176,10 @@ | ||
| 175 | 176 | return $url; |
| 176 | 177 | } |
| 177 | 178 | |
| 178 | 179 | if ( $should_be_www === null ) { |
| 179 | - if ( strpos( $_SERVER['HTTP_HOST'], 'www.' ) === 0 ) { | |
| 180 | + $http_host = isset( $_SERVER['HTTP_HOST'] ) ? sanitize_text_field( wp_unslash( $_SERVER['HTTP_HOST'] ) ) : ''; | |
| 181 | + if ( strpos( $http_host, 'www.' ) === 0 ) { | |
| 180 | 182 | $should_be_www = true; |
| 181 | 183 | } else { |
| 182 | 184 | $should_be_www = false; |
| 183 | 185 | } |
| @@ -265,8 +267,9 @@ | ||
| 265 | 267 | return; |
| 266 | 268 | } |
| 267 | 269 | |
| 268 | 270 | // Load translated strings for plugin. |
| 271 | + // phpcs:ignore PluginCheck.CodeAnalysis.DiscouragedFunctions.load_plugin_textdomainFound -- Standalone troubleshooter bootstrap; WordPress's automatic just-in-time textdomain loading does not run in this context. | |
| 269 | 272 | load_plugin_textdomain( 'plugin-detective', false, dirname( $this->basename ) . '/languages/' ); |
| 270 | 273 | |
| 271 | 274 | |
| 272 | 275 | // Initialize plugin classes. |
| @@ -333,9 +336,10 @@ | ||
| 333 | 336 | */ |
| 334 | 337 | public function requirements_not_met_notice() { |
| 335 | 338 | |
| 336 | 339 | // Compile default message. |
| 337 | - $default_message = sprintf( __( 'Troubleshoot is missing requirements and has been <a href="%s">deactivated</a>. Please make sure all requirements are available.', 'troubleshoot' ), admin_url( 'plugins.php' ) ); | |
| 340 | + /* translators: %s: URL of the WordPress plugins admin page. */ | |
| 341 | + $default_message = sprintf( __( 'Troubleshoot is missing requirements and has been <a href="%s">deactivated</a>. Please make sure all requirements are available.', 'plugin-detective' ), admin_url( 'plugins.php' ) ); | |
| 338 | 342 | |
| 339 | 343 | // Default details to null. |
| 340 | 344 | $details = null; |
| 341 | 345 | |
| @@ -380,9 +384,9 @@ | ||
| 380 | 384 | case 'clues': |
| 381 | 385 | case 'detective': |
| 382 | 386 | return $this->$field; |
| 383 | 387 | default: |
| 384 | - throw new Exception( 'Invalid ' . __CLASS__ . ' property: ' . $field ); | |
| 388 | + throw new Exception( 'Invalid ' . __CLASS__ . ' property: ' . esc_html( $field ) ); | |
| 385 | 389 | } |
| 386 | 390 | } |
| 387 | 391 | |
| 388 | 392 | /** |
| @@ -432,8 +436,24 @@ | ||
| 432 | 436 | public function get_translations() { |
| 433 | 437 | include dirname( $this->dir() ) . '/languages/troubleshoot-app-translations.php'; |
| 434 | 438 | |
| 435 | 439 | return $translations; |
| 440 | + } | |
| 441 | + | |
| 442 | + /** | |
| 443 | + * Attempt to delete .maintenance file. | |
| 444 | + * | |
| 445 | + */ | |
| 446 | + public function delete_maintenance_file() { | |
| 447 | + if (is_user_logged_in() && current_user_can('manage_options')) { | |
| 448 | + // remove .maintenance file | |
| 449 | + $filename = ABSPATH . '.maintenance'; | |
| 450 | + if ( file_exists( $filename ) ) { | |
| 451 | + wp_delete_file( $filename ); | |
| 452 | + return ! file_exists( $filename ); | |
| 453 | + } | |
| 454 | + } | |
| 455 | + return false; | |
| 436 | 456 | } |
| 437 | 457 | } |
| 438 | 458 | |
| 439 | 459 | /** |