/var/www/(Del)hsihk.com/wp-content/plugins/ninja-forms/classes/subs.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
<?php
/**
 * Submissions.
 * This class handles creating and exporting submissions.
 *
 * @package     Ninja Forms
 * @subpackage  Classes/Submissions
 * @copyright   Copyright (c) 2014, WPNINJAS
 * @license     http://opensource.org/licenses/gpl-2.0.php GNU Public License
 * @since       2.7
*/

class NF_Subs {

    
/**
     * Get things started
     * 
     * @access public
     * @since 2.7
     * @return void/
     */
    
public function __construct() {

    }

    
/**
     * Create a submission.
     * 
     * @access public
     * @since 2.7
     * @return int $sub_id
     */
    
public function create$form_id '' ) {
        
// Create Submission
        
$post = array(
          
'post_status'    => 'publish',
          
'post_type'      => 'nf_sub'
        
);
        
$sub_id wp_insert_post$post );

        
// Add our form ID to the submission
        
Ninja_Forms()->sub$sub_id )->update_form_id$form_id );

        
// Get the current sequential ID
        
$form ninja_forms_get_form_by_id$form_id );
        if ( isset ( 
$form['data']['last_sub'] ) ) {
            
$seq_num $form['data']['last_sub'] + 1;
        } else { 
// If we don't have a starting number, start at 1
            
$seq_num 1;
        }

        
$seq_num apply_filters'nf_sub_seq_num'$seq_num$form_id );

        
// Add the sequential ID to the post meta
        
Ninja_Forms()->sub$sub_id )->update_seq_num$seq_num );

        
// Update our form data with the new "last seq id."
        
$form['data']['last_sub'] = $seq_num;
        
$args = array(
            
'update_array' => array(
                
'data' => serialize$form['data'] ),
                ),
            
'where' => array(
                
'id' => $form_id,
                ),
        );

        
ninja_forms_update_form$args );

        
// Update our sub count
        
Ninja_Forms()->form$form_id )->sub_count $seq_num 1;

        return 
$sub_id;
    }

    
/**
     * Get submissions based on specific critera.
     * 
     * @since 2.7
     * @param array $args
     * @return array $sub_ids
     */
    
public function get$args = array() ) {

        
$query_args = array(
            
'post_type'         => 'nf_sub',
            
'posts_per_page'    => -1,
            
'date_query'        => array(
                
'inclusive'        => true,
            ),
        );

        if( isset( 
$args['form_id'] ) ) {
            
$query_args['meta_query'][] = array(
                
'key' => '_form_id',
                
'value' => $args['form_id'],
            );
        }

        if( isset( 
$args['user_id'] ) ) {
            
$query_args['author'] = $args['user_id'];
        }

        if( isset( 
$args['action'])){
            
$query_args['meta_query'][] = array(
                
'key' => '_action',
                
'value' => $args['action'],
            );
        }

        if ( isset ( 
$args['meta'] ) ) {
            foreach ( 
$args['meta'] as $key => $value ) {
                
$query_args['meta_query'][] = array(
                    
'key' => $key,
                    
'value' => $value,
                );
            }
        }

        if ( isset ( 
$args['fields'] ) ) {
            foreach ( 
$args['fields'] as $field_id => $value ) {
                
$query_args['meta_query'][] = array(
                    
'key' => '_field_' $field_id,
                    
'value' => $value,
                );
            }
        }

        if( isset( 
$args['begin_date'] ) AND $args['begin_date'] != '') {
            
$query_args['date_query']['after'] = nf_get_begin_date$args['begin_date'] )->format("Y-m-d G:i:s");
        }

        if( isset( 
$args['end_date'] ) AND $args['end_date'] != '' ) {
            
$query_args['date_query']['before'] = nf_get_end_date$args['end_date'] )->format("Y-m-d G:i:s");
        }

        
$subs = new WP_Query$query_args );;

        
$sub_objects = array();

        if ( 
is_array$subs->posts ) && ! empty( $subs->posts ) ) {
            foreach ( 
$subs->posts as $sub ) {
                
$sub_objects[] = Ninja_Forms()->sub$sub->ID );
            }            
        }

        
wp_reset_postdata();
        return 
$sub_objects;
    }

    
/**
     * Export submissions.
     * 
     * @access public
     * @param array $sub_ids
     * @param bool @return
     * @since 2.7
     * @return void
     */
    
public function export$sub_ids ''$return false ){
        global 
$ninja_forms_fields;

        
// Bail if we haven't been sent any IDs.
        
if ( empty( $sub_ids ) )
            return 
false;

        if ( ! 
is_array$sub_ids ) )
            
$sub_ids = array( $sub_ids );

        
$plugin_settings nf_get_settings();
        
