Files
torebki-fabiola.pl/wp-content/plugins/wpvivid-backuprestore/includes/class-wpvivid-restore-db-wpdb-method.php
2026-03-05 13:07:40 +01:00

156 lines
5.0 KiB
PHP

<?php
class WPvivid_Restore_DB_WPDB_Method
{
private $max_allow_packet;
private $skip_query=0;
public function connect_db()
{
global $wpdb;
$wpdb->get_results('SET NAMES utf8', ARRAY_A);
$ret['result']=WPVIVID_SUCCESS;
return $ret;
}
public function test_db()
{
global $wpvivid_plugin;
global $wpdb;
$test_table_new=uniqid('wpvivid_test_tables_');
$columns='(test_id int)';
$test_table = $wpdb->get_results("CREATE TABLE IF NOT EXISTS $test_table_new $columns",ARRAY_A);
if ($test_table!==false)
{
$wpvivid_plugin->restore_data->write_log('The test to create table succeeds.','notice');
$test_table = $wpdb->get_results("INSERT INTO $test_table_new (`test_id`) VALUES ('123')",ARRAY_A);
if($test_table!==false)
{
$wpvivid_plugin->restore_data->write_log('The test to insert into table succeeds.','notice');
$test_table = $wpdb->get_results("DROP TABLE IF EXISTS $test_table_new",ARRAY_A);
if($test_table!==false)
{
$wpvivid_plugin->restore_data->write_log('The test to drop table succeeds.','notice');
return true;
}
else
{
$error=$wpdb->last_error;
$wpvivid_plugin->restore_data->write_log('Unable to drop table. The reason is '.$error,'warning');
return false;
}
}
else
{
$error=$wpdb->last_error;
$wpvivid_plugin->restore_data->write_log('Unable to insert into table. The reason is '.$error,'warning');
return false;
}
}
else {
$error=$wpdb->last_error;
$wpvivid_plugin->restore_data->write_log('Unable to create table. The reason is '.$error,'warning');
return false;
}
}
public function check_max_allow_packet()
{
global $wpvivid_plugin;
$wpvivid_plugin->restore_data->write_log('get max_allowed_packet wpdb ','notice');
global $wpdb;
$max_allowed_packet =$wpdb->get_var("SELECT @@session.max_allowed_packet");
if($max_allowed_packet!==null)
{
if($max_allowed_packet<1048576)
{
$wpvivid_plugin->restore_data->write_log('warning: max_allowed_packet less than 1M :'.size_format($max_allowed_packet,2),'notice');
}
else if($max_allowed_packet<33554432)
{
$wpvivid_plugin->restore_data->write_log('max_allowed_packet less than 32M :'.size_format($max_allowed_packet,2),'notice');
}
$this->max_allow_packet=$max_allowed_packet;
}
else
{
$wpvivid_plugin->restore_data->write_log('get max_allowed_packet failed ','notice');
$this->max_allow_packet=1048576;
}
}
public function get_max_allow_packet()
{
return $this->max_allow_packet;
}
public function init_sql_mode()
{
global $wpdb;
$res = $wpdb->get_var('SELECT @@SESSION.sql_mode');
if($res===null)
{
global $wpvivid_plugin;
$wpvivid_plugin->restore_data->write_log('get sql_mode failed','notice');
}
else
{
$sql_mod = $res;
$temp_sql_mode = str_replace('NO_ENGINE_SUBSTITUTION','',$sql_mod);
$temp_sql_mode = 'ALLOW_INVALID_DATES,NO_AUTO_VALUE_ON_ZERO,'.$temp_sql_mode;
$wpdb->get_results('SET SESSION sql_mode = "'.$temp_sql_mode.'"',ARRAY_A);
}
}
public function set_skip_query($count)
{
$this->skip_query=$count;
}
public function execute_sql($query)
{
global $wpvivid_plugin;
global $wpdb;
if ($wpdb->get_results($query)===false)
{
$error=$wpdb->last_error;
$wpvivid_plugin->restore_data->write_log($error, 'Warning');
/*
if($info[1] == 2006)
{
if(strlen($query)>$this->max_allow_packet)
{
$this->skip_query++;
$wpvivid_plugin->restore_data->write_log('max_allow_packet too small:'.size_format($this->max_allow_packet).' query size:'.size_format(strlen($query)), 'Warning');
}
$ret=$this->connect_db();
if($ret['result']==WPVIVID_FAILED)
{
$wpvivid_plugin->restore_data->write_log('reconnect failed', 'Warning');
}
else{
$wpvivid_plugin->restore_data->write_log('reconnect succeed', 'Warning');
}
}
*/
}
}
public function query($sql,$output)
{
global $wpdb;
return $wpdb->get_results($sql,$output);
}
public function errorInfo()
{
global $wpdb;
return $wpdb->last_error;
}
}