diff --git a/pg4wp/core.php b/pg4wp/core.php index 72d2a75..fa45e3b 100644 --- a/pg4wp/core.php +++ b/pg4wp/core.php @@ -9,6 +9,17 @@ * This file does all the initialisation tasks */ +// This is required by class-wpdb so we must load it first +require_once ABSPATH . '/wp-includes/cache.php'; +require_once ABSPATH . '/wp-includes/l10n.php'; + +if (!function_exists('wpsql_is_resource')) { + function wpsql_is_resource($object) + { + return $object !== false && $object !== null; + } +} + // Logs are put in the pg4wp directory define( 'PG4WP_LOG', PG4WP_ROOT.'/logs/'); // Check if the logs directory is needed and exists or create it if possible @@ -26,13 +37,22 @@ 'class wpdb' => 'class wpdb2', 'new wpdb' => 'new wpdb2', 'mysql_' => 'wpsql_', + 'is_resource' => 'wpsql_is_resource', ' '', '?>' => '', ); + // Ensure class uses the replaced mysql_ functions rather than mysqli_ -define( 'WP_USE_EXT_MYSQL', true); -eval( str_replace( array_keys($replaces), array_values($replaces), file_get_contents(ABSPATH.'/wp-includes/wp-db.php'))); +if (!defined('WP_USE_EXT_MYSQL')) { + define('WP_USE_EXT_MYSQL', true); +} +if (WP_USE_EXT_MYSQL != true) { + throw new \Exception("PG4SQL CANNOT BE ENABLED WITH MYSQLI, REMOVE ANY WP_USE_EXT_MYSQL configuration"); +} + +eval(str_replace(array_keys($replaces), array_values($replaces), file_get_contents(ABSPATH . '/wp-includes/class-wpdb.php'))); // Create wpdb object if not already done -if (! isset($wpdb) && defined('DB_USER')) +if (! isset($wpdb) && defined('DB_USER')) { $wpdb = new wpdb2( DB_USER, DB_PASSWORD, DB_NAME, DB_HOST ); +} \ No newline at end of file diff --git a/pg4wp/db.php b/pg4wp/db.php index 798e715..fef6b0a 100644 --- a/pg4wp/db.php +++ b/pg4wp/db.php @@ -9,32 +9,43 @@ License: GPLv2 or newer. */ -if( !defined('PG4WP_ROOT')) -{ -// You can choose the driver to load here -define('DB_DRIVER', 'pgsql'); // 'pgsql' or 'mysql' are supported for now +// Ensure we only load this config once +if(!defined('PG4WP_ROOT')) { -// Set this to 'true' and check that `pg4wp` is writable if you want debug logs to be written -define( 'PG4WP_DEBUG', false); -// If you just want to log queries that generate errors, leave PG4WP_DEBUG to "false" -// and set this to true -define( 'PG4WP_LOG_ERRORS', true); + // You can choose the driver to load here + if (!defined('DB_DRIVER')) { + define('DB_DRIVER', pgsql); + } -// If you want to allow insecure configuration (from the author point of view) to work with PG4WP, -// change this to true -define( 'PG4WP_INSECURE', false); + // Set this to 'true' and check that `pg4wp` is writable if you want debug logs to be written + if (!defined('PG4WP_DEBUG')) { + define('PG4WP_DEBUG', false); + } -// This defines the directory where PG4WP files are loaded from -// 3 places checked : wp-content, wp-content/plugins and the base directory -if( file_exists( ABSPATH.'/wp-content/pg4wp')) - define( 'PG4WP_ROOT', ABSPATH.'/wp-content/pg4wp'); -else if( file_exists( ABSPATH.'/wp-content/plugins/pg4wp')) - define( 'PG4WP_ROOT', ABSPATH.'/wp-content/plugins/pg4wp'); -else if( file_exists( ABSPATH.'/pg4wp')) - define( 'PG4WP_ROOT', ABSPATH.'/pg4wp'); -else - die('PG4WP file directory not found'); + if (!defined('PG4WP_LOG_ERRORS')) { + // If you just want to log queries that generate errors, leave PG4WP_DEBUG to "false" + // and set this to true + define('PG4WP_LOG_ERRORS', true); + } -// Here happens all the magic -require_once( PG4WP_ROOT.'/core.php'); + if (!defined('PG4WP_INSECURE')) { + // If you want to allow insecure configuration (from the author point of view) to work with PG4WP, + // change this to true + define('PG4WP_INSECURE', false); + } + + // This defines the directory where PG4WP files are loaded from + // 3 places checked : wp-content, wp-content/plugins and the base directory + if(file_exists(ABSPATH . '/wp-content/pg4wp')) { + define('PG4WP_ROOT', ABSPATH . '/wp-content/pg4wp'); + } elseif(file_exists(ABSPATH . '/wp-content/plugins/pg4wp')) { + define('PG4WP_ROOT', ABSPATH . '/wp-content/plugins/pg4wp'); + } elseif(file_exists(ABSPATH . '/pg4wp')) { + define('PG4WP_ROOT', ABSPATH . '/pg4wp'); + } else { + die('PG4WP file directory not found'); + } + + // Here happens all the magic + require_once(PG4WP_ROOT . '/core.php'); } // Protection against multiple loading