| @@ -8,13 +8,8 @@ | ||
| 8 | 8 | */ |
| 9 | 9 | |
| 10 | 10 | namespace Fragen\WP_Debugging; |
| 11 | 11 | |
| 12 | -// Exit if called directly. | |
| 13 | -if ( ! defined( 'WPINC' ) ) { | |
| 14 | - die; | |
| 15 | -} | |
| 16 | - | |
| 17 | 12 | /** |
| 18 | 13 | * Class Bootstrap |
| 19 | 14 | */ |
| 20 | 15 | class Bootstrap { |
| @@ -63,9 +58,9 @@ | ||
| 63 | 58 | $this->file = $file; |
| 64 | 59 | $this->dir = dirname( $file ); |
| 65 | 60 | self::$options = get_site_option( 'wp_debugging', [ 'wp_debug' => '1' ] ); |
| 66 | 61 | self::$config_path = $this->get_config_path(); |
| 67 | - @ini_set( 'display_errors', 1 ); // phpcs:ignore WordPress.PHP.IniSet.display_errors_Blacklisted,WordPress.PHP.NoSilencedErrors.Discouraged,WordPress.PHP.IniSet.display_errors_Disallowed | |
| 62 | + @ini_set( 'display_errors', 1 ); // phpcs:ignore WordPress.PHP.IniSet.display_errors_Blacklisted | |
| 68 | 63 | } |
| 69 | 64 | |
| 70 | 65 | /** |
| 71 | 66 | * Test for writable wp-config.php, exit with notice if not available. |
| @@ -79,16 +74,14 @@ | ||
| 79 | 74 | echo '</p></div>'; |
| 80 | 75 | |
| 81 | 76 | return false; |
| 82 | 77 | } |
| 78 | + if ( ! \file_exists( self::$config_path ) || ! trim( \file_get_contents( self::$config_path ) ) ) { | |
| 79 | + return; | |
| 80 | + } | |
| 83 | 81 | |
| 84 | 82 | $this->load_hooks(); |
| 85 | - add_action( | |
| 86 | - 'plugins_loaded', | |
| 87 | - function () { | |
| 88 | - \WP_Dependency_Installer::instance()->run( $this->dir ); | |
| 89 | - } | |
| 90 | - ); | |
| 83 | + \WP_Dependency_Installer::instance()->run( $this->dir ); | |
| 91 | 84 | } |
| 92 | 85 | |
| 93 | 86 | /** |
| 94 | 87 | * Get the `wp-config.php` file path. |
| @@ -102,9 +95,8 @@ | ||
| 102 | 95 | public function get_config_path() { |
| 103 | 96 | $config_path = ABSPATH . 'wp-config.php'; |
| 104 | 97 | |
| 105 | 98 | if ( ! file_exists( $config_path ) ) { |
| 106 | - // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged | |
| 107 | 99 | if ( @file_exists( dirname( ABSPATH ) . '/wp-config.php' ) && ! @file_exists( dirname( ABSPATH ) . '/wp-settings.php' ) ) { |
| 108 | 100 | $config_path = dirname( ABSPATH ) . '/wp-config.php'; |
| 109 | 101 | } |
| 110 | 102 | } |
| @@ -125,10 +117,10 @@ | ||
| 125 | 117 | * @return void |
| 126 | 118 | */ |
| 127 | 119 | public function load_hooks() { |
| 128 | 120 | add_action( |
| 129 | - 'plugins_loaded', | |
| 130 | - function () { | |
| 121 | + 'init', | |
| 122 | + function() { | |
| 131 | 123 | ( new Settings( self::$options, self::$config_path, $this->defined_constants ) ) |
| 132 | 124 | ->load_hooks() |
| 133 | 125 | ->process_filter_constants(); |
| 134 | 126 | } |
| @@ -197,13 +189,18 @@ | ||
| 197 | 189 | * |
| 198 | 190 | * @return void |
| 199 | 191 | */ |
| 200 | 192 | private function set_pre_activation_constants() { |
| 193 | + if ( ! \file_exists( self::$config_path ) || ! trim( \file_get_contents( self::$config_path ) ) ) { | |
| 194 | + return; | |
| 195 | + } | |
| 201 | 196 | $config_transformer = new \WPConfigTransformer( self::$config_path ); |
| 202 | 197 | $predefined_constants = []; |
| 203 | 198 | foreach ( $this->defined_constants as $defined_constant ) { |
| 204 | 199 | if ( $config_transformer->exists( 'constant', strtoupper( $defined_constant ) ) ) { |
| 205 | 200 | $value = $config_transformer->get_value( 'constant', strtoupper( $defined_constant ) ); |
| 201 | + $value = trim( $value, '"\'' ); // Normalize quoted value. | |
| 202 | + | |
| 206 | 203 | $predefined_constants[ $defined_constant ]['value'] = $value; |
| 207 | 204 | } |
| 208 | 205 | } |
| 209 | 206 | update_site_option( 'wp_debugging_restore', $predefined_constants ); |