Edit File by line
/home/zeestwma/ceyloniy.../wp-conte.../plugins/wpforms-.../src/Frontend
File: Frontend.php
[500] Fix | Delete
/**
[501] Fix | Delete
* Check whether the output was successful.
[502] Fix | Delete
*
[503] Fix | Delete
* @since 1.8.1
[504] Fix | Delete
*
[505] Fix | Delete
* @param WP_Post $form Form.
[506] Fix | Delete
*
[507] Fix | Delete
* @return bool
[508] Fix | Delete
*/
[509] Fix | Delete
private function output_success( WP_Post $form ): bool {
[510] Fix | Delete
[511] Fix | Delete
$form_id = absint( $form->ID );
[512] Fix | Delete
$process = wpforms()->obj( 'process' );
[513] Fix | Delete
[514] Fix | Delete
if ( ! $process ) {
[515] Fix | Delete
return false;
[516] Fix | Delete
}
[517] Fix | Delete
[518] Fix | Delete
$form_data = $process->form_data;
[519] Fix | Delete
$errors = empty( $process->errors[ $form_id ] ) ? [] : $process->errors[ $form_id ];
[520] Fix | Delete
[521] Fix | Delete
// Check for return hash.
[522] Fix | Delete
if (
[523] Fix | Delete
// phpcs:ignore WordPress.Security.NonceVerification.Recommended
[524] Fix | Delete
! empty( $_GET['wpforms_return'] ) &&
[525] Fix | Delete
$process->valid_hash &&
[526] Fix | Delete
(int) $form_data['id'] === $form_id
[527] Fix | Delete
) {
[528] Fix | Delete
$this->form_container_open( $form_data, $form );
[529] Fix | Delete
[530] Fix | Delete
/**
[531] Fix | Delete
* Fires at successful output.
[532] Fix | Delete
*
[533] Fix | Delete
* @since 1.4.5
[534] Fix | Delete
*
[535] Fix | Delete
* @param array $form_data Form data.
[536] Fix | Delete
* @param array $fields Form fields.
[537] Fix | Delete
* @param int $entry_id Form ID.
[538] Fix | Delete
*/
[539] Fix | Delete
do_action( 'wpforms_frontend_output_success', $form_data, $process->fields, $process->entry_id );
[540] Fix | Delete
[541] Fix | Delete
// phpcs:ignore WordPress.Security.NonceVerification.Missing
[542] Fix | Delete
wpforms_debug_data( $_POST );
[543] Fix | Delete
[544] Fix | Delete
$this->form_container_close( $form_data, $form );
[545] Fix | Delete
[546] Fix | Delete
return true;
[547] Fix | Delete
}
[548] Fix | Delete
[549] Fix | Delete
// Check for the error-free completed form.
[550] Fix | Delete
if (
[551] Fix | Delete
// phpcs:disable WordPress.Security.NonceVerification.Missing
[552] Fix | Delete
empty( $errors ) &&
[553] Fix | Delete
! empty( $form_data ) &&
[554] Fix | Delete
! empty( $_POST['wpforms']['id'] ) &&
[555] Fix | Delete
(int) $_POST['wpforms']['id'] === $form_id
[556] Fix | Delete
// phpcs:enable WordPress.Security.NonceVerification.Missing
[557] Fix | Delete
) {
[558] Fix | Delete
// There is no need for a container wrapper when a form is submitted through AJAX.
[559] Fix | Delete
$this->form_container_open( $form_data, $form );
[560] Fix | Delete
[561] Fix | Delete
/** This action is documented in the same method, several lines above. */
[562] Fix | Delete
do_action( 'wpforms_frontend_output_success', $form_data, $process->fields, $process->entry_id );
[563] Fix | Delete
[564] Fix | Delete
$this->form_container_close( $form_data, $form );
[565] Fix | Delete
[566] Fix | Delete
// phpcs:ignore WordPress.Security.NonceVerification.Missing
[567] Fix | Delete
wpforms_debug_data( $_POST );
[568] Fix | Delete
[569] Fix | Delete
return true;
[570] Fix | Delete
}
[571] Fix | Delete
[572] Fix | Delete
return false;
[573] Fix | Delete
}
[574] Fix | Delete
[575] Fix | Delete
/**
[576] Fix | Delete
* Display a form confirmation message.
[577] Fix | Delete
*
[578] Fix | Delete
* @since 1.8.1
[579] Fix | Delete
*
[580] Fix | Delete
* @param array $form_data Form data and settings.
[581] Fix | Delete
* @param array $fields Sanitized field data.
[582] Fix | Delete
* @param int $entry_id Entry id.
[583] Fix | Delete
*/
[584] Fix | Delete
public function confirmation( $form_data, $fields = [], $entry_id = 0 ): void {
[585] Fix | Delete
[586] Fix | Delete
$form_data = (array) $form_data;
[587] Fix | Delete
[588] Fix | Delete
// In AMP, just print template.
[589] Fix | Delete
if ( $this->amp_obj->output_success_template( $form_data ) ) {
[590] Fix | Delete
return;
[591] Fix | Delete
}
[592] Fix | Delete
[593] Fix | Delete
[ $fields, $entry_id ] = $this->prepare_confirmation_args( $fields, $entry_id );
[594] Fix | Delete
[595] Fix | Delete
$process = wpforms()->obj( 'process' );
[596] Fix | Delete
[597] Fix | Delete
if ( ! $process ) {
[598] Fix | Delete
return;
[599] Fix | Delete
}
[600] Fix | Delete
[601] Fix | Delete
$confirmation = $process->get_current_confirmation();
[602] Fix | Delete
$confirmation_message = $process->get_confirmation_message( $form_data, $fields, $entry_id );
[603] Fix | Delete
[604] Fix | Delete
// Only display if a confirmation message has been configured.
[605] Fix | Delete
if ( empty( $confirmation ) || empty( $confirmation_message ) ) {
[606] Fix | Delete
return;
[607] Fix | Delete
}
[608] Fix | Delete
[609] Fix | Delete
// Load confirmation-specific assets.
[610] Fix | Delete
$this->assets_confirmation( $form_data );
[611] Fix | Delete
[612] Fix | Delete
/**
[613] Fix | Delete
* Fires once before the confirmation message.
[614] Fix | Delete
*
[615] Fix | Delete
* @since 1.6.9
[616] Fix | Delete
*
[617] Fix | Delete
* @param array $confirmation Current confirmation data.
[618] Fix | Delete
* @param array $form_data Form data and settings.
[619] Fix | Delete
* @param array $fields Sanitized field data.
[620] Fix | Delete
* @param int $entry_id Entry id.
[621] Fix | Delete
*/
[622] Fix | Delete
do_action( 'wpforms_frontend_confirmation_message_before', $confirmation, $form_data, $fields, $entry_id );
[623] Fix | Delete
[624] Fix | Delete
$class = (int) wpforms_setting( 'disable-css', '1' ) === 1 ?
[625] Fix | Delete
'wpforms-confirmation-container-full' :
[626] Fix | Delete
'wpforms-confirmation-container';
[627] Fix | Delete
[628] Fix | Delete
$class .= $this->confirmation_message_scroll ? ' wpforms-confirmation-scroll' : '';
[629] Fix | Delete
[630] Fix | Delete
$this->render_obj->confirmation( $confirmation_message, $class, $form_data );
[631] Fix | Delete
[632] Fix | Delete
/**
[633] Fix | Delete
* Fires once after the confirmation message.
[634] Fix | Delete
*
[635] Fix | Delete
* @since 1.6.9
[636] Fix | Delete
*
[637] Fix | Delete
* @param array $confirmation Current confirmation data.
[638] Fix | Delete
* @param array $form_data Form data and settings.
[639] Fix | Delete
* @param array $fields Sanitized field data.
[640] Fix | Delete
* @param int $entry_id Entry id.
[641] Fix | Delete
*/
[642] Fix | Delete
do_action( 'wpforms_frontend_confirmation_message_after', $confirmation, $form_data, $fields, $entry_id );
[643] Fix | Delete
}
[644] Fix | Delete
[645] Fix | Delete
/**
[646] Fix | Delete
* Prepare confirmation arguments.
[647] Fix | Delete
*
[648] Fix | Delete
* @since 1.8.1
[649] Fix | Delete
*
[650] Fix | Delete
* @param array $fields Sanitized field data.
[651] Fix | Delete
* @param int $entry_id Entry id.
[652] Fix | Delete
*
[653] Fix | Delete
* @return array
[654] Fix | Delete
*/
[655] Fix | Delete
private function prepare_confirmation_args( $fields = [], $entry_id = 0 ): array {
[656] Fix | Delete
[657] Fix | Delete
// phpcs:disable WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.MissingUnslash
[658] Fix | Delete
[659] Fix | Delete
if ( empty( $fields ) ) {
[660] Fix | Delete
$fields = ! empty( $_POST['wpforms']['complete'] ) ? $_POST['wpforms']['complete'] : [];
[661] Fix | Delete
}
[662] Fix | Delete
[663] Fix | Delete
if ( empty( $entry_id ) ) {
[664] Fix | Delete
$entry_id = ! empty( $_POST['wpforms']['entry_id'] ) ? $_POST['wpforms']['entry_id'] : 0;
[665] Fix | Delete
}
[666] Fix | Delete
[667] Fix | Delete
// phpcs:enable WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.MissingUnslash
[668] Fix | Delete
[669] Fix | Delete
return [ $fields, $entry_id ];
[670] Fix | Delete
}
[671] Fix | Delete
[672] Fix | Delete
/**
[673] Fix | Delete
* Form container classes.
[674] Fix | Delete
*
[675] Fix | Delete
* @since 1.7.9
[676] Fix | Delete
*
[677] Fix | Delete
* @param array $form_data Form data and settings.
[678] Fix | Delete
*
[679] Fix | Delete
* @return array
[680] Fix | Delete
*/
[681] Fix | Delete
private function get_container_classes( $form_data ): array {
[682] Fix | Delete
[683] Fix | Delete
$classes = (int) wpforms_setting( 'disable-css', '1' ) === 1 ? [ 'wpforms-container-full' ] : [];
[684] Fix | Delete
[685] Fix | Delete
/**
[686] Fix | Delete
* Allow form container classes to be filtered and user-defined classes.
[687] Fix | Delete
*
[688] Fix | Delete
* @since 1.0.0
[689] Fix | Delete
*
[690] Fix | Delete
* @param array $classes Classes.
[691] Fix | Delete
* @param array $form_data Form data and settings.
[692] Fix | Delete
*/
[693] Fix | Delete
$classes = (array) apply_filters( 'wpforms_frontend_container_class', $classes, $form_data );
[694] Fix | Delete
[695] Fix | Delete
if ( ! empty( $form_data['settings']['form_class'] ) ) {
[696] Fix | Delete
$classes = array_merge( $classes, explode( ' ', $form_data['settings']['form_class'] ) );
[697] Fix | Delete
}
[698] Fix | Delete
[699] Fix | Delete
return $classes;
[700] Fix | Delete
}
[701] Fix | Delete
[702] Fix | Delete
/**
[703] Fix | Delete
* Display the opening container markup for a form.
[704] Fix | Delete
*
[705] Fix | Delete
* @since 1.7.9
[706] Fix | Delete
*
[707] Fix | Delete
* @param array $form_data Form data and settings.
[708] Fix | Delete
* @param WP_Post $form Form post type.
[709] Fix | Delete
*/
[710] Fix | Delete
private function form_container_open( $form_data, $form ): void {
[711] Fix | Delete
[712] Fix | Delete
/**
[713] Fix | Delete
* Fires before container open tag.
[714] Fix | Delete
*
[715] Fix | Delete
* @since 1.5.4.2
[716] Fix | Delete
*
[717] Fix | Delete
* @param array $form_data Form data and settings.
[718] Fix | Delete
* @param WP_Post $form Form post type.
[719] Fix | Delete
*/
[720] Fix | Delete
do_action( 'wpforms_frontend_output_container_before', $form_data, $form );
[721] Fix | Delete
[722] Fix | Delete
$classes = $this->get_container_classes( $form_data );
[723] Fix | Delete
[724] Fix | Delete
$this->render_obj->form_container_open( $classes, $form_data );
[725] Fix | Delete
}
[726] Fix | Delete
[727] Fix | Delete
/**
[728] Fix | Delete
* Display the closing container markup for a form.
[729] Fix | Delete
*
[730] Fix | Delete
* @since 1.7.9
[731] Fix | Delete
*
[732] Fix | Delete
* @param array $form_data Form data and settings.
[733] Fix | Delete
* @param WP_Post $form Form post type.
[734] Fix | Delete
*/
[735] Fix | Delete
private function form_container_close( $form_data, $form ): void {
[736] Fix | Delete
[737] Fix | Delete
$this->render_obj->form_container_close();
[738] Fix | Delete
[739] Fix | Delete
/**
[740] Fix | Delete
* Fires after container close tag.
[741] Fix | Delete
*
[742] Fix | Delete
* @since 1.5.4.2
[743] Fix | Delete
*
[744] Fix | Delete
* @param array $form_data Form data and settings.
[745] Fix | Delete
* @param WP_Post $form Form post type.
[746] Fix | Delete
*/
[747] Fix | Delete
do_action( 'wpforms_frontend_output_container_after', $form_data, $form );
[748] Fix | Delete
}
[749] Fix | Delete
[750] Fix | Delete
/**
[751] Fix | Delete
* Form head area, for displaying form title and description if enabled.
[752] Fix | Delete
*
[753] Fix | Delete
* @since 1.8.1
[754] Fix | Delete
*
[755] Fix | Delete
* @param array $form_data Form data and settings.
[756] Fix | Delete
* @param null $deprecated Deprecated in v1.3.7, previously was $form object.
[757] Fix | Delete
* @param bool $title Whether to display form title.
[758] Fix | Delete
* @param bool $description Whether to display form description.
[759] Fix | Delete
* @param array $errors List of all errors filled in WPForms_Process::process().
[760] Fix | Delete
*
[761] Fix | Delete
* @noinspection PhpUnusedParameterInspection
[762] Fix | Delete
*/
[763] Fix | Delete
public function head( array $form_data, $deprecated, bool $title, bool $description, $errors ): void {
[764] Fix | Delete
[765] Fix | Delete
// Output title and/or description.
[766] Fix | Delete
if ( $title === true || $description === true ) {
[767] Fix | Delete
$this->render_obj->form_head_container( $title, $description, $form_data );
[768] Fix | Delete
}
[769] Fix | Delete
[770] Fix | Delete
/**
[771] Fix | Delete
* Filters <noscript> error message.
[772] Fix | Delete
*
[773] Fix | Delete
* @since 1.5.7
[774] Fix | Delete
*
[775] Fix | Delete
* @param string $message Message.
[776] Fix | Delete
* @param array $form_data Form data.
[777] Fix | Delete
*/
[778] Fix | Delete
$noscript_msg = apply_filters(
[779] Fix | Delete
'wpforms_frontend_noscript_error_message',
[780] Fix | Delete
__( 'Please enable JavaScript in your browser to complete this form.', 'wpforms-lite' ),
[781] Fix | Delete
$form_data
[782] Fix | Delete
);
[783] Fix | Delete
[784] Fix | Delete
if ( ! empty( $noscript_msg ) && ! empty( $form_data['fields'] ) && ! $this->amp_obj->is_amp() ) {
[785] Fix | Delete
$this->render_obj->noscript( $noscript_msg );
[786] Fix | Delete
}
[787] Fix | Delete
[788] Fix | Delete
// Output header errors if they exist.
[789] Fix | Delete
if ( ! empty( $errors['header'] ) ) {
[790] Fix | Delete
$this->form_error( 'header', $errors['header'] );
[791] Fix | Delete
}
[792] Fix | Delete
}
[793] Fix | Delete
[794] Fix | Delete
/**
[795] Fix | Delete
* Form field area.
[796] Fix | Delete
*
[797] Fix | Delete
* @since 1.8.1
[798] Fix | Delete
*
[799] Fix | Delete
* @param array $form_data Form data and settings.
[800] Fix | Delete
* @param null $deprecated Deprecated in v1.3.7, previously was $form object.
[801] Fix | Delete
* @param bool $title Whether to display form title.
[802] Fix | Delete
* @param bool $description Whether to display form description.
[803] Fix | Delete
* @param array $errors List of all errors filled in WPForms_Process::process().
[804] Fix | Delete
*
[805] Fix | Delete
* @noinspection PhpUnusedParameterInspection
[806] Fix | Delete
*/
[807] Fix | Delete
public function fields( array $form_data, $deprecated, bool $title, bool $description, $errors ): void { // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundAfterLastUsed
[808] Fix | Delete
[809] Fix | Delete
// We need to have form fields to proceed.
[810] Fix | Delete
if ( empty( $form_data['fields'] ) ) {
[811] Fix | Delete
return;
[812] Fix | Delete
}
[813] Fix | Delete
[814] Fix | Delete
/**
[815] Fix | Delete
* Filters the base level fields on the frontend.
[816] Fix | Delete
*
[817] Fix | Delete
* @since 1.7.7
[818] Fix | Delete
*
[819] Fix | Delete
* @param array $fields_data Form fields data.
[820] Fix | Delete
*/
[821] Fix | Delete
$fields = (array) apply_filters( 'wpforms_frontend_fields_base_level', $form_data['fields'] );
[822] Fix | Delete
[823] Fix | Delete
// Form fields area.
[824] Fix | Delete
$this->render_obj->fields_area_open();
[825] Fix | Delete
[826] Fix | Delete
/**
[827] Fix | Delete
* Core actions on this hook:
[828] Fix | Delete
* Priority / Description
[829] Fix | Delete
* 20 Pagebreak markup (open first page).
[830] Fix | Delete
*
[831] Fix | Delete
* @since 1.3.7
[832] Fix | Delete
*
[833] Fix | Delete
* @param array $form_data Form data.
[834] Fix | Delete
*/
[835] Fix | Delete
do_action( 'wpforms_display_fields_before', $form_data ); // phpcs:ignore WPForms.PHP.ValidateHooks.InvalidHookName
[836] Fix | Delete
[837] Fix | Delete
// Loop through all the fields we have.
[838] Fix | Delete
foreach ( $fields as $field ) {
[839] Fix | Delete
$this->render_field( $form_data, $field );
[840] Fix | Delete
}
[841] Fix | Delete
[842] Fix | Delete
/**
[843] Fix | Delete
* Core actions on this hook:
[844] Fix | Delete
* Priority / Description
[845] Fix | Delete
* 5 Pagebreak markup (close last page).
[846] Fix | Delete
*
[847] Fix | Delete
* @since 1.3.7
[848] Fix | Delete
*
[849] Fix | Delete
* @param array $form_data Form data.
[850] Fix | Delete
*/
[851] Fix | Delete
do_action( 'wpforms_display_fields_after', $form_data ); // phpcs:ignore WPForms.PHP.ValidateHooks.InvalidHookName
[852] Fix | Delete
[853] Fix | Delete
$this->render_obj->fields_area_close();
[854] Fix | Delete
}
[855] Fix | Delete
[856] Fix | Delete
/**
[857] Fix | Delete
* Return base attributes for a specific field. This is deprecated and
[858] Fix | Delete
* exists for backwards-compatibility purposes. Use field properties instead.
[859] Fix | Delete
*
[860] Fix | Delete
* @since 1.8.1
[861] Fix | Delete
*
[862] Fix | Delete
* @param array $field Field data and settings.
[863] Fix | Delete
* @param array $form_data Form data and settings.
[864] Fix | Delete
*
[865] Fix | Delete
* @return array
[866] Fix | Delete
*/
[867] Fix | Delete
public function get_field_attributes( array $field, array $form_data ): array {
[868] Fix | Delete
[869] Fix | Delete
$form_id = absint( $form_data['id'] );
[870] Fix | Delete
$field_id = wpforms_validate_field_id( $field['id'] );
[871] Fix | Delete
$attributes = [
[872] Fix | Delete
'field_class' => [ 'wpforms-field', 'wpforms-field-' . sanitize_html_class( $field['type'] ) ],
[873] Fix | Delete
'field_id' => [ sprintf( 'wpforms-%d-field_%s-container', $form_id, $field_id ) ],
[874] Fix | Delete
'field_style' => '',
[875] Fix | Delete
'label_class' => [ 'wpforms-field-label' ],
[876] Fix | Delete
'label_id' => '',
[877] Fix | Delete
'description_class' => [ 'wpforms-field-description' ],
[878] Fix | Delete
'description_id' => [],
[879] Fix | Delete
'input_id' => [ sprintf( self::FIELD_FORMAT, $form_id, $field_id ) ],
[880] Fix | Delete
'input_class' => [],
[881] Fix | Delete
'input_data' => [],
[882] Fix | Delete
];
[883] Fix | Delete
[884] Fix | Delete
// Check user field defined classes.
[885] Fix | Delete
if ( ! empty( $field['css'] ) ) {
[886] Fix | Delete
$attributes['field_class'] = array_merge( $attributes['field_class'], wpforms_sanitize_classes( $field['css'], true ) );
[887] Fix | Delete
}
[888] Fix | Delete
[889] Fix | Delete
// Check for input column layouts.
[890] Fix | Delete
$attributes = $this->check_input_columns( $field, $attributes );
[891] Fix | Delete
[892] Fix | Delete
// Check label visibility.
[893] Fix | Delete
if ( ! empty( $field['label_hide'] ) ) {
[894] Fix | Delete
$attributes['label_class'][] = 'wpforms-label-hide';
[895] Fix | Delete
}
[896] Fix | Delete
[897] Fix | Delete
// Check size.
[898] Fix | Delete
if ( ! empty( $field['size'] ) ) {
[899] Fix | Delete
$attributes['input_class'][] = 'wpforms-field-' . sanitize_html_class( $field['size'] );
[900] Fix | Delete
}
[901] Fix | Delete
[902] Fix | Delete
// Check if required.
[903] Fix | Delete
if ( ! empty( $field['required'] ) ) {
[904] Fix | Delete
$attributes['input_class'][] = 'wpforms-field-required';
[905] Fix | Delete
}
[906] Fix | Delete
[907] Fix | Delete
// Check if there are errors.
[908] Fix | Delete
if ( ! empty( wpforms()->obj( 'process' )->errors[ $form_id ][ $field_id ] ) ) {
[909] Fix | Delete
$attributes['input_class'][] = 'wpforms-error';
[910] Fix | Delete
}
[911] Fix | Delete
[912] Fix | Delete
/**
[913] Fix | Delete
* Filters field attributes.
[914] Fix | Delete
* This filter is deprecated, filter the properties (below) instead.
[915] Fix | Delete
*
[916] Fix | Delete
* @since 1.0.0
[917] Fix | Delete
*
[918] Fix | Delete
* @param array $attributes Field attributes.
[919] Fix | Delete
* @param array $field Field data and settings.
[920] Fix | Delete
* @param array $form_data Form data and settings.
[921] Fix | Delete
*/
[922] Fix | Delete
return (array) apply_filters( 'wpforms_field_atts', $attributes, $field, $form_data ); // phpcs:ignore WPForms.PHP.ValidateHooks.InvalidHookName
[923] Fix | Delete
}
[924] Fix | Delete
[925] Fix | Delete
/**
[926] Fix | Delete
* Check input column layouts and set relevant attributes.
[927] Fix | Delete
*
[928] Fix | Delete
* @since 1.8.1
[929] Fix | Delete
*
[930] Fix | Delete
* @param array $field Field data and settings.
[931] Fix | Delete
* @param array $attributes Attributes.
[932] Fix | Delete
*
[933] Fix | Delete
* @return array
[934] Fix | Delete
*/
[935] Fix | Delete
private function check_input_columns( array $field, array $attributes ): array {
[936] Fix | Delete
[937] Fix | Delete
if ( ! empty( $field['input_columns'] ) ) {
[938] Fix | Delete
if ( $field['input_columns'] === '2' ) {
[939] Fix | Delete
$attributes['field_class'][] = 'wpforms-list-2-columns';
[940] Fix | Delete
} elseif ( $field['input_columns'] === '3' ) {
[941] Fix | Delete
$attributes['field_class'][] = 'wpforms-list-3-columns';
[942] Fix | Delete
} elseif ( $field['input_columns'] === 'inline' ) {
[943] Fix | Delete
$attributes['field_class'][] = 'wpforms-list-inline';
[944] Fix | Delete
}
[945] Fix | Delete
}
[946] Fix | Delete
[947] Fix | Delete
return $attributes;
[948] Fix | Delete
}
[949] Fix | Delete
[950] Fix | Delete
/**
[951] Fix | Delete
* Return base properties for a specific field.
[952] Fix | Delete
*
[953] Fix | Delete
* @since 1.8.1
[954] Fix | Delete
*
[955] Fix | Delete
* @param array $field Field data and settings.
[956] Fix | Delete
* @param array $form_data Form data and settings.
[957] Fix | Delete
* @param array $attributes List of field attributes.
[958] Fix | Delete
*
[959] Fix | Delete
* @return array
[960] Fix | Delete
*/
[961] Fix | Delete
public function get_field_properties( array $field, array $form_data, array $attributes = [] ): array {
[962] Fix | Delete
[963] Fix | Delete
[ $field, $attributes, $error ] = $this->prepare_get_field_properties( $field, $form_data, $attributes );
[964] Fix | Delete
[965] Fix | Delete
$form_id = absint( $form_data['id'] );
[966] Fix | Delete
$field_id = wpforms_validate_field_id( $field['id'] );
[967] Fix | Delete
[968] Fix | Delete
$properties = [
[969] Fix | Delete
'container' => [
[970] Fix | Delete
'attr' => [
[971] Fix | Delete
'style' => $attributes['field_style'],
[972] Fix | Delete
],
[973] Fix | Delete
'class' => $attributes['field_class'],
[974] Fix | Delete
'data' => [],
[975] Fix | Delete
'id' => implode( '', array_slice( $attributes['field_id'], 0 ) ),
[976] Fix | Delete
],
[977] Fix | Delete
'label' => [
[978] Fix | Delete
'attr' => [
[979] Fix | Delete
'for' => sprintf( self::FIELD_FORMAT, $form_id, $field_id ),
[980] Fix | Delete
],
[981] Fix | Delete
'class' => $attributes['label_class'],
[982] Fix | Delete
'data' => [],
[983] Fix | Delete
'disabled' => ! empty( $field['label_disable'] ),
[984] Fix | Delete
'hidden' => ! empty( $field['label_hide'] ),
[985] Fix | Delete
'id' => $attributes['label_id'],
[986] Fix | Delete
'required' => ! empty( $field['required'] ),
[987] Fix | Delete
'value' => ! empty( $field['label'] ) ? $field['label'] : '',
[988] Fix | Delete
],
[989] Fix | Delete
'inputs' => [
[990] Fix | Delete
'primary' => [
[991] Fix | Delete
'attr' => [
[992] Fix | Delete
'name' => "wpforms[fields][{$field_id}]",
[993] Fix | Delete
'value' => isset( $field['default_value'] ) ? wpforms_process_smart_tags( $field['default_value'], $form_data, [], '', 'field-properties' ) : '',
[994] Fix | Delete
'placeholder' => $field['placeholder'] ?? '',
[995] Fix | Delete
],
[996] Fix | Delete
'class' => $attributes['input_class'],
[997] Fix | Delete
'data' => $attributes['input_data'],
[998] Fix | Delete
'id' => implode( array_slice( $attributes['input_id'], 0 ) ),
[999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function