Edit File by line
/home/zeestwma/richards.../wp-conte.../plugins/wpforms-.../src/Emails
File: Notifications.php
$this->template( new $template['path']( '', false, $this->current_template ) );
[500] Fix | Delete
[501] Fix | Delete
$email_template = $this->__get( 'template' );
[502] Fix | Delete
[503] Fix | Delete
if (
[504] Fix | Delete
! method_exists( $email_template, 'get_field_template' ) ||
[505] Fix | Delete
! method_exists( $email_template, 'set_field' )
[506] Fix | Delete
) {
[507] Fix | Delete
return '';
[508] Fix | Delete
}
[509] Fix | Delete
[510] Fix | Delete
$this->field_template = $email_template->get_field_template();
[511] Fix | Delete
$field_values = trim( $this->process_field_values() );
[512] Fix | Delete
[513] Fix | Delete
return make_clickable( $field_values );
[514] Fix | Delete
}
[515] Fix | Delete
[516] Fix | Delete
/**
[517] Fix | Delete
* Process the plain text email message.
[518] Fix | Delete
*
[519] Fix | Delete
* @since 1.8.5
[520] Fix | Delete
*
[521] Fix | Delete
* @param bool $show_empty_fields Whether to display empty fields in the email.
[522] Fix | Delete
*
[523] Fix | Delete
* @return string
[524] Fix | Delete
*/
[525] Fix | Delete
private function process_plain_message( bool $show_empty_fields = false ): string {
[526] Fix | Delete
[527] Fix | Delete
/**
[528] Fix | Delete
* Filter the form data before it is used to generate the email message.
[529] Fix | Delete
*
[530] Fix | Delete
* @since 1.8.9
[531] Fix | Delete
*
[532] Fix | Delete
* @param array $form_data Form data.
[533] Fix | Delete
* @param array $fields List of submitted fields.
[534] Fix | Delete
*/
[535] Fix | Delete
$this->form_data = apply_filters( 'wpforms_emails_notifications_form_data', $this->form_data, $this->fields );
[536] Fix | Delete
[537] Fix | Delete
$message = '';
[538] Fix | Delete
[539] Fix | Delete
foreach ( $this->form_data['fields'] as $field ) {
[540] Fix | Delete
/**
[541] Fix | Delete
* Filter whether to ignore the field in the email.
[542] Fix | Delete
*
[543] Fix | Delete
* @since 1.9.0
[544] Fix | Delete
*
[545] Fix | Delete
* @param bool $ignore Whether to ignore the field in the email.
[546] Fix | Delete
* @param array $field Field data.
[547] Fix | Delete
* @param array $form_data Form data.
[548] Fix | Delete
*/
[549] Fix | Delete
if ( apply_filters( 'wpforms_emails_notifications_field_ignored', false, $field, $this->form_data ) ) {
[550] Fix | Delete
continue;
[551] Fix | Delete
}
[552] Fix | Delete
[553] Fix | Delete
$field_message = $this->get_field_plain( $field, $show_empty_fields );
[554] Fix | Delete
[555] Fix | Delete
/**
[556] Fix | Delete
* Filter the field message before it is added to the email message.
[557] Fix | Delete
*
[558] Fix | Delete
* @since 1.8.9
[559] Fix | Delete
* @since 1.8.9.3 The $notifications parameter was added.
[560] Fix | Delete
*
[561] Fix | Delete
* @param string $field_message Field message.
[562] Fix | Delete
* @param array $field Field data.
[563] Fix | Delete
* @param bool $show_empty_fields Whether to display empty fields in the email.
[564] Fix | Delete
* @param array $form_data Form data.
[565] Fix | Delete
* @param array $fields List of submitted fields.
[566] Fix | Delete
* @param Notifications $notifications Notifications instance.
[567] Fix | Delete
*/
[568] Fix | Delete
$message .= apply_filters( 'wpforms_emails_notifications_field_message_plain', $field_message, $field, $show_empty_fields, $this->form_data, $this->fields, $this );
[569] Fix | Delete
}
[570] Fix | Delete
[571] Fix | Delete
// Trim the message and return.
[572] Fix | Delete
return rtrim( $message, "\r\n" );
[573] Fix | Delete
}
[574] Fix | Delete
[575] Fix | Delete
/**
[576] Fix | Delete
* Get a single field plain text markup.
[577] Fix | Delete
*
[578] Fix | Delete
* @since 1.8.9
[579] Fix | Delete
*
[580] Fix | Delete
* @param array $field Field data.
[581] Fix | Delete
* @param bool $show_empty_fields Whether to display empty fields in the email.
[582] Fix | Delete
*
[583] Fix | Delete
* @return string
[584] Fix | Delete
*/
[585] Fix | Delete
public function get_field_plain( array $field, bool $show_empty_fields ): string { // phpcs:ignore Generic.Metrics.CyclomaticComplexity
[586] Fix | Delete
[587] Fix | Delete
$field_id = $field['id'] ?? '';
[588] Fix | Delete
[589] Fix | Delete
$field = $this->fields[ $field_id ] ?? $field;
[590] Fix | Delete
[591] Fix | Delete
$message = '';
[592] Fix | Delete
[593] Fix | Delete
if ( ! $show_empty_fields && ( ! isset( $field['value'] ) || (string) $field['value'] === '' ) ) {
[594] Fix | Delete
return $message;
[595] Fix | Delete
}
[596] Fix | Delete
[597] Fix | Delete
if ( $this->is_calculated_field_hidden( $field_id ) ) {
[598] Fix | Delete
return $message;
[599] Fix | Delete
}
[600] Fix | Delete
[601] Fix | Delete
$field_name = $field['name'] ?? '';
[602] Fix | Delete
$field_val = empty( $field['value'] ) && ! is_numeric( $field['value'] ) ? esc_html__( '(empty)', 'wpforms-lite' ) : $field['value'];
[603] Fix | Delete
[604] Fix | Delete
// Add quantity for the field.
[605] Fix | Delete
if ( wpforms_payment_has_quantity( $field, $this->form_data ) ) {
[606] Fix | Delete
$field_val = wpforms_payment_format_quantity( $field );
[607] Fix | Delete
}
[608] Fix | Delete
[609] Fix | Delete
// Set a default field name if empty.
[610] Fix | Delete
if ( empty( $field_name ) && $field_name !== null ) {
[611] Fix | Delete
$field_name = $this->get_default_field_name( $field['id'] );
[612] Fix | Delete
}
[613] Fix | Delete
[614] Fix | Delete
$message .= '--- ' . $field_name . " ---\r\n\r\n";
[615] Fix | Delete
$field_value = wpforms_decode_string( $field_val ) . "\r\n\r\n";
[616] Fix | Delete
[617] Fix | Delete
/**
[618] Fix | Delete
* Filter the field value before it is added to the email message.
[619] Fix | Delete
*
[620] Fix | Delete
* @since 1.8.5
[621] Fix | Delete
* @deprecated 1.8.7
[622] Fix | Delete
*
[623] Fix | Delete
* @param string $field_value Field value.
[624] Fix | Delete
* @param array $field Field data.
[625] Fix | Delete
* @param array $form_data Form data.
[626] Fix | Delete
*/
[627] Fix | Delete
$field_value = apply_filters_deprecated( // phpcs:disable WPForms.Comments.ParamTagHooks.InvalidParamTagsQuantity
[628] Fix | Delete
'wpforms_emails_notifications_plaintext_field_value',
[629] Fix | Delete
[ $field_value, $field, $this->form_data ],
[630] Fix | Delete
'1.8.7 of the WPForms plugin',
[631] Fix | Delete
'wpforms_plaintext_field_value'
[632] Fix | Delete
);
[633] Fix | Delete
[634] Fix | Delete
/** This filter is documented in /includes/emails/class-emails.php */
[635] Fix | Delete
$field_value = apply_filters( // phpcs:ignore WPForms.PHP.ValidateHooks.InvalidHookName
[636] Fix | Delete
'wpforms_plaintext_field_value',
[637] Fix | Delete
$field_value,
[638] Fix | Delete
$field,
[639] Fix | Delete
$this->form_data
[640] Fix | Delete
);
[641] Fix | Delete
[642] Fix | Delete
// Append the filtered field value to the message.
[643] Fix | Delete
$message .= $field_value;
[644] Fix | Delete
[645] Fix | Delete
return $message;
[646] Fix | Delete
}
[647] Fix | Delete
[648] Fix | Delete
/**
[649] Fix | Delete
* Process the HTML email message.
[650] Fix | Delete
*
[651] Fix | Delete
* @since 1.8.5
[652] Fix | Delete
*
[653] Fix | Delete
* @param bool $show_empty_fields Whether to display empty fields in the email.
[654] Fix | Delete
*
[655] Fix | Delete
* @return string
[656] Fix | Delete
* @noinspection PhpUnusedLocalVariableInspection
[657] Fix | Delete
*/
[658] Fix | Delete
private function process_html_message( $show_empty_fields = false ) { // phpcs:ignore Generic.Metrics.CyclomaticComplexity
[659] Fix | Delete
[660] Fix | Delete
$message = '';
[661] Fix | Delete
[662] Fix | Delete
/**
[663] Fix | Delete
* Filter the list of field types to display in the email.
[664] Fix | Delete
*
[665] Fix | Delete
* @since 1.8.5
[666] Fix | Delete
* @deprecated 1.8.5.2
[667] Fix | Delete
*
[668] Fix | Delete
* @param array $other_fields List of field types.
[669] Fix | Delete
* @param array $form_data Form data.
[670] Fix | Delete
*/
[671] Fix | Delete
$other_fields = apply_filters_deprecated( // phpcs:disable WPForms.Comments.ParamTagHooks.InvalidParamTagsQuantity
[672] Fix | Delete
'wpforms_emails_notifications_display_other_fields',
[673] Fix | Delete
[ [], $this->form_data ],
[674] Fix | Delete
'1.8.5.2 of the WPForms plugin',
[675] Fix | Delete
'wpforms_email_display_other_fields'
[676] Fix | Delete
);
[677] Fix | Delete
[678] Fix | Delete
/** This filter is documented in /includes/emails/class-emails.php */
[679] Fix | Delete
$other_fields = (array) apply_filters( // phpcs:ignore WPForms.PHP.ValidateHooks.InvalidHookName
[680] Fix | Delete
'wpforms_email_display_other_fields',
[681] Fix | Delete
[],
[682] Fix | Delete
$this
[683] Fix | Delete
);
[684] Fix | Delete
[685] Fix | Delete
/**
[686] Fix | Delete
* Filter the form data before it is used to generate the email message.
[687] Fix | Delete
*
[688] Fix | Delete
* @since 1.8.8
[689] Fix | Delete
* @since 1.8.9 The $fields parameter was added.
[690] Fix | Delete
*
[691] Fix | Delete
* @param array $form_data Form data.
[692] Fix | Delete
* @param array $fields List of submitted fields.
[693] Fix | Delete
*/
[694] Fix | Delete
$this->form_data = apply_filters( 'wpforms_emails_notifications_form_data', $this->form_data, $this->fields );
[695] Fix | Delete
[696] Fix | Delete
foreach ( $this->form_data['fields'] as $field ) {
[697] Fix | Delete
/**
[698] Fix | Delete
* Filter whether to ignore the field in the email.
[699] Fix | Delete
*
[700] Fix | Delete
* @since 1.9.0
[701] Fix | Delete
*
[702] Fix | Delete
* @param bool $ignore Whether to ignore the field in the email.
[703] Fix | Delete
* @param array $field Field data.
[704] Fix | Delete
* @param array $form_data Form data.
[705] Fix | Delete
*/
[706] Fix | Delete
if ( apply_filters( 'wpforms_emails_notifications_field_ignored', false, $field, $this->form_data ) ) {
[707] Fix | Delete
continue;
[708] Fix | Delete
}
[709] Fix | Delete
[710] Fix | Delete
$field_message = $this->get_field_html( $field, $show_empty_fields, $other_fields );
[711] Fix | Delete
[712] Fix | Delete
/**
[713] Fix | Delete
* Filter the field message before it is added to the email message.
[714] Fix | Delete
*
[715] Fix | Delete
* @since 1.8.9
[716] Fix | Delete
* @since 1.8.9.3 The $notifications parameter was added.
[717] Fix | Delete
*
[718] Fix | Delete
* @param string $field_message Field message.
[719] Fix | Delete
* @param array $field Field data.
[720] Fix | Delete
* @param bool $show_empty_fields Whether to display empty fields in the email.
[721] Fix | Delete
* @param array $other_fields List of field types.
[722] Fix | Delete
* @param array $form_data Form data.
[723] Fix | Delete
* @param array $fields List of submitted fields.
[724] Fix | Delete
* @param Notifications $notifications Notifications instance.
[725] Fix | Delete
*/
[726] Fix | Delete
$field_message = (string) apply_filters( 'wpforms_emails_notifications_field_message_html', $field_message, $field, $show_empty_fields, $other_fields, $this->form_data, $this->fields, $this );
[727] Fix | Delete
[728] Fix | Delete
$message .= trim( $field_message );
[729] Fix | Delete
}
[730] Fix | Delete
[731] Fix | Delete
return $message;
[732] Fix | Delete
}
[733] Fix | Delete
[734] Fix | Delete
/**
[735] Fix | Delete
* Get a single field HTML markup.
[736] Fix | Delete
*
[737] Fix | Delete
* @since 1.8.9
[738] Fix | Delete
*
[739] Fix | Delete
* @param array $field Field data.
[740] Fix | Delete
* @param bool $show_empty_fields Whether to display empty fields in the email.
[741] Fix | Delete
* @param array $other_fields List of field types.
[742] Fix | Delete
*
[743] Fix | Delete
* @return string
[744] Fix | Delete
*/
[745] Fix | Delete
public function get_field_html( array $field, bool $show_empty_fields, array $other_fields ): string { // phpcs:ignore Generic.Metrics.CyclomaticComplexity
[746] Fix | Delete
[747] Fix | Delete
$field_type = ! empty( $field['type'] ) ? $field['type'] : '';
[748] Fix | Delete
$field_id = $field['id'] ?? '';
[749] Fix | Delete
[750] Fix | Delete
// Check if the field is empty in $this->fields.
[751] Fix | Delete
if ( empty( $this->fields[ $field_id ] ) ) {
[752] Fix | Delete
// Check if the field type is in $other_fields, otherwise skip.
[753] Fix | Delete
// Skip if the field is conditionally hidden.
[754] Fix | Delete
if (
[755] Fix | Delete
empty( $other_fields ) ||
[756] Fix | Delete
! in_array( $field_type, $other_fields, true ) ||
[757] Fix | Delete
(
[758] Fix | Delete
wpforms()->is_pro() &&
[759] Fix | Delete
wpforms_conditional_logic_fields()->field_is_hidden( $this->form_data, $field_id )
[760] Fix | Delete
)
[761] Fix | Delete
) {
[762] Fix | Delete
return '';
[763] Fix | Delete
}
[764] Fix | Delete
[765] Fix | Delete
// Handle specific field types.
[766] Fix | Delete
[ $field_name, $field_val ] = $this->process_special_field_values( $field );
[767] Fix | Delete
} else {
[768] Fix | Delete
// Handle fields that are not empty in $this->fields.
[769] Fix | Delete
if ( ! $show_empty_fields && ( ! isset( $this->fields[ $field_id ]['value'] ) || (string) $this->fields[ $field_id ]['value'] === '' ) ) {
[770] Fix | Delete
return '';
[771] Fix | Delete
}
[772] Fix | Delete
[773] Fix | Delete
if ( $this->is_calculated_field_hidden( $field_id ) ) {
[774] Fix | Delete
return '';
[775] Fix | Delete
}
[776] Fix | Delete
[777] Fix | Delete
$field_name = $this->fields[ $field_id ]['name'] ?? '';
[778] Fix | Delete
$field_val = empty( $this->fields[ $field_id ]['value'] ) && ! is_numeric( $this->fields[ $field_id ]['value'] ) ? '<em>' . esc_html__( '(empty)', 'wpforms-lite' ) . '</em>' : $this->fields[ $field_id ]['value'];
[779] Fix | Delete
}
[780] Fix | Delete
[781] Fix | Delete
// Set a default field name if empty.
[782] Fix | Delete
if ( empty( $field_name ) && $field_name !== null ) {
[783] Fix | Delete
$field_name = $this->get_default_field_name( $field_id );
[784] Fix | Delete
}
[785] Fix | Delete
[786] Fix | Delete
/**
[787] Fix | Delete
* Filter the field name before it is added to the email message.
[788] Fix | Delete
*
[789] Fix | Delete
* @since 1.9.1
[790] Fix | Delete
*
[791] Fix | Delete
* @param string $field_name Field name.
[792] Fix | Delete
* @param array $field Field data.
[793] Fix | Delete
* @param array $form_data Form data.
[794] Fix | Delete
* @param string $context Context of the field name.
[795] Fix | Delete
*/
[796] Fix | Delete
$field_name = (string) apply_filters( // phpcs:ignore WPForms.PHP.ValidateHooks.InvalidHookName
[797] Fix | Delete
'wpforms_html_field_name',
[798] Fix | Delete
$field_name,
[799] Fix | Delete
$this->fields[ $field_id ] ?? $field,
[800] Fix | Delete
$this->form_data,
[801] Fix | Delete
'email-html'
[802] Fix | Delete
);
[803] Fix | Delete
[804] Fix | Delete
/** This filter is documented in src/SmartTags/SmartTag/FieldHtmlId.php.*/
[805] Fix | Delete
$field_val = (string) apply_filters( // phpcs:ignore WPForms.PHP.ValidateHooks.InvalidHookName
[806] Fix | Delete
'wpforms_html_field_value',
[807] Fix | Delete
$field_val,
[808] Fix | Delete
$this->fields[ $field_id ] ?? $field,
[809] Fix | Delete
$this->form_data,
[810] Fix | Delete
'email-html'
[811] Fix | Delete
);
[812] Fix | Delete
[813] Fix | Delete
$field_val = str_replace( [ "\r\n", "\r", "\n" ], '<br/>', $field_val );
[814] Fix | Delete
[815] Fix | Delete
// Replace the payment total value if an order summary is enabled.
[816] Fix | Delete
// Ideally, it could be done through the `wpforms_html_field_value` filter,
[817] Fix | Delete
// but necessary data is missed there, e.g., entry data ($this->fields).
[818] Fix | Delete
if ( $field_type === 'payment-total' && ! empty( $field['summary'] ) ) {
[819] Fix | Delete
$field_val = $this->get_payment_total_value( $field_val );
[820] Fix | Delete
}
[821] Fix | Delete
[822] Fix | Delete
// Append the field item to the message.
[823] Fix | Delete
return str_replace(
[824] Fix | Delete
[ '{field_type}', '{field_name}', '{field_value}' ],
[825] Fix | Delete
[ $field_type, $field_name, $field_val ],
[826] Fix | Delete
$this->field_template
[827] Fix | Delete
);
[828] Fix | Delete
}
[829] Fix | Delete
[830] Fix | Delete
/**
[831] Fix | Delete
* Get payment total value.
[832] Fix | Delete
*
[833] Fix | Delete
* @since 1.9.3
[834] Fix | Delete
*
[835] Fix | Delete
* @param string $value Field value.
[836] Fix | Delete
*
[837] Fix | Delete
* @return string
[838] Fix | Delete
*/
[839] Fix | Delete
private function get_payment_total_value( string $value ): string {
[840] Fix | Delete
[841] Fix | Delete
return $this->process_tag( '{order_summary}' ) . '<span class="wpforms-payment-total">' . $value . '</span>';
[842] Fix | Delete
}
[843] Fix | Delete
[844] Fix | Delete
/**
[845] Fix | Delete
* Check if a calculated field is hidden.
[846] Fix | Delete
*
[847] Fix | Delete
* @since 1.8.9.5
[848] Fix | Delete
*
[849] Fix | Delete
* @param int $field_id Field ID.
[850] Fix | Delete
*
[851] Fix | Delete
* @return bool
[852] Fix | Delete
*/
[853] Fix | Delete
private function is_calculated_field_hidden( $field_id ): bool {
[854] Fix | Delete
[855] Fix | Delete
return ! empty( $this->form_data['fields'][ $field_id ]['calculation_is_enabled'] ) &&
[856] Fix | Delete
! empty( $this->form_data['fields'][ $field_id ]['calculation_code_php'] ) &&
[857] Fix | Delete
isset( $this->fields[ $field_id ]['visible'] )
[858] Fix | Delete
&& ! $this->fields[ $field_id ]['visible'];
[859] Fix | Delete
}
[860] Fix | Delete
[861] Fix | Delete
/**
[862] Fix | Delete
* Process a smart tag.
[863] Fix | Delete
*
[864] Fix | Delete
* @since 1.8.5
[865] Fix | Delete
*
[866] Fix | Delete
* @param string $input Smart tag.
[867] Fix | Delete
* @param string $context Context of the smart tag.
[868] Fix | Delete
*
[869] Fix | Delete
* @return string
[870] Fix | Delete
*/
[871] Fix | Delete
private function process_tag( $input = '', $context = 'notification' ): string {
[872] Fix | Delete
[873] Fix | Delete
return wpforms_process_smart_tags( $input, $this->form_data, $this->fields, (string) $this->entry_id, $context );
[874] Fix | Delete
}
[875] Fix | Delete
[876] Fix | Delete
/**
[877] Fix | Delete
* Filter the smart tag value for the mailer email addresses.
[878] Fix | Delete
*
[879] Fix | Delete
* @since 1.9.5
[880] Fix | Delete
*
[881] Fix | Delete
* @param string|mixed $value Smart Tag value.
[882] Fix | Delete
* @param string $tag_name Smart tag name.
[883] Fix | Delete
* @param array $form_data Form data.
[884] Fix | Delete
* @param array $fields List of fields.
[885] Fix | Delete
* @param int $entry_id Entry ID.
[886] Fix | Delete
* @param SmartTag $smart_tag_object The smart tag object or the Generic object for those cases when class
[887] Fix | Delete
* unregistered.
[888] Fix | Delete
*
[889] Fix | Delete
* @return string|null
[890] Fix | Delete
* @noinspection PhpMissingParamTypeInspection
[891] Fix | Delete
* @noinspection PhpUnusedParameterInspection
[892] Fix | Delete
*/
[893] Fix | Delete
public static function filter_smarttags_process_value( $value, $tag_name, $form_data, $fields, $entry_id, $smart_tag_object ): ?string {
[894] Fix | Delete
[895] Fix | Delete
$tag_name = (string) $tag_name;
[896] Fix | Delete
$fields = (array) $fields;
[897] Fix | Delete
[898] Fix | Delete
// Smart tag isn't registered and can be replaced via filters.
[899] Fix | Delete
if ( $value === null ) {
[900] Fix | Delete
return null;
[901] Fix | Delete
}
[902] Fix | Delete
[903] Fix | Delete
$value = (string) $value;
[904] Fix | Delete
$context = $smart_tag_object->context ?? '';
[905] Fix | Delete
$allowed_tags = [
[906] Fix | Delete
'admin_email',
[907] Fix | Delete
'user_email',
[908] Fix | Delete
];
[909] Fix | Delete
[910] Fix | Delete
// In these contexts, we need to check if the smart tag is allowed.
[911] Fix | Delete
$address_context = [
[912] Fix | Delete
'notification-from',
[913] Fix | Delete
];
[914] Fix | Delete
[915] Fix | Delete
// Check if the smart tag is allowed AND if the context is allowed.
[916] Fix | Delete
if ( in_array( $tag_name, $allowed_tags, true ) || ! in_array( $context, $address_context, true ) ) {
[917] Fix | Delete
return $value;
[918] Fix | Delete
}
[919] Fix | Delete
[920] Fix | Delete
return self::validate_notification_email_smart_tags( $value, $tag_name, $fields, $smart_tag_object );
[921] Fix | Delete
}
[922] Fix | Delete
[923] Fix | Delete
/**
[924] Fix | Delete
* Validate notification email fields.
[925] Fix | Delete
*
[926] Fix | Delete
* @since 1.9.5
[927] Fix | Delete
*
[928] Fix | Delete
* @param string|mixed $value Smart Tag value.
[929] Fix | Delete
* @param string $tag_name Smart tag name.
[930] Fix | Delete
* @param array $fields List of fields.
[931] Fix | Delete
* @param SmartTag $smart_tag_object The smart tag object or the Generic object for those cases when class unregistered.
[932] Fix | Delete
*
[933] Fix | Delete
* @return string
[934] Fix | Delete
*/
[935] Fix | Delete
private static function validate_notification_email_smart_tags( string $value, string $tag_name, array $fields, SmartTag $smart_tag_object ): string {
[936] Fix | Delete
[937] Fix | Delete
$field_id = self::get_smart_tag_field_id( $tag_name, $smart_tag_object );
[938] Fix | Delete
[939] Fix | Delete
// Empty value for all non-field smart tags.
[940] Fix | Delete
if ( $field_id === null || $field_id === '' || ! isset( $fields[ $field_id ]['type'] ) ) {
[941] Fix | Delete
return '';
[942] Fix | Delete
}
[943] Fix | Delete
[944] Fix | Delete
$field_type = $fields[ $field_id ]['type'];
[945] Fix | Delete
[946] Fix | Delete
// If the field type is Email, return the value.
[947] Fix | Delete
if ( $field_type === 'email' ) {
[948] Fix | Delete
return $value;
[949] Fix | Delete
}
[950] Fix | Delete
[951] Fix | Delete
// Allow the Name field value in the Reply To setting.
[952] Fix | Delete
if ( $field_type === 'name' && $smart_tag_object->context === 'notification-reply-to' ) {
[953] Fix | Delete
return $value;
[954] Fix | Delete
}
[955] Fix | Delete
[956] Fix | Delete
// Otherwise, return an empty string if the value is not an email.
[957] Fix | Delete
return wpforms_is_email( $value ) ? $value : '';
[958] Fix | Delete
}
[959] Fix | Delete
[960] Fix | Delete
/**
[961] Fix | Delete
* Get smart tag field ID.
[962] Fix | Delete
*
[963] Fix | Delete
* @since 1.9.5
[964] Fix | Delete
*
[965] Fix | Delete
* @param string $tag_name Smart tag name.
[966] Fix | Delete
* @param SmartTag $smart_tag_object The smart tag object or the Generic object for those cases when class unregistered.
[967] Fix | Delete
*
[968] Fix | Delete
* @return mixed|string|null
[969] Fix | Delete
*/
[970] Fix | Delete
private static function get_smart_tag_field_id( string $tag_name, SmartTag $smart_tag_object ) {
[971] Fix | Delete
[972] Fix | Delete
if ( $tag_name === 'field_value_id' ) {
[973] Fix | Delete
return $smart_tag_object->get_attributes()[ $tag_name ] ?? null;
[974] Fix | Delete
}
[975] Fix | Delete
[976] Fix | Delete
if ( $tag_name !== 'field_id' ) {
[977] Fix | Delete
return null;
[978] Fix | Delete
}
[979] Fix | Delete
[980] Fix | Delete
$field_id_parts = explode( '|', $smart_tag_object->get_attributes()['field_id'] ?? '' );
[981] Fix | Delete
[982] Fix | Delete
return $field_id_parts[0] ?? null;
[983] Fix | Delete
}
[984] Fix | Delete
[985] Fix | Delete
/**
[986] Fix | Delete
* Process special field types.
[987] Fix | Delete
* This is used for fields such as Page Break, HTML, Content, etc.
[988] Fix | Delete
*
[989] Fix | Delete
* @since 1.8.5
[990] Fix | Delete
*
[991] Fix | Delete
* @param array $field Field data.
[992] Fix | Delete
*
[993] Fix | Delete
* @return array
[994] Fix | Delete
*/
[995] Fix | Delete
private function process_special_field_values( $field ) { // phpcs:ignore Generic.Metrics.CyclomaticComplexity
[996] Fix | Delete
[997] Fix | Delete
$field_name = null;
[998] Fix | Delete
$field_val = null;
[999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function