plugin = $plugin; $this->define_constants(); } public function define_constants() { // Define the directory seperator if it isn't already if( !defined( 'DS' ) ) { if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') { define('DS', '\\'); } else { define('DS', '/'); } } // Include plugin-detective-config.php if it exists $path_to_pd_config = dirname( dirname( dirname ( $this->plugin->dir() ) ) ) . '/' . 'plugin-detective-config.php'; if ( @file_exists( $path_to_pd_config ) ) { include_once( $path_to_pd_config ); } // Define ABSPATH if ( !defined('ABSPATH') ) { $ABSPATH = dirname( dirname( dirname ( $this->plugin->dir() ) ) ) . '/'; for ($i=0; $i < 3; $i++) { if ( @file_exists( $ABSPATH . 'wp-settings.php' ) ) { define('ABSPATH', $ABSPATH ); break; } else if ( @file_exists( $ABSPATH . 'wp/wp-settings.php' ) ) { define('ABSPATH', $ABSPATH . 'wp/' ); break; } else if ( @file_exists( $ABSPATH . 'wp-load.php' ) ) { define('ABSPATH', $ABSPATH . 'wp/' ); break; } else if ( @file_exists( $ABSPATH . 'wp/wp-load.php' ) ) { define('ABSPATH', $ABSPATH . 'wp/' ); break; } $ABSPATH = dirname( $ABSPATH ) . '/'; } if ( !defined( 'ABSPATH' ) ) { echo '

It\'s possible you have an unusual directory structure, and we can\'t find the path to the root of your WordPress install.'.'

'; echo '

You can tell Plugin Detective about your install by creating a config file here:

'; echo '
'. $path_to_pd_config .'
'; echo '

where you define the path to your WP install

'; echo ''. "define( 'ABSPATH', '/path/to/wordpress/install/' );" .''; echo '

You may want to define other customized values like WP_CONTENT_DIR, WP_CONTENT_URL or other values from your wp-config.php file that are unique to your install

'; echo '

Error details: Couldn\'t find ABSPATH from plugin path: ' . $this->plugin->dir() . '

'; echo ''; exit(); } } // Search for wp-config.php $wp_config_dir_path = ABSPATH . 'wp-config.php'; if ( ! @file_exists( $wp_config_dir_path ) ) { $wp_config_dir_path = dirname( ABSPATH ) . '/' . 'wp-config.php'; if ( ! @file_exists( $wp_config_dir_path ) ) { $wp_config_dir_path = ABSPATH . 'wp' . '/' . 'wp-config.php'; if ( ! @file_exists( $wp_config_dir_path ) ) { die( "Unable to locate wp-config.php file: \n" . ABSPATH. 'wp-config.php' . "\n OR \n" . dirname( ABSPATH ) . '/' . 'wp-config.php' ); } } } if ( isset($_ENV['PANTHEON_ENVIRONMENT']) ) { define('DB_NAME', $_ENV['DB_NAME']); /** MySQL database username */ define('DB_USER', $_ENV['DB_USER']); /** MySQL database password */ define('DB_PASSWORD', $_ENV['DB_PASSWORD']); /** MySQL hostname; on Pantheon this includes a specific port number. */ define('DB_HOST', $_ENV['DB_HOST'] . ':' . $_ENV['DB_PORT']); } $config_files = array( dirname( $wp_config_dir_path ) . '/wp-config-local.php', dirname( $wp_config_dir_path ) . '/wp-config-hosting.php', $wp_config_dir_path, ); $attempts = array( 'standard', 'normalize', ); $methods = array( 'php-define', 'php-define-double-quote', 'php-unquoted', ); foreach ($config_files as $key => $config_file_path) { if ( !file_exists( $config_file_path ) ) { continue; } foreach ($attempts as $key => $attempt) { if ( $attempt === 'normalize' ) { $config_file = new PDT_Config( $config_file_path, true ); } else { $config_file = new PDT_Config( $config_file_path ); } foreach ($methods as $key => $method) { $config_file->set_type( $method ); if ( empty( $DB_USER ) ) { $DB_USER = $config_file->get_key( 'DB_USER' ); } if ( empty( $DB_NAME ) ) { $DB_NAME = $config_file->get_key( 'DB_NAME' ); } if ( empty( $DB_PASSWORD ) ) { $DB_PASSWORD = $config_file->get_key( 'DB_PASSWORD' ); } if ( empty( $DB_HOST ) ) { $DB_HOST = $config_file->get_key( 'DB_HOST' ); } if ( empty( $WP_CONTENT_DIR ) ) { $WP_CONTENT_DIR = $config_file->get_key( 'WP_CONTENT_DIR' ); } if ( empty( $WP_CONTENT_URL ) ) { $WP_CONTENT_URL = $config_file->get_key( 'WP_CONTENT_URL' ); } if ( !empty( $DB_USER ) ) { break; } } } } if ( empty( $DB_USER ) ) { echo '

Unable to read database credentials from wp-config.php

'; echo '
They should be formatted like this in your wp-config.php file:
'; echo "
// ** MySQL settings - You can get this info from your web host ** //
define( 'DB_NAME', 'database_name_here' );

/** MySQL database username */
define( 'DB_USER', 'username_here' );

/** MySQL database password */
define( 'DB_PASSWORD', 'password_here' );

/** MySQL hostname */
define( 'DB_HOST', 'localhost' );
"; echo '
If you are still having trouble connecting, please contact us by emailing support@tylerdigital.com with a copy of your file (you may want to remove any sensitive data first)
'; exit(); } $DB_USER = str_replace( '");', '', $DB_USER ); $DB_USER = ( strpos( $DB_USER, '"' ) === 0 ) ? substr( $DB_USER, 1 ) : $DB_USER; $DB_USER = str_replace( '\');', '', $DB_USER ); $DB_USER = ( strpos( $DB_USER, '\'' ) === 0 ) ? substr( $DB_USER, 1 ) : $DB_USER; $DB_NAME = str_replace( '");', '', $DB_NAME ); $DB_NAME = ( strpos( $DB_NAME, '"' ) === 0 ) ? substr( $DB_NAME, 1 ) : $DB_NAME; $DB_NAME = str_replace( '\');', '', $DB_NAME ); $DB_NAME = ( strpos( $DB_NAME, '\'' ) === 0 ) ? substr( $DB_NAME, 1 ) : $DB_NAME; $DB_PASSWORD = str_replace( '");', '', $DB_PASSWORD ); $DB_PASSWORD = ( strpos( $DB_PASSWORD, '"' ) === 0 ) ? substr( $DB_PASSWORD, 1 ) : $DB_PASSWORD; $DB_PASSWORD = str_replace( '\');', '', $DB_PASSWORD ); $DB_PASSWORD = ( strpos( $DB_PASSWORD, '\'' ) === 0 ) ? substr( $DB_PASSWORD, 1 ) : $DB_PASSWORD; $DB_HOST = str_replace( '");', '', $DB_HOST ); $DB_HOST = ( strpos( $DB_HOST, '"' ) === 0 ) ? substr( $DB_HOST, 1 ) : $DB_HOST; $DB_HOST = str_replace( '\');', '', $DB_HOST ); $DB_HOST = ( strpos( $DB_HOST, '\'' ) === 0 ) ? substr( $DB_HOST, 1 ) : $DB_HOST; if ( !defined( 'DB_USER' ) ) { define( 'DB_USER', $DB_USER ); } if ( !defined( 'DB_NAME' ) ) { define( 'DB_NAME', $DB_NAME ); } if ( !defined( 'DB_PASSWORD' ) ) { define( 'DB_PASSWORD', $DB_PASSWORD ); } if ( !defined( 'DB_HOST' ) ) { define( 'DB_HOST', $DB_HOST ); } if ( !empty( $WP_CONTENT_DIR ) ) { define( 'WP_CONTENT_DIR', $WP_CONTENT_DIR ); } if ( !empty( $WP_CONTENT_URL ) ) { define( 'WP_CONTENT_URL', $WP_CONTENT_URL ); } $config_file->set_type( 'php-variable' ); global $table_prefix; $table_prefix = $config_file->get_key( 'table_prefix' ); $GLOBALS['table_prefix'] = $table_prefix; if ( !defined('WP_CONTENT_DIR') ) define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' ); // no trailing slash, full paths only - WP_CONTENT_URL is defined further down // Add define('WP_DEBUG', true); to wp-config.php to enable display of notices during development. if ( !defined('WP_DEBUG') ) define( 'WP_DEBUG', false ); // Add define('WP_DEBUG_DISPLAY', null); to wp-config.php use the globally configured setting for // display_errors and not force errors to be displayed. Use false to force display_errors off. if ( !defined('WP_DEBUG_DISPLAY') ) define( 'WP_DEBUG_DISPLAY', true ); // Add define('WP_DEBUG_LOG', true); to enable error logging to wp-content/debug.log. if ( !defined('WP_DEBUG_LOG') ) define('WP_DEBUG_LOG', false); if ( !defined('WP_CACHE') ) define('WP_CACHE', false); // Start of run timestamp. if ( ! defined( 'WP_START_TIMESTAMP' ) ) { define( 'WP_START_TIMESTAMP', microtime( true ) ); } /** * Private */ if ( !defined('MEDIA_TRASH') ) define('MEDIA_TRASH', false); if ( !defined('SHORTINIT') ) define('SHORTINIT', false); /** * Allows for the plugins directory to be moved from the default location. * * @since 2.6.0 */ if ( !defined('WP_PLUGIN_DIR') ) define( 'WP_PLUGIN_DIR', WP_CONTENT_DIR . '/plugins' ); // full path, no trailing slash /** * Allows for the plugins directory to be moved from the default location. * * @since 2.1.0 * @deprecated */ if ( !defined('PLUGINDIR') ) define( 'PLUGINDIR', 'wp-content/plugins' ); // Relative to ABSPATH. For back compat. /** * Allows for the mu-plugins directory to be moved from the default location. * * @since 2.8.0 */ if ( !defined('WPMU_PLUGIN_DIR') ) define( 'WPMU_PLUGIN_DIR', WP_CONTENT_DIR . '/mu-plugins' ); // full path, no trailing slash /** * Allows for the mu-plugins directory to be moved from the default location. * * @since 2.8.0 * @deprecated */ if ( !defined( 'MUPLUGINDIR' ) ) define( 'MUPLUGINDIR', 'wp-content/mu-plugins' ); // Relative to ABSPATH. For back compat. } }