public function set_sql_mode($modes = [])
{
if (empty($modes)) {
if ($this->use_mysqli) {
$res = mysqli_query($this->dbh, 'SELECT @@SESSION.sql_mode');
} else {
$res = mysql_query('SELECT @@SESSION.sql_mode', $this->dbh);
}
if (empty($res)) {
return;
}
if ($this->use_mysqli) {
$modes_array = mysqli_fetch_array($res);
if (empty($modes_array[0])) {
return;
}
$modes_str = $modes_array[0];
} else {
$modes_str = mysql_result($res, 0);
}
if (empty($modes_str)) {
return;
}
$modes = explode(',', $modes_str);
}
$modes = array_change_key_case($modes, CASE_UPPER);
/**
* Filter the list of incompatible SQL modes to exclude.
*
* @since 3.9.0
*
* @see wpdb::$incompatible_modes
*
* @param array $incompatible_modes An array of incompatible modes.
*/
$incompatible_modes = (array) apply_filters('incompatible_sql_modes', $this->incompatible_modes);
foreach ($modes as $i => $mode) {
if (in_array($mode, $incompatible_modes)) {
unset($modes[$i]);
}
}
$modes_str = implode(',', $modes);
if ($this->use_mysqli) {
mysqli_query($this->dbh, "SET SESSION sql_mode='{$modes_str}'");
} else {
mysql_query("SET SESSION sql_mode='{$modes_str}'", $this->dbh);
}
}