Skip to content

Commit 3c33f2d

Browse files
author
cristian-ungureanu
authored
Merge pull request #856 from Codeinwp/bugfix/316
Fix render chart issue when creating first time chart
2 parents 4e79058 + 8dc5344 commit 3c33f2d

File tree

4 files changed

+46
-9
lines changed

4 files changed

+46
-9
lines changed

classes/Visualizer/Module.php

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -740,16 +740,28 @@ public static final function get_features_for_license( $plan ) {
740740
*/
741741
public static function get_chart_data( $chart, $type, $run_filter = true ) {
742742
// change HTML entities
743-
$data = unserialize( html_entity_decode( htmlentities( $chart->post_content ) ) );
743+
$post_content = html_entity_decode( htmlentities( $chart->post_content ) );
744+
$post_content = preg_replace_callback(
745+
'!s:(\d+):"(.*?)";!s',
746+
function ( $matches ) {
747+
if ( isset( $matches[2] ) ) {
748+
return 's:' . strlen( $matches[2] ) . ':"' . $matches[2] . '";';
749+
}
750+
},
751+
$post_content
752+
);
753+
$data = unserialize( $post_content );
744754
$altered = array();
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 );
755+
if ( ! empty( $data ) ) {
756+
foreach ( $data as $index => $array ) {
757+
if ( ! is_array( $index ) && is_array( $array ) ) {
758+
foreach ( $array as &$datum ) {
759+
if ( is_string( $datum ) ) {
760+
$datum = stripslashes( $datum );
761+
}
750762
}
763+
$altered[ $index ] = $array;
751764
}
752-
$altered[ $index ] = $array;
753765
}
754766
}
755767
// if something goes wrong and the end result is empty, be safe and use the original data

classes/Visualizer/Module/Chart.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1137,6 +1137,7 @@ public function uploadData() {
11371137
$chart->post_content = $content;
11381138
}
11391139
wp_update_post( $chart->to_array() );
1140+
11401141
update_post_meta( $chart->ID, Visualizer_Plugin::CF_SERIES, $source->getSeries() );
11411142
update_post_meta( $chart->ID, Visualizer_Plugin::CF_SOURCE, $source->getSourceName() );
11421143
update_post_meta( $chart->ID, Visualizer_Plugin::CF_DEFAULT_DATA, 0 );
@@ -1146,6 +1147,15 @@ public function uploadData() {
11461147
Visualizer_Module_Utility::set_defaults( $chart, null );
11471148

11481149
$settings = get_post_meta( $chart->ID, Visualizer_Plugin::CF_SETTINGS, true );
1150+
if ( isset( $settings['series'] ) && ! ( count( $settings['series'] ) - count( $source->getSeries() ) > 1 ) ) {
1151+
$diff_total_series = abs( count( $settings['series'] ) - count( $source->getSeries() ) );
1152+
if ( $diff_total_series ) {
1153+
foreach ( range( 1, $diff_total_series ) as $k => $diff_series ) {
1154+
$settings['series'][] = end( $settings['series'] );
1155+
}
1156+
update_post_meta( $chart->ID, Visualizer_Plugin::CF_SETTINGS, $settings );
1157+
}
1158+
}
11491159

11501160
$render->id = $chart->ID;
11511161
$render->data = json_encode( $source->getRawData( get_post_meta( $chart->ID, Visualizer_Plugin::CF_EDITABLE_TABLE, true ) ) );

classes/Visualizer/Module/Frontend.php

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -581,13 +581,25 @@ private function getChartData( $cache_key = '', $chart_id = 0 ) {
581581
// Get chart by ID.
582582
$chart = get_post( $chart_id );
583583
if ( $chart && Visualizer_Plugin::CPT_VISUALIZER === $chart->post_type ) {
584+
$settings = get_post_meta( $chart->ID, Visualizer_Plugin::CF_SETTINGS, true );
585+
$series = get_post_meta( $chart->ID, Visualizer_Plugin::CF_SERIES, true );
586+
587+
if ( isset( $settings['series'] ) && ! ( count( $settings['series'] ) - count( $series ) > 1 ) ) {
588+
$diff_total_series = abs( count( $settings['series'] ) - count( $series ) );
589+
if ( $diff_total_series ) {
590+
foreach ( range( 1, $diff_total_series ) as $k => $diff_series ) {
591+
$settings['series'][] = end( $settings['series'] );
592+
}
593+
}
594+
}
584595
$chart_data = array(
585596
'chart' => $chart,
586597
'type' => get_post_meta( $chart->ID, Visualizer_Plugin::CF_CHART_TYPE, true ),
587-
'settings' => get_post_meta( $chart->ID, Visualizer_Plugin::CF_SETTINGS, true ),
588-
'series' => get_post_meta( $chart->ID, Visualizer_Plugin::CF_SERIES, true ),
598+
'settings' => $settings,
599+
'series' => $series,
589600
'chart_image' => get_post_meta( $chart->ID, Visualizer_Plugin::CF_CHART_IMAGE, true ),
590601
);
602+
591603
// Put the results in a transient. Expire after 12 hours.
592604
set_transient( $cache_key, $chart_data, apply_filters( Visualizer_Plugin::FILTER_HANDLE_CACHE_EXPIRATION_TIME, 12 * HOUR_IN_SECONDS ) );
593605
return $chart_data;

classes/Visualizer/Source/Csv/Remote.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,9 @@ private function _repopulate( $chart_id ) {
9797
* @return array The re populated array of data or old one.
9898
*/
9999
public function repopulateData( $data, $chart_id ) {
100+
if ( ! is_array( $data ) ) {
101+
$data = array();
102+
}
100103
return array_key_exists( 'data', $data ) ? $data['data'] : $data;
101104
}
102105

0 commit comments

Comments
 (0)