Advertisement
Guest User

Untitled

a guest
Aug 18th, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.70 KB | None | 0 0
  1. //WP CLI to export a form submsissions from Ninja Forms
  2. //pass in the id of the form to export like this:
  3. //wp ninja-forms-export export 1
  4.  
  5. if (defined('WP_CLI') && WP_CLI) {
  6.  
  7. class Export_Submissions extends WP_CLI_Command
  8. {
  9.  
  10. // Create our function
  11. public function export($form_id, array $sub_ids = array(), $return = false)
  12. {
  13. $date_format = Ninja_Forms()->get_setting('date_format');
  14.  
  15. $field_labels = array(
  16. '_seq_num' => '#id',
  17. '_date_submitted' => __('Date Submitted', 'ninja-forms')
  18. );
  19.  
  20. // Legacy Filter from 2.9.*
  21. $field_labels = apply_filters('nf_subs_csv_label_array_before_fields', $field_labels, $sub_ids);
  22.  
  23. $fields = Ninja_Forms()->form($form_id[0])->get_fields();
  24.  
  25. if (! has_filter('ninja_forms_get_fields_sorted')) {
  26. uasort($fields, array( 'NF_Database_Models_Submission', 'sort_fields' ));
  27. }
  28.  
  29. $hidden_field_types = apply_filters('nf_sub_hidden_field_types', array());
  30.  
  31. $subs = Ninja_Forms()->form($form_id[0])->get_subs(array(), false, $sub_ids);
  32.  
  33. foreach ($subs as $sub) {
  34. $value[ '_seq_num' ] = $sub->get_seq_num();
  35. $value[ '_date_submitted' ] = $sub->get_sub_date($date_format);
  36.  
  37. foreach ($fields as $field_id => $field) {
  38. if (!is_int($field_id)) {
  39. continue;
  40. }
  41. if (in_array($field->get_setting('type'), $hidden_field_types)) {
  42. continue;
  43. }
  44.  
  45. if ($field->get_setting('admin_label')) {
  46. $field_labels[ $field->get_id() ] = $field->get_setting('admin_label');
  47. } else {
  48. $field_labels[ $field->get_id() ] = $field->get_setting('label');
  49. }
  50.  
  51. $field_value = maybe_unserialize($sub->get_field_value($field_id));
  52.  
  53. $field_value = apply_filters('nf_subs_export_pre_value', $field_value, $field_id);
  54. $field_value = apply_filters('ninja_forms_subs_export_pre_value', $field_value, $field_id, $form_id);
  55. $field_value = apply_filters('ninja_forms_subs_export_field_value_' . $field->get_setting('type'), $field_value);
  56.  
  57. if (is_array($field_value)) {
  58. $field_value = implode(',', $field_value);
  59. }
  60.  
  61. $value[ $field_id ] = $field_value;
  62. }
  63.  
  64. $value_array[] = $value;
  65. }
  66.  
  67. $value_array = WPN_Helper::stripslashes($value_array);
  68.  
  69. // Legacy Filter from 2.9.*
  70. $value_array = apply_filters('nf_subs_csv_value_array', $value_array, $sub_ids);
  71.  
  72. $csv_array[ 0 ][] = $field_labels;
  73. $csv_array[ 1 ][] = $value_array;
  74.  
  75. // Get any extra data from our other plugins...
  76. $csv_array = apply_filters('nf_subs_csv_extra_values', $csv_array, $subs, $form_id);
  77.  
  78. $today = date($date_format, current_time('timestamp'));
  79. $filename = apply_filters('nf_subs_csv_filename', 'nf_subs_' . $today);
  80. $filename = $filename . ".csv";
  81.  
  82. if ($return) {
  83. return WPN_Helper::str_putcsv($csv_array,
  84. apply_filters('nf_sub_csv_delimiter', ','),
  85. apply_filters('nf_sub_csv_enclosure', '"'),
  86. apply_filters('nf_sub_csv_terminator', "\n")
  87. );
  88. } else {
  89. $date = new DateTime('now');
  90. $directory_name = 'reports';
  91. $file_name = $date->format('Y-m-d_H_i_s') . '_form_export.csv';
  92.  
  93. if (!is_dir($directory_name)) {
  94. mkdir($directory_name, 0755);
  95. }
  96.  
  97. header('Content-type: application/csv');
  98. header('Content-Disposition: attachment; filename="'.$filename .'"');
  99. header('Pragma: no-cache');
  100. header('Expires: 0');
  101.  
  102. $output = apply_filters('nf_sub_csv_bom', "\xEF\xBB\xBF") ; // Byte Order Mark
  103. $output .= WPN_Helper::str_putcsv($csv_array,
  104. apply_filters('nf_sub_csv_delimiter', ','),
  105. apply_filters('nf_sub_csv_enclosure', '"'),
  106. apply_filters('nf_sub_csv_terminator', "\n")
  107. );
  108.  
  109. file_put_contents($directory_name.'/'.$file_name, $output);
  110.  
  111. WP_CLI::line(WP_CLI::colorize('Ninja forms submissions have been exported!'));
  112. die();
  113. }
  114. }
  115. }
  116.  
  117. WP_CLI::add_command('ninja-forms-export', 'Export_Submissions');
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement