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
}
[3000] Fix | Delete
[3001] Fix | Delete
/**
[3002] Fix | Delete
* Retrieves one value from the database.
[3003] Fix | Delete
*
[3004] Fix | Delete
* Executes a SQL query and returns the value from the SQL result.
[3005] Fix | Delete
* If the SQL result contains more than one column and/or more than one row,
[3006] Fix | Delete
* the value in the column and row specified is returned. If $query is null,
[3007] Fix | Delete
* the value in the specified column and row from the previous SQL result is returned.
[3008] Fix | Delete
*
[3009] Fix | Delete
* @since 0.71
[3010] Fix | Delete
*
[3011] Fix | Delete
* @param string|null $query Optional. SQL query. Defaults to null, use the result from the previous query.
[3012] Fix | Delete
* @param int $x Optional. Column of value to return. Indexed from 0. Default 0.
[3013] Fix | Delete
* @param int $y Optional. Row of value to return. Indexed from 0. Default 0.
[3014] Fix | Delete
* @return string|null Database query result (as string), or null on failure.
[3015] Fix | Delete
*/
[3016] Fix | Delete
public function get_var( $query = null, $x = 0, $y = 0 ) {
[3017] Fix | Delete
$this->func_call = "\$db->get_var(\"$query\", $x, $y)";
[3018] Fix | Delete
[3019] Fix | Delete
if ( $query ) {
[3020] Fix | Delete
if ( $this->check_current_query && $this->check_safe_collation( $query ) ) {
[3021] Fix | Delete
$this->check_current_query = false;
[3022] Fix | Delete
}
[3023] Fix | Delete
[3024] Fix | Delete
$this->query( $query );
[3025] Fix | Delete
}
[3026] Fix | Delete
[3027] Fix | Delete
// Extract var out of cached results based on x,y vals.
[3028] Fix | Delete
if ( ! empty( $this->last_result[ $y ] ) ) {
[3029] Fix | Delete
$values = array_values( get_object_vars( $this->last_result[ $y ] ) );
[3030] Fix | Delete
}
[3031] Fix | Delete
[3032] Fix | Delete
// If there is a value return it, else return null.
[3033] Fix | Delete
return ( isset( $values[ $x ] ) && '' !== $values[ $x ] ) ? $values[ $x ] : null;
[3034] Fix | Delete
}
[3035] Fix | Delete
[3036] Fix | Delete
/**
[3037] Fix | Delete
* Retrieves one row from the database.
[3038] Fix | Delete
*
[3039] Fix | Delete
* Executes a SQL query and returns the row from the SQL result.
[3040] Fix | Delete
*
[3041] Fix | Delete
* @since 0.71
[3042] Fix | Delete
*
[3043] Fix | Delete
* @param string|null $query SQL query.
[3044] Fix | Delete
* @param string $output Optional. The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which
[3045] Fix | Delete
* correspond to an stdClass object, an associative array, or a numeric array,
[3046] Fix | Delete
* respectively. Default OBJECT.
[3047] Fix | Delete
* @param int $y Optional. Row to return. Indexed from 0. Default 0.
[3048] Fix | Delete
* @return array|object|null|void Database query result in format specified by $output or null on failure.
[3049] Fix | Delete
*/
[3050] Fix | Delete
public function get_row( $query = null, $output = OBJECT, $y = 0 ) {
[3051] Fix | Delete
$this->func_call = "\$db->get_row(\"$query\",$output,$y)";
[3052] Fix | Delete
[3053] Fix | Delete
if ( $query ) {
[3054] Fix | Delete
if ( $this->check_current_query && $this->check_safe_collation( $query ) ) {
[3055] Fix | Delete
$this->check_current_query = false;
[3056] Fix | Delete
}
[3057] Fix | Delete
[3058] Fix | Delete
$this->query( $query );
[3059] Fix | Delete
} else {
[3060] Fix | Delete
return null;
[3061] Fix | Delete
}
[3062] Fix | Delete
[3063] Fix | Delete
if ( ! isset( $this->last_result[ $y ] ) ) {
[3064] Fix | Delete
return null;
[3065] Fix | Delete
}
[3066] Fix | Delete
[3067] Fix | Delete
if ( OBJECT === $output ) {
[3068] Fix | Delete
return $this->last_result[ $y ] ? $this->last_result[ $y ] : null;
[3069] Fix | Delete
} elseif ( ARRAY_A === $output ) {
[3070] Fix | Delete
return $this->last_result[ $y ] ? get_object_vars( $this->last_result[ $y ] ) : null;
[3071] Fix | Delete
} elseif ( ARRAY_N === $output ) {
[3072] Fix | Delete
return $this->last_result[ $y ] ? array_values( get_object_vars( $this->last_result[ $y ] ) ) : null;
[3073] Fix | Delete
} elseif ( OBJECT === strtoupper( $output ) ) {
[3074] Fix | Delete
// Back compat for OBJECT being previously case-insensitive.
[3075] Fix | Delete
return $this->last_result[ $y ] ? $this->last_result[ $y ] : null;
[3076] Fix | Delete
} else {
[3077] Fix | Delete
$this->print_error( ' $db->get_row(string query, output type, int offset) -- Output type must be one of: OBJECT, ARRAY_A, ARRAY_N' );
[3078] Fix | Delete
}
[3079] Fix | Delete
}
[3080] Fix | Delete
[3081] Fix | Delete
/**
[3082] Fix | Delete
* Retrieves one column from the database.
[3083] Fix | Delete
*
[3084] Fix | Delete
* Executes a SQL query and returns the column from the SQL result.
[3085] Fix | Delete
* If the SQL result contains more than one column, the column specified is returned.
[3086] Fix | Delete
* If $query is null, the specified column from the previous SQL result is returned.
[3087] Fix | Delete
*
[3088] Fix | Delete
* @since 0.71
[3089] Fix | Delete
*
[3090] Fix | Delete
* @param string|null $query Optional. SQL query. Defaults to previous query.
[3091] Fix | Delete
* @param int $x Optional. Column to return. Indexed from 0. Default 0.
[3092] Fix | Delete
* @return array Database query result. Array indexed from 0 by SQL result row number.
[3093] Fix | Delete
*/
[3094] Fix | Delete
public function get_col( $query = null, $x = 0 ) {
[3095] Fix | Delete
if ( $query ) {
[3096] Fix | Delete
if ( $this->check_current_query && $this->check_safe_collation( $query ) ) {
[3097] Fix | Delete
$this->check_current_query = false;
[3098] Fix | Delete
}
[3099] Fix | Delete
[3100] Fix | Delete
$this->query( $query );
[3101] Fix | Delete
}
[3102] Fix | Delete
[3103] Fix | Delete
$new_array = array();
[3104] Fix | Delete
// Extract the column values.
[3105] Fix | Delete
if ( $this->last_result ) {
[3106] Fix | Delete
for ( $i = 0, $j = count( $this->last_result ); $i < $j; $i++ ) {
[3107] Fix | Delete
$new_array[ $i ] = $this->get_var( null, $x, $i );
[3108] Fix | Delete
}
[3109] Fix | Delete
}
[3110] Fix | Delete
return $new_array;
[3111] Fix | Delete
}
[3112] Fix | Delete
[3113] Fix | Delete
/**
[3114] Fix | Delete
* Retrieves an entire SQL result set from the database (i.e., many rows).
[3115] Fix | Delete
*
[3116] Fix | Delete
* Executes a SQL query and returns the entire SQL result.
[3117] Fix | Delete
*
[3118] Fix | Delete
* @since 0.71
[3119] Fix | Delete
*
[3120] Fix | Delete
* @param string $query SQL query.
[3121] Fix | Delete
* @param string $output Optional. Any of ARRAY_A | ARRAY_N | OBJECT | OBJECT_K constants.
[3122] Fix | Delete
* With one of the first three, return an array of rows indexed
[3123] Fix | Delete
* from 0 by SQL result row number. Each row is an associative array
[3124] Fix | Delete
* (column => value, ...), a numerically indexed array (0 => value, ...),
[3125] Fix | Delete
* or an object ( ->column = value ), respectively. With OBJECT_K,
[3126] Fix | Delete
* return an associative array of row objects keyed by the value
[3127] Fix | Delete
* of each row's first column's value. Duplicate keys are discarded.
[3128] Fix | Delete
* Default OBJECT.
[3129] Fix | Delete
* @return array|object|null Database query results.
[3130] Fix | Delete
*/
[3131] Fix | Delete
public function get_results( $query = null, $output = OBJECT ) {
[3132] Fix | Delete
$this->func_call = "\$db->get_results(\"$query\", $output)";
[3133] Fix | Delete
[3134] Fix | Delete
if ( $query ) {
[3135] Fix | Delete
if ( $this->check_current_query && $this->check_safe_collation( $query ) ) {
[3136] Fix | Delete
$this->check_current_query = false;
[3137] Fix | Delete
}
[3138] Fix | Delete
[3139] Fix | Delete
$this->query( $query );
[3140] Fix | Delete
} else {
[3141] Fix | Delete
return null;
[3142] Fix | Delete
}
[3143] Fix | Delete
[3144] Fix | Delete
$new_array = array();
[3145] Fix | Delete
if ( OBJECT === $output ) {
[3146] Fix | Delete
// Return an integer-keyed array of row objects.
[3147] Fix | Delete
return $this->last_result;
[3148] Fix | Delete
} elseif ( OBJECT_K === $output ) {
[3149] Fix | Delete
/*
[3150] Fix | Delete
* Return an array of row objects with keys from column 1.
[3151] Fix | Delete
* (Duplicates are discarded.)
[3152] Fix | Delete
*/
[3153] Fix | Delete
if ( $this->last_result ) {
[3154] Fix | Delete
foreach ( $this->last_result as $row ) {
[3155] Fix | Delete
$var_by_ref = get_object_vars( $row );
[3156] Fix | Delete
$key = array_shift( $var_by_ref );
[3157] Fix | Delete
if ( ! isset( $new_array[ $key ] ) ) {
[3158] Fix | Delete
$new_array[ $key ] = $row;
[3159] Fix | Delete
}
[3160] Fix | Delete
}
[3161] Fix | Delete
}
[3162] Fix | Delete
return $new_array;
[3163] Fix | Delete
} elseif ( ARRAY_A === $output || ARRAY_N === $output ) {
[3164] Fix | Delete
// Return an integer-keyed array of...
[3165] Fix | Delete
if ( $this->last_result ) {
[3166] Fix | Delete
if ( ARRAY_N === $output ) {
[3167] Fix | Delete
foreach ( (array) $this->last_result as $row ) {
[3168] Fix | Delete
// ...integer-keyed row arrays.
[3169] Fix | Delete
$new_array[] = array_values( get_object_vars( $row ) );
[3170] Fix | Delete
}
[3171] Fix | Delete
} else {
[3172] Fix | Delete
foreach ( (array) $this->last_result as $row ) {
[3173] Fix | Delete
// ...column name-keyed row arrays.
[3174] Fix | Delete
$new_array[] = get_object_vars( $row );
[3175] Fix | Delete
}
[3176] Fix | Delete
}
[3177] Fix | Delete
}
[3178] Fix | Delete
return $new_array;
[3179] Fix | Delete
} elseif ( strtoupper( $output ) === OBJECT ) {
[3180] Fix | Delete
// Back compat for OBJECT being previously case-insensitive.
[3181] Fix | Delete
return $this->last_result;
[3182] Fix | Delete
}
[3183] Fix | Delete
return null;
[3184] Fix | Delete
}
[3185] Fix | Delete
[3186] Fix | Delete
/**
[3187] Fix | Delete
* Retrieves the character set for the given table.
[3188] Fix | Delete
*
[3189] Fix | Delete
* @since 4.2.0
[3190] Fix | Delete
*
[3191] Fix | Delete
* @param string $table Table name.
[3192] Fix | Delete
* @return string|WP_Error Table character set, WP_Error object if it couldn't be found.
[3193] Fix | Delete
*/
[3194] Fix | Delete
protected function get_table_charset( $table ) {
[3195] Fix | Delete
$tablekey = strtolower( $table );
[3196] Fix | Delete
[3197] Fix | Delete
/**
[3198] Fix | Delete
* Filters the table charset value before the DB is checked.
[3199] Fix | Delete
*
[3200] Fix | Delete
* Returning a non-null value from the filter will effectively short-circuit
[3201] Fix | Delete
* checking the DB for the charset, returning that value instead.
[3202] Fix | Delete
*
[3203] Fix | Delete
* @since 4.2.0
[3204] Fix | Delete
*
[3205] Fix | Delete
* @param string|WP_Error|null $charset The character set to use, WP_Error object
[3206] Fix | Delete
* if it couldn't be found. Default null.
[3207] Fix | Delete
* @param string $table The name of the table being checked.
[3208] Fix | Delete
*/
[3209] Fix | Delete
$charset = apply_filters( 'pre_get_table_charset', null, $table );
[3210] Fix | Delete
if ( null !== $charset ) {
[3211] Fix | Delete
return $charset;
[3212] Fix | Delete
}
[3213] Fix | Delete
[3214] Fix | Delete
if ( isset( $this->table_charset[ $tablekey ] ) ) {
[3215] Fix | Delete
return $this->table_charset[ $tablekey ];
[3216] Fix | Delete
}
[3217] Fix | Delete
[3218] Fix | Delete
$charsets = array();
[3219] Fix | Delete
$columns = array();
[3220] Fix | Delete
[3221] Fix | Delete
$table_parts = explode( '.', $table );
[3222] Fix | Delete
$table = '`' . implode( '`.`', $table_parts ) . '`';
[3223] Fix | Delete
$results = $this->get_results( "SHOW FULL COLUMNS FROM $table" );
[3224] Fix | Delete
if ( ! $results ) {
[3225] Fix | Delete
return new WP_Error( 'wpdb_get_table_charset_failure', __( 'Could not retrieve table charset.' ) );
[3226] Fix | Delete
}
[3227] Fix | Delete
[3228] Fix | Delete
foreach ( $results as $column ) {
[3229] Fix | Delete
$columns[ strtolower( $column->Field ) ] = $column;
[3230] Fix | Delete
}
[3231] Fix | Delete
[3232] Fix | Delete
$this->col_meta[ $tablekey ] = $columns;
[3233] Fix | Delete
[3234] Fix | Delete
foreach ( $columns as $column ) {
[3235] Fix | Delete
if ( ! empty( $column->Collation ) ) {
[3236] Fix | Delete
list( $charset ) = explode( '_', $column->Collation );
[3237] Fix | Delete
[3238] Fix | Delete
$charsets[ strtolower( $charset ) ] = true;
[3239] Fix | Delete
}
[3240] Fix | Delete
[3241] Fix | Delete
list( $type ) = explode( '(', $column->Type );
[3242] Fix | Delete
[3243] Fix | Delete
// A binary/blob means the whole query gets treated like this.
[3244] Fix | Delete
if ( in_array( strtoupper( $type ), array( 'BINARY', 'VARBINARY', 'TINYBLOB', 'MEDIUMBLOB', 'BLOB', 'LONGBLOB' ), true ) ) {
[3245] Fix | Delete
$this->table_charset[ $tablekey ] = 'binary';
[3246] Fix | Delete
return 'binary';
[3247] Fix | Delete
}
[3248] Fix | Delete
}
[3249] Fix | Delete
[3250] Fix | Delete
// utf8mb3 is an alias for utf8.
[3251] Fix | Delete
if ( isset( $charsets['utf8mb3'] ) ) {
[3252] Fix | Delete
$charsets['utf8'] = true;
[3253] Fix | Delete
unset( $charsets['utf8mb3'] );
[3254] Fix | Delete
}
[3255] Fix | Delete
[3256] Fix | Delete
// Check if we have more than one charset in play.
[3257] Fix | Delete
$count = count( $charsets );
[3258] Fix | Delete
if ( 1 === $count ) {
[3259] Fix | Delete
$charset = key( $charsets );
[3260] Fix | Delete
} elseif ( 0 === $count ) {
[3261] Fix | Delete
// No charsets, assume this table can store whatever.
[3262] Fix | Delete
$charset = false;
[3263] Fix | Delete
} else {
[3264] Fix | Delete
// More than one charset. Remove latin1 if present and recalculate.
[3265] Fix | Delete
unset( $charsets['latin1'] );
[3266] Fix | Delete
$count = count( $charsets );
[3267] Fix | Delete
if ( 1 === $count ) {
[3268] Fix | Delete
// Only one charset (besides latin1).
[3269] Fix | Delete
$charset = key( $charsets );
[3270] Fix | Delete
} elseif ( 2 === $count && isset( $charsets['utf8'], $charsets['utf8mb4'] ) ) {
[3271] Fix | Delete
// Two charsets, but they're utf8 and utf8mb4, use utf8.
[3272] Fix | Delete
$charset = 'utf8';
[3273] Fix | Delete
} else {
[3274] Fix | Delete
// Two mixed character sets. ascii.
[3275] Fix | Delete
$charset = 'ascii';
[3276] Fix | Delete
}
[3277] Fix | Delete
}
[3278] Fix | Delete
[3279] Fix | Delete
$this->table_charset[ $tablekey ] = $charset;
[3280] Fix | Delete
return $charset;
[3281] Fix | Delete
}
[3282] Fix | Delete
[3283] Fix | Delete
/**
[3284] Fix | Delete
* Retrieves the character set for the given column.
[3285] Fix | Delete
*
[3286] Fix | Delete
* @since 4.2.0
[3287] Fix | Delete
*
[3288] Fix | Delete
* @param string $table Table name.
[3289] Fix | Delete
* @param string $column Column name.
[3290] Fix | Delete
* @return string|false|WP_Error Column character set as a string. False if the column has
[3291] Fix | Delete
* no character set. WP_Error object if there was an error.
[3292] Fix | Delete
*/
[3293] Fix | Delete
public function get_col_charset( $table, $column ) {
[3294] Fix | Delete
$tablekey = strtolower( $table );
[3295] Fix | Delete
$columnkey = strtolower( $column );
[3296] Fix | Delete
[3297] Fix | Delete
/**
[3298] Fix | Delete
* Filters the column charset value before the DB is checked.
[3299] Fix | Delete
*
[3300] Fix | Delete
* Passing a non-null value to the filter will short-circuit
[3301] Fix | Delete
* checking the DB for the charset, returning that value instead.
[3302] Fix | Delete
*
[3303] Fix | Delete
* @since 4.2.0
[3304] Fix | Delete
*
[3305] Fix | Delete
* @param string|null|false|WP_Error $charset The character set to use. Default null.
[3306] Fix | Delete
* @param string $table The name of the table being checked.
[3307] Fix | Delete
* @param string $column The name of the column being checked.
[3308] Fix | Delete
*/
[3309] Fix | Delete
$charset = apply_filters( 'pre_get_col_charset', null, $table, $column );
[3310] Fix | Delete
if ( null !== $charset ) {
[3311] Fix | Delete
return $charset;
[3312] Fix | Delete
}
[3313] Fix | Delete
[3314] Fix | Delete
// Skip this entirely if this isn't a MySQL database.
[3315] Fix | Delete
if ( empty( $this->is_mysql ) ) {
[3316] Fix | Delete
return false;
[3317] Fix | Delete
}
[3318] Fix | Delete
[3319] Fix | Delete
if ( empty( $this->table_charset[ $tablekey ] ) ) {
[3320] Fix | Delete
// This primes column information for us.
[3321] Fix | Delete
$table_charset = $this->get_table_charset( $table );
[3322] Fix | Delete
if ( is_wp_error( $table_charset ) ) {
[3323] Fix | Delete
return $table_charset;
[3324] Fix | Delete
}
[3325] Fix | Delete
}
[3326] Fix | Delete
[3327] Fix | Delete
// If still no column information, return the table charset.
[3328] Fix | Delete
if ( empty( $this->col_meta[ $tablekey ] ) ) {
[3329] Fix | Delete
return $this->table_charset[ $tablekey ];
[3330] Fix | Delete
}
[3331] Fix | Delete
[3332] Fix | Delete
// If this column doesn't exist, return the table charset.
[3333] Fix | Delete
if ( empty( $this->col_meta[ $tablekey ][ $columnkey ] ) ) {
[3334] Fix | Delete
return $this->table_charset[ $tablekey ];
[3335] Fix | Delete
}
[3336] Fix | Delete
[3337] Fix | Delete
// Return false when it's not a string column.
[3338] Fix | Delete
if ( empty( $this->col_meta[ $tablekey ][ $columnkey ]->Collation ) ) {
[3339] Fix | Delete
return false;
[3340] Fix | Delete
}
[3341] Fix | Delete
[3342] Fix | Delete
list( $charset ) = explode( '_', $this->col_meta[ $tablekey ][ $columnkey ]->Collation );
[3343] Fix | Delete
return $charset;
[3344] Fix | Delete
}
[3345] Fix | Delete
[3346] Fix | Delete
/**
[3347] Fix | Delete
* Retrieves the maximum string length allowed in a given column.
[3348] Fix | Delete
*
[3349] Fix | Delete
* The length may either be specified as a byte length or a character length.
[3350] Fix | Delete
*
[3351] Fix | Delete
* @since 4.2.1
[3352] Fix | Delete
*
[3353] Fix | Delete
* @param string $table Table name.
[3354] Fix | Delete
* @param string $column Column name.
[3355] Fix | Delete
* @return array|false|WP_Error {
[3356] Fix | Delete
* Array of column length information, false if the column has no length (for
[3357] Fix | Delete
* example, numeric column), WP_Error object if there was an error.
[3358] Fix | Delete
*
[3359] Fix | Delete
* @type string $type One of 'byte' or 'char'.
[3360] Fix | Delete
* @type int $length The column length.
[3361] Fix | Delete
* }
[3362] Fix | Delete
*/
[3363] Fix | Delete
public function get_col_length( $table, $column ) {
[3364] Fix | Delete
$tablekey = strtolower( $table );
[3365] Fix | Delete
$columnkey = strtolower( $column );
[3366] Fix | Delete
[3367] Fix | Delete
// Skip this entirely if this isn't a MySQL database.
[3368] Fix | Delete
if ( empty( $this->is_mysql ) ) {
[3369] Fix | Delete
return false;
[3370] Fix | Delete
}
[3371] Fix | Delete
[3372] Fix | Delete
if ( empty( $this->col_meta[ $tablekey ] ) ) {
[3373] Fix | Delete
// This primes column information for us.
[3374] Fix | Delete
$table_charset = $this->get_table_charset( $table );
[3375] Fix | Delete
if ( is_wp_error( $table_charset ) ) {
[3376] Fix | Delete
return $table_charset;
[3377] Fix | Delete
}
[3378] Fix | Delete
}
[3379] Fix | Delete
[3380] Fix | Delete
if ( empty( $this->col_meta[ $tablekey ][ $columnkey ] ) ) {
[3381] Fix | Delete
return false;
[3382] Fix | Delete
}
[3383] Fix | Delete
[3384] Fix | Delete
$typeinfo = explode( '(', $this->col_meta[ $tablekey ][ $columnkey ]->Type );
[3385] Fix | Delete
[3386] Fix | Delete
$type = strtolower( $typeinfo[0] );
[3387] Fix | Delete
if ( ! empty( $typeinfo[1] ) ) {
[3388] Fix | Delete
$length = trim( $typeinfo[1], ')' );
[3389] Fix | Delete
} else {
[3390] Fix | Delete
$length = false;
[3391] Fix | Delete
}
[3392] Fix | Delete
[3393] Fix | Delete
switch ( $type ) {
[3394] Fix | Delete
case 'char':
[3395] Fix | Delete
case 'varchar':
[3396] Fix | Delete
return array(
[3397] Fix | Delete
'type' => 'char',
[3398] Fix | Delete
'length' => (int) $length,
[3399] Fix | Delete
);
[3400] Fix | Delete
[3401] Fix | Delete
case 'binary':
[3402] Fix | Delete
case 'varbinary':
[3403] Fix | Delete
return array(
[3404] Fix | Delete
'type' => 'byte',
[3405] Fix | Delete
'length' => (int) $length,
[3406] Fix | Delete
);
[3407] Fix | Delete
[3408] Fix | Delete
case 'tinyblob':
[3409] Fix | Delete
case 'tinytext':
[3410] Fix | Delete
return array(
[3411] Fix | Delete
'type' => 'byte',
[3412] Fix | Delete
'length' => 255, // 2^8 - 1
[3413] Fix | Delete
);
[3414] Fix | Delete
[3415] Fix | Delete
case 'blob':
[3416] Fix | Delete
case 'text':
[3417] Fix | Delete
return array(
[3418] Fix | Delete
'type' => 'byte',
[3419] Fix | Delete
'length' => 65535, // 2^16 - 1
[3420] Fix | Delete
);
[3421] Fix | Delete
[3422] Fix | Delete
case 'mediumblob':
[3423] Fix | Delete
case 'mediumtext':
[3424] Fix | Delete
return array(
[3425] Fix | Delete
'type' => 'byte',
[3426] Fix | Delete
'length' => 16777215, // 2^24 - 1
[3427] Fix | Delete
);
[3428] Fix | Delete
[3429] Fix | Delete
case 'longblob':
[3430] Fix | Delete
case 'longtext':
[3431] Fix | Delete
return array(
[3432] Fix | Delete
'type' => 'byte',
[3433] Fix | Delete
'length' => 4294967295, // 2^32 - 1
[3434] Fix | Delete
);
[3435] Fix | Delete
[3436] Fix | Delete
default:
[3437] Fix | Delete
return false;
[3438] Fix | Delete
}
[3439] Fix | Delete
}
[3440] Fix | Delete
[3441] Fix | Delete
/**
[3442] Fix | Delete
* Checks if a string is ASCII.
[3443] Fix | Delete
*
[3444] Fix | Delete
* The negative regex is faster for non-ASCII strings, as it allows
[3445] Fix | Delete
* the search to finish as soon as it encounters a non-ASCII character.
[3446] Fix | Delete
*
[3447] Fix | Delete
* @since 4.2.0
[3448] Fix | Delete
*
[3449] Fix | Delete
* @param string $input_string String to check.
[3450] Fix | Delete
* @return bool True if ASCII, false if not.
[3451] Fix | Delete
*/
[3452] Fix | Delete
protected function check_ascii( $input_string ) {
[3453] Fix | Delete
if ( function_exists( 'mb_check_encoding' ) ) {
[3454] Fix | Delete
if ( mb_check_encoding( $input_string, 'ASCII' ) ) {
[3455] Fix | Delete
return true;
[3456] Fix | Delete
}
[3457] Fix | Delete
} elseif ( ! preg_match( '/[^\x00-\x7F]/', $input_string ) ) {
[3458] Fix | Delete
return true;
[3459] Fix | Delete
}
[3460] Fix | Delete
[3461] Fix | Delete
return false;
[3462] Fix | Delete
}
[3463] Fix | Delete
[3464] Fix | Delete
/**
[3465] Fix | Delete
* Checks if the query is accessing a collation considered safe on the current version of MySQL.
[3466] Fix | Delete
*
[3467] Fix | Delete
* @since 4.2.0
[3468] Fix | Delete
*
[3469] Fix | Delete
* @param string $query The query to check.
[3470] Fix | Delete
* @return bool True if the collation is safe, false if it isn't.
[3471] Fix | Delete
*/
[3472] Fix | Delete
protected function check_safe_collation( $query ) {
[3473] Fix | Delete
if ( $this->checking_collation ) {
[3474] Fix | Delete
return true;
[3475] Fix | Delete
}
[3476] Fix | Delete
[3477] Fix | Delete
// We don't need to check the collation for queries that don't read data.
[3478] Fix | Delete
$query = ltrim( $query, "\r\n\t (" );
[3479] Fix | Delete
if ( preg_match( '/^(?:SHOW|DESCRIBE|DESC|EXPLAIN|CREATE)\s/i', $query ) ) {
[3480] Fix | Delete
return true;
[3481] Fix | Delete
}
[3482] Fix | Delete
[3483] Fix | Delete
// All-ASCII queries don't need extra checking.
[3484] Fix | Delete
if ( $this->check_ascii( $query ) ) {
[3485] Fix | Delete
return true;
[3486] Fix | Delete
}
[3487] Fix | Delete
[3488] Fix | Delete
$table = $this->get_table_from_query( $query );
[3489] Fix | Delete
if ( ! $table ) {
[3490] Fix | Delete
return false;
[3491] Fix | Delete
}
[3492] Fix | Delete
[3493] Fix | Delete
$this->checking_collation = true;
[3494] Fix | Delete
$collation = $this->get_table_charset( $table );
[3495] Fix | Delete
$this->checking_collation = false;
[3496] Fix | Delete
[3497] Fix | Delete
// Tables with no collation, or latin1 only, don't need extra checking.
[3498] Fix | Delete
if ( false === $collation || 'latin1' === $collation ) {
[3499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function