/
home
/
altere25
/
public_html
/
wp-content
/
plugins
/
formidable
/
classes
/
helpers
/
/home/altere25/public_html/wp-content/plugins/formidable/classes/helpers
mkdir
upload
Name
Size
Mode
Actions
FrmAddonsHelper.php
7140
0644
edit
dl
rm
FrmAppHelper.php
123272
0644
edit
dl
rm
FrmCSVExportHelper.php
21675
0644
edit
dl
rm
FrmCurrencyHelper.php
10146
0644
edit
dl
rm
FrmDashboardHelper.php
11696
0644
edit
dl
rm
FrmEmailHelper.php
1191
0644
edit
dl
rm
FrmEmailSummaryHelper.php
14725
0644
edit
dl
rm
FrmEntriesHelper.php
27795
0644
edit
dl
rm
FrmEntriesListHelper.php
13920
0644
edit
dl
rm
FrmFieldGridHelper.php
6081
0644
edit
dl
rm
FrmFieldsHelper.php
71408
0644
edit
dl
rm
FrmFormActionsHelper.php
817
0644
edit
dl
rm
FrmFormMigratorsHelper.php
5211
0644
edit
dl
rm
FrmFormsHelper.php
56523
0644
edit
dl
rm
FrmFormsListHelper.php
13074
0644
edit
dl
rm
FrmFormTemplatesHelper.php
6227
0644
edit
dl
rm
FrmHtmlHelper.php
1699
0644
edit
dl
rm
FrmListHelper.php
33139
0644
edit
dl
rm
FrmOnboardingWizardHelper.php
4088
0644
edit
dl
rm
FrmOnSubmitHelper.php
14768
0644
edit
dl
rm
FrmSerializedStringParserHelper.php
3138
0644
edit
dl
rm
FrmShortcodeHelper.php
2214
0644
edit
dl
rm
FrmStringReaderHelper.php
2397
0644
edit
dl
rm
FrmStylesCardHelper.php
13417
0644
edit
dl
rm
FrmStylesHelper.php
25644
0644
edit
dl
rm
FrmStylesPreviewHelper.php
11284
0644
edit
dl
rm
FrmSubmitHelper.php
4425
0644
edit
dl
rm
FrmTipsHelper.php
12468
0644
edit
dl
rm
FrmXMLHelper.php
66398
0644
edit
dl
rm
Edit:
/home/altere25/public_html/wp-content/plugins/formidable/classes/helpers/FrmEntriesHelper.php
(27795B)
<?php if ( ! defined( 'ABSPATH' ) ) { die( 'You are not allowed to call this page directly.' ); } class FrmEntriesHelper { /** * "Submitted" entry status. * * @since 6.4.2 * @var int */ const SUBMITTED_ENTRY_STATUS = 0; /** * "Draft" entry status. * * @since 6.4.2 * @var int */ const DRAFT_ENTRY_STATUS = 1; public static function setup_new_vars( $fields, $form = '', $reset = false, $args = array() ) { remove_action( 'media_buttons', 'FrmFormsController::insert_form_button' ); $values = array( 'name' => '', 'description' => '', 'item_key' => '', ); $values['fields'] = array(); if ( empty( $fields ) ) { return apply_filters( 'frm_setup_new_entry', $values ); } foreach ( (array) $fields as $field ) { $original_default = $field->default_value; self::prepare_field_default_value( $field ); $new_value = self::get_field_value_for_new_entry( $field, $reset, $args ); $field_array = FrmAppHelper::start_field_array( $field ); $field_array['value'] = $new_value; $field_array['type'] = apply_filters( 'frm_field_type', $field->type, $field, $new_value ); $field_array['parent_form_id'] = isset( $args['parent_form_id'] ) ? $args['parent_form_id'] : $field->form_id; $field_array['reset_value'] = $reset; $field_array['in_embed_form'] = isset( $args['in_embed_form'] ) ? $args['in_embed_form'] : '0'; $field_array['original_default'] = $original_default; FrmFieldsHelper::prepare_new_front_field( $field_array, $field, $args ); if ( ! is_array( $field->field_options ) ) { $field->field_options = array(); } $field_array = array_merge( $field->field_options, $field_array ); $values['fields'][] = $field_array; if ( ! $form || ! isset( $form->id ) ) { $form = FrmForm::getOne( $field->form_id ); } }//end foreach FrmAppHelper::unserialize_or_decode( $form->options ); if ( is_array( $form->options ) ) { $values = array_merge( $values, $form->options ); } $form_defaults = FrmFormsHelper::get_default_opts(); $form_defaults['custom_style'] = FrmAppHelper::custom_style_value( array() ); $values = array_merge( $form_defaults, $values ); return apply_filters( 'frm_setup_new_entry', $values ); } /** * @since 2.05 * * @param object $field */ private static function prepare_field_default_value( &$field ) { // If checkbox, multi-select dropdown, or checkbox data from entries field, the value should be an array. $return_array = FrmField::is_field_with_multiple_values( $field ); /** * Do any shortcodes in default value and allow customization of default value. * Calls FrmProFieldsHelper::get_default_value */ $field->default_value = apply_filters( 'frm_get_default_value', $field->default_value, $field, true, $return_array ); if ( isset( $field->field_options['placeholder'] ) ) { $field->field_options['placeholder'] = apply_filters( 'frm_get_default_value', $field->field_options['placeholder'], $field, false, false ); } } /** * Set the value for each field * This function is used when the form is first loaded and on all page turns *for a new entry* * * @since 2.0.13 * * @param object $field - this is passed by reference since it is an object. * @param bool $reset * @param array $args * * @return array|string $new_value */ private static function get_field_value_for_new_entry( $field, $reset, $args ) { $new_value = $field->default_value; if ( ! $reset && self::value_is_posted( $field, $args ) ) { self::get_posted_value( $field, $new_value, $args ); } if ( ! is_array( $new_value ) ) { $new_value = str_replace( '"', '"', $new_value ); } return $new_value; } /** * Check if a field has a posted value * * @since 2.01.0 * * @param object $field * @param array $args * * @return bool $value_is_posted */ public static function value_is_posted( $field, $args ) { $value_is_posted = false; if ( $_POST ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing $repeating = isset( $args['repeating'] ) && $args['repeating']; if ( $repeating ) { if ( isset( $_POST['item_meta'][ $args['parent_field_id'] ][ $args['key_pointer'] ][ $field->id ] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing $value_is_posted = true; } } elseif ( isset( $_POST['item_meta'][ $field->id ] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing $value_is_posted = true; } } return $value_is_posted; } public static function setup_edit_vars( $values, $record ) { remove_action( 'media_buttons', 'FrmFormsController::insert_form_button' ); $values['item_key'] = FrmAppHelper::get_post_param( 'item_key', $record->item_key, 'sanitize_title' ); $values['form_id'] = $record->form_id; $values['is_draft'] = $record->is_draft; return apply_filters( 'frm_setup_edit_entry_vars', $values, $record ); } public static function replace_default_message( $message, $atts ) { if ( strpos( $message, '[default-message' ) === false && strpos( $message, '[default_message' ) === false && ! empty( $message ) ) { return $message; } if ( empty( $message ) ) { $message = '[default-message]'; } preg_match_all( "/\[(default-message|default_message)\b(.*?)(?:(\/))?\]/s", $message, $shortcodes, PREG_PATTERN_ORDER ); foreach ( $shortcodes[0] as $short_key => $tag ) { $add_atts = FrmShortcodeHelper::get_shortcode_attribute_array( $shortcodes[2][ $short_key ] ); if ( ! empty( $add_atts ) ) { $this_atts = array_merge( $atts, $add_atts ); } else { $this_atts = $atts; } $default = FrmEntriesController::show_entry_shortcode( $this_atts ); // Add the default message. $message = str_replace( $shortcodes[0][ $short_key ], $default, $message ); } return $message; } /** * @param stdClass $entry * @param stdClass $field * @param array $atts * @return string */ public static function prepare_display_value( $entry, $field, $atts ) { $field_value = isset( $entry->metas[ $field->id ] ) ? $entry->metas[ $field->id ] : false; if ( FrmAppHelper::pro_is_installed() ) { $empty = empty( $field_value ); FrmProEntriesHelper::get_dynamic_list_values( $field, $entry, $field_value ); if ( $empty && ! empty( $field_value ) ) { // We've got an entry id, so switch it to a value. $atts['force_id'] = true; } } if ( $field->form_id == $entry->form_id || empty( $atts['embedded_field_id'] ) ) { return self::display_value( $field_value, $field, $atts ); } if ( ! FrmAppHelper::pro_is_installed() ) { return ''; } if ( is_callable( 'FrmProEntriesHelper::prepare_child_display_value' ) ) { return FrmProEntriesHelper::prepare_child_display_value( $entry, $field, $atts ); } // This is an embedded form. if ( strpos( $atts['embedded_field_id'], 'form' ) === 0 ) { // This is a repeating section. $child_entries = FrmEntry::getAll( array( 'it.parent_item_id' => $entry->id ), '', '', true ); } else { // Get all values for this field. $child_values = isset( $entry->metas[ $atts['embedded_field_id'] ] ) ? $entry->metas[ $atts['embedded_field_id'] ] : false; if ( $child_values ) { $child_entries = FrmEntry::getAll( array( 'it.id' => (array) $child_values ) ); } } $field_value = array(); if ( empty( $child_entries ) ) { return ''; } foreach ( $child_entries as $child_entry ) { $atts['item_id'] = $child_entry->id; $atts['post_id'] = $child_entry->post_id; // Fet the value for this field -- check for post values as well. $entry_val = FrmProEntryMetaHelper::get_post_or_meta_value( $child_entry, $field ); if ( $entry_val || '0' === $entry_val ) { // foreach entry get display_value. $field_value[] = self::display_value( $entry_val, $field, $atts ); } unset( $child_entry ); } $sep = ', '; if ( strpos( implode( ' ', $field_value ), '<img' ) !== false ) { $sep = '<br/>'; } $val = implode( $sep, $field_value ); return FrmAppHelper::kses( $val, 'all' ); } /** * Prepare the saved value for display * * @param array|string $value * @param object $field * @param array $atts * * @return string */ public static function display_value( $value, $field, $atts = array() ) { $defaults = array( 'type' => '', 'html' => false, 'show_filename' => true, 'truncate' => false, 'sep' => ', ', 'post_id' => 0, 'form_id' => $field->form_id, 'field' => $field, 'keepjs' => 0, 'return_array' => false, ); $atts = wp_parse_args( $atts, $defaults ); if ( FrmField::is_image( $field ) || $field->type === 'star' ) { $atts['truncate'] = false; $atts['html'] = true; } $atts = apply_filters( 'frm_display_value_atts', $atts, $field, $value ); if ( is_string( $field->field_options ) ) { $field->field_options = array(); } if ( ! isset( $field->field_options['post_field'] ) ) { $field->field_options['post_field'] = ''; } if ( ! isset( $field->field_options['custom_field'] ) ) { $field->field_options['custom_field'] = ''; } if ( FrmAppHelper::pro_is_installed() && $atts['post_id'] && ( $field->field_options['post_field'] || $atts['type'] === 'tag' ) ) { $atts['pre_truncate'] = $atts['truncate']; $atts['truncate'] = true; $atts['exclude_cat'] = isset( $field->field_options['exclude_cat'] ) ? $field->field_options['exclude_cat'] : 0; $value = FrmProEntryMetaHelper::get_post_value( $atts['post_id'], $field->field_options['post_field'], $field->field_options['custom_field'], $atts ); $atts['truncate'] = $atts['pre_truncate']; } if ( $value == '' ) { return $value; } $unfiltered_value = $value; FrmFieldsHelper::prepare_field_value( $unfiltered_value, $field->type ); $value = apply_filters( 'frm_display_value_custom', $unfiltered_value, $field, $atts ); $value = apply_filters( 'frm_display_' . $field->type . '_value_custom', $value, compact( 'field', 'atts' ) ); if ( $value == $unfiltered_value ) { $value = FrmFieldsHelper::get_unfiltered_display_value( compact( 'value', 'field', 'atts' ) ); } if ( $atts['truncate'] && $atts['type'] !== 'url' ) { $value = FrmAppHelper::truncate( $value, 50 ); } if ( ! $atts['keepjs'] && ! is_array( $value ) ) { $value = FrmAppHelper::kses( $value, 'all' ); } return apply_filters( 'frm_display_value', $value, $field, $atts ); } public static function set_posted_value( $field, $value, $args ) { // If validating a field with "other" opt, set back to prev value now. if ( ! empty( $args['other'] ) ) { $value = $args['temp_value']; } if ( empty( $args['parent_field_id'] ) ) { $_POST['item_meta'][ $field->id ] = $value; } else { self::set_parent_field_posted_value( $field, $value, $args ); } } /** * Init arrays if necessary, else we get fatal error. * * @since 4.01 */ private static function set_parent_field_posted_value( $field, $value, $args ) { if ( isset( $_POST['item_meta'][ $args['parent_field_id'] ] ) && is_array( $_POST['item_meta'][ $args['parent_field_id'] ] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing if ( ! isset( $_POST['item_meta'][ $args['parent_field_id'] ][ $args['key_pointer'] ] ) || ! is_array( $_POST['item_meta'][ $args['parent_field_id'] ][ $args['key_pointer'] ] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing $_POST['item_meta'][ $args['parent_field_id'] ][ $args['key_pointer'] ] = array(); // phpcs:ignore WordPress.Security.NonceVerification.Missing } } else { // All of the section was probably removed. $_POST['item_meta'][ $args['parent_field_id'] ] = array(); // phpcs:ignore WordPress.Security.NonceVerification.Missing $_POST['item_meta'][ $args['parent_field_id'] ][ $args['key_pointer'] ] = array(); // phpcs:ignore WordPress.Security.NonceVerification.Missing } $_POST['item_meta'][ $args['parent_field_id'] ][ $args['key_pointer'] ][ $field->id ] = $value; // phpcs:ignore WordPress.Security.NonceVerification.Missing } public static function get_posted_value( $field, &$value, $args ) { if ( is_array( $field ) ) { $field_id = $field['id']; $field_obj = FrmFieldFactory::get_field_object( $field['id'] ); } elseif ( is_object( $field ) ) { $field_id = $field->id; $field_obj = FrmFieldFactory::get_field_object( $field ); } elseif ( is_numeric( $field ) ) { $field_id = $field; $field_obj = FrmFieldFactory::get_field_object( $field ); } else { $value = self::get_posted_meta( $field, $args ); FrmAppHelper::sanitize_value( 'sanitize_text_field', $value ); return; } $value = self::get_posted_meta( $field_id, $args ); $field_obj->sanitize_value( $value ); } /** * @since 4.02.04 */ private static function get_posted_meta( $field_id, $args ) { if ( empty( $args['parent_field_id'] ) ) { // Sanitizing is done next. $value = isset( $_POST['item_meta'][ $field_id ] ) ? wp_unslash( $_POST['item_meta'][ $field_id ] ) : ''; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.NonceVerification.Missing } else { $value = isset( $_POST['item_meta'][ $args['parent_field_id'] ][ $args['key_pointer'] ][ $field_id ] ) ? wp_unslash( $_POST['item_meta'][ $args['parent_field_id'] ][ $args['key_pointer'] ][ $field_id ] ) : ''; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.NonceVerification.Missing } return $value; } /** * Check if field has an "Other" option and if any other values are posted * * @since 2.0 * * @param object $field * @param array|string $value * @param array $args */ public static function maybe_set_other_validation( $field, &$value, &$args ) { $args['other'] = false; if ( ! $value || ! FrmAppHelper::pro_is_installed() ) { return; } // Trim excess values if selection limit is exceeded for checkbox. Necessary to do here // as the value set here will be used later in this class's set_posted_value() method. if ( FrmField::is_checkbox( $field ) ) { $field_obj = FrmFieldFactory::get_field_object( $field ); $field_obj->maybe_trim_excess_values( $value ); } // Get other value for fields in repeating section. self::set_other_repeating_vals( $field, $value, $args ); // Check if there are any posted "Other" values. if ( FrmField::is_option_true( $field, 'other' ) && isset( $_POST['item_meta']['other'][ $field->id ] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing // Save original value. $args['temp_value'] = $value; $args['other'] = true; // Sanitizing is done next. $other_vals = wp_unslash( $_POST['item_meta']['other'][ $field->id ] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.NonceVerification.Missing FrmAppHelper::sanitize_value( 'sanitize_text_field', $other_vals ); // Set the validation value now self::set_other_validation_val( $value, $other_vals, $field, $args ); } } /** * Sets radio or checkbox value equal to "other" value if it is set - FOR REPEATING SECTIONS * * @since 2.0 * * @param object $field * @param array|string $value * @param array $args */ public static function set_other_repeating_vals( $field, &$value, &$args ) { if ( ! $args['parent_field_id'] ) { return; } // Check if there are any other posted "other" values for this field. if ( FrmField::is_option_true( $field, 'other' ) && isset( $_POST['item_meta'][ $args['parent_field_id'] ][ $args['key_pointer'] ]['other'][ $field->id ] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing // Save original value $args['temp_value'] = $value; $args['other'] = true; $other_vals = wp_unslash( $_POST['item_meta'][ $args['parent_field_id'] ][ $args['key_pointer'] ]['other'][ $field->id ] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.NonceVerification.Missing FrmAppHelper::sanitize_value( 'sanitize_text_field', $other_vals ); // Set the validation value now. self::set_other_validation_val( $value, $other_vals, $field, $args ); } } /** * Modify value used for validation * This function essentially removes the "Other" radio or checkbox value from the $value being validated. * It also adds any text from the free text fields to the value * * Needs to accommodate for times when other opt is selected, but no other free text is entered * * @since 2.0 * * @param array|string $value * @param array|string $other_vals (usually of posted values). * @param object $field * @param array $args */ public static function set_other_validation_val( &$value, $other_vals, $field, &$args ) { // Checkboxes and multi-select dropdowns. if ( is_array( $value ) && $field->type === 'checkbox' ) { // Combine "Other" values with checked values. "Other" values will override checked box values. foreach ( $other_vals as $k => $v ) { if ( isset( $value[ $k ] ) && trim( $v ) === '' ) { // If the other box is checked, but doesn't have a value. $value = ''; break; } } if ( is_array( $value ) && ! empty( $value ) ) { $value = array_merge( $value, $other_vals ); } } else { // Radio and dropdowns. $other_key = array_filter( array_keys( $field->options ), 'is_string' ); $other_key = reset( $other_key ); // Multi-select dropdown. if ( is_array( $value ) ) { $o_key = array_search( $field->options[ $other_key ], $value ); if ( $o_key !== false ) { // Modify the original value so other key will be preserved. $value[ $other_key ] = $value[ $o_key ]; // By default, the array keys will be numeric for multi-select dropdowns. // If going backwards and forwards between pages, the array key will match the other key. if ( $o_key !== $other_key ) { unset( $value[ $o_key ] ); } $args['temp_value'] = $value; $value[ $other_key ] = reset( $other_vals ); if ( FrmAppHelper::is_empty_value( $value[ $other_key ] ) ) { unset( $value[ $other_key ] ); } } } elseif ( $field->options[ $other_key ] == $value ) { $value = $other_vals; }//end if }//end if } /** * Add submitted values to a string for spam checking. * * @param array $values * @return string */ public static function entry_array_to_string( $values ) { $content = ''; foreach ( $values['item_meta'] as $val ) { if ( $content != '' ) { $content .= "\n\n"; } if ( is_array( $val ) ) { $val = FrmAppHelper::array_flatten( $val ); $val = implode( ', ', $val ); } $content .= $val; } return $content; } /** * Get the browser from the user agent * * @since 2.04 * * @param string $u_agent * * @return string */ public static function get_browser( $u_agent ) { $bname = __( 'Unknown', 'formidable' ); $platform = $bname; $ub = ''; // Get the operating system if ( preg_match( '/windows|win32/i', $u_agent ) ) { $platform = 'Windows'; } elseif ( preg_match( '/android/i', $u_agent ) ) { $platform = 'Android'; } elseif ( preg_match( '/linux/i', $u_agent ) ) { $platform = 'Linux'; } elseif ( preg_match( '/macintosh|mac os x/i', $u_agent ) ) { $platform = 'OS X'; } $agent_options = array( 'Chrome' => 'Google Chrome', 'Safari' => 'Apple Safari', 'Opera' => 'Opera', 'Netscape' => 'Netscape', 'Firefox' => 'Mozilla Firefox', ); // Next get the name of the useragent yes separately and for good reason. if ( strpos( $u_agent, 'MSIE' ) !== false && strpos( $u_agent, 'Opera' ) === false ) { $bname = 'Internet Explorer'; $ub = 'MSIE'; } else { foreach ( $agent_options as $agent_key => $agent_name ) { if ( strpos( $u_agent, $agent_key ) !== false ) { $bname = $agent_name; $ub = $agent_key; break; } } } // finally get the correct version number $known = array( 'Version', $ub, 'other' ); $pattern = '#(?<browser>' . join( '|', $known ) . ')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#'; // Get the matching numbers. preg_match_all( $pattern, $u_agent, $matches ); // see how many we have $i = count( $matches['browser'] ); if ( $i > 1 ) { // We will have two since we are not using 'other' argument yet // see if version is before or after the name. if ( strripos( $u_agent, 'Version' ) < strripos( $u_agent, $ub ) ) { $version = $matches['version'][0]; } else { $version = $matches['version'][1]; } } elseif ( $i === 1 ) { $version = $matches['version'][0]; } else { $version = ''; } // check if we have a number if ( $version == '' ) { $version = '?'; } return $bname . ' ' . $version . ' / ' . $platform; } /** * @since 3.0 */ public static function actions_dropdown( $atts ) { $id = isset( $atts['id'] ) ? $atts['id'] : FrmAppHelper::get_param( 'id', 0, 'get', 'absint' ); $links = self::get_action_links( $id, $atts['entry'] ); foreach ( $links as $link ) { ?> <div class="misc-pub-section"> <a href="<?php echo esc_url( $link['url'] ); ?>" <?php if ( isset( $link['data'] ) ) { foreach ( $link['data'] as $data => $value ) { echo 'data-' . esc_attr( $data ) . '="' . esc_attr( $value ) . '" '; } } if ( isset( $link['class'] ) ) { echo 'class="' . esc_attr( $link['class'] ) . '" '; } if ( isset( $link['id'] ) ) { echo 'id="' . esc_attr( $link['id'] ) . '" '; } ?> > <?php FrmAppHelper::icon_by_class( $link['icon'], array( 'aria-hidden' => 'true' ) ); ?> <span class="frm_link_label"><?php echo esc_html( $link['label'] ); ?></span> </a> </div> <?php }//end foreach } /** * @since 3.0 */ private static function get_action_links( $id, $entry ) { $page = FrmAppHelper::get_param( 'frm_action' ); $actions = array(); if ( $page !== 'show' ) { $actions['frm_view'] = array( 'url' => admin_url( 'admin.php?page=formidable-entries&frm_action=show&id=' . $id . '&form=' . $entry->form_id ), 'label' => __( 'View Entry', 'formidable' ), 'icon' => 'frm_icon_font frm_save_icon', ); } if ( current_user_can( 'frm_delete_entries' ) ) { $actions['frm_delete'] = array( 'url' => wp_nonce_url( admin_url( 'admin.php?page=formidable-entries&frm_action=destroy&id=' . $id . '&form=' . $entry->form_id ) ), 'label' => __( 'Delete Entry', 'formidable' ), 'icon' => 'frm_icon_font frm_delete_icon', 'data' => array( 'frmverify' => __( 'Delete this form entry?', 'formidable' ), ), ); } if ( $page === 'show' ) { $actions['frm_print'] = array( 'url' => '#', 'label' => __( 'Print Entry', 'formidable' ), 'data' => array( 'frmprint' => '1', ), 'icon' => 'frm_icon_font frm_printer_icon', ); } $actions['frm_resend'] = array( 'url' => '#', 'label' => __( 'Resend Emails', 'formidable' ), 'class' => 'frm_noallow', 'data' => array( 'upgrade' => __( 'Resend Emails', 'formidable' ), 'medium' => 'resend-email', 'content' => 'entry', ), 'icon' => 'frm_icon_font frm_email_icon', ); if ( ! function_exists( 'frm_pdfs_autoloader' ) && FrmAppHelper::show_new_feature( 'pdfs' ) ) { $actions['frm_download_pdf'] = array( 'url' => '#', 'label' => __( 'Download as PDF', 'formidable' ), 'class' => 'frm_noallow', 'data' => self::get_pdfs_upgrade_link_data( 'download-pdf-entry' ), 'icon' => 'frm_icon_font frm_download_icon', ); } $actions['frm_edit'] = array( 'url' => '#', 'label' => __( 'Edit Entry', 'formidable' ), 'class' => 'frm_noallow', 'data' => array( 'upgrade' => __( 'Entry edits', 'formidable' ), 'medium' => 'edit-entries', 'content' => 'entry', ), 'icon' => 'frm_icon_font frm_pencil_icon', ); return apply_filters( 'frm_entry_actions_dropdown', $actions, compact( 'id', 'entry' ) ); } /** * Gets data attributes for PDFs addon upgrade link. * * @param string $medium The source of the upgrade link used for analytics data. * @return array */ private static function get_pdfs_upgrade_link_data( $medium = 'pdfs' ) { $data = array( 'oneclick' => '', 'requires' => '', 'upgrade' => __( 'Forms to PDF', 'formidable' ), 'medium' => $medium, ); $upgrading = FrmAddonsController::install_link( 'pdfs' ); if ( isset( $upgrading['url'] ) ) { $data['oneclick'] = json_encode( $upgrading ); } else { $data['requires'] = FrmAddonsController::get_addon_required_plan( 28136428 ); } return $data; } /** * @since 5.0.15 * * @param int|string $entry_id * @return void */ public static function maybe_render_captcha_score( $entry_id ) { $query = array( 'item_id' => (int) $entry_id, 'field_id' => 0, ); $metas_without_a_field = (array) FrmEntryMeta::getAll( $query, ' ORDER BY it.created_at DESC', '', true ); foreach ( $metas_without_a_field as $meta ) { if ( ! empty( $meta->meta_value['captcha_score'] ) ) { echo '<div class="misc-pub-section">'; FrmAppHelper::icon_by_class( 'frm_icon_font frm_shield_check_icon', array( 'aria-hidden' => 'true' ) ); echo ' ' . esc_html__( 'reCAPTCHA Score', 'formidable' ) . ': '; echo '<b>' . esc_html( $meta->meta_value['captcha_score'] ) . '</b>'; echo '</div>'; return; } } } /** * Return entry status based on is_draft column value. * * @since 6.5 * * @param int $status is_draft column. * * @return int */ public static function get_entry_status( $status ) { $statuses = self::get_entry_statuses(); if ( array_key_exists( $status, $statuses ) ) { return $status; } if ( empty( $status ) ) { // If the status is empty, let's default to 0. return self::SUBMITTED_ENTRY_STATUS; } // If it has a value that isn't in the array, let's default to 1. There may be old entries that don't have a value for is_draft. return self::DRAFT_ENTRY_STATUS; } /** * Return entry status label based on passed value. * * @since 6.5 * * @param int $status is_draft column. * * @return string */ public static function get_entry_status_label( $status ) { $statuses = self::get_entry_statuses(); return $statuses[ self::get_entry_status( $status ) ]; } /** * Get all entry statuses. * * @since 6.5 * @since 6.6 function went from private to public. * * @return array<string> */ public static function get_entry_statuses() { $default_entry_statuses = array( self::SUBMITTED_ENTRY_STATUS => __( 'Submitted', 'formidable' ), self::DRAFT_ENTRY_STATUS => __( 'Draft', 'formidable' ), ); /** * Register entry status. * * "2" is used in abandonment-addon and reserved for "In progress". * "3" is used in abandonment-addon and reserved for "Abandoned". * * @since 6.5 * * @param array<string> $extended_entry_status Entry statuses. */ $extended_entry_status = apply_filters( 'frm_entry_statuses', array() ); if ( ! is_array( $extended_entry_status ) ) { _doing_it_wrong( __METHOD__, esc_html__( 'Entry status must be return in array format.', 'formidable' ), '6.5' ); $extended_entry_status = array(); } $existing_entry_statuses = array_replace( $default_entry_statuses, $extended_entry_status ); return $existing_entry_statuses; } }
Save
cmd:
run