<?php
// Exit if accessed directly
if ( !defined( 'ABSPATH' ) ) {
exit;
}
if ( ! class_exists( 'PWBE_DB' ) ) :
final class PWBE_DB {
private static $use_mysqli = null;
public static function query( $sql ) {
global $wpdb;
PWBE_DB::init();
if ( PWBE_DB::$use_mysqli ) {
return mysqli_query( $wpdb->dbh, $sql );
} else {
return mysql_query( $sql, $wpdb->dbh );
}
}
public static function fetch_object( $result ) {
global $wpdb;
PWBE_DB::init();
if ( PWBE_DB::$use_mysqli && $result instanceof mysqli_result) {
return mysqli_fetch_object( $result );
} else if ( is_resource( $result ) ) {
return mysql_fetch_object( $result );
}
}
public static function free_result( $result ) {
global $wpdb;
PWBE_DB::init();
if ( PWBE_DB::$use_mysqli && $result instanceof mysqli_result) {
mysqli_free_result( $result );
$result = null;
// Sanity check before using the handle
if ( empty( $wpdb->dbh ) || !( $wpdb->dbh instanceof mysqli ) ) {
return;
}
// Clear out any results from a multi-query
while ( mysqli_more_results( $wpdb->dbh ) ) {
mysqli_next_result( $wpdb->dbh );
}
} else if ( is_resource( $result ) ) {
mysql_free_result( $result );
}
}
public static function num_rows( $result ) {
global $wpdb;
PWBE_DB::init();
if ( PWBE_DB::$use_mysqli && $result instanceof mysqli_result) {
return mysqli_num_rows( $result );
} else if ( is_resource( $result ) ) {
return mysql_num_rows( $result );
}
}
public static function error() {
global $wpdb;
PWBE_DB::init();
if ( PWBE_DB::$use_mysqli ) {
return mysqli_error( $wpdb->dbh );
} else {
return mysql_error( $wpdb->dbh );
}
}
private static function init() {
if ( PWBE_DB::$use_mysqli !== null ) {
return;
}
if ( defined( 'PW_BULK_EDIT_USE_MYSQLI' ) ) {
PWBE_DB::$use_mysqli = PW_BULK_EDIT_USE_MYSQLI;
return;
}
// Default
PWBE_DB::$use_mysqli = false;
if ( function_exists( 'mysqli_connect' ) ) {
if ( defined( 'WP_USE_EXT_MYSQL' ) ) {
PWBE_DB::$use_mysqli = ! WP_USE_EXT_MYSQL;
} elseif ( version_compare( phpversion(), '5.5', '>=' ) || ! function_exists( 'mysql_connect' ) ) {
PWBE_DB::$use_mysqli = true;
} elseif ( false !== strpos( $GLOBALS['wp_version'], '-' ) ) {
PWBE_DB::$use_mysqli = true;
}
}
}
}
endif;
?>