Edit File by line
/home/zeestwma/ceyloniy.../wp-conte.../plugins/wpforms-.../src/Integrat.../Stripe/Fields
File: StripeCreditCard.php
<?php
[0] Fix | Delete
[1] Fix | Delete
namespace WPForms\Integrations\Stripe\Fields;
[2] Fix | Delete
[3] Fix | Delete
use WPForms_Field;
[4] Fix | Delete
use WPForms\Integrations\Stripe\Fields\Traits\CreditCard;
[5] Fix | Delete
[6] Fix | Delete
/**
[7] Fix | Delete
* Stripe credit card field.
[8] Fix | Delete
*
[9] Fix | Delete
* @since 1.8.2
[10] Fix | Delete
*/
[11] Fix | Delete
class StripeCreditCard extends WPForms_Field {
[12] Fix | Delete
[13] Fix | Delete
use CreditCard;
[14] Fix | Delete
[15] Fix | Delete
/**
[16] Fix | Delete
* Field preview card icon SVG code.
[17] Fix | Delete
*
[18] Fix | Delete
* @since 1.8.2
[19] Fix | Delete
*/
[20] Fix | Delete
const FIELD_PREVIEW_CARD_ICON_SVG = '<svg viewBox="0 0 32 21"><g transform="translate(0 2)"><path d="M26.58 19H2.42A2.4 2.4 0 0 1 0 16.62V2.38A2.4 2.4 0 0 1 2.42 0h24.16A2.4 2.4 0 0 1 29 2.38v14.25A2.4 2.4 0 0 1 26.58 19zM10 5.83c0-.46-.35-.83-.78-.83H3.78c-.43 0-.78.37-.78.83v3.34c0 .46.35.83.78.83h5.44c.43 0 .78-.37.78-.83V5.83z" opacity=".2"></path><path d="M25 15h-3c-.65 0-1-.3-1-1s.35-1 1-1h3c.65 0 1 .3 1 1s-.35 1-1 1zm-6 0h-3c-.65 0-1-.3-1-1s.35-1 1-1h3c.65 0 1 .3 1 1s-.35 1-1 1zm-6 0h-3c-.65 0-1-.3-1-1s.35-1 1-1h3c.65 0 1 .3 1 1s-.35 1-1 1zm-6 0H4c-.65 0-1-.3-1-1s.35-1 1-1h3c.65 0 1 .3 1 1s-.35 1-1 1z" opacity=".3"></path></g></svg>';
[21] Fix | Delete
[22] Fix | Delete
[23] Fix | Delete
/**
[24] Fix | Delete
* Define additional field properties.
[25] Fix | Delete
*
[26] Fix | Delete
* @since 1.8.2
[27] Fix | Delete
*
[28] Fix | Delete
* @param array $properties Field properties.
[29] Fix | Delete
* @param array $field Field settings.
[30] Fix | Delete
* @param array $form_data Form data and settings.
[31] Fix | Delete
*
[32] Fix | Delete
* @return array
[33] Fix | Delete
*/
[34] Fix | Delete
public function field_properties( $properties, $field, $form_data ) {
[35] Fix | Delete
[36] Fix | Delete
unset( $properties['inputs']['primary'], $properties['label']['attr']['for'] );
[37] Fix | Delete
[38] Fix | Delete
$form_id = absint( $form_data['id'] );
[39] Fix | Delete
$field_id = absint( $field['id'] );
[40] Fix | Delete
[41] Fix | Delete
$props = [
[42] Fix | Delete
'inputs' => [
[43] Fix | Delete
'number' => [
[44] Fix | Delete
'attr' => [
[45] Fix | Delete
'name' => '',
[46] Fix | Delete
'value' => '',
[47] Fix | Delete
],
[48] Fix | Delete
'block' => [
[49] Fix | Delete
'wpforms-field-stripe-credit-card-number',
[50] Fix | Delete
],
[51] Fix | Delete
'class' => [
[52] Fix | Delete
'wpforms-field-stripe-credit-card-cardnumber',
[53] Fix | Delete
],
[54] Fix | Delete
'data' => [],
[55] Fix | Delete
'id' => "wpforms-{$form_id}-field_{$field_id}",
[56] Fix | Delete
'required' => ! empty( $field['required'] ) ? 'required' : '',
[57] Fix | Delete
'sublabel' => [
[58] Fix | Delete
'hidden' => ! empty( $field['sublabel_hide'] ),
[59] Fix | Delete
'value' => esc_html__( 'Card', 'wpforms-lite' ),
[60] Fix | Delete
'position' => 'after',
[61] Fix | Delete
],
[62] Fix | Delete
],
[63] Fix | Delete
'name' => [
[64] Fix | Delete
'attr' => [
[65] Fix | Delete
'name' => 'wpforms[stripe-credit-card-cardname]',
[66] Fix | Delete
'value' => '',
[67] Fix | Delete
'placeholder' => ! empty( $field['cardname_placeholder'] ) ? $field['cardname_placeholder'] : '',
[68] Fix | Delete
],
[69] Fix | Delete
'block' => [
[70] Fix | Delete
'wpforms-field-stripe-credit-card-name',
[71] Fix | Delete
],
[72] Fix | Delete
'class' => [
[73] Fix | Delete
'wpforms-field-stripe-credit-card-cardname',
[74] Fix | Delete
],
[75] Fix | Delete
'data' => [],
[76] Fix | Delete
'id' => "wpforms-{$form_id}-field_{$field_id}-cardname",
[77] Fix | Delete
'required' => ! empty( $field['required'] ) ? 'required' : '',
[78] Fix | Delete
'sublabel' => [
[79] Fix | Delete
'hidden' => ! empty( $field['sublabel_hide'] ),
[80] Fix | Delete
'value' => esc_html__( 'Name on Card', 'wpforms-lite' ),
[81] Fix | Delete
'position' => 'after',
[82] Fix | Delete
],
[83] Fix | Delete
],
[84] Fix | Delete
],
[85] Fix | Delete
];
[86] Fix | Delete
[87] Fix | Delete
$properties = array_merge_recursive( $properties, $props );
[88] Fix | Delete
[89] Fix | Delete
// If this field is required we need to make some adjustments.
[90] Fix | Delete
if ( ! empty( $field['required'] ) ) {
[91] Fix | Delete
[92] Fix | Delete
// Add required class if needed (for multi-page validation).
[93] Fix | Delete
$properties['inputs']['number']['class'][] = 'wpforms-field-required';
[94] Fix | Delete
$properties['inputs']['name']['class'][] = 'wpforms-field-required';
[95] Fix | Delete
}
[96] Fix | Delete
[97] Fix | Delete
return $properties;
[98] Fix | Delete
}
[99] Fix | Delete
[100] Fix | Delete
/**
[101] Fix | Delete
* Advanced section field options.
[102] Fix | Delete
*
[103] Fix | Delete
* @since 1.8.2
[104] Fix | Delete
*
[105] Fix | Delete
* @param array $field Field settings.
[106] Fix | Delete
*/
[107] Fix | Delete
protected function advanced_options( $field ) {
[108] Fix | Delete
[109] Fix | Delete
// Card Name.
[110] Fix | Delete
$cardname_placeholder = ! empty( $field['cardname_placeholder'] ) ? $field['cardname_placeholder'] : '';
[111] Fix | Delete
[112] Fix | Delete
printf( '<div class="wpforms-clear wpforms-field-option-row wpforms-field-option-row-cardname" id="wpforms-field-option-row-%d-cardname" data-subfield="cardname" data-field-id="%d">', absint( $field['id'] ), absint( $field['id'] ) );
[113] Fix | Delete
$this->field_element(
[114] Fix | Delete
'label',
[115] Fix | Delete
$field,
[116] Fix | Delete
[
[117] Fix | Delete
'slug' => 'cardname_placeholder',
[118] Fix | Delete
'value' => esc_html__( 'Name on Card Placeholder Text', 'wpforms-lite' ),
[119] Fix | Delete
]
[120] Fix | Delete
);
[121] Fix | Delete
echo '<div class="placeholder">';
[122] Fix | Delete
printf( '<input type="text" class="placeholder-update" id="wpforms-field-option-%d-cardname_placeholder" name="fields[%d][cardname_placeholder]" value="%s" data-field-id="%d" data-subfield="stripe-credit-card-cardname">', absint( $field['id'] ), absint( $field['id'] ), esc_attr( $cardname_placeholder ), absint( $field['id'] ) );
[123] Fix | Delete
echo '</div>';
[124] Fix | Delete
echo '</div>';
[125] Fix | Delete
[126] Fix | Delete
// Custom CSS classes.
[127] Fix | Delete
$this->field_option( 'css', $field );
[128] Fix | Delete
}
[129] Fix | Delete
[130] Fix | Delete
/**
[131] Fix | Delete
* Field preview inside the builder.
[132] Fix | Delete
*
[133] Fix | Delete
* @since 1.8.2
[134] Fix | Delete
*
[135] Fix | Delete
* @param array $field Field settings.
[136] Fix | Delete
*/
[137] Fix | Delete
public function field_preview( $field ) {
[138] Fix | Delete
[139] Fix | Delete
// Define data.
[140] Fix | Delete
$card_placeholder = esc_html__( 'Card number', 'wpforms-lite' );
[141] Fix | Delete
$name_placeholder = ! empty( $field['cardname_placeholder'] ) ? $field['cardname_placeholder'] : '';
[142] Fix | Delete
[143] Fix | Delete
// Label.
[144] Fix | Delete
$this->field_preview_option( 'label', $field );
[145] Fix | Delete
?>
[146] Fix | Delete
[147] Fix | Delete
<div class="format-selected format-selected-full">
[148] Fix | Delete
[149] Fix | Delete
<div class="wpforms-field-row">
[150] Fix | Delete
<input type="text" readonly>
[151] Fix | Delete
<div class="wpforms-field-preview-wrap">
[152] Fix | Delete
<div class="wpforms-field-stripe-credit-card-number-placeholder-preview">
[153] Fix | Delete
<?php echo self::FIELD_PREVIEW_CARD_ICON_SVG; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
[154] Fix | Delete
<span><?php echo esc_attr( $card_placeholder ); ?></span>
[155] Fix | Delete
</div>
[156] Fix | Delete
<div class="wpforms-field-stripe-credit-card-number-expcvc-preview">MM / YY &nbsp; CVC</div>
[157] Fix | Delete
</div>
[158] Fix | Delete
<label class="wpforms-sub-label"><?php esc_html_e( 'Card', 'wpforms-lite' ); ?></label>
[159] Fix | Delete
</div>
[160] Fix | Delete
[161] Fix | Delete
<div class="wpforms-field-row">
[162] Fix | Delete
<div class="wpforms-stripe-credit-card-cardname">
[163] Fix | Delete
<input type="text" placeholder="<?php echo esc_attr( $name_placeholder ); ?>" readonly>
[164] Fix | Delete
<label class="wpforms-sub-label"><?php esc_html_e( 'Name on Card', 'wpforms-lite' ); ?></label>
[165] Fix | Delete
</div>
[166] Fix | Delete
</div>
[167] Fix | Delete
</div>
[168] Fix | Delete
[169] Fix | Delete
<?php
[170] Fix | Delete
// Description.
[171] Fix | Delete
$this->field_preview_option( 'description', $field );
[172] Fix | Delete
}
[173] Fix | Delete
[174] Fix | Delete
/**
[175] Fix | Delete
* Field display on the form front-end.
[176] Fix | Delete
*
[177] Fix | Delete
* @since 1.8.2
[178] Fix | Delete
*
[179] Fix | Delete
* @param array $field Field data and settings.
[180] Fix | Delete
* @param array $deprecated Deprecated field attributes. Use field properties.
[181] Fix | Delete
* @param array $form_data Form data and settings.
[182] Fix | Delete
*/
[183] Fix | Delete
public function field_display( $field, $deprecated, $form_data ) {
[184] Fix | Delete
[185] Fix | Delete
if ( $this->field_display_errors( $form_data ) ) {
[186] Fix | Delete
return;
[187] Fix | Delete
}
[188] Fix | Delete
[189] Fix | Delete
if ( wpforms_is_editor_page() ) {
[190] Fix | Delete
$this->block_editor_field_display( $field );
[191] Fix | Delete
[192] Fix | Delete
return;
[193] Fix | Delete
}
[194] Fix | Delete
[195] Fix | Delete
// Define data.
[196] Fix | Delete
$number = ! empty( $field['properties']['inputs']['number'] ) ? $field['properties']['inputs']['number'] : [];
[197] Fix | Delete
$name = ! empty( $field['properties']['inputs']['name'] ) ? $field['properties']['inputs']['name'] : [];
[198] Fix | Delete
[199] Fix | Delete
// Row wrapper.
[200] Fix | Delete
echo '<div class="wpforms-field-row wpforms-field-' . sanitize_html_class( $field['size'] ) . '">';
[201] Fix | Delete
[202] Fix | Delete
echo '<div ' . wpforms_html_attributes( false, $number['block'] ) . '>';
[203] Fix | Delete
$this->field_display_sublabel( 'number', 'before', $field );
[204] Fix | Delete
printf(
[205] Fix | Delete
'<div %s data-required="%s"><!-- a Stripe Element will be inserted here. --></div>',
[206] Fix | Delete
wpforms_html_attributes( $number['id'], $number['class'], $number['data'], $number['attr'] ),
[207] Fix | Delete
esc_html( $number['required'] )
[208] Fix | Delete
);
[209] Fix | Delete
// Hidden input is needed for styling and validation.
[210] Fix | Delete
echo '<input type="text" class="wpforms-stripe-credit-card-hidden-input" name="wpforms[stripe-credit-card-hidden-input-' . absint( $form_data['id'] ) . ']" disabled style="display: none;">';
[211] Fix | Delete
$this->field_display_sublabel( 'number', 'after', $field );
[212] Fix | Delete
$this->field_display_error( 'number', $field );
[213] Fix | Delete
echo '</div>';
[214] Fix | Delete
[215] Fix | Delete
echo '</div>';
[216] Fix | Delete
[217] Fix | Delete
// Row wrapper.
[218] Fix | Delete
echo '<div class="wpforms-field-row wpforms-field-' . sanitize_html_class( $field['size'] ) . '">';
[219] Fix | Delete
[220] Fix | Delete
// Name.
[221] Fix | Delete
echo '<div ' . wpforms_html_attributes( false, $name['block'] ) . '>';
[222] Fix | Delete
$this->field_display_sublabel( 'name', 'before', $field );
[223] Fix | Delete
printf(
[224] Fix | Delete
'<input type="text" %s %s>',
[225] Fix | Delete
wpforms_html_attributes( $name['id'], $name['class'], $name['data'], $name['attr'] ),
[226] Fix | Delete
esc_html( $name['required'] )
[227] Fix | Delete
);
[228] Fix | Delete
$this->field_display_sublabel( 'name', 'after', $field );
[229] Fix | Delete
$this->field_display_error( 'name', $field );
[230] Fix | Delete
echo '</div>';
[231] Fix | Delete
[232] Fix | Delete
echo '</div>';
[233] Fix | Delete
}
[234] Fix | Delete
[235] Fix | Delete
/**
[236] Fix | Delete
* Block editor field preview.
[237] Fix | Delete
*
[238] Fix | Delete
* @since 1.8.2
[239] Fix | Delete
*
[240] Fix | Delete
* @param array $field Field settings.
[241] Fix | Delete
*/
[242] Fix | Delete
private function block_editor_field_display( $field ) {
[243] Fix | Delete
[244] Fix | Delete
$field_class = 'wpforms-field-row wpforms-no-columns wpforms-field-' . sanitize_html_class( $field['size'] );
[245] Fix | Delete
$card_placeholder = esc_html__( 'Card number', 'wpforms-lite' );
[246] Fix | Delete
$name_placeholder = ! empty( $field['properties']['inputs']['name']['attr']['placeholder'] ) ? $field['properties']['inputs']['name']['attr']['placeholder'] : '';
[247] Fix | Delete
?>
[248] Fix | Delete
[249] Fix | Delete
<div class="<?php echo esc_attr( $field_class ); ?> ">
[250] Fix | Delete
<?php $this->field_display_sublabel( 'number', 'before', $field ); ?>
[251] Fix | Delete
<input type="text" class="wpforms-field-stripe-credit-card-number-preview" readonly placeholder="">
[252] Fix | Delete
<div class="wpforms-field-stripe-credit-card-number-placeholder-preview">
[253] Fix | Delete
<?php echo self::FIELD_PREVIEW_CARD_ICON_SVG; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
[254] Fix | Delete
<span><?php echo esc_attr( $card_placeholder ); ?></span>
[255] Fix | Delete
</div>
[256] Fix | Delete
<div class="wpforms-field-stripe-credit-card-number-expcvc-preview">MM / YY &nbsp; CVC</div>
[257] Fix | Delete
<?php $this->field_display_sublabel( 'number', 'after', $field ); ?>
[258] Fix | Delete
</div>
[259] Fix | Delete
<div class="<?php echo esc_attr( $field_class ); ?>">
[260] Fix | Delete
<?php $this->field_display_sublabel( 'name', 'before', $field ); ?>
[261] Fix | Delete
<input type="text" readonly placeholder="<?php echo esc_attr( $name_placeholder ); ?>">
[262] Fix | Delete
<?php $this->field_display_sublabel( 'name', 'after', $field ); ?>
[263] Fix | Delete
</div>
[264] Fix | Delete
[265] Fix | Delete
<?php
[266] Fix | Delete
}
[267] Fix | Delete
}
[268] Fix | Delete
[269] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function