$date_format $plugin_settings['date_format'];
    
        
$label_array = array();
        
// Get our Form ID.
        
$form_id Ninja_Forms()->sub$sub_ids[0] )->form_id;

        
// Get our list of fields.
        
$fields Ninja_Forms()->form$form_id )->fields;

        
// Add our sequential number.
        
$label_array[0]['_seq_num'] = __'#''ninja-forms' );

        
// Add our "Date" label.
        
$label_array[0]['_date_submitted'] = __'Date Submitted''ninja-forms' );

        
$label_array apply_filters'nf_subs_csv_label_array_before_fields'$label_array$sub_ids );

        foreach ( 
$fields as $field_id => $field ) {
            
// Get our field type
            
$field_type $field['type'];
            
// Check to see if our field type has been set as a "process_field".
            
if ( isset ( $ninja_forms_fields$field_type ] ) ) {
                
$reg_field $ninja_forms_fields$field_type ];
                
$process_field $reg_field['process_field'];
            } else {
                
$process_field false;
            }

            
// If this field's "process_field" is set to true, then add its label to the array.
            
if ( $process_field ) {
                if ( isset ( 
$field['data']['admin_label'] ) && $field['data']['admin_label'] != '' ) {
                    
$label $field['data']['admin_label'];
                } else if( isset ( 
$field['data']['label'] ) ) {
                    
$label $field['data']['label'];
                }else{
                    
$label '';
                }

                
$label_array[0][ $field_id ] = apply_filters'nf_subs_csv_field_label'$label$field_id );
            }
        }

        
$label_array ninja_forms_stripslashes_deep$label_array );
        
$label_array apply_filters'nf_subs_csv_label_array'$label_array$sub_ids );

        
$value_array = array();
        
$x 0;
        
// Loop through our submissions and create a new row for each one.
        
foreach ( $sub_ids as $sub_id ) {
            foreach ( 
$label_array[0] as $field_id => $label ) {
                
// Make sure we aren't working with our date field, which will always have a field id of 0.
                
if ( $field_id !== ) {
                    
// Check to see if our field_id is numeric. If it isn't, then we're working with meta, not a field.
                    
if ( is_numeric$field_id ) ) {
                        
// We're working with a field, grab the value.
                        
$user_value Ninja_Forms()->sub$sub_id )->get_field$field_id );
                    } else if ( 
'_date_submitted' == $field_id ) {
                        
// Get the date of our submission.
                        
$date strtotimeNinja_Forms()->sub$sub_id )->date_submitted );
                        
// The first item is our date field.
                        
$user_value date$date_format$date );
                    } else if ( 
'_seq_num' == $field_id ) {
                        
$user_value Ninja_Forms()->sub$sub_id )->get_seq_num();
                    } else {
                        
// We're working with a piece of meta, grabe the value.
                        
$user_value Ninja_Forms()->sub$sub_id )->get_meta$field_id );
                    }
                    
// Run our value through the appropriate filters before we flatten any arrays.
                    
$user_value apply_filters'nf_subs_export_pre_value'$user_value$field_id );
                    
// Implode any arrays we might have.
                    
if ( is_array$user_value ) ) {
                        
$user_value implode','$user_value );
                    }
                    
// Run our final value through the appropriate filters and assign it to the array.
                    
$value_array$x ][ $field_id ] = htmlspecialchars_decodeapply_filters'nf_subs_csv_field_value'$user_value$field_id ), ENT_QUOTES );                    
                }
            }
            
$x++;
        }

        
$value_array ninja_forms_stripslashes_deep$value_array );
        
$value_array apply_filters'nf_subs_csv_value_array'$value_array$sub_ids );

        
$array = array( $label_array$value_array );
        
$today date$date_formatcurrent_time'timestamp' ) );
        
$filename apply_filters'nf_subs_csv_filename''nf_subs_' $today );
        
$filename $filename ".csv";

        if( 
$return ){
            return 
str_putcsv$array
                
apply_filters'nf_sub_csv_delimiter'',' ), 
                
apply_filters'nf_sub_csv_enclosure''"' ), 
                
apply_filters'nf_sub_csv_terminator'"\n" )
            );
        }else{
            
header'Content-type: application/csv');
            
header'Content-Disposition: attachment; filename="'.$filename .'"' );
            
header'Pragma: no-cache');
            
header'Expires: 0' );
            echo 
apply_filters'nf_sub_csv_bom',"\xEF\xBB\xBF" ) ; // Byte Order Mark
            
echo str_putcsv$array
                
apply_filters'nf_sub_csv_delimiter'',' ), 
                
apply_filters'nf_sub_csv_enclosure''"' ), 
                
apply_filters'nf_sub_csv_terminator'"\n" )
            );

            die();
        }

    }

}