From 0ede9386e5f2346b984c94a2a0db68a333e5143a Mon Sep 17 00:00:00 2001 From: MILAN88888 Date: Tue, 10 Sep 2024 10:29:23 +0545 Subject: [PATCH 1/5] Add - Question and answer by | --- .../export/class-evf-entry-csv-exporter.php | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/includes/export/class-evf-entry-csv-exporter.php b/includes/export/class-evf-entry-csv-exporter.php index e660d8e74..0208877db 100644 --- a/includes/export/class-evf-entry-csv-exporter.php +++ b/includes/export/class-evf-entry-csv-exporter.php @@ -82,6 +82,12 @@ public function get_default_column_names() { if ( ! in_array( $field['type'], array( 'html', 'title', 'captcha', 'divider' ), true ) ) { $columns[ $field['id'] ] = evf_clean( $field['label'] ); } + switch ( $field['type'] ) { + case 'likert': + error_log(print_r($field['label'], true)); + $columns[ $field['id'] ] = implode( ' | ', $field['likert_rows'] ); + break; + } } } @@ -368,6 +374,21 @@ protected function generate_row_data( $entry ) { } } break; + case 'likert': + $form = evf()->form->get( $entry->form_id ); + $form_data = evf_decode( $form->post_content ); + $form_fields = $form_data['form_fields']; + $form_field = ''; + $selected_likert = array(); + if ( array_key_exists( $column_id, $form_fields ) ) { + $form_field = $form_fields[ $column_id ]; + $likert_columns = $form_field['likert_columns']; + foreach ( $fields[ $column_id ]['value_raw'] as $likert_key ) { + $selected_likert[] = $likert_columns[ $likert_key ]; + } + } + $value = implode( ' | ', $selected_likert ); + break; default: $value = apply_filters( 'everest_forms_html_field_value', $fields[ $column_id ]['value'], $fields[ $column_id ], $entry, 'export-csv' ); break; From f559cd5e789ea19fc68d36c3bc8f1a6a09b529d1 Mon Sep 17 00:00:00 2001 From: MILAN88888 Date: Tue, 10 Sep 2024 13:47:19 +0545 Subject: [PATCH 2/5] Tweak - Formatted the column according to answer and quetions --- .../export/class-evf-entry-csv-exporter.php | 39 +++++++++++++------ 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/includes/export/class-evf-entry-csv-exporter.php b/includes/export/class-evf-entry-csv-exporter.php index 0208877db..a394cf3c0 100644 --- a/includes/export/class-evf-entry-csv-exporter.php +++ b/includes/export/class-evf-entry-csv-exporter.php @@ -80,13 +80,18 @@ public function get_default_column_names() { if ( ! empty( $form_data['form_fields'] ) ) { foreach ( $form_data['form_fields'] as $field ) { if ( ! in_array( $field['type'], array( 'html', 'title', 'captcha', 'divider' ), true ) ) { - $columns[ $field['id'] ] = evf_clean( $field['label'] ); - } - switch ( $field['type'] ) { - case 'likert': - error_log(print_r($field['label'], true)); - $columns[ $field['id'] ] = implode( ' | ', $field['likert_rows'] ); - break; + switch ( $field['type'] ) { + case 'likert': + $field_id = $field['id']; + foreach ( $field['likert_rows'] as $key => $col_row ) { + $col_row_key = "$field_id-likeart-$key"; + $columns[ $col_row_key ] = $col_row; + } + break; + default: + $columns[ $field['id'] ] = evf_clean( $field['label'] ); + break; + } } } } @@ -273,12 +278,17 @@ public function sanitize_csv_cell_data( $str ) { * @return array */ protected function generate_row_data( $entry ) { - $columns = $this->get_column_names(); $row = array(); $fields = json_decode( $entry->fields, true ); foreach ( $columns as $column_id => $column_name ) { $column_id = strstr( $column_id, ':' ) ? current( explode( ':', $column_id ) ) : $column_id; + $position = strpos( $column_id, '-likeart-' ); + + if ( $position !== false ) { + $column_id = substr( $column_id, 0, $position ); + } + $value = ''; $raw_value = ''; @@ -387,7 +397,7 @@ protected function generate_row_data( $entry ) { $selected_likert[] = $likert_columns[ $likert_key ]; } } - $value = implode( ' | ', $selected_likert ); + $value = $selected_likert; break; default: $value = apply_filters( 'everest_forms_html_field_value', $fields[ $column_id ]['value'], $fields[ $column_id ], $entry, 'export-csv' ); @@ -398,8 +408,15 @@ protected function generate_row_data( $entry ) { $value = $this->{"get_column_value_{$column_id}"}( $entry ); $raw_value = $value; } - $column_type = $this->get_entry_type( $column_id, $entry ); - $row[ $column_id ] = apply_filters( 'everest_forms_format_csv_field_data', preg_match( '/textarea/', $column_type ) ? sanitize_textarea_field( $value ) : sanitize_text_field( $value ), $raw_value, $column_id, $column_name, $columns, $entry ); + $column_type = $this->get_entry_type( $column_id, $entry ); + if ( is_array( $value ) && isset( $fields[ $column_id ], $fields[ $column_id ]['type'] ) && in_array( $fields[ $column_id ]['type'], array( 'likert' ), true ) ) { + foreach ( $value as $key => $val ) { + $col_row_key = "$column_id-likert-$key"; + $row[ $col_row_key ] = $val; + } + } else { + $row[ $column_id ] = apply_filters( 'everest_forms_format_csv_field_data', preg_match( '/textarea/', $column_type ) ? sanitize_textarea_field( $value ) : $value, $raw_value, $column_id, $column_name, $columns, $entry ); + } if ( empty( $this->request_data ) ) { $row['status'] = ( isset( $entry->meta['status'] ) && ! empty( $entry->meta['status'] ) From 64abf0c856282ceebd7054b6f60477f582512a8b Mon Sep 17 00:00:00 2001 From: MILAN88888 Date: Fri, 13 Sep 2024 09:57:52 +0545 Subject: [PATCH 3/5] Fix - Likert data not exporting single and multiple --- includes/export/class-evf-entry-csv-exporter.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/export/class-evf-entry-csv-exporter.php b/includes/export/class-evf-entry-csv-exporter.php index a394cf3c0..52d3ac6b6 100644 --- a/includes/export/class-evf-entry-csv-exporter.php +++ b/includes/export/class-evf-entry-csv-exporter.php @@ -84,7 +84,7 @@ public function get_default_column_names() { case 'likert': $field_id = $field['id']; foreach ( $field['likert_rows'] as $key => $col_row ) { - $col_row_key = "$field_id-likeart-$key"; + $col_row_key = "$field_id-likert-$key"; $columns[ $col_row_key ] = $col_row; } break; @@ -283,7 +283,7 @@ protected function generate_row_data( $entry ) { $fields = json_decode( $entry->fields, true ); foreach ( $columns as $column_id => $column_name ) { $column_id = strstr( $column_id, ':' ) ? current( explode( ':', $column_id ) ) : $column_id; - $position = strpos( $column_id, '-likeart-' ); + $position = strpos( $column_id, '-likert-' ); if ( $position !== false ) { $column_id = substr( $column_id, 0, $position ); From b31e02bcb86582940372890c5033f39c4831542e Mon Sep 17 00:00:00 2001 From: MILAN88888 Date: Mon, 16 Sep 2024 10:20:14 +0545 Subject: [PATCH 4/5] Fix - Value not export in single export --- includes/export/class-evf-entry-csv-exporter.php | 1 + 1 file changed, 1 insertion(+) diff --git a/includes/export/class-evf-entry-csv-exporter.php b/includes/export/class-evf-entry-csv-exporter.php index 52d3ac6b6..b97684ee8 100644 --- a/includes/export/class-evf-entry-csv-exporter.php +++ b/includes/export/class-evf-entry-csv-exporter.php @@ -411,6 +411,7 @@ protected function generate_row_data( $entry ) { $column_type = $this->get_entry_type( $column_id, $entry ); if ( is_array( $value ) && isset( $fields[ $column_id ], $fields[ $column_id ]['type'] ) && in_array( $fields[ $column_id ]['type'], array( 'likert' ), true ) ) { foreach ( $value as $key => $val ) { + $key = $key + 1; $col_row_key = "$column_id-likert-$key"; $row[ $col_row_key ] = $val; } From f3069f010057f0bd0d341aab242194761a1c1e2f Mon Sep 17 00:00:00 2001 From: MILAN88888 Date: Mon, 16 Sep 2024 11:06:15 +0545 Subject: [PATCH 5/5] Fix - Empty column if the likert data is empty --- includes/export/class-evf-entry-csv-exporter.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/includes/export/class-evf-entry-csv-exporter.php b/includes/export/class-evf-entry-csv-exporter.php index b97684ee8..cca77b907 100644 --- a/includes/export/class-evf-entry-csv-exporter.php +++ b/includes/export/class-evf-entry-csv-exporter.php @@ -393,8 +393,15 @@ protected function generate_row_data( $entry ) { if ( array_key_exists( $column_id, $form_fields ) ) { $form_field = $form_fields[ $column_id ]; $likert_columns = $form_field['likert_columns']; - foreach ( $fields[ $column_id ]['value_raw'] as $likert_key ) { - $selected_likert[] = $likert_columns[ $likert_key ]; + $likert_rows = $form_field['likert_rows']; + if ( ! empty( $fields[ $column_id ]['value_raw'] ) ) { + foreach ( $fields[ $column_id ]['value_raw'] as $likert_key ) { + $selected_likert[] = $likert_columns[ $likert_key ]; + } + } else { + foreach ( $likert_rows as $likert_rows ) { + $selected_likert[] = ''; + } } } $value = $selected_likert;