Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../public_h.../wp-inclu...
File: class-wpdb.php
return true;
[3500] Fix | Delete
}
[3501] Fix | Delete
[3502] Fix | Delete
$table = strtolower( $table );
[3503] Fix | Delete
if ( empty( $this->col_meta[ $table ] ) ) {
[3504] Fix | Delete
return false;
[3505] Fix | Delete
}
[3506] Fix | Delete
[3507] Fix | Delete
// If any of the columns don't have one of these collations, it needs more confidence checking.
[3508] Fix | Delete
$safe_collations = array(
[3509] Fix | Delete
'utf8_bin',
[3510] Fix | Delete
'utf8_general_ci',
[3511] Fix | Delete
'utf8mb3_bin',
[3512] Fix | Delete
'utf8mb3_general_ci',
[3513] Fix | Delete
'utf8mb4_bin',
[3514] Fix | Delete
'utf8mb4_general_ci',
[3515] Fix | Delete
);
[3516] Fix | Delete
[3517] Fix | Delete
foreach ( $this->col_meta[ $table ] as $col ) {
[3518] Fix | Delete
if ( empty( $col->Collation ) ) {
[3519] Fix | Delete
continue;
[3520] Fix | Delete
}
[3521] Fix | Delete
[3522] Fix | Delete
if ( ! in_array( $col->Collation, $safe_collations, true ) ) {
[3523] Fix | Delete
return false;
[3524] Fix | Delete
}
[3525] Fix | Delete
}
[3526] Fix | Delete
[3527] Fix | Delete
return true;
[3528] Fix | Delete
}
[3529] Fix | Delete
[3530] Fix | Delete
/**
[3531] Fix | Delete
* Strips any invalid characters based on value/charset pairs.
[3532] Fix | Delete
*
[3533] Fix | Delete
* @since 4.2.0
[3534] Fix | Delete
*
[3535] Fix | Delete
* @param array $data Array of value arrays. Each value array has the keys 'value', 'charset', and 'length'.
[3536] Fix | Delete
* An optional 'ascii' key can be set to false to avoid redundant ASCII checks.
[3537] Fix | Delete
* @return array|WP_Error The $data parameter, with invalid characters removed from each value.
[3538] Fix | Delete
* This works as a passthrough: any additional keys such as 'field' are
[3539] Fix | Delete
* retained in each value array. If we cannot remove invalid characters,
[3540] Fix | Delete
* a WP_Error object is returned.
[3541] Fix | Delete
*/
[3542] Fix | Delete
protected function strip_invalid_text( $data ) {
[3543] Fix | Delete
$db_check_string = false;
[3544] Fix | Delete
[3545] Fix | Delete
foreach ( $data as &$value ) {
[3546] Fix | Delete
$charset = $value['charset'];
[3547] Fix | Delete
[3548] Fix | Delete
if ( is_array( $value['length'] ) ) {
[3549] Fix | Delete
$length = $value['length']['length'];
[3550] Fix | Delete
$truncate_by_byte_length = 'byte' === $value['length']['type'];
[3551] Fix | Delete
} else {
[3552] Fix | Delete
$length = false;
[3553] Fix | Delete
/*
[3554] Fix | Delete
* Since we have no length, we'll never truncate. Initialize the variable to false.
[3555] Fix | Delete
* True would take us through an unnecessary (for this case) codepath below.
[3556] Fix | Delete
*/
[3557] Fix | Delete
$truncate_by_byte_length = false;
[3558] Fix | Delete
}
[3559] Fix | Delete
[3560] Fix | Delete
// There's no charset to work with.
[3561] Fix | Delete
if ( false === $charset ) {
[3562] Fix | Delete
continue;
[3563] Fix | Delete
}
[3564] Fix | Delete
[3565] Fix | Delete
// Column isn't a string.
[3566] Fix | Delete
if ( ! is_string( $value['value'] ) ) {
[3567] Fix | Delete
continue;
[3568] Fix | Delete
}
[3569] Fix | Delete
[3570] Fix | Delete
$needs_validation = true;
[3571] Fix | Delete
if (
[3572] Fix | Delete
// latin1 can store any byte sequence.
[3573] Fix | Delete
'latin1' === $charset
[3574] Fix | Delete
||
[3575] Fix | Delete
// ASCII is always OK.
[3576] Fix | Delete
( ! isset( $value['ascii'] ) && $this->check_ascii( $value['value'] ) )
[3577] Fix | Delete
) {
[3578] Fix | Delete
$truncate_by_byte_length = true;
[3579] Fix | Delete
$needs_validation = false;
[3580] Fix | Delete
}
[3581] Fix | Delete
[3582] Fix | Delete
if ( $truncate_by_byte_length ) {
[3583] Fix | Delete
mbstring_binary_safe_encoding();
[3584] Fix | Delete
if ( false !== $length && strlen( $value['value'] ) > $length ) {
[3585] Fix | Delete
$value['value'] = substr( $value['value'], 0, $length );
[3586] Fix | Delete
}
[3587] Fix | Delete
reset_mbstring_encoding();
[3588] Fix | Delete
[3589] Fix | Delete
if ( ! $needs_validation ) {
[3590] Fix | Delete
continue;
[3591] Fix | Delete
}
[3592] Fix | Delete
}
[3593] Fix | Delete
[3594] Fix | Delete
// utf8 can be handled by regex, which is a bunch faster than a DB lookup.
[3595] Fix | Delete
if ( ( 'utf8' === $charset || 'utf8mb3' === $charset || 'utf8mb4' === $charset ) && function_exists( 'mb_strlen' ) ) {
[3596] Fix | Delete
$regex = '/
[3597] Fix | Delete
(
[3598] Fix | Delete
(?: [\x00-\x7F] # single-byte sequences 0xxxxxxx
[3599] Fix | Delete
| [\xC2-\xDF][\x80-\xBF] # double-byte sequences 110xxxxx 10xxxxxx
[3600] Fix | Delete
| \xE0[\xA0-\xBF][\x80-\xBF] # triple-byte sequences 1110xxxx 10xxxxxx * 2
[3601] Fix | Delete
| [\xE1-\xEC][\x80-\xBF]{2}
[3602] Fix | Delete
| \xED[\x80-\x9F][\x80-\xBF]
[3603] Fix | Delete
| [\xEE-\xEF][\x80-\xBF]{2}';
[3604] Fix | Delete
[3605] Fix | Delete
if ( 'utf8mb4' === $charset ) {
[3606] Fix | Delete
$regex .= '
[3607] Fix | Delete
| \xF0[\x90-\xBF][\x80-\xBF]{2} # four-byte sequences 11110xxx 10xxxxxx * 3
[3608] Fix | Delete
| [\xF1-\xF3][\x80-\xBF]{3}
[3609] Fix | Delete
| \xF4[\x80-\x8F][\x80-\xBF]{2}
[3610] Fix | Delete
';
[3611] Fix | Delete
}
[3612] Fix | Delete
[3613] Fix | Delete
$regex .= '){1,40} # ...one or more times
[3614] Fix | Delete
)
[3615] Fix | Delete
| . # anything else
[3616] Fix | Delete
/x';
[3617] Fix | Delete
$value['value'] = preg_replace( $regex, '$1', $value['value'] );
[3618] Fix | Delete
[3619] Fix | Delete
if ( false !== $length && mb_strlen( $value['value'], 'UTF-8' ) > $length ) {
[3620] Fix | Delete
$value['value'] = mb_substr( $value['value'], 0, $length, 'UTF-8' );
[3621] Fix | Delete
}
[3622] Fix | Delete
continue;
[3623] Fix | Delete
}
[3624] Fix | Delete
[3625] Fix | Delete
// We couldn't use any local conversions, send it to the DB.
[3626] Fix | Delete
$value['db'] = true;
[3627] Fix | Delete
$db_check_string = true;
[3628] Fix | Delete
}
[3629] Fix | Delete
unset( $value ); // Remove by reference.
[3630] Fix | Delete
[3631] Fix | Delete
if ( $db_check_string ) {
[3632] Fix | Delete
$queries = array();
[3633] Fix | Delete
foreach ( $data as $col => $value ) {
[3634] Fix | Delete
if ( ! empty( $value['db'] ) ) {
[3635] Fix | Delete
// We're going to need to truncate by characters or bytes, depending on the length value we have.
[3636] Fix | Delete
if ( isset( $value['length']['type'] ) && 'byte' === $value['length']['type'] ) {
[3637] Fix | Delete
// Using binary causes LEFT() to truncate by bytes.
[3638] Fix | Delete
$charset = 'binary';
[3639] Fix | Delete
} else {
[3640] Fix | Delete
$charset = $value['charset'];
[3641] Fix | Delete
}
[3642] Fix | Delete
[3643] Fix | Delete
if ( $this->charset ) {
[3644] Fix | Delete
$connection_charset = $this->charset;
[3645] Fix | Delete
} else {
[3646] Fix | Delete
$connection_charset = mysqli_character_set_name( $this->dbh );
[3647] Fix | Delete
}
[3648] Fix | Delete
[3649] Fix | Delete
if ( is_array( $value['length'] ) ) {
[3650] Fix | Delete
$length = sprintf( '%.0f', $value['length']['length'] );
[3651] Fix | Delete
$queries[ $col ] = $this->prepare( "CONVERT( LEFT( CONVERT( %s USING $charset ), $length ) USING $connection_charset )", $value['value'] );
[3652] Fix | Delete
} elseif ( 'binary' !== $charset ) {
[3653] Fix | Delete
// If we don't have a length, there's no need to convert binary - it will always return the same result.
[3654] Fix | Delete
$queries[ $col ] = $this->prepare( "CONVERT( CONVERT( %s USING $charset ) USING $connection_charset )", $value['value'] );
[3655] Fix | Delete
}
[3656] Fix | Delete
[3657] Fix | Delete
unset( $data[ $col ]['db'] );
[3658] Fix | Delete
}
[3659] Fix | Delete
}
[3660] Fix | Delete
[3661] Fix | Delete
$sql = array();
[3662] Fix | Delete
foreach ( $queries as $column => $query ) {
[3663] Fix | Delete
if ( ! $query ) {
[3664] Fix | Delete
continue;
[3665] Fix | Delete
}
[3666] Fix | Delete
[3667] Fix | Delete
$sql[] = $query . " AS x_$column";
[3668] Fix | Delete
}
[3669] Fix | Delete
[3670] Fix | Delete
$this->check_current_query = false;
[3671] Fix | Delete
$row = $this->get_row( 'SELECT ' . implode( ', ', $sql ), ARRAY_A );
[3672] Fix | Delete
if ( ! $row ) {
[3673] Fix | Delete
return new WP_Error( 'wpdb_strip_invalid_text_failure', __( 'Could not strip invalid text.' ) );
[3674] Fix | Delete
}
[3675] Fix | Delete
[3676] Fix | Delete
foreach ( array_keys( $data ) as $column ) {
[3677] Fix | Delete
if ( isset( $row[ "x_$column" ] ) ) {
[3678] Fix | Delete
$data[ $column ]['value'] = $row[ "x_$column" ];
[3679] Fix | Delete
}
[3680] Fix | Delete
}
[3681] Fix | Delete
}
[3682] Fix | Delete
[3683] Fix | Delete
return $data;
[3684] Fix | Delete
}
[3685] Fix | Delete
[3686] Fix | Delete
/**
[3687] Fix | Delete
* Strips any invalid characters from the query.
[3688] Fix | Delete
*
[3689] Fix | Delete
* @since 4.2.0
[3690] Fix | Delete
*
[3691] Fix | Delete
* @param string $query Query to convert.
[3692] Fix | Delete
* @return string|WP_Error The converted query, or a WP_Error object if the conversion fails.
[3693] Fix | Delete
*/
[3694] Fix | Delete
protected function strip_invalid_text_from_query( $query ) {
[3695] Fix | Delete
// We don't need to check the collation for queries that don't read data.
[3696] Fix | Delete
$trimmed_query = ltrim( $query, "\r\n\t (" );
[3697] Fix | Delete
if ( preg_match( '/^(?:SHOW|DESCRIBE|DESC|EXPLAIN|CREATE)\s/i', $trimmed_query ) ) {
[3698] Fix | Delete
return $query;
[3699] Fix | Delete
}
[3700] Fix | Delete
[3701] Fix | Delete
$table = $this->get_table_from_query( $query );
[3702] Fix | Delete
if ( $table ) {
[3703] Fix | Delete
$charset = $this->get_table_charset( $table );
[3704] Fix | Delete
if ( is_wp_error( $charset ) ) {
[3705] Fix | Delete
return $charset;
[3706] Fix | Delete
}
[3707] Fix | Delete
[3708] Fix | Delete
// We can't reliably strip text from tables containing binary/blob columns.
[3709] Fix | Delete
if ( 'binary' === $charset ) {
[3710] Fix | Delete
return $query;
[3711] Fix | Delete
}
[3712] Fix | Delete
} else {
[3713] Fix | Delete
$charset = $this->charset;
[3714] Fix | Delete
}
[3715] Fix | Delete
[3716] Fix | Delete
$data = array(
[3717] Fix | Delete
'value' => $query,
[3718] Fix | Delete
'charset' => $charset,
[3719] Fix | Delete
'ascii' => false,
[3720] Fix | Delete
'length' => false,
[3721] Fix | Delete
);
[3722] Fix | Delete
[3723] Fix | Delete
$data = $this->strip_invalid_text( array( $data ) );
[3724] Fix | Delete
if ( is_wp_error( $data ) ) {
[3725] Fix | Delete
return $data;
[3726] Fix | Delete
}
[3727] Fix | Delete
[3728] Fix | Delete
return $data[0]['value'];
[3729] Fix | Delete
}
[3730] Fix | Delete
[3731] Fix | Delete
/**
[3732] Fix | Delete
* Strips any invalid characters from the string for a given table and column.
[3733] Fix | Delete
*
[3734] Fix | Delete
* @since 4.2.0
[3735] Fix | Delete
*
[3736] Fix | Delete
* @param string $table Table name.
[3737] Fix | Delete
* @param string $column Column name.
[3738] Fix | Delete
* @param string $value The text to check.
[3739] Fix | Delete
* @return string|WP_Error The converted string, or a WP_Error object if the conversion fails.
[3740] Fix | Delete
*/
[3741] Fix | Delete
public function strip_invalid_text_for_column( $table, $column, $value ) {
[3742] Fix | Delete
if ( ! is_string( $value ) ) {
[3743] Fix | Delete
return $value;
[3744] Fix | Delete
}
[3745] Fix | Delete
[3746] Fix | Delete
$charset = $this->get_col_charset( $table, $column );
[3747] Fix | Delete
if ( ! $charset ) {
[3748] Fix | Delete
// Not a string column.
[3749] Fix | Delete
return $value;
[3750] Fix | Delete
} elseif ( is_wp_error( $charset ) ) {
[3751] Fix | Delete
// Bail on real errors.
[3752] Fix | Delete
return $charset;
[3753] Fix | Delete
}
[3754] Fix | Delete
[3755] Fix | Delete
$data = array(
[3756] Fix | Delete
$column => array(
[3757] Fix | Delete
'value' => $value,
[3758] Fix | Delete
'charset' => $charset,
[3759] Fix | Delete
'length' => $this->get_col_length( $table, $column ),
[3760] Fix | Delete
),
[3761] Fix | Delete
);
[3762] Fix | Delete
[3763] Fix | Delete
$data = $this->strip_invalid_text( $data );
[3764] Fix | Delete
if ( is_wp_error( $data ) ) {
[3765] Fix | Delete
return $data;
[3766] Fix | Delete
}
[3767] Fix | Delete
[3768] Fix | Delete
return $data[ $column ]['value'];
[3769] Fix | Delete
}
[3770] Fix | Delete
[3771] Fix | Delete
/**
[3772] Fix | Delete
* Finds the first table name referenced in a query.
[3773] Fix | Delete
*
[3774] Fix | Delete
* @since 4.2.0
[3775] Fix | Delete
*
[3776] Fix | Delete
* @param string $query The query to search.
[3777] Fix | Delete
* @return string|false The table name found, or false if a table couldn't be found.
[3778] Fix | Delete
*/
[3779] Fix | Delete
protected function get_table_from_query( $query ) {
[3780] Fix | Delete
// Remove characters that can legally trail the table name.
[3781] Fix | Delete
$query = rtrim( $query, ';/-#' );
[3782] Fix | Delete
[3783] Fix | Delete
// Allow (select...) union [...] style queries. Use the first query's table name.
[3784] Fix | Delete
$query = ltrim( $query, "\r\n\t (" );
[3785] Fix | Delete
[3786] Fix | Delete
// Strip everything between parentheses except nested selects.
[3787] Fix | Delete
$query = preg_replace( '/\((?!\s*select)[^(]*?\)/is', '()', $query );
[3788] Fix | Delete
[3789] Fix | Delete
// Quickly match most common queries.
[3790] Fix | Delete
if ( preg_match(
[3791] Fix | Delete
'/^\s*(?:'
[3792] Fix | Delete
. 'SELECT.*?\s+FROM'
[3793] Fix | Delete
. '|INSERT(?:\s+LOW_PRIORITY|\s+DELAYED|\s+HIGH_PRIORITY)?(?:\s+IGNORE)?(?:\s+INTO)?'
[3794] Fix | Delete
. '|REPLACE(?:\s+LOW_PRIORITY|\s+DELAYED)?(?:\s+INTO)?'
[3795] Fix | Delete
. '|UPDATE(?:\s+LOW_PRIORITY)?(?:\s+IGNORE)?'
[3796] Fix | Delete
. '|DELETE(?:\s+LOW_PRIORITY|\s+QUICK|\s+IGNORE)*(?:.+?FROM)?'
[3797] Fix | Delete
. ')\s+((?:[0-9a-zA-Z$_.`-]|[\xC2-\xDF][\x80-\xBF])+)/is',
[3798] Fix | Delete
$query,
[3799] Fix | Delete
$maybe
[3800] Fix | Delete
) ) {
[3801] Fix | Delete
return str_replace( '`', '', $maybe[1] );
[3802] Fix | Delete
}
[3803] Fix | Delete
[3804] Fix | Delete
// SHOW TABLE STATUS and SHOW TABLES WHERE Name = 'wp_posts'
[3805] Fix | Delete
if ( preg_match( '/^\s*SHOW\s+(?:TABLE\s+STATUS|(?:FULL\s+)?TABLES).+WHERE\s+Name\s*=\s*("|\')((?:[0-9a-zA-Z$_.-]|[\xC2-\xDF][\x80-\xBF])+)\\1/is', $query, $maybe ) ) {
[3806] Fix | Delete
return $maybe[2];
[3807] Fix | Delete
}
[3808] Fix | Delete
[3809] Fix | Delete
/*
[3810] Fix | Delete
* SHOW TABLE STATUS LIKE and SHOW TABLES LIKE 'wp\_123\_%'
[3811] Fix | Delete
* This quoted LIKE operand seldom holds a full table name.
[3812] Fix | Delete
* It is usually a pattern for matching a prefix so we just
[3813] Fix | Delete
* strip the trailing % and unescape the _ to get 'wp_123_'
[3814] Fix | Delete
* which drop-ins can use for routing these SQL statements.
[3815] Fix | Delete
*/
[3816] Fix | Delete
if ( preg_match( '/^\s*SHOW\s+(?:TABLE\s+STATUS|(?:FULL\s+)?TABLES)\s+(?:WHERE\s+Name\s+)?LIKE\s*("|\')((?:[\\\\0-9a-zA-Z$_.-]|[\xC2-\xDF][\x80-\xBF])+)%?\\1/is', $query, $maybe ) ) {
[3817] Fix | Delete
return str_replace( '\\_', '_', $maybe[2] );
[3818] Fix | Delete
}
[3819] Fix | Delete
[3820] Fix | Delete
// Big pattern for the rest of the table-related queries.
[3821] Fix | Delete
if ( preg_match(
[3822] Fix | Delete
'/^\s*(?:'
[3823] Fix | Delete
. '(?:EXPLAIN\s+(?:EXTENDED\s+)?)?SELECT.*?\s+FROM'
[3824] Fix | Delete
. '|DESCRIBE|DESC|EXPLAIN|HANDLER'
[3825] Fix | Delete
. '|(?:LOCK|UNLOCK)\s+TABLE(?:S)?'
[3826] Fix | Delete
. '|(?:RENAME|OPTIMIZE|BACKUP|RESTORE|CHECK|CHECKSUM|ANALYZE|REPAIR).*\s+TABLE'
[3827] Fix | Delete
. '|TRUNCATE(?:\s+TABLE)?'
[3828] Fix | Delete
. '|CREATE(?:\s+TEMPORARY)?\s+TABLE(?:\s+IF\s+NOT\s+EXISTS)?'
[3829] Fix | Delete
. '|ALTER(?:\s+IGNORE)?\s+TABLE'
[3830] Fix | Delete
. '|DROP\s+TABLE(?:\s+IF\s+EXISTS)?'
[3831] Fix | Delete
. '|CREATE(?:\s+\w+)?\s+INDEX.*\s+ON'
[3832] Fix | Delete
. '|DROP\s+INDEX.*\s+ON'
[3833] Fix | Delete
. '|LOAD\s+DATA.*INFILE.*INTO\s+TABLE'
[3834] Fix | Delete
. '|(?:GRANT|REVOKE).*ON\s+TABLE'
[3835] Fix | Delete
. '|SHOW\s+(?:.*FROM|.*TABLE)'
[3836] Fix | Delete
. ')\s+\(*\s*((?:[0-9a-zA-Z$_.`-]|[\xC2-\xDF][\x80-\xBF])+)\s*\)*/is',
[3837] Fix | Delete
$query,
[3838] Fix | Delete
$maybe
[3839] Fix | Delete
) ) {
[3840] Fix | Delete
return str_replace( '`', '', $maybe[1] );
[3841] Fix | Delete
}
[3842] Fix | Delete
[3843] Fix | Delete
return false;
[3844] Fix | Delete
}
[3845] Fix | Delete
[3846] Fix | Delete
/**
[3847] Fix | Delete
* Loads the column metadata from the last query.
[3848] Fix | Delete
*
[3849] Fix | Delete
* @since 3.5.0
[3850] Fix | Delete
*/
[3851] Fix | Delete
protected function load_col_info() {
[3852] Fix | Delete
if ( $this->col_info ) {
[3853] Fix | Delete
return;
[3854] Fix | Delete
}
[3855] Fix | Delete
[3856] Fix | Delete
$num_fields = mysqli_num_fields( $this->result );
[3857] Fix | Delete
[3858] Fix | Delete
for ( $i = 0; $i < $num_fields; $i++ ) {
[3859] Fix | Delete
$this->col_info[ $i ] = mysqli_fetch_field( $this->result );
[3860] Fix | Delete
}
[3861] Fix | Delete
}
[3862] Fix | Delete
[3863] Fix | Delete
/**
[3864] Fix | Delete
* Retrieves column metadata from the last query.
[3865] Fix | Delete
*
[3866] Fix | Delete
* @since 0.71
[3867] Fix | Delete
*
[3868] Fix | Delete
* @param string $info_type Optional. Possible values include 'name', 'table', 'def', 'max_length',
[3869] Fix | Delete
* 'not_null', 'primary_key', 'multiple_key', 'unique_key', 'numeric',
[3870] Fix | Delete
* 'blob', 'type', 'unsigned', 'zerofill'. Default 'name'.
[3871] Fix | Delete
* @param int $col_offset Optional. 0: col name. 1: which table the col's in. 2: col's max length.
[3872] Fix | Delete
* 3: if the col is numeric. 4: col's type. Default -1.
[3873] Fix | Delete
* @return mixed Column results.
[3874] Fix | Delete
*/
[3875] Fix | Delete
public function get_col_info( $info_type = 'name', $col_offset = -1 ) {
[3876] Fix | Delete
$this->load_col_info();
[3877] Fix | Delete
[3878] Fix | Delete
if ( $this->col_info ) {
[3879] Fix | Delete
if ( -1 === $col_offset ) {
[3880] Fix | Delete
$i = 0;
[3881] Fix | Delete
$new_array = array();
[3882] Fix | Delete
foreach ( (array) $this->col_info as $col ) {
[3883] Fix | Delete
$new_array[ $i ] = $col->{$info_type};
[3884] Fix | Delete
++$i;
[3885] Fix | Delete
}
[3886] Fix | Delete
return $new_array;
[3887] Fix | Delete
} else {
[3888] Fix | Delete
return $this->col_info[ $col_offset ]->{$info_type};
[3889] Fix | Delete
}
[3890] Fix | Delete
}
[3891] Fix | Delete
}
[3892] Fix | Delete
[3893] Fix | Delete
/**
[3894] Fix | Delete
* Starts the timer, for debugging purposes.
[3895] Fix | Delete
*
[3896] Fix | Delete
* @since 1.5.0
[3897] Fix | Delete
*
[3898] Fix | Delete
* @return true
[3899] Fix | Delete
*/
[3900] Fix | Delete
public function timer_start() {
[3901] Fix | Delete
$this->time_start = microtime( true );
[3902] Fix | Delete
return true;
[3903] Fix | Delete
}
[3904] Fix | Delete
[3905] Fix | Delete
/**
[3906] Fix | Delete
* Stops the debugging timer.
[3907] Fix | Delete
*
[3908] Fix | Delete
* @since 1.5.0
[3909] Fix | Delete
*
[3910] Fix | Delete
* @return float Total time spent on the query, in seconds.
[3911] Fix | Delete
*/
[3912] Fix | Delete
public function timer_stop() {
[3913] Fix | Delete
return ( microtime( true ) - $this->time_start );
[3914] Fix | Delete
}
[3915] Fix | Delete
[3916] Fix | Delete
/**
[3917] Fix | Delete
* Wraps errors in a nice header and footer and dies.
[3918] Fix | Delete
*
[3919] Fix | Delete
* Will not die if wpdb::$show_errors is false.
[3920] Fix | Delete
*
[3921] Fix | Delete
* @since 1.5.0
[3922] Fix | Delete
*
[3923] Fix | Delete
* @param string $message The error message.
[3924] Fix | Delete
* @param string $error_code Optional. A computer-readable string to identify the error.
[3925] Fix | Delete
* Default '500'.
[3926] Fix | Delete
* @return void|false Void if the showing of errors is enabled, false if disabled.
[3927] Fix | Delete
*/
[3928] Fix | Delete
public function bail( $message, $error_code = '500' ) {
[3929] Fix | Delete
if ( $this->show_errors ) {
[3930] Fix | Delete
$error = '';
[3931] Fix | Delete
[3932] Fix | Delete
if ( $this->dbh instanceof mysqli ) {
[3933] Fix | Delete
$error = mysqli_error( $this->dbh );
[3934] Fix | Delete
} elseif ( mysqli_connect_errno() ) {
[3935] Fix | Delete
$error = mysqli_connect_error();
[3936] Fix | Delete
}
[3937] Fix | Delete
[3938] Fix | Delete
if ( $error ) {
[3939] Fix | Delete
$message = '<p><code>' . $error . "</code></p>\n" . $message;
[3940] Fix | Delete
}
[3941] Fix | Delete
[3942] Fix | Delete
wp_die( $message );
[3943] Fix | Delete
} else {
[3944] Fix | Delete
if ( class_exists( 'WP_Error', false ) ) {
[3945] Fix | Delete
$this->error = new WP_Error( $error_code, $message );
[3946] Fix | Delete
} else {
[3947] Fix | Delete
$this->error = $message;
[3948] Fix | Delete
}
[3949] Fix | Delete
[3950] Fix | Delete
return false;
[3951] Fix | Delete
}
[3952] Fix | Delete
}
[3953] Fix | Delete
[3954] Fix | Delete
/**
[3955] Fix | Delete
* Closes the current database connection.
[3956] Fix | Delete
*
[3957] Fix | Delete
* @since 4.5.0
[3958] Fix | Delete
*
[3959] Fix | Delete
* @return bool True if the connection was successfully closed,
[3960] Fix | Delete
* false if it wasn't, or if the connection doesn't exist.
[3961] Fix | Delete
*/
[3962] Fix | Delete
public function close() {
[3963] Fix | Delete
if ( ! $this->dbh ) {
[3964] Fix | Delete
return false;
[3965] Fix | Delete
}
[3966] Fix | Delete
[3967] Fix | Delete
$closed = mysqli_close( $this->dbh );
[3968] Fix | Delete
[3969] Fix | Delete
if ( $closed ) {
[3970] Fix | Delete
$this->dbh = null;
[3971] Fix | Delete
$this->ready = false;
[3972] Fix | Delete
$this->has_connected = false;
[3973] Fix | Delete
}
[3974] Fix | Delete
[3975] Fix | Delete
return $closed;
[3976] Fix | Delete
}
[3977] Fix | Delete
[3978] Fix | Delete
/**
[3979] Fix | Delete
* Determines whether MySQL database is at least the required minimum version.
[3980] Fix | Delete
*
[3981] Fix | Delete
* @since 2.5.0
[3982] Fix | Delete
*
[3983] Fix | Delete
* @global string $wp_version The WordPress version string.
[3984] Fix | Delete
* @global string $required_mysql_version The required MySQL version string.
[3985] Fix | Delete
* @return void|WP_Error
[3986] Fix | Delete
*/
[3987] Fix | Delete
public function check_database_version() {
[3988] Fix | Delete
global $wp_version, $required_mysql_version;
[3989] Fix | Delete
// Make sure the server has the required MySQL version.
[3990] Fix | Delete
if ( version_compare( $this->db_version(), $required_mysql_version, '<' ) ) {
[3991] Fix | Delete
/* translators: 1: WordPress version number, 2: Minimum required MySQL version number. */
[3992] Fix | Delete
return new WP_Error( 'database_version', sprintf( __( '<strong>Error:</strong> WordPress %1$s requires MySQL %2$s or higher' ), $wp_version, $required_mysql_version ) );
[3993] Fix | Delete
}
[3994] Fix | Delete
}
[3995] Fix | Delete
[3996] Fix | Delete
/**
[3997] Fix | Delete
* Determines whether the database supports collation.
[3998] Fix | Delete
*
[3999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function