PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / 2.05.09
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More v2.05.09
6.35 6.34 6.33.1 6.33 6.32.1 6.32 6.31 6.25 6.25.1 6.26 6.26.1 6.27 6.28 6.29 6.3 6.3.1 6.3.2 6.30 6.4 6.4.1 6.4.2 6.5 6.5.1 6.5.2 6.5.3 All 141 releases
formidable / classes / controllers / FrmEntriesController.php

FrmEntriesController.php in Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More 2.05.09, at classes/controllers/FrmEntriesController.php

656 lines 21.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 class FrmEntriesController {
4
5 public static function menu() {
6 FrmAppHelper::force_capability( 'frm_view_entries' );
7
8 add_submenu_page( 'formidable', 'Formidable | ' . __( 'Entries', 'formidable' ), __( 'Entries', 'formidable' ), 'frm_view_entries', 'formidable-entries', 'FrmEntriesController::route' );
9
10 self::load_manage_entries_hooks();
11 }
12
13 /**
14 * @since 2.05.07
15 */
16 private static function load_manage_entries_hooks() {
17 if ( ! in_array( FrmAppHelper::simple_get( 'frm_action', 'sanitize_title' ), array( 'edit', 'show' ) ) ) {
18 $menu_name = FrmAppHelper::get_menu_name();
19 $base = self::base_column_key( $menu_name );
20
21 add_filter( 'manage_' . $base . '_columns', 'FrmEntriesController::manage_columns' );
22 add_filter( 'get_user_option_' . self::hidden_column_key( $menu_name ), 'FrmEntriesController::hidden_columns' );
23 add_filter( 'manage_' . $base . '_sortable_columns', 'FrmEntriesController::sortable_columns' );
24 }
25 }
26
27 /* Display in Back End */
28 public static function route() {
29 $action = FrmAppHelper::get_param( 'frm_action', '', 'get', 'sanitize_title' );
30
31 switch ( $action ) {
32 case 'show':
33 case 'destroy':
34 case 'destroy_all':
35 return self::$action();
36
37 default:
38 do_action( 'frm_entry_action_route', $action );
39 if ( apply_filters( 'frm_entry_stop_action_route', false, $action ) ) {
40 return;
41 }
42
43 return self::display_list();
44 }
45 }
46
47 public static function contextual_help( $help, $screen_id, $screen ) {
48 // Only add to certain screens. add_help_tab was introduced in WordPress 3.3
49 if ( ! method_exists( $screen, 'add_help_tab' ) ) {
50 return $help;
51 }
52
53 $action = FrmAppHelper::simple_get( 'frm_action', 'sanitize_title' );
54 $page = FrmAppHelper::simple_get( 'page', 'sanitize_title' );
55 if ( $page != 'formidable-entries' || ( ! empty( $action ) && $action != 'list' ) ) {
56 return $help;
57 }
58
59 unset( $action, $page );
60
61 $screen->add_help_tab( array(
62 'id' => 'formidable-entries-tab',
63 'title' => __( 'Overview', 'formidable' ),
64 'content' => '<p>' . esc_html__( 'This screen provides access to all of your entries. You can customize the display of this screen to suit your workflow.', 'formidable' ) . '</p> <p>' . esc_html__( 'Hovering over a row in the entries list will display action links that allow you to manage your entry.', 'formidable' ) . '</p>',
65 ));
66
67 $screen->set_help_sidebar(
68 '<p><strong>' . esc_html__( 'For more information:', 'formidable' ) . '</strong></p>' .
69 '<p><a href="' . esc_url( FrmAppHelper::make_affiliate_url( 'https://formidableforms.com/knowledgebase/manage-entries-from-the-back-end/' ) ) . '" target="_blank">' . esc_html__( 'Documentation on Entries', 'formidable' ) . '</a></p>' .
70 '<p><a href="' . esc_url( FrmAppHelper::make_affiliate_url( 'https://formidableforms.com/help-desk/' ) ) . '" target="_blank">' . esc_html__( 'Support', 'formidable' ) . '</a></p>'
71 );
72
73 return $help;
74 }
75
76 public static function manage_columns( $columns ) {
77 global $frm_vars;
78 $form_id = FrmForm::get_current_form_id();
79
80 $columns[ $form_id . '_id' ] = 'ID';
81 $columns[ $form_id . '_item_key' ] = esc_html__( 'Entry Key', 'formidable' );
82
83 if ( $form_id ) {
84 self::get_columns_for_form( $form_id, $columns );
85 } else {
86 $columns[ $form_id . '_form_id' ] = __( 'Form', 'formidable' );
87 $columns[ $form_id . '_name' ] = __( 'Entry Name', 'formidable' );
88 $columns[ $form_id . '_user_id' ] = __( 'Created By', 'formidable' );
89 }
90
91 $columns[ $form_id . '_created_at' ] = __( 'Entry creation date', 'formidable' );
92 $columns[ $form_id . '_updated_at' ] = __( 'Entry update date', 'formidable' );
93 self::maybe_add_ip_col( $form_id, $columns );
94
95 $frm_vars['cols'] = $columns;
96
97 $action = FrmAppHelper::simple_get( 'frm_action', 'sanitize_title' );
98 if ( FrmAppHelper::is_admin_page( 'formidable-entries' ) && in_array( $action, array( '', 'list', 'destroy' ) ) ) {
99 add_screen_option( 'per_page', array(
100 'label' => __( 'Entries', 'formidable' ),
101 'default' => 20,
102 'option' => 'formidable_page_formidable_entries_per_page',
103 ) );
104 }
105
106 return $columns;
107 }
108
109 private static function get_columns_for_form( $form_id, &$columns ) {
110 $form_cols = FrmField::get_all_for_form( $form_id, '', 'include' );
111
112 foreach ( $form_cols as $form_col ) {
113 if ( FrmField::is_no_save_field( $form_col->type ) ) {
114 continue;
115 }
116
117 if ( $form_col->type == 'form' && isset( $form_col->field_options['form_select'] ) && ! empty( $form_col->field_options['form_select'] ) ) {
118 $sub_form_cols = FrmField::get_all_for_form( $form_col->field_options['form_select'] );
119
120 if ( $sub_form_cols ) {
121 foreach ( $sub_form_cols as $k => $sub_form_col ) {
122 if ( FrmField::is_no_save_field( $sub_form_col->type ) ) {
123 unset( $sub_form_cols[ $k ] );
124 continue;
125 }
126 $columns[ $form_id . '_' . $sub_form_col->field_key . '-_-' . $form_col->id ] = FrmAppHelper::truncate( $sub_form_col->name, 35 );
127 unset( $sub_form_col );
128 }
129 }
130 unset( $sub_form_cols );
131 } else {
132 $col_id = $form_col->field_key;
133 if ( $form_col->form_id != $form_id ) {
134 $col_id .= '-_-form' . $form_col->form_id;
135 }
136
137 $has_separate_value = ! FrmField::is_option_empty( $form_col, 'separate_value' );
138 $is_post_status = FrmField::is_option_true( $form_col, 'post_field' ) && $form_col->field_options['post_field'] == 'post_status';
139 if ( $has_separate_value && ! $is_post_status ) {
140 $columns[ $form_id . '_frmsep_' . $col_id ] = FrmAppHelper::truncate( $form_col->name, 35 );
141 }
142 $columns[ $form_id . '_' . $col_id ] = FrmAppHelper::truncate( $form_col->name, 35 );
143 }
144 }
145 }
146
147 private static function maybe_add_ip_col( $form_id, &$columns ) {
148 if ( FrmAppHelper::ips_saved() ) {
149 $columns[ $form_id . '_ip' ] = 'IP';
150 }
151 }
152
153 public static function check_hidden_cols( $check, $object_id, $meta_key, $meta_value, $prev_value ) {
154 $this_page_name = self::hidden_column_key();
155 if ( $meta_key != $this_page_name || $meta_value == $prev_value ) {
156 return $check;
157 }
158
159 if ( empty( $prev_value ) ) {
160 $prev_value = get_metadata( 'user', $object_id, $meta_key, true );
161 }
162
163 global $frm_vars;
164 //add a check so we don't create a loop
165 $frm_vars['prev_hidden_cols'] = ( isset( $frm_vars['prev_hidden_cols'] ) && $frm_vars['prev_hidden_cols'] ) ? false : $prev_value;
166
167 return $check;
168 }
169
170 //add hidden columns back from other forms
171 public static function update_hidden_cols( $meta_id, $object_id, $meta_key, $meta_value ) {
172 $this_page_name = self::hidden_column_key();
173 if ( $meta_key != $this_page_name ) {
174 return;
175 }
176
177 global $frm_vars;
178 if ( ! isset( $frm_vars['prev_hidden_cols'] ) || ! $frm_vars['prev_hidden_cols'] ) {
179 return; //don't continue if there's no previous value
180 }
181
182 foreach ( $meta_value as $mk => $mv ) {
183 //remove blank values
184 if ( empty( $mv ) ) {
185 unset( $meta_value[ $mk ] );
186 }
187 }
188
189 $cur_form_prefix = reset( $meta_value );
190 $cur_form_prefix = explode( '_', $cur_form_prefix );
191 $cur_form_prefix = $cur_form_prefix[0];
192 $save = false;
193
194 foreach ( (array) $frm_vars['prev_hidden_cols'] as $prev_hidden ) {
195 if ( empty( $prev_hidden ) || in_array( $prev_hidden, $meta_value ) ) {
196 //don't add blank cols or process included cols
197 continue;
198 }
199
200 $form_prefix = explode( '_', $prev_hidden );
201 $form_prefix = $form_prefix[0];
202 if ( $form_prefix == $cur_form_prefix ) {
203 //don't add back columns that are meant to be hidden
204 continue;
205 }
206
207 $meta_value[] = $prev_hidden;
208 $save = true;
209 unset( $form_prefix );
210 }
211
212 if ( $save ) {
213 $user_id = get_current_user_id();
214 update_user_option( $user_id, $this_page_name, $meta_value, true );
215 }
216 }
217
218 /**
219 * @since 2.05.07
220 */
221 private static function hidden_column_key( $menu_name = '' ) {
222 $base = self::base_column_key( $menu_name );
223 return 'manage' . $base . 'columnshidden';
224 }
225
226 /**
227 * @since 2.05.07
228 */
229 private static function base_column_key( $menu_name = '' ) {
230 if ( empty( $menu_name ) ) {
231 $menu_name = FrmAppHelper::get_menu_name();
232 }
233 return sanitize_title( $menu_name ) . '_page_formidable-entries';
234 }
235
236 public static function save_per_page( $save, $option, $value ) {
237 if ( $option == 'formidable_page_formidable_entries_per_page' ) {
238 $save = (int) $value;
239 }
240 return $save;
241 }
242
243 public static function sortable_columns() {
244 $form_id = FrmForm::get_current_form_id();
245 $fields = FrmField::get_all_for_form( $form_id );
246
247 $columns = array(
248 $form_id . '_id' => 'id',
249 $form_id . '_created_at' => 'created_at',
250 $form_id . '_updated_at' => 'updated_at',
251 $form_id . '_ip' => 'ip',
252 $form_id . '_item_key' => 'item_key',
253 $form_id . '_is_draft' => 'is_draft',
254 );
255
256 foreach ( $fields as $field ) {
257 if ( $field->type != 'checkbox' && ( ! isset( $field->field_options['post_field'] ) || $field->field_options['post_field'] == '' ) ) {
258 // Can't sort on checkboxes because they are stored serialized, or post fields
259 $columns[ $form_id . '_' . $field->field_key ] = 'meta_' . $field->id;
260 }
261 }
262
263 return $columns;
264 }
265
266 public static function hidden_columns( $result ) {
267 $form_id = FrmForm::get_current_form_id();
268
269 $hidden = self::user_hidden_columns_for_form( $form_id, $result );
270
271 global $frm_vars;
272 $i = isset( $frm_vars['cols'] ) ? count( $frm_vars['cols'] ) : 0;
273
274 if ( ! empty( $hidden ) ) {
275 $result = $hidden;
276 $i = $i - count( $result );
277 $max_columns = 11;
278 } else {
279 $max_columns = 8;
280 }
281
282 if ( $i <= $max_columns ) {
283 return $result;
284 }
285
286 self::remove_excess_cols( compact( 'i', 'max_columns', 'form_id' ), $result );
287
288 return $result;
289 }
290
291 /**
292 * @since 2.05.07
293 */
294 private static function user_hidden_columns_for_form( $form_id, $result ) {
295 $hidden = array();
296 foreach ( (array) $result as $r ) {
297 if ( ! empty( $r ) ) {
298 list( $form_prefix, $field_key ) = explode( '_', $r );
299
300 if ( (int) $form_prefix == (int) $form_id ) {
301 $hidden[] = $r;
302 }
303
304 unset( $form_prefix );
305 }
306 }
307 return $hidden;
308 }
309
310 /**
311 * Remove some columns by default when there are too many
312 *
313 * @since 2.05.07
314 */
315 private static function remove_excess_cols( $atts, &$result ) {
316 global $frm_vars;
317
318 $remove_first = array(
319 $atts['form_id'] . '_item_key' => '',
320 $atts['form_id'] . '_id' => '',
321 );
322 $cols = $remove_first + array_reverse( $frm_vars['cols'], true );
323
324 $i = $atts['i'];
325
326 foreach ( $cols as $col_key => $col ) {
327 if ( $i <= $atts['max_columns'] ) {
328 break;
329 }
330
331 if ( empty( $result ) || ! in_array( $col_key, $result, true ) ) {
332 $result[] = $col_key;
333 $i--;
334 }
335
336 unset( $col_key, $col );
337 }
338 }
339
340 public static function display_list( $message = '', $errors = array() ) {
341 global $wpdb, $frm_vars;
342
343 $form = FrmForm::maybe_get_current_form();
344 $params = FrmForm::get_admin_params( $form );
345
346 if ( $form ) {
347 $params['form'] = $form->id;
348 $frm_vars['current_form'] = $form;
349
350 self::get_delete_form_time( $form, $errors );
351 }
352
353 $table_class = apply_filters( 'frm_entries_list_class', 'FrmEntriesListHelper' );
354
355 $wp_list_table = new $table_class( array( 'params' => $params ) );
356
357 $pagenum = $wp_list_table->get_pagenum();
358
359 $wp_list_table->prepare_items();
360
361 $total_pages = $wp_list_table->get_pagination_arg( 'total_pages' );
362 if ( $pagenum > $total_pages && $total_pages > 0 ) {
363 $url = add_query_arg( 'paged', $total_pages );
364 if ( headers_sent() ) {
365 echo FrmAppHelper::js_redirect( $url );
366 } else {
367 wp_redirect( esc_url_raw( $url ) );
368 }
369 die();
370 }
371
372 if ( empty( $message ) && isset( $_GET['import-message'] ) ) {
373 $message = __( 'Your import is complete', 'formidable' );
374 }
375
376 require( FrmAppHelper::plugin_path() . '/classes/views/frm-entries/list.php' );
377 }
378
379 private static function get_delete_form_time( $form, &$errors ) {
380 if ( 'trash' == $form->status ) {
381 $delete_timestamp = time() - ( DAY_IN_SECONDS * EMPTY_TRASH_DAYS );
382 $time_to_delete = FrmAppHelper::human_time_diff( $delete_timestamp, ( isset( $form->options['trash_time'] ) ? ( $form->options['trash_time'] ) : time() ) );
383 $errors['trash'] = sprintf( __( 'This form is in the trash and is scheduled to be deleted permanently in %s along with any entries.', 'formidable' ), $time_to_delete );
384 }
385 }
386
387 /* Back End CRUD */
388 public static function show( $id = 0 ) {
389 FrmAppHelper::permission_check( 'frm_view_entries' );
390
391 if ( ! $id ) {
392 $id = FrmAppHelper::get_param( 'id', 0, 'get', 'absint' );
393
394 if ( ! $id ) {
395 $id = FrmAppHelper::get_param( 'item_id', 0, 'get', 'absint' );
396 }
397 }
398
399 $entry = FrmEntry::getOne( $id, true );
400 if ( ! $entry ) {
401 echo '<div id="form_show_entry_page" class="wrap">' .
402 __( 'You are trying to view an entry that does not exist.', 'formidable' ) .
403 '</div>';
404 return;
405 }
406
407 $data = maybe_unserialize( $entry->description );
408 if ( ! is_array( $data ) || ! isset( $data['referrer'] ) ) {
409 $data = array( 'referrer' => $data );
410 }
411
412 $fields = FrmField::get_all_for_form( $entry->form_id, '', 'include' );
413 $to_emails = array();
414
415 include( FrmAppHelper::plugin_path() . '/classes/views/frm-entries/show.php' );
416 }
417
418 public static function destroy() {
419 FrmAppHelper::permission_check( 'frm_delete_entries' );
420
421 $params = FrmForm::get_admin_params();
422
423 if ( isset( $params['keep_post'] ) && $params['keep_post'] ) {
424 //unlink entry from post
425 global $wpdb;
426 $wpdb->update( $wpdb->prefix . 'frm_items', array( 'post_id' => '' ), array( 'id' => $params['id'] ) );
427 }
428
429 $message = '';
430 if ( FrmEntry::destroy( $params['id'] ) ) {
431 $message = __( 'Entry was Successfully Destroyed', 'formidable' );
432 }
433
434 self::display_list( $message );
435 }
436
437 public static function destroy_all() {
438 if ( ! current_user_can( 'frm_delete_entries' ) ) {
439 $frm_settings = FrmAppHelper::get_settings();
440 wp_die( $frm_settings->admin_permission );
441 }
442
443 global $wpdb;
444 $params = FrmForm::get_admin_params();
445 $message = '';
446 $errors = array();
447 $form_id = (int) $params['form'];
448
449 if ( $form_id ) {
450 $entry_ids = FrmDb::get_col( 'frm_items', array( 'form_id' => $form_id ) );
451 $action = FrmFormAction::get_action_for_form( $form_id, 'wppost', 1 );
452
453 if ( $action ) {
454 // this action takes a while, so only trigger it if there are posts to delete
455 foreach ( $entry_ids as $entry_id ) {
456 do_action( 'frm_before_destroy_entry', $entry_id );
457 unset( $entry_id );
458 }
459 }
460
461 $wpdb->query( $wpdb->prepare( "DELETE em.* FROM {$wpdb->prefix}frm_item_metas as em INNER JOIN {$wpdb->prefix}frm_items as e on (em.item_id=e.id) and form_id=%d", $form_id ) );
462 $results = $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}frm_items WHERE form_id=%d", $form_id ) );
463 if ( $results ) {
464 FrmEntry::clear_cache();
465 $message = __( 'Entries were Successfully Destroyed', 'formidable' );
466 }
467 } else {
468 $errors = __( 'No entries were specified', 'formidable' );
469 }
470
471 self::display_list( $message, $errors );
472 }
473
474 public static function show_form( $id = '', $key = '', $title = false, $description = false ) {
475 _deprecated_function( __FUNCTION__, '1.07.05', 'FrmFormsController::show_form()' );
476 return FrmFormsController::show_form( $id, $key, $title, $description );
477 }
478
479 public static function get_form( $filename, $form, $title, $description ) {
480 _deprecated_function( __FUNCTION__, '1.07.05', 'FrmFormsController::get_form()' );
481 return FrmFormsController::get_form( $form, $title, $description );
482 }
483
484 public static function process_entry( $errors = '', $ajax = false ) {
485 $form_id = FrmAppHelper::get_post_param( 'form_id', '', 'absint' );
486 if ( FrmAppHelper::is_admin() || empty( $_POST ) || empty( $form_id ) || ! isset( $_POST['item_key'] ) ) {
487 return;
488 }
489
490 global $frm_vars;
491
492 $form = FrmForm::getOne( $form_id );
493 if ( ! $form ) {
494 return;
495 }
496
497 $params = FrmForm::get_params( $form );
498
499 if ( ! isset( $frm_vars['form_params'] ) ) {
500 $frm_vars['form_params'] = array();
501 }
502 $frm_vars['form_params'][ $form->id ] = $params;
503
504 if ( isset( $frm_vars['created_entries'][ $form_id ] ) ) {
505 return;
506 }
507
508 if ( $errors == '' && ! $ajax ) {
509 $errors = FrmEntryValidate::validate( $_POST );
510 }
511
512 /**
513 * Use this filter to add trigger actions and add errors after
514 * all other errors have been processed
515 * @since 2.0.6
516 */
517 $errors = apply_filters( 'frm_entries_before_create', $errors, $form );
518
519 $frm_vars['created_entries'][ $form_id ] = array( 'errors' => $errors );
520
521 if ( empty( $errors ) ) {
522 $_POST['frm_skip_cookie'] = 1;
523 if ( $params['action'] == 'create' ) {
524 if ( apply_filters( 'frm_continue_to_create', true, $form_id ) && ! isset( $frm_vars['created_entries'][ $form_id ]['entry_id'] ) ) {
525 $frm_vars['created_entries'][ $form_id ]['entry_id'] = FrmEntry::create( $_POST );
526 }
527 }
528
529 do_action( 'frm_process_entry', $params, $errors, $form, array( 'ajax' => $ajax ) );
530 unset( $_POST['frm_skip_cookie'] );
531 }
532 }
533
534 public static function delete_entry_before_redirect( $url, $form, $atts ) {
535 self::_delete_entry( $atts['id'], $form );
536 return $url;
537 }
538
539 //Delete entry if not redirected
540 public static function delete_entry_after_save( $atts ) {
541 self::_delete_entry( $atts['entry_id'], $atts['form'] );
542 }
543
544 private static function _delete_entry( $entry_id, $form ) {
545 if ( ! $form ) {
546 return;
547 }
548
549 $form->options = maybe_unserialize( $form->options );
550 if ( isset( $form->options['no_save'] ) && $form->options['no_save'] ) {
551 FrmEntry::destroy( $entry_id );
552 }
553 }
554
555 /**
556 * @param $atts
557 *
558 * @return array|string
559 */
560 public static function show_entry_shortcode( $atts ) {
561 $defaults = array(
562 'id' => false,
563 'entry' => false,
564 'fields' => false,
565 'plain_text' => false,
566 'user_info' => false,
567 'include_blank' => false,
568 'default_email' => false,
569 'form_id' => false,
570 'format' => 'text',
571 'array_key' => 'key',
572 'direction' => 'ltr',
573 'font_size' => '',
574 'text_color' => '',
575 'border_width' => '',
576 'border_color' => '',
577 'bg_color' => '',
578 'alt_bg_color' => '',
579 'clickable' => false,
580 'exclude_fields' => '',
581 'include_fields' => '',
582 'include_extras' => '',
583 'inline_style' => 1,
584 );
585
586 $atts = shortcode_atts( $defaults, $atts );
587
588 if ( $atts['default_email'] ) {
589 $shortcode_atts = array(
590 'format' => $atts['format'],
591 'plain_text' => $atts['plain_text'],
592 );
593 $entry_shortcode_formatter = FrmEntryFactory::entry_shortcode_formatter_instance( $atts['form_id'], $shortcode_atts );
594 $formatted_entry = $entry_shortcode_formatter->content();
595
596 } else {
597
598 $entry_formatter = FrmEntryFactory::entry_formatter_instance( $atts );
599 $formatted_entry = $entry_formatter->get_formatted_entry_values();
600
601 }
602
603 return $formatted_entry;
604 }
605
606 public static function get_params( $form = null ) {
607 _deprecated_function( __FUNCTION__, '2.0.9', 'FrmForm::get_params' );
608 return FrmForm::get_params( $form );
609 }
610
611 public static function entry_sidebar( $entry ) {
612 $data = maybe_unserialize( $entry->description );
613 $date_format = get_option( 'date_format' );
614 $time_format = get_option( 'time_format' );
615 if ( isset( $data['browser'] ) ) {
616 $browser = FrmEntriesHelper::get_browser( $data['browser'] );
617 }
618
619 include( FrmAppHelper::plugin_path() . '/classes/views/frm-entries/sidebar-shared.php' );
620 }
621
622 /***********************************************************************
623 * Deprecated Functions
624 ************************************************************************/
625
626 /**
627 * @deprecated 2.02.14
628 *
629 * @return mixed
630 */
631 public static function filter_email_value( $value ) {
632 _deprecated_function( __FUNCTION__, '2.02.14', 'FrmProEntriesController::filter_value_in_single_entry_table' );
633 return $value;
634 }
635
636 /**
637 * @deprecated 2.02.14
638 *
639 * @return mixed
640 */
641 public static function filter_display_value( $value ) {
642 _deprecated_function( __FUNCTION__, '2.02.14', 'FrmProEntriesController::filter_display_value' );
643 return $value;
644 }
645
646 /**
647 * @deprecated 2.03.04
648 *
649 * @return mixed
650 */
651 public static function filter_shortcode_value( $value ) {
652 _deprecated_function( __FUNCTION__, '2.03.04', 'custom code' );
653 return $value;
654 }
655 }
656