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
/home/sportsfe.../httpdocs/wp-conte.../plugins/content-.../inc/freemius/includes
File: class-fs-logger.php
<?php
[0] Fix | Delete
/**
[1] Fix | Delete
* @package Freemius
[2] Fix | Delete
* @copyright Copyright (c) 2015, Freemius, Inc.
[3] Fix | Delete
* @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
[4] Fix | Delete
* @since 1.0.3
[5] Fix | Delete
*/
[6] Fix | Delete
[7] Fix | Delete
if ( ! defined( 'ABSPATH' ) ) {
[8] Fix | Delete
exit;
[9] Fix | Delete
}
[10] Fix | Delete
[11] Fix | Delete
class FS_Logger {
[12] Fix | Delete
private $_id;
[13] Fix | Delete
private $_on = false;
[14] Fix | Delete
private $_echo = false;
[15] Fix | Delete
private $_file_start = 0;
[16] Fix | Delete
/**
[17] Fix | Delete
* @var int PHP Process ID.
[18] Fix | Delete
*/
[19] Fix | Delete
private static $_processID;
[20] Fix | Delete
/**
[21] Fix | Delete
* @var string PHP Script user name.
[22] Fix | Delete
*/
[23] Fix | Delete
private static $_ownerName;
[24] Fix | Delete
/**
[25] Fix | Delete
* @var bool Is storage logging turned on.
[26] Fix | Delete
*/
[27] Fix | Delete
private static $_isStorageLoggingOn;
[28] Fix | Delete
/**
[29] Fix | Delete
* @var int ABSPATH length.
[30] Fix | Delete
*/
[31] Fix | Delete
private static $_abspathLength;
[32] Fix | Delete
[33] Fix | Delete
private static $LOGGERS = array();
[34] Fix | Delete
private static $LOG = array();
[35] Fix | Delete
private static $CNT = 0;
[36] Fix | Delete
private static $_HOOKED_FOOTER = false;
[37] Fix | Delete
[38] Fix | Delete
private function __construct( $id, $on = false, $echo = false ) {
[39] Fix | Delete
$bt = debug_backtrace();
[40] Fix | Delete
[41] Fix | Delete
$this->_id = $id;
[42] Fix | Delete
[43] Fix | Delete
$caller = $bt[2];
[44] Fix | Delete
[45] Fix | Delete
if ( false !== strpos( $caller['file'], 'plugins' ) ) {
[46] Fix | Delete
$this->_file_start = strpos( $caller['file'], 'plugins' ) + strlen( 'plugins/' );
[47] Fix | Delete
} else {
[48] Fix | Delete
$this->_file_start = strpos( $caller['file'], 'themes' ) + strlen( 'themes/' );
[49] Fix | Delete
}
[50] Fix | Delete
[51] Fix | Delete
if ( $on ) {
[52] Fix | Delete
$this->on();
[53] Fix | Delete
}
[54] Fix | Delete
if ( $echo ) {
[55] Fix | Delete
$this->echo_on();
[56] Fix | Delete
}
[57] Fix | Delete
}
[58] Fix | Delete
[59] Fix | Delete
/**
[60] Fix | Delete
* @param string $id
[61] Fix | Delete
* @param bool $on
[62] Fix | Delete
* @param bool $echo
[63] Fix | Delete
*
[64] Fix | Delete
* @return FS_Logger
[65] Fix | Delete
*/
[66] Fix | Delete
public static function get_logger( $id, $on = false, $echo = false ) {
[67] Fix | Delete
$id = strtolower( $id );
[68] Fix | Delete
[69] Fix | Delete
if ( ! isset( self::$_processID ) ) {
[70] Fix | Delete
self::init();
[71] Fix | Delete
}
[72] Fix | Delete
[73] Fix | Delete
if ( ! isset( self::$LOGGERS[ $id ] ) ) {
[74] Fix | Delete
self::$LOGGERS[ $id ] = new FS_Logger( $id, $on, $echo );
[75] Fix | Delete
}
[76] Fix | Delete
[77] Fix | Delete
return self::$LOGGERS[ $id ];
[78] Fix | Delete
}
[79] Fix | Delete
[80] Fix | Delete
/**
[81] Fix | Delete
* Initialize logging global info.
[82] Fix | Delete
*
[83] Fix | Delete
* @author Vova Feldman (@svovaf)
[84] Fix | Delete
* @since 1.2.1.6
[85] Fix | Delete
*/
[86] Fix | Delete
private static function init() {
[87] Fix | Delete
self::$_ownerName = function_exists( 'get_current_user' ) ?
[88] Fix | Delete
get_current_user() :
[89] Fix | Delete
'unknown';
[90] Fix | Delete
self::$_isStorageLoggingOn = ( 1 == get_option( 'fs_storage_logger', 0 ) );
[91] Fix | Delete
self::$_abspathLength = strlen( ABSPATH );
[92] Fix | Delete
self::$_processID = mt_rand( 0, 32000 );
[93] Fix | Delete
[94] Fix | Delete
// Process ID may be `false` on errors.
[95] Fix | Delete
if ( ! is_numeric( self::$_processID ) ) {
[96] Fix | Delete
self::$_processID = 0;
[97] Fix | Delete
}
[98] Fix | Delete
}
[99] Fix | Delete
[100] Fix | Delete
private static function hook_footer() {
[101] Fix | Delete
if ( self::$_HOOKED_FOOTER ) {
[102] Fix | Delete
return;
[103] Fix | Delete
}
[104] Fix | Delete
[105] Fix | Delete
if ( is_admin() ) {
[106] Fix | Delete
add_action( 'admin_footer', 'FS_Logger::dump', 100 );
[107] Fix | Delete
} else {
[108] Fix | Delete
add_action( 'wp_footer', 'FS_Logger::dump', 100 );
[109] Fix | Delete
}
[110] Fix | Delete
}
[111] Fix | Delete
[112] Fix | Delete
function is_on() {
[113] Fix | Delete
return $this->_on;
[114] Fix | Delete
}
[115] Fix | Delete
[116] Fix | Delete
function on() {
[117] Fix | Delete
$this->_on = true;
[118] Fix | Delete
[119] Fix | Delete
if ( ! function_exists( 'dbDelta' ) ) {
[120] Fix | Delete
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
[121] Fix | Delete
}
[122] Fix | Delete
[123] Fix | Delete
self::hook_footer();
[124] Fix | Delete
}
[125] Fix | Delete
[126] Fix | Delete
function echo_on() {
[127] Fix | Delete
$this->on();
[128] Fix | Delete
[129] Fix | Delete
$this->_echo = true;
[130] Fix | Delete
}
[131] Fix | Delete
[132] Fix | Delete
function is_echo_on() {
[133] Fix | Delete
return $this->_echo;
[134] Fix | Delete
}
[135] Fix | Delete
[136] Fix | Delete
function get_id() {
[137] Fix | Delete
return $this->_id;
[138] Fix | Delete
}
[139] Fix | Delete
[140] Fix | Delete
function get_file() {
[141] Fix | Delete
return $this->_file_start;
[142] Fix | Delete
}
[143] Fix | Delete
[144] Fix | Delete
private function _log( &$message, $type, $wrapper = false ) {
[145] Fix | Delete
if ( ! $this->is_on() ) {
[146] Fix | Delete
return;
[147] Fix | Delete
}
[148] Fix | Delete
[149] Fix | Delete
$bt = debug_backtrace();
[150] Fix | Delete
$depth = $wrapper ? 3 : 2;
[151] Fix | Delete
while ( $depth < count( $bt ) - 1 && 'eval' === $bt[ $depth ]['function'] ) {
[152] Fix | Delete
$depth ++;
[153] Fix | Delete
}
[154] Fix | Delete
[155] Fix | Delete
$caller = $bt[ $depth ];
[156] Fix | Delete
[157] Fix | Delete
/**
[158] Fix | Delete
* Retrieve the correct call file & line number from backtrace
[159] Fix | Delete
* when logging from a wrapper method.
[160] Fix | Delete
*
[161] Fix | Delete
* @author Vova Feldman
[162] Fix | Delete
* @since 1.2.1.6
[163] Fix | Delete
*/
[164] Fix | Delete
if ( empty( $caller['line'] ) ) {
[165] Fix | Delete
$depth --;
[166] Fix | Delete
[167] Fix | Delete
while ( $depth >= 0 ) {
[168] Fix | Delete
if ( ! empty( $bt[ $depth ]['line'] ) ) {
[169] Fix | Delete
$caller['line'] = $bt[ $depth ]['line'];
[170] Fix | Delete
$caller['file'] = $bt[ $depth ]['file'];
[171] Fix | Delete
break;
[172] Fix | Delete
}
[173] Fix | Delete
}
[174] Fix | Delete
}
[175] Fix | Delete
[176] Fix | Delete
$log = array_merge( $caller, array(
[177] Fix | Delete
'cnt' => self::$CNT ++,
[178] Fix | Delete
'logger' => $this,
[179] Fix | Delete
'timestamp' => microtime( true ),
[180] Fix | Delete
'log_type' => $type,
[181] Fix | Delete
'msg' => $message,
[182] Fix | Delete
) );
[183] Fix | Delete
[184] Fix | Delete
if ( self::$_isStorageLoggingOn ) {
[185] Fix | Delete
$this->db_log( $type, $message, self::$CNT, $caller );
[186] Fix | Delete
}
[187] Fix | Delete
[188] Fix | Delete
self::$LOG[] = $log;
[189] Fix | Delete
[190] Fix | Delete
if ( $this->is_echo_on() && ! Freemius::is_ajax() ) {
[191] Fix | Delete
echo self::format_html( $log ) . "\n";
[192] Fix | Delete
}
[193] Fix | Delete
}
[194] Fix | Delete
[195] Fix | Delete
function log( $message, $wrapper = false ) {
[196] Fix | Delete
$this->_log( $message, 'log', $wrapper );
[197] Fix | Delete
}
[198] Fix | Delete
[199] Fix | Delete
function info( $message, $wrapper = false ) {
[200] Fix | Delete
$this->_log( $message, 'info', $wrapper );
[201] Fix | Delete
}
[202] Fix | Delete
[203] Fix | Delete
function warn( $message, $wrapper = false ) {
[204] Fix | Delete
$this->_log( $message, 'warn', $wrapper );
[205] Fix | Delete
}
[206] Fix | Delete
[207] Fix | Delete
function error( $message, $wrapper = false ) {
[208] Fix | Delete
$this->_log( $message, 'error', $wrapper );
[209] Fix | Delete
}
[210] Fix | Delete
[211] Fix | Delete
/**
[212] Fix | Delete
* Log API error.
[213] Fix | Delete
*
[214] Fix | Delete
* @author Vova Feldman (@svovaf)
[215] Fix | Delete
* @since 1.2.1.5
[216] Fix | Delete
*
[217] Fix | Delete
* @param mixed $api_result
[218] Fix | Delete
* @param bool $wrapper
[219] Fix | Delete
*/
[220] Fix | Delete
function api_error( $api_result, $wrapper = false ) {
[221] Fix | Delete
$message = '';
[222] Fix | Delete
if ( is_object( $api_result ) &&
[223] Fix | Delete
! empty( $api_result->error ) &&
[224] Fix | Delete
! empty( $api_result->error->message )
[225] Fix | Delete
) {
[226] Fix | Delete
$message = $api_result->error->message;
[227] Fix | Delete
} else if ( is_object( $api_result ) ) {
[228] Fix | Delete
$message = var_export( $api_result, true );
[229] Fix | Delete
} else if ( is_string( $api_result ) ) {
[230] Fix | Delete
$message = $api_result;
[231] Fix | Delete
} else if ( empty( $api_result ) ) {
[232] Fix | Delete
$message = 'Empty API result.';
[233] Fix | Delete
}
[234] Fix | Delete
[235] Fix | Delete
$message = 'API Error: ' . $message;
[236] Fix | Delete
[237] Fix | Delete
$this->_log( $message, 'error', $wrapper );
[238] Fix | Delete
}
[239] Fix | Delete
[240] Fix | Delete
function entrance( $message = '', $wrapper = false ) {
[241] Fix | Delete
$msg = 'Entrance' . ( empty( $message ) ? '' : ' > ' ) . $message;
[242] Fix | Delete
[243] Fix | Delete
$this->_log( $msg, 'log', $wrapper );
[244] Fix | Delete
}
[245] Fix | Delete
[246] Fix | Delete
function departure( $message = '', $wrapper = false ) {
[247] Fix | Delete
$msg = 'Departure' . ( empty( $message ) ? '' : ' > ' ) . $message;
[248] Fix | Delete
[249] Fix | Delete
$this->_log( $msg, 'log', $wrapper );
[250] Fix | Delete
}
[251] Fix | Delete
[252] Fix | Delete
#--------------------------------------------------------------------------------
[253] Fix | Delete
#region Log Formatting
[254] Fix | Delete
#--------------------------------------------------------------------------------
[255] Fix | Delete
[256] Fix | Delete
private static function format( $log, $show_type = true ) {
[257] Fix | Delete
return '[' . str_pad( $log['cnt'], strlen( self::$CNT ), '0', STR_PAD_LEFT ) . '] [' . $log['logger']->_id . '] ' . ( $show_type ? '[' . $log['log_type'] . ']' : '' ) . ( ! empty( $log['class'] ) ? $log['class'] . $log['type'] : '' ) . $log['function'] . ' >> ' . $log['msg'] . ( isset( $log['file'] ) ? ' (' . substr( $log['file'], $log['logger']->_file_start ) . ' ' . $log['line'] . ') ' : '' ) . ' [' . $log['timestamp'] . ']';
[258] Fix | Delete
}
[259] Fix | Delete
[260] Fix | Delete
private static function format_html( $log ) {
[261] Fix | Delete
return '<div style="font-size: 13px; font-family: monospace; color: #7da767; padding: 8px 3px; background: #000; border-bottom: 1px solid #555;">[' . $log['cnt'] . '] [' . $log['logger']->_id . '] [' . $log['log_type'] . '] <b><code style="color: #c4b1e0;">' . ( ! empty( $log['class'] ) ? $log['class'] . $log['type'] : '' ) . $log['function'] . '</code> >> <b style="color: #f59330;">' . esc_html( $log['msg'] ) . '</b></b>' . ( isset( $log['file'] ) ? ' (' . substr( $log['file'], $log['logger']->_file_start ) . ' ' . $log['line'] . ')' : '' ) . ' [' . $log['timestamp'] . ']</div>';
[262] Fix | Delete
}
[263] Fix | Delete
[264] Fix | Delete
#endregion
[265] Fix | Delete
[266] Fix | Delete
static function dump() {
[267] Fix | Delete
?>
[268] Fix | Delete
<!-- BEGIN: Freemius PHP Console Log -->
[269] Fix | Delete
<script type="text/javascript">
[270] Fix | Delete
<?php
[271] Fix | Delete
foreach ( self::$LOG as $log ) {
[272] Fix | Delete
echo 'console.' . $log['log_type'] . '(' . json_encode( self::format( $log, false ) ) . ')' . "\n";
[273] Fix | Delete
}
[274] Fix | Delete
?>
[275] Fix | Delete
</script>
[276] Fix | Delete
<!-- END: Freemius PHP Console Log -->
[277] Fix | Delete
<?php
[278] Fix | Delete
}
[279] Fix | Delete
[280] Fix | Delete
static function get_log() {
[281] Fix | Delete
return self::$LOG;
[282] Fix | Delete
}
[283] Fix | Delete
[284] Fix | Delete
#--------------------------------------------------------------------------------
[285] Fix | Delete
#region Database Logging
[286] Fix | Delete
#--------------------------------------------------------------------------------
[287] Fix | Delete
[288] Fix | Delete
/**
[289] Fix | Delete
* @author Vova Feldman (@svovaf)
[290] Fix | Delete
* @since 1.2.1.6
[291] Fix | Delete
*
[292] Fix | Delete
* @return bool
[293] Fix | Delete
*/
[294] Fix | Delete
public static function is_storage_logging_on() {
[295] Fix | Delete
if ( ! isset( self::$_isStorageLoggingOn ) ) {
[296] Fix | Delete
self::$_isStorageLoggingOn = ( 1 == get_option( 'fs_storage_logger', 0 ) );
[297] Fix | Delete
}
[298] Fix | Delete
[299] Fix | Delete
return self::$_isStorageLoggingOn;
[300] Fix | Delete
}
[301] Fix | Delete
[302] Fix | Delete
/**
[303] Fix | Delete
* Turns on/off database persistent debugging to capture
[304] Fix | Delete
* multi-session logs to debug complex flows like
[305] Fix | Delete
* plugin auto-deactivate on premium version activation.
[306] Fix | Delete
*
[307] Fix | Delete
* @todo Check if Theme Check has issues with DB tables for themes.
[308] Fix | Delete
*
[309] Fix | Delete
* @author Vova Feldman (@svovaf)
[310] Fix | Delete
* @since 1.2.1.6
[311] Fix | Delete
*
[312] Fix | Delete
* @param bool $is_on
[313] Fix | Delete
*
[314] Fix | Delete
* @return bool
[315] Fix | Delete
*/
[316] Fix | Delete
public static function _set_storage_logging( $is_on = true ) {
[317] Fix | Delete
global $wpdb;
[318] Fix | Delete
[319] Fix | Delete
$table = "{$wpdb->prefix}fs_logger";
[320] Fix | Delete
[321] Fix | Delete
if ( $is_on ) {
[322] Fix | Delete
/**
[323] Fix | Delete
* Create logging table.
[324] Fix | Delete
*
[325] Fix | Delete
* NOTE:
[326] Fix | Delete
* dbDelta must use KEY and not INDEX for indexes.
[327] Fix | Delete
*
[328] Fix | Delete
* @link https://core.trac.wordpress.org/ticket/2695
[329] Fix | Delete
*/
[330] Fix | Delete
$result = $wpdb->query( "CREATE TABLE {$table} (
[331] Fix | Delete
`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
[332] Fix | Delete
`process_id` INT UNSIGNED NOT NULL,
[333] Fix | Delete
`user_name` VARCHAR(64) NOT NULL,
[334] Fix | Delete
`logger` VARCHAR(128) NOT NULL,
[335] Fix | Delete
`log_order` INT UNSIGNED NOT NULL,
[336] Fix | Delete
`type` ENUM('log','info','warn','error') NOT NULL DEFAULT 'log',
[337] Fix | Delete
`message` TEXT NOT NULL,
[338] Fix | Delete
`file` VARCHAR(256) NOT NULL,
[339] Fix | Delete
`line` INT UNSIGNED NOT NULL,
[340] Fix | Delete
`function` VARCHAR(256) NOT NULL,
[341] Fix | Delete
`request_type` ENUM('call','ajax','cron') NOT NULL DEFAULT 'call',
[342] Fix | Delete
`request_url` VARCHAR(1024) NOT NULL,
[343] Fix | Delete
`created` DECIMAL(16, 6) NOT NULL,
[344] Fix | Delete
PRIMARY KEY (`id`),
[345] Fix | Delete
KEY `process_id` (`process_id` ASC),
[346] Fix | Delete
KEY `process_logger` (`process_id` ASC, `logger` ASC),
[347] Fix | Delete
KEY `function` (`function` ASC),
[348] Fix | Delete
KEY `type` (`type` ASC))" );
[349] Fix | Delete
} else {
[350] Fix | Delete
/**
[351] Fix | Delete
* Drop logging table.
[352] Fix | Delete
*/
[353] Fix | Delete
$result = $wpdb->query( "DROP TABLE IF EXISTS $table;" );
[354] Fix | Delete
}
[355] Fix | Delete
[356] Fix | Delete
if ( false !== $result ) {
[357] Fix | Delete
update_option( 'fs_storage_logger', ( $is_on ? 1 : 0 ) );
[358] Fix | Delete
}
[359] Fix | Delete
[360] Fix | Delete
return ( false !== $result );
[361] Fix | Delete
}
[362] Fix | Delete
[363] Fix | Delete
/**
[364] Fix | Delete
* @author Vova Feldman (@svovaf)
[365] Fix | Delete
* @since 1.2.1.6
[366] Fix | Delete
*
[367] Fix | Delete
* @param string $type
[368] Fix | Delete
* @param string $message
[369] Fix | Delete
* @param int $log_order
[370] Fix | Delete
* @param array $caller
[371] Fix | Delete
*
[372] Fix | Delete
* @return false|int
[373] Fix | Delete
*/
[374] Fix | Delete
private function db_log(
[375] Fix | Delete
&$type,
[376] Fix | Delete
&$message,
[377] Fix | Delete
&$log_order,
[378] Fix | Delete
&$caller
[379] Fix | Delete
) {
[380] Fix | Delete
global $wpdb;
[381] Fix | Delete
[382] Fix | Delete
$request_type = 'call';
[383] Fix | Delete
if ( defined( 'DOING_CRON' ) && DOING_CRON ) {
[384] Fix | Delete
$request_type = 'cron';
[385] Fix | Delete
} else if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
[386] Fix | Delete
$request_type = 'ajax';
[387] Fix | Delete
}
[388] Fix | Delete
[389] Fix | Delete
$request_url = WP_FS__IS_HTTP_REQUEST ?
[390] Fix | Delete
$_SERVER['REQUEST_URI'] :
[391] Fix | Delete
'';
[392] Fix | Delete
[393] Fix | Delete
return $wpdb->insert(
[394] Fix | Delete
"{$wpdb->prefix}fs_logger",
[395] Fix | Delete
array(
[396] Fix | Delete
'process_id' => self::$_processID,
[397] Fix | Delete
'user_name' => self::$_ownerName,
[398] Fix | Delete
'logger' => $this->_id,
[399] Fix | Delete
'log_order' => $log_order,
[400] Fix | Delete
'type' => $type,
[401] Fix | Delete
'request_type' => $request_type,
[402] Fix | Delete
'request_url' => $request_url,
[403] Fix | Delete
'message' => $message,
[404] Fix | Delete
'file' => isset( $caller['file'] ) ?
[405] Fix | Delete
substr( $caller['file'], self::$_abspathLength ) :
[406] Fix | Delete
'',
[407] Fix | Delete
'line' => $caller['line'],
[408] Fix | Delete
'function' => ( ! empty( $caller['class'] ) ? $caller['class'] . $caller['type'] : '' ) . $caller['function'],
[409] Fix | Delete
'created' => microtime( true ),
[410] Fix | Delete
)
[411] Fix | Delete
);
[412] Fix | Delete
}
[413] Fix | Delete
[414] Fix | Delete
/**
[415] Fix | Delete
* Persistent DB logger columns.
[416] Fix | Delete
*
[417] Fix | Delete
* @var array
[418] Fix | Delete
*/
[419] Fix | Delete
private static $_log_columns = array(
[420] Fix | Delete
'id',
[421] Fix | Delete
'process_id',
[422] Fix | Delete
'user_name',
[423] Fix | Delete
'logger',
[424] Fix | Delete
'log_order',
[425] Fix | Delete
'type',
[426] Fix | Delete
'message',
[427] Fix | Delete
'file',
[428] Fix | Delete
'line',
[429] Fix | Delete
'function',
[430] Fix | Delete
'request_type',
[431] Fix | Delete
'request_url',
[432] Fix | Delete
'created',
[433] Fix | Delete
);
[434] Fix | Delete
[435] Fix | Delete
/**
[436] Fix | Delete
* Create DB logs query.
[437] Fix | Delete
*
[438] Fix | Delete
* @author Vova Feldman (@svovaf)
[439] Fix | Delete
* @since 1.2.1.6
[440] Fix | Delete
*
[441] Fix | Delete
* @param bool $filters
[442] Fix | Delete
* @param int $limit
[443] Fix | Delete
* @param int $offset
[444] Fix | Delete
* @param bool $order
[445] Fix | Delete
* @param bool $escape_eol
[446] Fix | Delete
*
[447] Fix | Delete
* @return string
[448] Fix | Delete
*/
[449] Fix | Delete
private static function build_db_logs_query(
[450] Fix | Delete
$filters = false,
[451] Fix | Delete
$limit = 200,
[452] Fix | Delete
$offset = 0,
[453] Fix | Delete
$order = false,
[454] Fix | Delete
$escape_eol = false
[455] Fix | Delete
) {
[456] Fix | Delete
global $wpdb;
[457] Fix | Delete
[458] Fix | Delete
$select = '*';
[459] Fix | Delete
[460] Fix | Delete
if ( $escape_eol ) {
[461] Fix | Delete
$select = '';
[462] Fix | Delete
for ( $i = 0, $len = count( self::$_log_columns ); $i < $len; $i ++ ) {
[463] Fix | Delete
if ( $i > 0 ) {
[464] Fix | Delete
$select .= ', ';
[465] Fix | Delete
}
[466] Fix | Delete
[467] Fix | Delete
if ( 'message' !== self::$_log_columns[ $i ] ) {
[468] Fix | Delete
$select .= self::$_log_columns[ $i ];
[469] Fix | Delete
} else {
[470] Fix | Delete
$select .= 'REPLACE(message , \'\n\', \' \') AS message';
[471] Fix | Delete
}
[472] Fix | Delete
}
[473] Fix | Delete
}
[474] Fix | Delete
[475] Fix | Delete
$query = "SELECT {$select} FROM {$wpdb->prefix}fs_logger";
[476] Fix | Delete
if ( is_array( $filters ) ) {
[477] Fix | Delete
$criteria = array();
[478] Fix | Delete
[479] Fix | Delete
if ( ! empty( $filters['type'] ) && 'all' !== $filters['type'] ) {
[480] Fix | Delete
$filters['type'] = strtolower( $filters['type'] );
[481] Fix | Delete
[482] Fix | Delete
switch ( $filters['type'] ) {
[483] Fix | Delete
case 'warn_error':
[484] Fix | Delete
$criteria[] = array( 'col' => 'type', 'val' => array( 'warn', 'error' ) );
[485] Fix | Delete
break;
[486] Fix | Delete
case 'error':
[487] Fix | Delete
case 'warn':
[488] Fix | Delete
$criteria[] = array( 'col' => 'type', 'val' => $filters['type'] );
[489] Fix | Delete
break;
[490] Fix | Delete
case 'info':
[491] Fix | Delete
default:
[492] Fix | Delete
$criteria[] = array( 'col' => 'type', 'val' => array( 'info', 'log' ) );
[493] Fix | Delete
break;
[494] Fix | Delete
}
[495] Fix | Delete
}
[496] Fix | Delete
[497] Fix | Delete
if ( ! empty( $filters['request_type'] ) ) {
[498] Fix | Delete
$filters['request_type'] = strtolower( $filters['request_type'] );
[499] Fix | Delete
12
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function