FrmForm::get_option( array( 'form' => $form, 'option' => 'edit_value', ) ), 'align' => FrmForm::get_option( array( 'form' => $form, 'option' => 'submit_align', ) ), 'start_over' => FrmForm::get_option( array( 'form' => $form, 'option' => 'start_over', ) ), 'start_over_label' => FrmForm::get_option( array( 'form' => $form, 'option' => 'start_over_label', ) ), ); } /** * Copies submit field settings to form options. * * @param object $form Form object. * * @return object */ public static function copy_submit_field_settings_to_form( $form ) { $submit_field = self::get_submit_field( $form->id ); if ( ! $submit_field ) { return $form; } $form->options['submit_value'] = $submit_field->name; return $form; } /** * Maybe create a submit field for a form. * * @param object $form Form object. * @param array $fields Array of fields. * @param bool $reset_fields Flag to refresh fields after one is created or updated. * * @return void */ public static function maybe_create_submit_field( $form, $fields, &$reset_fields ) { if ( self::has_submit_field_in_list( $fields ) ) { return; } $field_data = FrmFieldsHelper::setup_new_vars( self::FIELD_TYPE, $form->id ); $submit_settings = self::get_submit_settings_from_form( $form ); $field_data['field_options'] = $submit_settings + $field_data['field_options']; $field_data['name'] = FrmForm::get_option( array( 'form' => $form, 'option' => 'submit_value', 'default' => __( 'Submit', 'formidable' ), ) ); if ( FrmField::create( $field_data ) ) { $reset_fields = true; } } /** * Removes submit field from the list of fields. * * @param array $fields Array of fields. * * @return void */ public static function remove_submit_field_from_list( &$fields ) { foreach ( $fields as $key => $field ) { if ( self::FIELD_TYPE === FrmField::get_field_type( $field ) ) { unset( $fields[ $key ] ); return; } } } /** * Checks if the given fields array only contains the submit field. * * @param array $fields Array of fields. * * @return false|object Return the last found submit field, or `false` if there is at least another field. */ public static function only_contains_submit_field( $fields ) { $submit_field = false; foreach ( $fields as $field ) { if ( self::FIELD_TYPE !== FrmField::get_field_type( $field ) ) { return false; } $submit_field = $field; } return $submit_field; } /** * Updates fields in the last row when new field is added. * * @since 6.25.1 * * @param int $field_count The current field count. * * @return void */ public static function update_last_row_fields_order_when_adding_field( $field_count ) { $last_row_field_ids = FrmAppHelper::get_post_param( 'last_row_field_ids', array() ); if ( ! is_array( $last_row_field_ids ) || ! $last_row_field_ids ) { return; } foreach ( $last_row_field_ids as $index => $last_row_field_id ) { $last_row_field_id = absint( $last_row_field_id ); if ( ! $last_row_field_id ) { continue; } // Plus 2 here because the new field has that plus 1. $new_order = $field_count + $index + 2; $updated = FrmField::update( $last_row_field_id, array( 'field_order' => $new_order ) ); if ( false !== $updated ) { self::$last_row_fields_order[ $last_row_field_id ] = $new_order; } } } /** * Prints the hidden input that contains the last row fields order to be processed in JS after adding new field. * * @since 6.25.1 * * @return void */ public static function print_last_row_fields_order_input() { if ( ! self::$last_row_fields_order ) { return; } printf( '', esc_attr( wp_json_encode( self::$last_row_fields_order ) ) ); self::$last_row_fields_order = array(); } }