|
1
|
|
|
<?php |
|
2
|
|
|
namespace GV\Mocks; |
|
3
|
|
|
|
|
4
|
|
|
/** |
|
5
|
|
|
* This file contains mock code for deprecated functions. |
|
6
|
|
|
*/ |
|
7
|
|
|
|
|
8
|
|
|
/** |
|
9
|
|
|
* @see \GravityView_View_Data::add_view |
|
10
|
|
|
* @internal |
|
11
|
|
|
* @since 2.0 |
|
12
|
|
|
* |
|
13
|
|
|
* @return array|false The old array data, or false on error. |
|
14
|
|
|
*/ |
|
15
|
|
|
function GravityView_View_Data_add_view( $view_id, $atts, $_this ) { |
|
16
|
|
|
/** Handle array of IDs. */ |
|
17
|
|
|
if ( is_array( $view_id ) ) { |
|
18
|
|
|
foreach ( $view_id as $id ) { |
|
19
|
|
|
call_user_func( __FUNCTION__, $id, $atts, $_this ); |
|
20
|
|
|
} |
|
21
|
|
|
|
|
22
|
|
|
if ( ! $_this->views->count() ) { |
|
23
|
|
|
return array(); |
|
24
|
|
|
} |
|
25
|
|
|
|
|
26
|
|
|
return array_combine( |
|
27
|
|
|
array_map( function( $view ) { return $view->ID; }, $_this->views->all() ), |
|
28
|
|
|
array_map( function( $view ) { return $view->as_data(); }, $_this->views->all() ) |
|
29
|
|
|
); |
|
30
|
|
|
} |
|
31
|
|
|
|
|
32
|
|
|
/** View has been set already. */ |
|
33
|
|
|
if ( $view = $_this->views->get( $view_id ) ) { |
|
34
|
|
|
do_action( 'gravityview_log_debug', sprintf( 'GravityView_View_Data[add_view] Returning; View #%s already exists.', $view_id ) ); |
|
35
|
|
|
return $view->as_data(); |
|
36
|
|
|
} |
|
37
|
|
|
|
|
38
|
|
|
$view = \GV\View::by_id( $view_id ); |
|
39
|
|
|
if ( ! $view ) { |
|
40
|
|
|
do_action( 'gravityview_log_debug', sprintf( 'GravityView_View_Data[add_view] Returning; View #%s does not exist.', $view_id ) ); |
|
41
|
|
|
return false; |
|
42
|
|
|
} |
|
43
|
|
|
|
|
44
|
|
|
/** Doesn't have a connected form. */ |
|
45
|
|
|
if ( ! $view->form ) { |
|
46
|
|
|
do_action( 'gravityview_log_debug', sprintf( 'GravityView_View_Data[add_view] Returning; Post ID #%s does not have a connected form.', $view_id ) ); |
|
47
|
|
|
return false; |
|
48
|
|
|
} |
|
49
|
|
|
|
|
50
|
|
|
/** Update the settings */ |
|
51
|
|
|
if ( is_array( $atts ) ) { |
|
52
|
|
|
$view->settings->update( $atts ); |
|
53
|
|
|
} |
|
54
|
|
|
|
|
55
|
|
|
$_this->views->add( $view ); |
|
56
|
|
|
|
|
57
|
|
|
return $view->as_data(); |
|
|
|
|
|
|
58
|
|
|
} |
|
59
|
|
|
|
|
60
|
|
|
/** |
|
61
|
|
|
* @see \GravityView_frontend::get_view_entries |
|
62
|
|
|
* @internal |
|
63
|
|
|
* @since 2.0 |
|
64
|
|
|
* |
|
65
|
|
|
* @return array The old associative array data as returned by |
|
66
|
|
|
* \GravityView_frontend::get_view_entries(), the paging parameters |
|
67
|
|
|
* and a total count of all entries. |
|
68
|
|
|
*/ |
|
69
|
|
|
function GravityView_frontend_get_view_entries( $args, $form_id, $parameters, $count ) { |
|
70
|
2 |
|
$form = \GV\GF_Form::by_id( $form_id ); |
|
71
|
|
|
|
|
72
|
|
|
/** |
|
73
|
|
|
* Kick off all advanced filters. |
|
74
|
|
|
* |
|
75
|
|
|
* Parameters and criteria are pretty much the same thing here, just |
|
76
|
|
|
* different naming, where `$parameters` are the initial parameters |
|
77
|
|
|
* calculated for hte view, and `$criteria` are the filtered ones |
|
78
|
|
|
* retrieved via `GVCommon::calculate_get_entries_criteria`. |
|
79
|
|
|
*/ |
|
80
|
2 |
|
$criteria = \GVCommon::calculate_get_entries_criteria( $parameters, $form->ID ); |
|
81
|
|
|
|
|
82
|
2 |
|
do_action( 'gravityview_log_debug', '[gravityview_get_entries] Final Parameters', $criteria ); |
|
83
|
|
|
|
|
84
|
|
|
/** ...and all the (now deprectated) filters that usually follow `gravityview_get_entries` */ |
|
85
|
|
|
|
|
86
|
|
|
/** |
|
87
|
|
|
* @deprecated |
|
88
|
|
|
* Do not use this filter anymore. |
|
89
|
|
|
*/ |
|
90
|
2 |
|
$entries = apply_filters_ref_array( 'gravityview_before_get_entries', array( null, $criteria, $parameters, &$count ) ); |
|
91
|
|
|
|
|
92
|
2 |
|
if ( ! is_null( $entries ) ) { |
|
93
|
|
|
/** |
|
94
|
|
|
* We've been given an entries result that we can return, |
|
95
|
|
|
* just set the paging and we're good to go. |
|
96
|
|
|
*/ |
|
97
|
2 |
|
$paging = \GV\Utils::get( $parameters, 'paging' ); |
|
98
|
|
|
} else { |
|
99
|
2 |
|
$entries = new \GV\Entry_Collection(); |
|
100
|
2 |
|
if ( $view = \GV\View::by_id( \GV\Utils::get( $args, 'id' ) ) ) { |
|
101
|
2 |
|
$view->settings->update( $args ); |
|
102
|
2 |
|
$entries = $view->get_entries( gravityview()->request ); |
|
103
|
|
|
} |
|
104
|
|
|
|
|
105
|
2 |
|
$page = \GV\Utils::get( $parameters['paging'], 'current_page' ) ? |
|
106
|
2 |
|
: ( ( ( $parameters['paging']['offset'] - $view->settings->get( 'offset' ) ) / $parameters['paging']['page_size'] ) + 1 ); |
|
107
|
|
|
|
|
108
|
|
|
/** Set paging, count and unwrap the entries. */ |
|
109
|
|
|
$paging = array( |
|
110
|
2 |
|
'offset' => ( $page - 1 ) * $view->settings->get( 'page_size' ), |
|
111
|
2 |
|
'page_size' => $view->settings->get( 'page_size' ), |
|
112
|
|
|
); |
|
113
|
|
|
/** |
|
114
|
|
|
* GF_Query does not subtract the offset, we have to subtract it ourselves. |
|
115
|
|
|
*/ |
|
116
|
2 |
|
$count = $entries->total() - ( gravityview()->plugin->supports( \GV\Plugin::FEATURE_GFQUERY ) ? $view->settings->get( 'offset' ) : 0 ); |
|
117
|
|
|
$entries = array_map( function( $e ) { return $e->as_entry(); }, $entries->all() ); |
|
118
|
|
|
} |
|
119
|
|
|
|
|
120
|
|
|
/** Just one more filter, for compatibility's sake! */ |
|
121
|
|
|
|
|
122
|
|
|
/** |
|
123
|
|
|
* @deprecated |
|
124
|
|
|
* Do not use this filter anymore. |
|
125
|
|
|
*/ |
|
126
|
2 |
|
$entries = apply_filters_ref_array( 'gravityview_entries', array( $entries, $criteria, $parameters, &$count ) ); |
|
127
|
|
|
|
|
128
|
2 |
|
return array( $entries, $paging, $count ); |
|
129
|
|
|
} |
|
130
|
|
|
|
|
131
|
|
|
/** |
|
132
|
|
|
* The old function does a bit too much, not only does it retrieve |
|
133
|
|
|
* the value for a field, but it also renders some output. We are |
|
134
|
|
|
* stubbing the plain value part of it, the rendering will follow once |
|
135
|
|
|
* our field renderers are ready. |
|
136
|
|
|
* |
|
137
|
|
|
* @see \GravityView_API::field_value |
|
138
|
|
|
* @deprecated Use \GV\Field_Template::render() |
|
139
|
|
|
* @internal |
|
140
|
|
|
* @since 2.0 |
|
141
|
|
|
* |
|
142
|
|
|
* @return null|string The value of a field in an entry. |
|
143
|
|
|
*/ |
|
144
|
|
|
function GravityView_API_field_value( $entry, $field_settings, $format ) { |
|
|
|
|
|
|
145
|
3 |
|
if ( empty( $entry['form_id'] ) || empty( $field_settings['id'] ) ) { |
|
146
|
1 |
|
gravityview()->log->error( 'No entry or field_settings[id] supplied', array( 'data' => array( func_get_args() ) ) ); |
|
147
|
1 |
|
return null; |
|
148
|
|
|
} |
|
149
|
|
|
|
|
150
|
3 |
|
if ( ! empty( $entry['_multi'] ) && ! empty( $field_settings['form_id'] ) && ! empty( $entry['_multi'][ $field_settings['form_id'] ] ) ) { |
|
151
|
2 |
|
$multientry = \GV\Multi_Entry::from_entries( array_map( '\GV\GF_Entry::from_entry', $entry['_multi'] ) ); |
|
152
|
2 |
|
$entry = $entry['_multi'][ $field_settings['form_id'] ]; |
|
153
|
|
|
} |
|
154
|
|
|
|
|
155
|
3 |
|
if ( empty( $entry['id'] ) || ! $entry = \GV\GF_Entry::by_id( $entry['id'] ) ) { |
|
156
|
|
|
gravityview()->log->error( 'Invalid \GV\GF_Entry supplied', array( 'data' => $entry ) ); |
|
157
|
|
|
return null; |
|
158
|
|
|
} |
|
159
|
|
|
|
|
160
|
|
|
/** |
|
161
|
|
|
* Determine the source backend. |
|
162
|
|
|
* |
|
163
|
|
|
* Fields with a numeric ID are Gravity Forms ones. |
|
164
|
|
|
*/ |
|
165
|
3 |
|
$source = is_numeric( $field_settings['id'] ) ? \GV\Source::BACKEND_GRAVITYFORMS : \GV\Source::BACKEND_INTERNAL;; |
|
166
|
|
|
|
|
167
|
|
|
/** Initialize the future field. */ |
|
168
|
|
|
switch ( $source ): |
|
169
|
|
|
/** The Gravity Forms backend. */ |
|
170
|
3 |
|
case \GV\Source::BACKEND_GRAVITYFORMS: |
|
171
|
3 |
|
if ( ! $form = \GV\GF_Form::by_id( $entry['form_id'] ) ) { |
|
172
|
|
|
gravityview()->log->error( 'No form Gravity Form found for entry', array( 'data' => $entry ) ); |
|
173
|
|
|
return null; |
|
174
|
|
|
} |
|
175
|
|
|
|
|
176
|
3 |
|
if ( ! $field = $form::get_field( $form, $field_settings['id'] ) ) { |
|
177
|
|
|
return null; |
|
178
|
|
|
} |
|
179
|
|
|
|
|
180
|
3 |
|
break; |
|
181
|
|
|
|
|
182
|
|
|
/** Our internal backend. */ |
|
183
|
3 |
|
case \GV\Source::BACKEND_INTERNAL: |
|
184
|
3 |
|
if ( ! $field = \GV\Internal_Source::get_field( $field_settings['id'] ) ) { |
|
185
|
|
|
return null; |
|
186
|
|
|
} |
|
187
|
|
|
|
|
188
|
3 |
|
break; |
|
189
|
|
|
|
|
190
|
|
|
/** An unidentified backend. */ |
|
191
|
|
|
default: |
|
192
|
|
|
gravityview()->log->error( 'Could not determine source for entry', array( 'data' => array( func_get_args() ) ) ); |
|
193
|
|
|
return null; |
|
194
|
|
|
endswitch; |
|
195
|
|
|
|
|
196
|
|
|
/** Add the field settings. */ |
|
197
|
3 |
|
$field->update_configuration( $field_settings ); |
|
198
|
|
|
|
|
199
|
3 |
|
$renderer = new \GV\Field_Renderer(); |
|
200
|
3 |
|
return $renderer->render( $field, gravityview()->views->get(), $source == \GV\Source::BACKEND_GRAVITYFORMS ? $form : null, isset( $multientry ) ? $multientry : $entry, gravityview()->request ); |
|
|
|
|
|
|
201
|
|
|
} |
|
202
|
|
|
|
|
203
|
|
|
/** |
|
204
|
|
|
* Mock out the \GravityView_API::field_label method |
|
205
|
|
|
* |
|
206
|
|
|
* Uses the new \GV\Field::get_label methods |
|
207
|
|
|
* |
|
208
|
|
|
* @see \GravityView_API::field_label |
|
209
|
|
|
* @internal |
|
210
|
|
|
* @since 2.0 |
|
211
|
|
|
* |
|
212
|
|
|
* @return string The label of a field in an entry. |
|
213
|
|
|
*/ |
|
214
|
|
|
function GravityView_API_field_label( $form, $field_settings, $entry, $force_show_label = false ) { |
|
215
|
|
|
|
|
216
|
|
|
/** A bail condition. */ |
|
217
|
|
|
$bail = function( $label, $field_settings, $entry, $force_show_label, $form ) { |
|
218
|
2 |
|
if ( ! empty( $field_settings['show_label'] ) || $force_show_label ) { |
|
219
|
|
|
|
|
220
|
2 |
|
$label = isset( $field_settings['label'] ) ? $field_settings['label'] : ''; |
|
221
|
|
|
|
|
222
|
|
|
// Use Gravity Forms label by default, but if a custom label is defined in GV, use it. |
|
223
|
2 |
|
if ( ! empty( $field_settings['custom_label'] ) ) { |
|
224
|
1 |
|
$label = \GravityView_API::replace_variables( $field_settings['custom_label'], $form, $entry ); |
|
225
|
|
|
} |
|
226
|
|
|
|
|
227
|
|
|
/** |
|
228
|
|
|
* @filter `gravityview_render_after_label` Append content to a field label |
|
229
|
|
|
* @param[in,out] string $appended_content Content you can add after a label. Empty by default. |
|
230
|
|
|
* @param[in] array $field GravityView field array |
|
231
|
|
|
*/ |
|
232
|
2 |
|
$label .= apply_filters( 'gravityview_render_after_label', '', $field_settings ); |
|
233
|
|
|
} |
|
234
|
|
|
|
|
235
|
|
|
/** |
|
236
|
|
|
* @filter `gravityview/template/field_label` Modify field label output |
|
237
|
|
|
* @since 1.7 |
|
238
|
|
|
* @param[in,out] string $label Field label HTML |
|
239
|
|
|
* @param[in] array $field GravityView field array |
|
240
|
|
|
* @param[in] array $form Gravity Forms form array |
|
241
|
|
|
* @param[in] array $entry Gravity Forms entry array |
|
242
|
|
|
*/ |
|
243
|
2 |
|
$label = apply_filters( 'gravityview/template/field_label', $label, $field_settings, $form, $entry ); |
|
244
|
|
|
|
|
245
|
2 |
|
return $label; |
|
246
|
3 |
|
}; |
|
247
|
|
|
|
|
248
|
3 |
|
$label = ''; |
|
249
|
|
|
|
|
250
|
3 |
|
if ( ! empty( $entry['_multi'] ) && ! empty( $field_settings['form_id'] ) && ! empty( $entry['_multi'][ $field_settings['form_id'] ] ) ) { |
|
251
|
2 |
|
$entry = $entry['_multi'][ $field_settings['form_id'] ]; |
|
252
|
2 |
|
if ( $_form = \GV\GF_Form::by_id( $field_settings['form_id'] ) ) { |
|
253
|
2 |
|
$form = $_form->form; |
|
|
|
|
|
|
254
|
|
|
} |
|
255
|
|
|
} |
|
256
|
|
|
|
|
257
|
3 |
|
if ( empty( $entry['form_id'] ) || empty( $field_settings['id'] ) ) { |
|
258
|
2 |
|
gravityview()->log->error( 'No entry or field_settings[id] supplied', array( 'data' => array( func_get_args() ) ) ); |
|
259
|
2 |
|
return $bail( $label, $field_settings, $entry, $force_show_label, $form ); |
|
260
|
|
|
} |
|
261
|
|
|
|
|
262
|
3 |
|
if ( empty( $entry['id'] ) || ! $gv_entry = \GV\GF_Entry::by_id( $entry['id'] ) ) { |
|
263
|
|
|
gravityview()->log->error( 'Invalid \GV\GF_Entry supplied', array( 'data' => $entry ) ); |
|
264
|
|
|
return $bail( $label, $field_settings, $entry, $force_show_label, $form ); |
|
265
|
|
|
} |
|
266
|
|
|
|
|
267
|
3 |
|
$entry = $gv_entry; |
|
268
|
|
|
|
|
269
|
|
|
/** |
|
270
|
|
|
* Determine the source backend. |
|
271
|
|
|
* |
|
272
|
|
|
* Fields with a numeric ID are Gravity Forms ones. |
|
273
|
|
|
*/ |
|
274
|
3 |
|
$source = is_numeric( $field_settings['id'] ) ? \GV\Source::BACKEND_GRAVITYFORMS : \GV\Source::BACKEND_INTERNAL; |
|
275
|
|
|
|
|
276
|
|
|
/** Initialize the future field. */ |
|
277
|
|
|
switch ( $source ): |
|
278
|
|
|
/** The Gravity Forms backend. */ |
|
279
|
3 |
|
case \GV\Source::BACKEND_GRAVITYFORMS: |
|
280
|
3 |
|
if ( ! $gf_form = \GV\GF_Form::by_id( $entry['form_id'] ) ) { |
|
281
|
|
|
gravityview()->log->error( 'No form Gravity Form found for entry', array( 'data' => $entry ) ); |
|
282
|
|
|
return $bail( $label, $field_settings, $entry->as_entry(), $force_show_label, $form ); |
|
283
|
|
|
} |
|
284
|
|
|
|
|
285
|
3 |
|
if ( ! $field = $gf_form::get_field( $gf_form, $field_settings['id'] ) ) { |
|
286
|
|
|
gravityview()->log->error( 'No field found for specified form and field ID #{field_id}', array( 'field_id' => $field_settings['id'], 'data' => $form ) ); |
|
287
|
|
|
return $bail( $label, $field_settings, $entry->as_entry(), $force_show_label, $gf_form->form ); |
|
|
|
|
|
|
288
|
|
|
} |
|
289
|
3 |
|
if ( empty( $field_settings['show_label'] ) ) { |
|
290
|
|
|
/** The label never wins... */ |
|
291
|
1 |
|
$field_settings['label'] = ''; |
|
292
|
|
|
} |
|
293
|
|
|
|
|
294
|
3 |
|
break; |
|
295
|
|
|
|
|
296
|
|
|
/** Our internal backend. */ |
|
297
|
3 |
|
case \GV\Source::BACKEND_INTERNAL: |
|
298
|
3 |
|
if ( ! $field = \GV\Internal_Source::get_field( $field_settings['id'] ) ) { |
|
299
|
|
|
return $bail( $label, $field_settings, $entry->as_entry(), $force_show_label, $form ); |
|
300
|
|
|
} |
|
301
|
3 |
|
break; |
|
302
|
|
|
|
|
303
|
|
|
/** An unidentified backend. */ |
|
304
|
|
|
default: |
|
305
|
|
|
gravityview()->log->error( 'Could not determine source for entry. Using empty field.', array( 'data' => array( func_get_args() ) ) ); |
|
306
|
|
|
$field = new \GV\Field(); |
|
307
|
|
|
break; |
|
308
|
|
|
endswitch; |
|
309
|
|
|
|
|
310
|
3 |
|
if( $force_show_label ) { |
|
311
|
1 |
|
$field_settings['show_label'] = '1'; |
|
312
|
|
|
} |
|
313
|
|
|
|
|
314
|
|
|
/** Add the field settings. */ |
|
315
|
3 |
|
$field->update_configuration( $field_settings ); |
|
316
|
|
|
|
|
317
|
3 |
|
if ( ! empty( $field->show_label ) ) { |
|
318
|
|
|
|
|
319
|
3 |
|
$label = $field->get_label( null, isset( $gf_form ) ? $gf_form : null, $entry ); |
|
320
|
|
|
|
|
321
|
|
|
/** |
|
322
|
|
|
* @filter `gravityview_render_after_label` Append content to a field label |
|
323
|
|
|
* @param[in,out] string $appended_content Content you can add after a label. Empty by default. |
|
324
|
|
|
* @param[in] array $field GravityView field array |
|
325
|
|
|
*/ |
|
326
|
3 |
|
$label .= apply_filters( 'gravityview_render_after_label', '', $field->as_configuration() ); |
|
327
|
|
|
|
|
328
|
|
|
} |
|
329
|
|
|
|
|
330
|
|
|
/** |
|
331
|
|
|
* @filter `gravityview/template/field_label` Modify field label output |
|
332
|
|
|
* @since 1.7 |
|
333
|
|
|
* @param[in,out] string $label Field label HTML |
|
334
|
|
|
* @param[in] array $field GravityView field array |
|
335
|
|
|
* @param[in] array $form Gravity Forms form array |
|
336
|
|
|
* @param[in] array $entry Gravity Forms entry array |
|
337
|
|
|
*/ |
|
338
|
3 |
|
return apply_filters( 'gravityview/template/field_label', $label, $field->as_configuration(), isset( $gf_form ) ? $gf_form->form : $form, $entry->as_entry() ); |
|
|
|
|
|
|
339
|
|
|
} |
|
340
|
|
|
|
|
341
|
|
|
|
|
342
|
|
|
/** |
|
343
|
|
|
* A manager of legacy global states and contexts. |
|
344
|
|
|
* |
|
345
|
|
|
* Handles mocking of: |
|
346
|
|
|
* - \GravityView_View_Data |
|
347
|
|
|
* - \GravityView_View |
|
348
|
|
|
* - \GravityView_frontend |
|
349
|
|
|
* |
|
350
|
|
|
* Allows us to set a specific state globally using the old |
|
351
|
|
|
* containers, then reset it. Useful for legacy code that keeps |
|
352
|
|
|
* on depending on these variables. |
|
353
|
|
|
* |
|
354
|
|
|
* Some examples right now include template files, utility functions, |
|
355
|
|
|
* some actions and filters that expect the old contexts to be set. |
|
356
|
|
|
*/ |
|
357
|
|
|
final class Legacy_Context { |
|
358
|
|
|
private static $stack = array(); |
|
359
|
|
|
|
|
360
|
|
|
/** |
|
361
|
|
|
* Set the state depending on the provided configuration. |
|
362
|
|
|
* |
|
363
|
|
|
* Saves current global state and context. |
|
364
|
|
|
* |
|
365
|
|
|
* Configuration keys: |
|
366
|
|
|
* |
|
367
|
|
|
* - \GV\View view: sets \GravityView_View::atts, \GravityView_View::view_id, |
|
368
|
|
|
* \GravityView_View::back_link_label |
|
369
|
|
|
* \GravityView_frontend::context_view_id, |
|
370
|
|
|
* \GravityView_View::form, \GravityView_View::form_id |
|
371
|
|
|
* - \GV\Field field: sets \GravityView_View::_current_field, \GravityView_View::field_data, |
|
372
|
|
|
* - \GV\Entry entry: sets \GravityView_View::_current_entry, \GravityView_frontend::single_entry, |
|
373
|
|
|
* \GravityView_frontend::entry |
|
374
|
|
|
* - \WP_Post post: sets \GravityView_View::post_id, \GravityView_frontend::post_id, |
|
375
|
|
|
* \GravityView_frontend::is_gravityview_post_type, |
|
376
|
|
|
* \GravityView_frontend::post_has_shortcode |
|
377
|
|
|
* - array paging: sets \GravityView_View::paging |
|
378
|
|
|
* - array sorting: sets \GravityView_View::sorting |
|
379
|
|
|
* - array template: sets \GravityView_View::template_part_slug, \GravityView_View::template_part_name |
|
380
|
|
|
* |
|
381
|
|
|
* - boolean in_the_loop sets $wp_actions['loop_start'] and $wp_query::in_the_loop |
|
382
|
|
|
* |
|
383
|
|
|
* also: |
|
384
|
|
|
* |
|
385
|
|
|
* - \GV\Request request: sets \GravityView_frontend::is_search, \GravityView_frontend::single_entry, |
|
386
|
|
|
* \GravityView_View::context, \GravityView_frontend::entry |
|
387
|
|
|
* |
|
388
|
|
|
* - \GV\View_Collection views: sets \GravityView_View_Data::views |
|
389
|
|
|
* - \GV\Field_Collection fields: sets \GravityView_View::fields |
|
390
|
|
|
* - \GV\Entry_Collection entries: sets \GravityView_View::entries, \GravityView_View::total_entries |
|
391
|
|
|
* |
|
392
|
|
|
* and automagically: |
|
393
|
|
|
* |
|
394
|
|
|
* - \GravityView_View data: sets \GravityView_frontend::gv_output_data |
|
395
|
|
|
* |
|
396
|
|
|
* @param array $configuration The configuration. |
|
397
|
|
|
* |
|
398
|
|
|
* @return void |
|
399
|
|
|
*/ |
|
400
|
35 |
|
public static function push( $configuration ) { |
|
401
|
35 |
|
array_push( self::$stack, self::freeze() ); |
|
402
|
35 |
|
self::load( $configuration ); |
|
403
|
35 |
|
} |
|
404
|
|
|
|
|
405
|
|
|
/** |
|
406
|
|
|
* Restores last saved state and context. |
|
407
|
|
|
* |
|
408
|
|
|
* @return void |
|
409
|
|
|
*/ |
|
410
|
34 |
|
public static function pop() { |
|
411
|
34 |
|
self::thaw( array_pop( self::$stack ) ); |
|
412
|
34 |
|
} |
|
413
|
|
|
|
|
414
|
|
|
/** |
|
415
|
|
|
* Serializes the current configuration as needed. |
|
416
|
|
|
* |
|
417
|
|
|
* @return array The configuration. |
|
418
|
|
|
*/ |
|
419
|
35 |
|
public static function freeze() { |
|
420
|
35 |
|
global $wp_actions, $wp_query; |
|
421
|
|
|
|
|
422
|
|
|
return array( |
|
423
|
35 |
|
'\GravityView_View::atts' => \GravityView_View::getInstance()->getAtts(), |
|
424
|
35 |
|
'\GravityView_View::view_id' => \GravityView_View::getInstance()->getViewId(), |
|
425
|
35 |
|
'\GravityView_View::back_link_label' => \GravityView_View::getInstance()->getBackLinkLabel( false ), |
|
|
|
|
|
|
426
|
35 |
|
'\GravityView_View_Data::views' => \GravityView_View_Data::getInstance()->views, |
|
427
|
35 |
|
'\GravityView_View::entries' => \GravityView_View::getInstance()->getEntries(), |
|
428
|
35 |
|
'\GravityView_View::form' => \GravityView_View::getInstance()->getForm(), |
|
429
|
35 |
|
'\GravityView_View::form_id' => \GravityView_View::getInstance()->getFormId(), |
|
430
|
35 |
|
'\GravityView_View::context' => \GravityView_View::getInstance()->getContext(), |
|
431
|
35 |
|
'\GravityView_View::total_entries' => \GravityView_View::getInstance()->getTotalEntries(), |
|
432
|
35 |
|
'\GravityView_View::post_id' => \GravityView_View::getInstance()->getPostId(), |
|
433
|
35 |
|
'\GravityView_View::hide_until_searched' => \GravityView_View::getInstance()->isHideUntilSearched(), |
|
434
|
35 |
|
'\GravityView_frontend::post_id' => \GravityView_frontend::getInstance()->getPostId(), |
|
435
|
35 |
|
'\GravityView_frontend::context_view_id' => \GravityView_frontend::getInstance()->get_context_view_id(), |
|
436
|
35 |
|
'\GravityView_frontend::is_gravityview_post_type' => \GravityView_frontend::getInstance()->isGravityviewPostType(), |
|
437
|
35 |
|
'\GravityView_frontend::post_has_shortcode' => \GravityView_frontend::getInstance()->isPostHasShortcode(), |
|
438
|
35 |
|
'\GravityView_frontend::gv_output_data' => \GravityView_frontend::getInstance()->getGvOutputData(), |
|
439
|
35 |
|
'\GravityView_View::paging' => \GravityView_View::getInstance()->getPaging(), |
|
440
|
35 |
|
'\GravityView_View::sorting' => \GravityView_View::getInstance()->getSorting(), |
|
441
|
35 |
|
'\GravityView_frontend::is_search' => \GravityView_frontend::getInstance()->isSearch(), |
|
442
|
35 |
|
'\GravityView_frontend::single_entry' => \GravityView_frontend::getInstance()->getSingleEntry(), |
|
443
|
35 |
|
'\GravityView_frontend::entry' => \GravityView_frontend::getInstance()->getEntry(), |
|
444
|
35 |
|
'\GravityView_View::_current_entry' => \GravityView_View::getInstance()->getCurrentEntry(), |
|
445
|
35 |
|
'\GravityView_View::fields' => \GravityView_View::getInstance()->getFields(), |
|
446
|
35 |
|
'\GravityView_View::_current_field' => \GravityView_View::getInstance()->getCurrentField(), |
|
447
|
35 |
|
'wp_actions[loop_start]' => empty( $wp_actions['loop_start'] ) ? 0 : $wp_actions['loop_start'], |
|
448
|
35 |
|
'wp_query::in_the_loop' => $wp_query->in_the_loop, |
|
449
|
|
|
); |
|
450
|
|
|
} |
|
451
|
|
|
|
|
452
|
|
|
/** |
|
453
|
|
|
* Unserializes a saved configuration. Modifies the global state. |
|
454
|
|
|
* |
|
455
|
|
|
* @param array $data Saved configuration from self::freeze() |
|
456
|
|
|
*/ |
|
457
|
97 |
|
public static function thaw( $data ) { |
|
458
|
97 |
|
foreach ( (array)$data as $key => $value ) { |
|
459
|
97 |
|
switch ( $key ): |
|
460
|
97 |
|
case '\GravityView_View::atts': |
|
461
|
35 |
|
\GravityView_View::getInstance()->setAtts( $value ); |
|
462
|
35 |
|
break; |
|
463
|
97 |
|
case '\GravityView_View::view_id': |
|
464
|
35 |
|
\GravityView_View::getInstance()->setViewId( $value ); |
|
465
|
35 |
|
break; |
|
466
|
97 |
|
case '\GravityView_View::back_link_label': |
|
467
|
35 |
|
\GravityView_View::getInstance()->setBackLinkLabel( $value ); |
|
468
|
35 |
|
break; |
|
469
|
97 |
|
case '\GravityView_View_Data::views': |
|
470
|
35 |
|
\GravityView_View_Data::getInstance()->views = $value; |
|
471
|
35 |
|
break; |
|
472
|
97 |
|
case '\GravityView_View::entries': |
|
473
|
35 |
|
\GravityView_View::getInstance()->setEntries( $value ); |
|
474
|
35 |
|
break; |
|
475
|
97 |
|
case '\GravityView_View::form': |
|
476
|
35 |
|
\GravityView_View::getInstance()->setForm( $value ); |
|
477
|
35 |
|
break; |
|
478
|
97 |
|
case '\GravityView_View::form_id': |
|
479
|
35 |
|
\GravityView_View::getInstance()->setFormId( $value ); |
|
480
|
35 |
|
break; |
|
481
|
97 |
|
case '\GravityView_View::context': |
|
482
|
35 |
|
\GravityView_View::getInstance()->setContext( $value ); |
|
483
|
35 |
|
break; |
|
484
|
97 |
|
case '\GravityView_View::total_entries': |
|
485
|
35 |
|
\GravityView_View::getInstance()->setTotalEntries( $value ); |
|
486
|
35 |
|
break; |
|
487
|
97 |
|
case '\GravityView_View::post_id': |
|
488
|
35 |
|
\GravityView_View::getInstance()->setPostId( $value ); |
|
489
|
35 |
|
break; |
|
490
|
97 |
|
case '\GravityView_View::is_hide_until_searched': |
|
491
|
35 |
|
\GravityView_View::getInstance()->setHideUntilSearched( $value ); |
|
492
|
35 |
|
break; |
|
493
|
97 |
|
case '\GravityView_frontend::post_id': |
|
494
|
35 |
|
\GravityView_frontend::getInstance()->setPostId( $value ); |
|
495
|
35 |
|
break; |
|
496
|
97 |
|
case '\GravityView_frontend::context_view_id': |
|
497
|
35 |
|
$frontend = \GravityView_frontend::getInstance(); |
|
498
|
35 |
|
$frontend->context_view_id = $value; |
|
499
|
35 |
|
break; |
|
500
|
97 |
|
case '\GravityView_frontend::is_gravityview_post_type': |
|
501
|
35 |
|
\GravityView_frontend::getInstance()->setIsGravityviewPostType( $value ); |
|
502
|
35 |
|
break; |
|
503
|
97 |
|
case '\GravityView_frontend::post_has_shortcode': |
|
504
|
35 |
|
\GravityView_frontend::getInstance()->setPostHasShortcode( $value ); |
|
505
|
35 |
|
break; |
|
506
|
97 |
|
case '\GravityView_frontend::gv_output_data': |
|
507
|
35 |
|
\GravityView_frontend::getInstance()->setGvOutputData( $value ); |
|
508
|
35 |
|
break; |
|
509
|
97 |
|
case '\GravityView_View::paging': |
|
510
|
34 |
|
\GravityView_View::getInstance()->setPaging( $value ); |
|
511
|
34 |
|
break; |
|
512
|
97 |
|
case '\GravityView_View::sorting': |
|
513
|
34 |
|
\GravityView_View::getInstance()->setSorting( $value ); |
|
514
|
34 |
|
break; |
|
515
|
97 |
|
case '\GravityView_frontend::is_search': |
|
516
|
35 |
|
\GravityView_frontend::getInstance()->setIsSearch( $value ); |
|
517
|
35 |
|
break; |
|
518
|
97 |
|
case '\GravityView_frontend::single_entry': |
|
519
|
35 |
|
\GravityView_frontend::getInstance()->setSingleEntry( $value ); |
|
520
|
35 |
|
break; |
|
521
|
97 |
|
case '\GravityView_frontend::entry': |
|
522
|
35 |
|
\GravityView_frontend::getInstance()->setEntry( $value ); |
|
523
|
35 |
|
break; |
|
524
|
97 |
|
case '\GravityView_View::_current_entry': |
|
525
|
35 |
|
\GravityView_View::getInstance()->setCurrentEntry( $value ); |
|
526
|
35 |
|
break; |
|
527
|
97 |
|
case '\GravityView_View::fields': |
|
528
|
34 |
|
\GravityView_View::getInstance()->setFields( $value ); |
|
529
|
34 |
|
break; |
|
530
|
97 |
|
case '\GravityView_View::_current_field': |
|
531
|
97 |
|
\GravityView_View::getInstance()->setCurrentField( $value ); |
|
532
|
97 |
|
break; |
|
533
|
34 |
|
case 'wp_actions[loop_start]': |
|
534
|
34 |
|
global $wp_actions; |
|
535
|
34 |
|
$wp_actions['loop_start'] = $value; |
|
536
|
34 |
|
break; |
|
537
|
34 |
|
case 'wp_query::in_the_loop': |
|
538
|
34 |
|
global $wp_query; |
|
539
|
34 |
|
$wp_query->in_the_loop = $value; |
|
540
|
34 |
|
break; |
|
541
|
|
|
endswitch; |
|
542
|
|
|
} |
|
543
|
97 |
|
} |
|
544
|
|
|
|
|
545
|
|
|
/** |
|
546
|
|
|
* Hydrates the legacy context globals as needed. |
|
547
|
|
|
* |
|
548
|
|
|
* @see self::push() for format. |
|
549
|
|
|
* |
|
550
|
|
|
* @return void |
|
551
|
|
|
*/ |
|
552
|
97 |
|
public static function load( $configuration ) { |
|
553
|
97 |
|
foreach ( (array)$configuration as $key => $value ) { |
|
554
|
97 |
|
switch ( $key ): |
|
555
|
97 |
|
case 'view': |
|
556
|
35 |
|
$views = new \GV\View_Collection(); |
|
557
|
35 |
|
$views->add( $value ); |
|
558
|
|
|
|
|
559
|
35 |
|
self::thaw( array( |
|
560
|
35 |
|
'\GravityView_View::atts' => $value->settings->as_atts(), |
|
561
|
35 |
|
'\GravityView_View::view_id' => $value->ID, |
|
562
|
35 |
|
'\GravityView_View::back_link_label' => $value->settings->get( 'back_link_label', null ), |
|
563
|
35 |
|
'\GravityView_View::form' => $value->form ? $value->form->form : null, |
|
564
|
35 |
|
'\GravityView_View::form_id' => $value->form ? $value->form->ID : null, |
|
565
|
35 |
|
'\GravityView_View::is_hide_until_searched' => $value->settings->get( 'hide_until_searched', null ) && ! gravityview()->request->is_search(), |
|
566
|
|
|
|
|
567
|
35 |
|
'\GravityView_View_Data::views' => $views, |
|
568
|
35 |
|
'\GravityView_frontend::gv_output_data' => \GravityView_View_Data::getInstance(), |
|
569
|
35 |
|
'\GravityView_frontend::context_view_id' => $value->ID, |
|
570
|
|
|
) ); |
|
571
|
35 |
|
break; |
|
572
|
97 |
|
case 'post': |
|
573
|
11 |
|
$has_shortcode = false; |
|
574
|
11 |
|
foreach ( \GV\Shortcode::parse( $value->post_content ) as $shortcode ) { |
|
575
|
3 |
|
if ( $shortcode->name == 'gravityview' ) { |
|
576
|
3 |
|
$has_shortcode = true; |
|
577
|
3 |
|
break; |
|
578
|
|
|
} |
|
579
|
|
|
} |
|
580
|
11 |
|
self::thaw( array( |
|
581
|
11 |
|
'\GravityView_View::post_id' => $value->ID, |
|
582
|
11 |
|
'\GravityView_frontend::post_id' => $value->ID, |
|
583
|
11 |
|
'\GravityView_frontend::is_gravityview_post_type' => $value->post_type == 'gravityview', |
|
584
|
11 |
|
'\GravityView_frontend::post_has_shortcode' => $has_shortcode, |
|
585
|
|
|
) ); |
|
586
|
11 |
|
break; |
|
587
|
97 |
|
case 'views': |
|
588
|
|
|
self::thaw( array( |
|
589
|
|
|
'\GravityView_View_Data::views' => $value, |
|
590
|
|
|
'\GravityView_frontend::gv_output_data' => \GravityView_View_Data::getInstance(), |
|
591
|
|
|
) ); |
|
592
|
|
|
break; |
|
593
|
97 |
|
case 'entries': |
|
594
|
35 |
|
self::thaw( array( |
|
595
|
|
|
'\GravityView_View::entries' => array_map( function( $e ) { return $e->as_entry(); }, $value->all() ), |
|
596
|
35 |
|
'\GravityView_View::total_entries' => $value->total(), |
|
597
|
|
|
) ); |
|
598
|
35 |
|
break; |
|
599
|
97 |
|
case 'entry': |
|
600
|
30 |
|
self::thaw( array( |
|
601
|
30 |
|
'\GravityView_frontend::single_entry' => $value->ID, |
|
602
|
30 |
|
'\GravityView_frontend::entry' => $value->as_entry(), |
|
603
|
30 |
|
'\GravityView_View::_current_entry' => $value->as_entry(), |
|
604
|
|
|
) ); |
|
605
|
30 |
|
break; |
|
606
|
97 |
|
case 'fields': |
|
607
|
3 |
|
self::thaw( array( |
|
608
|
3 |
|
'\GravityView_View::fields' => $value->as_configuration(), |
|
609
|
|
|
) ); |
|
610
|
3 |
|
break; |
|
611
|
96 |
|
case 'field': |
|
612
|
90 |
|
self::thaw( array( |
|
613
|
|
|
'\GravityView_View::_current_field' => array( |
|
614
|
90 |
|
'field_id' => $value->ID, |
|
615
|
90 |
|
'field' => $value->field, |
|
616
|
90 |
|
'field_settings' => $value->as_configuration(), |
|
617
|
90 |
|
'form' => \GravityView_View::getInstance()->getForm(), |
|
618
|
90 |
|
'field_type' => $value->type, /** {@since 1.6} */ |
|
619
|
90 |
|
'entry' => \GravityView_View::getInstance()->getCurrentEntry(), |
|
620
|
90 |
|
'UID' => $value->UID, |
|
621
|
|
|
|
|
622
|
|
|
// 'field_path' => $field_path, /** {@since 1.16} */ |
|
623
|
|
|
// 'value' => $value, |
|
624
|
|
|
// 'display_value' => $display_value, |
|
625
|
|
|
// 'format' => $format, |
|
626
|
|
|
), |
|
627
|
|
|
) ); |
|
628
|
90 |
|
break; |
|
629
|
34 |
|
case 'request': |
|
630
|
34 |
|
self::thaw( array( |
|
631
|
34 |
|
'\GravityView_View::context' => ( |
|
632
|
34 |
|
$value->is_entry() ? 'single' : |
|
633
|
26 |
|
( $value->is_edit_entry() ? 'edit' : |
|
634
|
26 |
|
( $value->is_view() ? 'directory': null ) |
|
635
|
|
|
) |
|
636
|
|
|
), |
|
637
|
34 |
|
'\GravityView_frontend::is_search' => $value->is_search(), |
|
638
|
|
|
) ); |
|
639
|
|
|
|
|
640
|
34 |
|
if ( ! $value->is_entry() ) { |
|
641
|
26 |
|
self::thaw( array( |
|
642
|
26 |
|
'\GravityView_frontend::single_entry' => 0, |
|
643
|
|
|
'\GravityView_frontend::entry' => 0 |
|
644
|
|
|
) ); |
|
645
|
|
|
} |
|
646
|
34 |
|
break; |
|
647
|
20 |
|
case 'paging': |
|
648
|
20 |
|
self::thaw( array( |
|
649
|
20 |
|
'\GravityView_View::paging' => $value, |
|
650
|
|
|
) ); |
|
651
|
20 |
|
break; |
|
652
|
20 |
|
case 'sorting': |
|
653
|
20 |
|
self::thaw( array( |
|
654
|
20 |
|
'\GravityView_View::sorting' => $value, |
|
655
|
|
|
) ); |
|
656
|
20 |
|
break; |
|
657
|
5 |
|
case 'in_the_loop': |
|
658
|
2 |
|
self::thaw( array( |
|
659
|
2 |
|
'wp_query::in_the_loop' => $value, |
|
660
|
2 |
|
'wp_actions[loop_start]' => $value ? 1 : 0, |
|
661
|
|
|
) ); |
|
662
|
2 |
|
break; |
|
663
|
|
|
endswitch; |
|
664
|
|
|
} |
|
665
|
|
|
|
|
666
|
97 |
|
global $gravityview_view; |
|
667
|
97 |
|
$gravityview_view = \GravityView_View::getInstance(); |
|
668
|
97 |
|
} |
|
669
|
|
|
|
|
670
|
|
|
/** |
|
671
|
|
|
* Resets the global state completely. |
|
672
|
|
|
* |
|
673
|
|
|
* Use with utmost care, as filter and action callbacks |
|
674
|
|
|
* may be added again. |
|
675
|
|
|
* |
|
676
|
|
|
* Does not touch the context stack. |
|
677
|
|
|
* |
|
678
|
|
|
* @return void |
|
679
|
|
|
*/ |
|
680
|
89 |
|
public static function reset() { |
|
681
|
89 |
|
\GravityView_View::$instance = null; |
|
|
|
|
|
|
682
|
89 |
|
\GravityView_frontend::$instance = null; |
|
|
|
|
|
|
683
|
89 |
|
\GravityView_View_Data::$instance = null; |
|
|
|
|
|
|
684
|
|
|
|
|
685
|
89 |
|
global $wp_query, $wp_actions; |
|
686
|
|
|
|
|
687
|
89 |
|
$wp_query->in_the_loop = false; |
|
688
|
89 |
|
$wp_actions['loop_start'] = 0; |
|
689
|
89 |
|
} |
|
690
|
|
|
} |
|
691
|
|
|
|
|
692
|
|
|
|
|
693
|
|
|
/** Add some global fix for field capability discrepancies. */ |
|
694
|
|
|
add_filter( 'gravityview/configuration/fields', function( $fields ) { |
|
695
|
98 |
|
if ( empty( $fields ) ) { |
|
696
|
|
|
return $fields; |
|
697
|
|
|
} |
|
698
|
|
|
|
|
699
|
|
|
/** |
|
700
|
|
|
* Each view field is saved in a weird capability state by default. |
|
701
|
|
|
* |
|
702
|
|
|
* With loggedin set to false, but a capability of 'read' it introduces |
|
703
|
|
|
* some logical issues and is not robust. Fix this behavior throughout |
|
704
|
|
|
* core by making sure capability is '' if log in is not required. |
|
705
|
|
|
* |
|
706
|
|
|
* Perhaps in the UI a fix would be to unite the two fields (as our new |
|
707
|
|
|
* \GV\Field class already does) into one dropdown: |
|
708
|
|
|
* |
|
709
|
|
|
* Anyone, Logged In Only, ... etc. etc. |
|
710
|
|
|
* |
|
711
|
|
|
* The two "settings" should be as tightly coupled as possible to avoid |
|
712
|
|
|
* split logic scenarios. Uniting them into one field is the way to go. |
|
713
|
|
|
*/ |
|
714
|
|
|
|
|
715
|
98 |
|
foreach ( $fields as $position => &$_fields ) { |
|
716
|
|
|
|
|
717
|
98 |
|
if ( empty( $_fields ) || ! is_array( $_fields ) ) { |
|
718
|
|
|
continue; |
|
719
|
|
|
} |
|
720
|
|
|
|
|
721
|
98 |
|
foreach ( $_fields as $uid => &$_field ) { |
|
722
|
98 |
|
if ( ! isset( $_field['only_loggedin'] ) ) { |
|
723
|
87 |
|
continue; |
|
724
|
|
|
} |
|
725
|
|
|
/** If we do not require login, we don't require a cap. */ |
|
726
|
13 |
|
$_field['only_loggedin'] != '1' && ( $_field['only_loggedin_cap'] = '' ); |
|
727
|
|
|
} |
|
728
|
|
|
} |
|
729
|
98 |
|
return $fields; |
|
730
|
|
|
} ); |
|
731
|
|
|
|
|
732
|
|
|
|
|
733
|
|
|
/** Add a future fix to make sure field configurations include the form ID. */ |
|
734
|
|
|
add_filter( 'gravityview/view/configuration/fields', function( $fields, $view ) { |
|
735
|
159 |
|
if ( ! $view || empty( $fields ) ) { |
|
736
|
|
|
return $fields; |
|
737
|
|
|
} |
|
738
|
|
|
|
|
739
|
159 |
|
if ( ! $view->form || ! $view->form->ID ) { |
|
740
|
|
|
return $fields; |
|
741
|
|
|
} |
|
742
|
|
|
|
|
743
|
|
|
/** |
|
744
|
|
|
* In order to instantiate the correct \GV\Field implementation |
|
745
|
|
|
* we need to provide a form_id inside the configuration. |
|
746
|
|
|
* |
|
747
|
|
|
* @todo Make sure this actually happens in the admin side |
|
748
|
|
|
* when saving the views. |
|
749
|
|
|
*/ |
|
750
|
159 |
|
foreach ( $fields as $position => &$_fields ) { |
|
751
|
|
|
|
|
752
|
159 |
|
if ( empty( $_fields ) || ! is_array( $_fields ) ) { |
|
753
|
|
|
continue; |
|
754
|
|
|
} |
|
755
|
|
|
|
|
756
|
159 |
|
foreach ( $_fields as $uid => &$_field ) { |
|
757
|
159 |
|
if ( ! empty( $_field['id'] ) && is_numeric( $_field['id'] ) && empty( $_field['form_id'] ) ) { |
|
758
|
128 |
|
$_field['form_id'] = $view->form->ID; |
|
759
|
|
|
} |
|
760
|
|
|
} |
|
761
|
|
|
} |
|
762
|
|
|
|
|
763
|
159 |
|
return $fields; |
|
764
|
|
|
}, 10, 2 ); |
|
765
|
|
|
|
|
766
|
|
|
|
|
767
|
|
|
/** Make sure the non-configured notice is not output twice. */ |
|
768
|
|
|
add_action( 'gravityview/template/after', function( $gravityview = null ) { |
|
|
|
|
|
|
769
|
31 |
|
if ( class_exists( '\GravityView_frontend' ) ) { |
|
770
|
31 |
|
global $wp_filter; |
|
771
|
|
|
|
|
772
|
31 |
|
if ( empty( $wp_filter['gravityview_after'] ) ) { |
|
773
|
|
|
return; |
|
774
|
|
|
} |
|
775
|
|
|
|
|
776
|
|
|
/** WordPress 4.6 and lower compatibility, when WP_Hook classes were still absent. */ |
|
777
|
31 |
|
if ( is_array( $wp_filter['gravityview_after'] ) ) { |
|
778
|
|
|
if ( ! empty( $wp_filter['gravityview_after'][10] ) ) { |
|
779
|
|
|
foreach ( $wp_filter['gravityview_after'][10] as $function_key => $callback ) { |
|
780
|
|
|
if ( strpos( $function_key, 'context_not_configured_warning' ) ) { |
|
781
|
|
|
unset( $wp_filter['gravityview_after'][10][ $function_key ] ); |
|
782
|
|
|
} |
|
783
|
|
|
} |
|
784
|
|
|
} |
|
785
|
|
|
return; |
|
786
|
|
|
} |
|
787
|
|
|
|
|
788
|
31 |
|
foreach ( $wp_filter['gravityview_after']->callbacks[10] as $function_key => $callback ) { |
|
789
|
31 |
|
if ( strpos( $function_key, 'context_not_configured_warning' ) ) { |
|
790
|
31 |
|
unset( $wp_filter['gravityview_after']->callbacks[10][ $function_key ] ); |
|
791
|
|
|
} |
|
792
|
|
|
} |
|
793
|
|
|
} |
|
794
|
31 |
|
} ); |
|
795
|
|
|
|
|
796
|
|
|
add_filter( 'gravityview/query/is_null_condition', function() { |
|
797
|
|
|
if ( ! class_exists( $class = '\GV\Mocks\GF_Query_Condition_IS_NULL' ) ) { |
|
798
|
|
|
require_once gravityview()->plugin->dir( 'future/_mocks.isnull.php' ); |
|
799
|
|
|
} |
|
800
|
|
|
|
|
801
|
|
|
return $class; |
|
802
|
|
|
} ); |
|
803
|
|
|
|
This method has been deprecated.