: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
if ( in_array( $filters['request_type'], array( 'call', 'ajax', 'cron' ) ) ) {
$criteria[] = array( 'col' => 'request_type', 'val' => $filters['request_type'] );
if ( ! empty( $filters['file'] ) ) {
'val' => '%' . esc_sql( $filters['file'] ),
if ( ! empty( $filters['function'] ) ) {
'val' => '%' . esc_sql( $filters['function'] ),
if ( ! empty( $filters['process_id'] ) && is_numeric( $filters['process_id'] ) ) {
$criteria[] = array( 'col' => 'process_id', 'val' => $filters['process_id'] );
if ( ! empty( $filters['logger'] ) ) {
'val' => '%' . esc_sql( $filters['logger'] ) . '%',
if ( ! empty( $filters['message'] ) ) {
'val' => '%' . esc_sql( $filters['message'] ) . '%',
if ( 0 < count( $criteria ) ) {
foreach ( $criteria as $c ) {
if ( is_array( $c['val'] ) ) {
for ( $i = 0, $len = count( $c['val'] ); $i < $len; $i ++ ) {
$c['val'][ $i ] = "'" . esc_sql( $c['val'][ $i ] ) . "'";
$val = '(' . implode( ',', $c['val'] ) . ')';
$operator = ! empty( $c['op'] ) ? $c['op'] : '=';
$val = "'" . esc_sql( $c['val'] ) . "'";
$query .= "`{$c['col']}` {$operator} {$val}\n";
if ( ! is_array( $order ) ) {
$query .= " ORDER BY {$order['col']} {$order['order']} LIMIT {$offset},{$limit}";
* @author Vova Feldman (@svovaf)
public static function load_db_logs(
$query = self::build_db_logs_query(
return $wpdb->get_results( $query );
* @author Vova Feldman (@svovaf)
* @param string $filename
* @return false|string File download URL or false on failure.
public static function download_db_logs(
$query = self::build_db_logs_query(
$upload_dir = wp_upload_dir();
if ( empty( $filename ) ) {
$filename = 'fs-logs-' . date( 'Y-m-d_H-i-s', WP_FS__SCRIPT_START_TIME ) . '.csv';
$filepath = rtrim( $upload_dir['path'], '/' ) . "/{$filename}";
$query .= " INTO OUTFILE '{$filepath}' FIELDS TERMINATED BY '\t' ESCAPED BY '\\\\' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\\n'";
for ( $i = 0, $len = count( self::$_log_columns ); $i < $len; $i ++ ) {
$columns .= "'" . self::$_log_columns[ $i ] . "'";
$query = "SELECT {$columns} UNION ALL " . $query;
$result = $wpdb->query( $query );
if ( false === $result ) {
return rtrim( $upload_dir['url'], '/' ) . '/' . $filename;
* @author Vova Feldman (@svovaf)
* @param string $filename
public static function get_logs_download_url( $filename = '' ) {
$upload_dir = wp_upload_dir();
if ( empty( $filename ) ) {
$filename = 'fs-logs-' . date( 'Y-m-d_H-i-s', WP_FS__SCRIPT_START_TIME ) . '.csv';
return rtrim( $upload_dir['url'], '/' ) . $filename;