Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //WP CLI to export a form submsissions from Ninja Forms
- //pass in the id of the form to export like this:
- //wp ninja-forms-export export 1
- if (defined('WP_CLI') && WP_CLI) {
- class Export_Submissions extends WP_CLI_Command
- {
- // Create our function
- public function export($form_id, array $sub_ids = array(), $return = false)
- {
- $date_format = Ninja_Forms()->get_setting('date_format');
- $field_labels = array(
- '_seq_num' => '#id',
- '_date_submitted' => __('Date Submitted', 'ninja-forms')
- );
- // Legacy Filter from 2.9.*
- $field_labels = apply_filters('nf_subs_csv_label_array_before_fields', $field_labels, $sub_ids);
- $fields = Ninja_Forms()->form($form_id[0])->get_fields();
- if (! has_filter('ninja_forms_get_fields_sorted')) {
- uasort($fields, array( 'NF_Database_Models_Submission', 'sort_fields' ));
- }
- $hidden_field_types = apply_filters('nf_sub_hidden_field_types', array());
- $subs = Ninja_Forms()->form($form_id[0])->get_subs(array(), false, $sub_ids);
- foreach ($subs as $sub) {
- $value[ '_seq_num' ] = $sub->get_seq_num();
- $value[ '_date_submitted' ] = $sub->get_sub_date($date_format);
- foreach ($fields as $field_id => $field) {
- if (!is_int($field_id)) {
- continue;
- }
- if (in_array($field->get_setting('type'), $hidden_field_types)) {
- continue;
- }
- if ($field->get_setting('admin_label')) {
- $field_labels[ $field->get_id() ] = $field->get_setting('admin_label');
- } else {
- $field_labels[ $field->get_id() ] = $field->get_setting('label');
- }
- $field_value = maybe_unserialize($sub->get_field_value($field_id));
- $field_value = apply_filters('nf_subs_export_pre_value', $field_value, $field_id);
- $field_value = apply_filters('ninja_forms_subs_export_pre_value', $field_value, $field_id, $form_id);
- $field_value = apply_filters('ninja_forms_subs_export_field_value_' . $field->get_setting('type'), $field_value);
- if (is_array($field_value)) {
- $field_value = implode(',', $field_value);
- }
- $value[ $field_id ] = $field_value;
- }
- $value_array[] = $value;
- }
- $value_array = WPN_Helper::stripslashes($value_array);
- // Legacy Filter from 2.9.*
- $value_array = apply_filters('nf_subs_csv_value_array', $value_array, $sub_ids);
- $csv_array[ 0 ][] = $field_labels;
- $csv_array[ 1 ][] = $value_array;
- // Get any extra data from our other plugins...
- $csv_array = apply_filters('nf_subs_csv_extra_values', $csv_array, $subs, $form_id);
- $today = date($date_format, current_time('timestamp'));
- $filename = apply_filters('nf_subs_csv_filename', 'nf_subs_' . $today);
- $filename = $filename . ".csv";
- if ($return) {
- return WPN_Helper::str_putcsv($csv_array,
- apply_filters('nf_sub_csv_delimiter', ','),
- apply_filters('nf_sub_csv_enclosure', '"'),
- apply_filters('nf_sub_csv_terminator', "\n")
- );
- } else {
- $date = new DateTime('now');
- $directory_name = 'reports';
- $file_name = $date->format('Y-m-d_H_i_s') . '_form_export.csv';
- if (!is_dir($directory_name)) {
- mkdir($directory_name, 0755);
- }
- header('Content-type: application/csv');
- header('Content-Disposition: attachment; filename="'.$filename .'"');
- header('Pragma: no-cache');
- header('Expires: 0');
- $output = apply_filters('nf_sub_csv_bom', "\xEF\xBB\xBF") ; // Byte Order Mark
- $output .= WPN_Helper::str_putcsv($csv_array,
- apply_filters('nf_sub_csv_delimiter', ','),
- apply_filters('nf_sub_csv_enclosure', '"'),
- apply_filters('nf_sub_csv_terminator', "\n")
- );
- file_put_contents($directory_name.'/'.$file_name, $output);
- WP_CLI::line(WP_CLI::colorize('Ninja forms submissions have been exported!'));
- die();
- }
- }
- }
- WP_CLI::add_command('ninja-forms-export', 'Export_Submissions');
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement