/wp-content/plugins/w3-total-cache/lib/W3/Db.php
https://gitlab.com/juanito.abelo/nlmobile · PHP · 496 lines · 240 code · 79 blank · 177 comment · 11 complexity · e369849152d13ab6c17410a886f6ad2e MD5 · raw file
- <?php
- /**
- * W3 Database object
- */
- if (!defined('ABSPATH')) {
- die();
- }
- if (!class_exists('W3_Db_Driver')) {
- require_once ABSPATH . 'wp-includes/wp-db.php';
- class W3_Db_Driver extends wpdb {
- }
- }
- //TODO: Added for backwards compatibility
- if(!class_exists('W3_Db')){
- /**
- * Class W3_Db
- * Database access mediator
- */
- class W3_Db extends W3_Db_Driver {
- /**
- * Returns onject instance. Called by WP engine
- *
- * @return W3_Db
- */
- static function instance() {
- static $instances = array();
- if (!isset($instances[0])) {
- $processors = array();
- $call_default_constructor = true;
- // no caching during activation
- $is_installing = (defined('WP_INSTALLING') && WP_INSTALLING);
- $config = w3_instance('W3_Config');
- if (!$is_installing && $config->get_boolean('dbcache.enabled')) {
- $processors[] = w3_instance('W3_DbCache');
- }
- if (w3_is_dbcluster()) {
- $processors[] = w3_instance('W3_Enterprise_DbCluster');
- }
-
- $processors[] = new W3_DbProcessor();
-
- $class = __CLASS__;
- $o = new $class($processors);
-
- $underlying_manager = new W3_DbCallUnderlying($o);
-
- foreach ($processors as $processor) {
- $processor->manager = $o;
- $processor->underlying_manager = $underlying_manager;
- }
- // initialize after processors configured
- $o->initialize();
-
- @$instances[0] = $o;
- }
- return $instances[0];
- }
-
- /*
- * @param boolean $call_default_constructor
- */
- function __construct($processors) {
- $this->processors = $processors;
- $this->processor = $processors[0];
- $this->processor_number = 0;
- }
- /**
- * Initializes object after processors configured. Called from instance() only
- */
- function initialize() {
- return $this->processor->initialize();
- }
- /**
- * Overriten logic of wp_db by processor.
- */
- function insert($table, $data, $format = null) {
- return $this->processor->insert($table, $data, $format);
- }
- /**
- * Overriten logic of wp_db by processor.
- */
- function query($query) {
- return $this->processor->query($query);
- }
- /**
- * Overriten logic of wp_db by processor.
- */
- function replace($table, $data, $format = null) {
- return $this->processor->replace($table, $data, $format);
- }
- /**
- * Overriten logic of wp_db by processor.
- */
- function update($table, $data, $where, $format = null, $where_format = null) {
- return $this->processor->update($table, $data, $where, $format, $where_format);
- }
-
- /**
- * Overriten logic of wp_db by processor.
- */
- function init_charset() {
- return $this->processor->init_charset();
- }
- /**
- * Overriten logic of wp_db by processor.
- */
- function set_charset($dbh, $charset = null, $collate = null) {
- return $this->processor->set_charset($dbh, $charset, $collate);
- }
- /**
- * Overriten logic of wp_db by processor.
- */
- function flush() {
- return $this->processor->flush();
- }
- /**
- * Overriten logic of wp_db by processor.
- */
- function check_database_version($dbh_or_table = false) {
- return $this->processor->check_database_version($dbh_or_table);
- }
- /**
- * Overriten logic of wp_db by processor.
- */
- function supports_collation( $dbh_or_table = false ) {
- return $this->processor->supports_collation($dbh_or_table);
- }
- /**
- * Overriten logic of wp_db by processor.
- */
- function has_cap( $db_cap, $dbh_or_table = false ) {
- return $this->processor->has_cap($db_cap, $dbh_or_table);
- }
- /**
- * Overriten logic of wp_db by processor.
- */
- function db_version( $dbh_or_table = false ) {
- return $this->processor->db_version($dbh_or_table);
- }
-
- /**
- * Default initialization method, calls wp_db apropriate method
- */
- function default_initialize() {
- parent::__construct(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST);
- }
- /**
- * Default implementation, calls wp_db apropriate method
- */
- function default_insert($table, $data, $format = null) {
- return parent::insert($table, $data, $format);
- }
- /**
- * Default implementation, calls wp_db apropriate method
- */
- function default_query($query) {
- return parent::query($query);
- }
- /**
- * Default implementation, calls wp_db apropriate method
- */
- function default_replace($table, $data, $format = null) {
- return parent::replace($table, $data, $format);
- }
- /**
- * Default implementation, calls wp_db apropriate method
- */
- function default_update($table, $data, $where, $format = null, $where_format = null) {
- return parent::update($table, $data, $where, $format, $where_format);
- }
-
- /**
- * Default implementation, calls wp_db apropriate method
- */
- function default_init_charset() {
- return parent::init_charset();
- }
- /**
- * Default implementation, calls wp_db apropriate method
- */
- function default_set_charset($dbh, $charset = null, $collate = null) {
- return parent::set_charset($dbh, $charset, $collate);
- }
- /**
- * Default implementation, calls wp_db apropriate method
- */
- function default_flush() {
- return parent::flush();
- }
- /**
- * Default implementation, calls wp_db apropriate method
- */
- function default_check_database_version($dbh_or_table = false) {
- return parent::check_database_version($dbh_or_table);
- }
- /**
- * Default implementation, calls wp_db apropriate method
- */
- function default_supports_collation( $dbh_or_table = false ) {
- return parent::supports_collation($dbh_or_table);
- }
- /**
- * Default implementation, calls wp_db apropriate method
- */
- function default_has_cap( $db_cap, $dbh_or_table = false ) {
- return parent::has_cap($db_cap, $dbh_or_table);
- }
- /**
- * Default implementation, calls wp_db apropriate method
- */
- function default_db_version( $dbh_or_table = false ) {
- return parent::db_version($dbh_or_table);
- }
-
- /**
- * Default implementation, calls wp_db apropriate method
- */
- function switch_active_processor($offset) {
- $new_processor_number = $this->processor_number + $offset;
- if ($new_processor_number <= 0) {
- $new_processor_number = 0;
- } else if ($new_processor_number >= count($this->processors)) {
- $new_processor_number = count($this->processors) - 1;
- }
-
- $offset_made = $new_processor_number - $this->processor_number;
- $this->processor_number = $new_processor_number;
- $this->processor = $this->processors[$new_processor_number];
-
- return $offset_made;
- }
- }
- /**
- * Class W3_DbProcessor
- * Does separate operation without inheritance
- */
- class W3_DbProcessor {
- /**
- * Top database-connection object.
- * Initialized by W3_Db::instance
- *
- * @var object
- */
- var $manager = null;
- /**
- * Database-connection using overrides of next processor in queue
- * Initialized by W3_Db::instance
- *
- * @var object
- */
- var $underlying_manager = null;
-
- /**
- * Placeholder for database initialization
- */
- function initialize() {
- return $this->manager->default_initialize();
- }
-
- /**
- * Placeholder for apropriate wp_db method replacement.
- * By default calls wp_db implementation
- */
- function insert($table, $data, $format = null) {
- return $this->manager->default_insert($table, $data, $format);
- }
- /**
- * Placeholder for apropriate wp_db method replacement.
- * By default calls wp_db implementation
- */
- function query($query) {
- return $this->manager->default_query($query);
- }
- /**
- * Placeholder for apropriate wp_db method replacement.
- * By default calls wp_db implementation
- */
- function replace($table, $data, $format = null) {
- return $this->manager->default_replace($table, $data, $format);
- }
- /**
- * Placeholder for apropriate wp_db method replacement.
- * By default calls wp_db implementation
- */
- function update($table, $data, $where, $format = null, $where_format = null) {
- return $this->manager->default_update($table, $data, $where, $format, $where_format);
- }
-
- /**
- * Placeholder for apropriate wp_db method replacement.
- * By default calls wp_db implementation
- */
- function init_charset() {
- return $this->manager->default_init_charset();
- }
- /**
- * Placeholder for apropriate wp_db method replacement.
- * By default calls wp_db implementation
- */
- function set_charset($dbh, $charset = null, $collate = null) {
- return $this->manager->default_set_charset($dbh, $charset, $collate);
- }
- /**
- * Placeholder for apropriate wp_db method replacement.
- * By default calls wp_db implementation
- */
- function flush() {
- return $this->manager->default_flush();
- }
- /**
- * Placeholder for apropriate wp_db method replacement.
- * By default calls wp_db implementation
- */
- function check_database_version($dbh_or_table = false) {
- return $this->manager->default_check_database_version($dbh_or_table);
- }
- /**
- * Placeholder for apropriate wp_db method replacement.
- * By default calls wp_db implementation
- */
- function supports_collation( $dbh_or_table = false ) {
- return $this->manager->default_supports_collation($dbh_or_table);
- }
- /**
- * Placeholder for apropriate wp_db method replacement.
- * By default calls wp_db implementation
- */
- function has_cap( $db_cap, $dbh_or_table = false ) {
- return $this->manager->default_has_cap($db_cap, $dbh_or_table);
- }
- /**
- * Placeholder for apropriate wp_db method replacement.
- * By default calls wp_db implementation
- */
- function db_version( $dbh_or_table = false ) {
- return $this->manager->default_db_version($dbh_or_table);
- }
- }
- /**
- * Class W3_DbCallUnderlying
- */
- class W3_DbCallUnderlying {
- function __construct($manager) {
- $this->manager = $manager;
- }
- /**
- * Calls underlying processor's aproptiate method of wp_db
- */
- function initialize() {
- $switched = $this->manager->switch_active_processor(1);
-
- try {
- $r = $this->manager->initialize();
-
- $this->manager->switch_active_processor(-$switched);
- return $r;
- } catch (Exception $e) {
- $this->manager->switch_active_processor(-$switched);
- throw $e;
- }
- }
- /**
- * Calls underlying processor's aproptiate method of wp_db
- */
- function flush() {
- $switched = $this->manager->switch_active_processor(1);
-
- try {
- $r = $this->manager->flush();
-
- $this->manager->switch_active_processor(-$switched);
- return $r;
- } catch (Exception $e) {
- $this->manager->switch_active_processor(-$switched);
- throw $e;
- }
- }
-
- /**
- * Calls underlying processor's aproptiate method of wp_db
- */
- function query($query) {
- $switched = $this->manager->switch_active_processor(1);
-
- try {
- $r = $this->manager->query($query);
-
- $this->manager->switch_active_processor(-$switched);
- return $r;
- } catch (Exception $e) {
- $this->manager->switch_active_processor(-$switched);
- throw $e;
- }
- }
-
- /**
- * Calls underlying processor's aproptiate method of wp_db
- */
- function insert($table, $data, $format = null) {
- $switched = $this->manager->switch_active_processor(1);
-
- try {
- $r = $this->manager->insert($table, $data, $format);
-
- $this->manager->switch_active_processor(-$switched);
- return $r;
- } catch (Exception $e) {
- $this->manager->switch_active_processor(-$switched);
- throw $e;
- }
- }
- /**
- * Calls underlying processor's aproptiate method of wp_db
- */
- function replace($table, $data, $format = null) {
- $switched = $this->manager->switch_active_processor(1);
-
- try {
- $r = $this->manager->replace($table, $data, $format);
-
- $this->manager->switch_active_processor(-$switched);
- return $r;
- } catch (Exception $e) {
- $this->manager->switch_active_processor(-$switched);
- throw $e;
- }
- }
- /**
- * Calls underlying processor's aproptiate method of wp_db
- */
- function update($table, $data, $where, $format = null, $where_format = null) {
- $switched = $this->manager->switch_active_processor(1);
-
- try {
- $r = $this->manager->update($table, $data, $where, $format, $where_format);
-
- $this->manager->switch_active_processor(-$switched);
- return $r;
- } catch (Exception $e) {
- $this->manager->switch_active_processor(-$switched);
- throw $e;
- }
- }
- }
- }
- ?>