Skip to content

Commit

Permalink
Merge pull request #31 from mattbucci/mb-php8-wp6-support
Browse files Browse the repository at this point in the history
WIP: PHP 8 and Wordpress 6+ support
  • Loading branch information
mattbucci authored Oct 29, 2023
2 parents f2a05dd + 8300219 commit f035c8f
Show file tree
Hide file tree
Showing 14 changed files with 1,477 additions and 678 deletions.
26 changes: 23 additions & 3 deletions pg4wp/core.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -26,13 +37,22 @@
'class wpdb' => 'class wpdb2',
'new wpdb' => 'new wpdb2',
'mysql_' => 'wpsql_',
'is_resource' => 'wpsql_is_resource',
'<?php' => '',
'?>' => '',
);

// 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 );
}
59 changes: 35 additions & 24 deletions pg4wp/db.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
Loading

0 comments on commit f035c8f

Please sign in to comment.