PluginProbe
WP Data Access – App Builder for Tables, Forms, Charts, Maps & Dashboards / 5.5.85
WP Data Access – App Builder for Tables, Forms, Charts, Maps & Dashboards v5.5.85
5.5.85 5.5.84 5.5.83 5.5.82 5.5.81 5.5.80 5.5.79 5.5.77 5.5.76 5.5.75 5.5.73 5.5.72 5.5.22 5.5.23 5.5.29 5.5.3 5.5.31 5.5.32 5.5.34 5.5.35 5.5.36 5.5.37 5.5.4 5.5.40 5.5.41 All 161 releases
← All changes | vendor/freemius/includes/class-fs-logger.php +43 -10 5.5.40 → 5.5.85 View file →
@@ -635,10 +635,20 @@
635 635 $limit = 10000,
636 636 $offset = 0,
637 637 $order = false
638 638 ) {
639 - global $wpdb;
639 + if ( empty( $filename ) ) {
640 + $filename = 'fs-logs-' . date( 'Y-m-d_H-i-s', WP_FS__SCRIPT_START_TIME ) . '.csv';
641 + }
640 642
643 + $upload_dir = wp_upload_dir();
644 + $filepath = rtrim( $upload_dir['path'], '/' ) . "/{$filename}";
645 +
646 + WP_Filesystem();
647 + if ( ! $GLOBALS['wp_filesystem']->is_writable( dirname( $filepath ) ) ) {
648 + return false;
649 + }
650 +
641 651 $query = self::build_db_logs_query(
642 652 $filters,
643 653 $limit,
644 654 $offset,
@@ -645,16 +655,8 @@
645 655 $order,
646 656 true
647 657 );
648 658
649 - $upload_dir = wp_upload_dir();
650 - if ( empty( $filename ) ) {
651 - $filename = 'fs-logs-' . date( 'Y-m-d_H-i-s', WP_FS__SCRIPT_START_TIME ) . '.csv';
652 - }
653 - $filepath = rtrim( $upload_dir['path'], '/' ) . "/{$filename}";
654 -
655 - $query .= " INTO OUTFILE '{$filepath}' FIELDS TERMINATED BY '\t' ESCAPED BY '\\\\' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\\n'";
656 -
657 659 $columns = '';
658 660 for ( $i = 0, $len = count( self::$_log_columns ); $i < $len; $i ++ ) {
659 661 if ( $i > 0 ) {
660 662 $columns .= ', ';
@@ -664,14 +666,18 @@
664 666 }
665 667
666 668 $query = "SELECT {$columns} UNION ALL " . $query;
667 669
668 - $result = $wpdb->query( $query );
670 + $result = $GLOBALS['wpdb']->get_results( $query );
669 671
670 672 if ( false === $result ) {
671 673 return false;
672 674 }
673 675
676 + if ( ! self::write_csv_to_filesystem( $filepath, $result ) ) {
677 + return false;
678 + }
679 +
674 680 return rtrim( $upload_dir['url'], '/' ) . '/' . $filename;
675 681 }
676 682
677 683 /**
@@ -688,8 +694,35 @@
688 694 $filename = 'fs-logs-' . date( 'Y-m-d_H-i-s', WP_FS__SCRIPT_START_TIME ) . '.csv';
689 695 }
690 696
691 697 return rtrim( $upload_dir['url'], '/' ) . $filename;
698 + }
699 +
700 + /**
701 + * @param string $file_path
702 + * @param array $query_results
703 + *
704 + * @return bool
705 + */
706 + private static function write_csv_to_filesystem( $file_path, $query_results ) {
707 + if ( empty( $query_results ) ) {
708 + return false;
709 + }
710 +
711 + $content = '';
712 +
713 + foreach ( $query_results as $row ) {
714 + $row_data = array_map( function ( $value ) {
715 + return str_replace( "\n", ' ', $value );
716 + }, (array) $row );
717 + $content .= implode( "\t", $row_data ) . "\n";
718 + }
719 +
720 + if ( ! $GLOBALS['wp_filesystem']->put_contents( $file_path, $content, FS_CHMOD_FILE ) ) {
721 + return false;
722 + }
723 +
724 + return true;
692 725 }
693 726
694 727 #endregion
695 728 }