| @@ -66,9 +66,8 @@ | ||
| 66 | 66 | |
| 67 | 67 | $this->_addFilter( Visualizer_Plugin::FILTER_UNDO_REVISIONS, 'undoRevisions', 10, 2 ); |
| 68 | 68 | $this->_addFilter( Visualizer_Plugin::FILTER_HANDLE_REVISIONS, 'handleExistingRevisions', 10, 2 ); |
| 69 | 69 | $this->_addFilter( Visualizer_Plugin::FILTER_GET_CHART_DATA_AS, 'getDataAs', 10, 3 ); |
| 70 | - $this->_addAction( 'pre_get_posts', 'PreGetPosts' ); | |
| 71 | 70 | register_shutdown_function( array($this, 'onShutdown') ); |
| 72 | 71 | |
| 73 | 72 | } |
| 74 | 73 | |
| @@ -268,16 +267,9 @@ | ||
| 268 | 267 | private function _getCSV( $rows, $filename, $enclose ) { |
| 269 | 268 | $filename .= '.csv'; |
| 270 | 269 | |
| 271 | 270 | $bom = chr( 0xEF ) . chr( 0xBB ) . chr( 0xBF ); |
| 272 | - // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged | |
| 273 | - $fp = function_exists( 'tmpfile' ) ? @tmpfile() : null; | |
| 274 | - if ( null === $fp ) { | |
| 275 | - if ( ! function_exists( 'wp_tempnam' ) ) { | |
| 276 | - require_once ABSPATH . 'wp-admin/includes/file.php'; | |
| 277 | - } | |
| 278 | - $fp = fopen( wp_tempnam(), 'w+' ); | |
| 279 | - } | |
| 271 | + $fp = tmpfile(); | |
| 280 | 272 | if ( ! apply_filters( 'vizualizer_export_include_series_type', true ) ) { |
| 281 | 273 | unset( $rows[1] ); |
| 282 | 274 | $rows = array_values( $rows ); |
| 283 | 275 | } |
| @@ -611,31 +603,32 @@ | ||
| 611 | 603 | */ |
| 612 | 604 | protected function get_inline_custom_css( $id, $settings ) { |
| 613 | 605 | $css = ''; |
| 614 | 606 | |
| 607 | + $arguments = array( '', $settings ); | |
| 608 | + if ( ! isset( $settings['customcss'] ) ) { | |
| 609 | + return $arguments; | |
| 610 | + } | |
| 611 | + | |
| 615 | 612 | $classes = array(); |
| 616 | 613 | $css = '<style type="text/css" name="visualizer-custom-css" id="customcss-' . $id . '">'; |
| 617 | - if ( ! empty( $settings['customcss'] ) ) { | |
| 618 | - foreach ( $settings['customcss'] as $name => $element ) { | |
| 619 | - $attributes = array(); | |
| 620 | - foreach ( $element as $property => $value ) { | |
| 621 | - $attributes[] = $this->handle_css_property( $property, $value ); | |
| 622 | - } | |
| 623 | - $class_name = $id . $name; | |
| 624 | - $properties = implode( ' !important; ', array_filter( $attributes ) ); | |
| 625 | - if ( ! empty( $properties ) ) { | |
| 626 | - $css .= '.' . $class_name . ' {' . $properties . ' !important;}'; | |
| 627 | - $classes[ $name ] = $class_name; | |
| 628 | - } | |
| 614 | + foreach ( $settings['customcss'] as $name => $element ) { | |
| 615 | + $attributes = array(); | |
| 616 | + foreach ( $element as $property => $value ) { | |
| 617 | + $attributes[] = $this->handle_css_property( $property, $value ); | |
| 629 | 618 | } |
| 630 | - $settings['cssClassNames'] = $classes; | |
| 619 | + $class_name = $id . $name; | |
| 620 | + $properties = implode( ' !important; ', array_filter( $attributes ) ); | |
| 621 | + if ( ! empty( $properties ) ) { | |
| 622 | + $css .= '.' . $class_name . ' {' . $properties . ' !important;}'; | |
| 623 | + $classes[ $name ] = $class_name; | |
| 624 | + } | |
| 631 | 625 | } |
| 626 | + $css .= '</style>'; | |
| 632 | 627 | |
| 633 | - $img_path = VISUALIZER_ABSURL . 'images'; | |
| 634 | - $css .= ".locker,.locker-loader{position:absolute;top:0;left:0;width:100%;height:100%}.locker{z-index:1000;opacity:.8;background-color:#fff;-ms-filter:\"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)\";filter:alpha(opacity=80)}.locker-loader{z-index:1001;background:url($img_path/ajax-loader.gif) no-repeat center center}.dt-button{display:none!important}.visualizer-front-container.visualizer-lazy-render{content-visibility: auto;}.google-visualization-controls-categoryfilter label.google-visualization-controls-label {vertical-align: middle;}.google-visualization-controls-categoryfilter li.goog-inline-block {margin: 0 0.2em;}.google-visualization-controls-categoryfilter li {padding: 0 0.2em;}.visualizer-front-container .dataTables_scrollHeadInner{margin: 0 auto;}"; | |
| 635 | - $css .= '</style>'; | |
| 628 | + $settings['cssClassNames'] = $classes; | |
| 636 | 629 | |
| 637 | - $arguments = array( $css, $settings ); | |
| 630 | + $arguments = array( $css, $settings ); | |
| 638 | 631 | apply_filters_ref_array( 'visualizer_inline_css', array( &$arguments ) ); |
| 639 | 632 | |
| 640 | 633 | return $arguments; |
| 641 | 634 | } |
| @@ -735,9 +728,9 @@ | ||
| 735 | 728 | */ |
| 736 | 729 | public static final function get_features_for_license( $plan ) { |
| 737 | 730 | switch ( $plan ) { |
| 738 | 731 | case 1: |
| 739 | - return array( 'import-wp', 'db-query', 'import-wc-report' ); | |
| 732 | + return array( 'import-wp', 'db-query' ); | |
| 740 | 733 | case 2: |
| 741 | 734 | return array( 'schedule-chart', 'chart-permissions' ); |
| 742 | 735 | } |
| 743 | 736 | } |
| @@ -746,30 +739,18 @@ | ||
| 746 | 739 | * Gets the chart content after common manipulations. |
| 747 | 740 | */ |
| 748 | 741 | public static function get_chart_data( $chart, $type, $run_filter = true ) { |
| 749 | 742 | // change HTML entities |
| 750 | - $post_content = html_entity_decode( htmlentities( $chart->post_content ) ); | |
| 751 | - $post_content = preg_replace_callback( | |
| 752 | - '!s:(\d+):"(.*?)";!s', | |
| 753 | - function ( $matches ) { | |
| 754 | - if ( isset( $matches[2] ) ) { | |
| 755 | - return 's:' . strlen( $matches[2] ) . ':"' . $matches[2] . '";'; | |
| 756 | - } | |
| 757 | - }, | |
| 758 | - $post_content | |
| 759 | - ); | |
| 760 | - $data = unserialize( $post_content ); | |
| 743 | + $data = unserialize( html_entity_decode( $chart->post_content ) ); | |
| 761 | 744 | $altered = array(); |
| 762 | - if ( ! empty( $data ) ) { | |
| 763 | - foreach ( $data as $index => $array ) { | |
| 764 | - if ( ! is_array( $index ) && is_array( $array ) ) { | |
| 765 | - foreach ( $array as &$datum ) { | |
| 766 | - if ( is_string( $datum ) ) { | |
| 767 | - $datum = stripslashes( $datum ); | |
| 768 | - } | |
| 745 | + foreach ( $data as $index => $array ) { | |
| 746 | + if ( ! is_array( $index ) && is_array( $array ) ) { | |
| 747 | + foreach ( $array as &$datum ) { | |
| 748 | + if ( is_string( $datum ) ) { | |
| 749 | + $datum = stripslashes( $datum ); | |
| 769 | 750 | } |
| 770 | - $altered[ $index ] = $array; | |
| 771 | 751 | } |
| 752 | + $altered[ $index ] = $array; | |
| 772 | 753 | } |
| 773 | 754 | } |
| 774 | 755 | // if something goes wrong and the end result is empty, be safe and use the original data |
| 775 | 756 | if ( empty( $altered ) ) { |
| @@ -797,38 +778,6 @@ | ||
| 797 | 778 | } |
| 798 | 779 | return array( |
| 799 | 780 | 'csv' => $image, |
| 800 | 781 | ); |
| 801 | - } | |
| 802 | - | |
| 803 | - /** | |
| 804 | - * Filter chart title if visualizer post type. | |
| 805 | - * | |
| 806 | - * @param object $query WP Query object. | |
| 807 | - * @return void | |
| 808 | - */ | |
| 809 | - public function PreGetPosts( $query ) { | |
| 810 | - if ( ! $query->is_main_query() ) { | |
| 811 | - $post_type = $query->get( 'post_type' ); | |
| 812 | - if ( 'visualizer' === $post_type ) { | |
| 813 | - $this->_addFilter( Visualizer_Plugin::FILTER_CHART_TITLE, 'filterChartTitle', 10, 2 ); | |
| 814 | - } | |
| 815 | - } | |
| 816 | - } | |
| 817 | - | |
| 818 | - /** | |
| 819 | - * Filter chart title. | |
| 820 | - * | |
| 821 | - * @access public | |
| 822 | - * @param string $post_title Post title. | |
| 823 | - * @param int $post_id Post ID. | |
| 824 | - * @return string | |
| 825 | - */ | |
| 826 | - public function filterChartTitle( $post_title, $post_id ) { | |
| 827 | - $post_type = get_post_type( $post_id ); | |
| 828 | - $post_title = trim( $post_title ); | |
| 829 | - if ( 'visualizer' === $post_type && 'Visualization' === $post_title ) { | |
| 830 | - return sprintf( '%s #%d', $post_title, $post_id ); | |
| 831 | - } | |
| 832 | - return $post_title; | |
| 833 | 782 | } |
| 834 | 783 | } |