PluginProbe ʕ •ᴥ•ʔ
Flexible Checkout Fields for WooCommerce – WooCommerce Checkout Manager / 4.1.41
Flexible Checkout Fields for WooCommerce – WooCommerce Checkout Manager v4.1.41
4.1.41 4.1.40 4.1.39 4.1.38 trunk 1.2 1.2.1 1.2.2 1.2.3 1.3 1.3.1 1.3.2 1.3.3 1.4 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6 1.6.1 1.6.10 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7 1.7.1 1.7.2 1.8 1.8.1 1.8.2 1.8.3 1.9.0 1.9.1 1.9.2 1.9.3 2.0.0 2.0.1 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.1.0 2.1.1 2.1.4 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.3.1 2.3.2 2.3.3 2.3.4 2.4.0 2.4.1 2.4.10 2.4.11 2.4.12 2.4.13 2.4.14 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.6.0 2.7.0 2.7.1 2.8.0 2.9.0 2.9.1 2.9.2 3.0.0 3.0.1 3.0.10 3.0.11 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.2 3.1.3 3.2.0 3.2.1 3.2.2 3.2.3 3.2.4 3.3.0 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.10 3.5.11 3.5.12 3.5.13 3.5.14 3.5.15 3.5.16 3.5.17 3.5.18 3.5.19 3.5.2 3.5.3 3.5.4 3.5.5 3.5.6 3.5.7 3.5.8 3.5.9 3.6.0 4.0.0 4.1.0 4.1.1 4.1.10 4.1.11 4.1.12 4.1.13 4.1.14 4.1.15 4.1.16 4.1.17 4.1.18 4.1.19 4.1.2 4.1.20 4.1.21 4.1.22 4.1.23 4.1.24 4.1.25 4.1.26 4.1.27 4.1.28 4.1.29 4.1.3 4.1.30 4.1.31 4.1.32 4.1.34 4.1.35 4.1.36 4.1.37 4.1.4 4.1.5 4.1.6 4.1.7 4.1.8 4.1.9
flexible-checkout-fields / classes / filed-validation.php
flexible-checkout-fields / classes Last commit date
activation-tracker.php 1 week ago display-options.php 1 week ago field-type-settings.php 1 week ago field.php 1 week ago filed-validation.php 1 week ago myaccount-edit-address.php 1 week ago myaccount-field-processor.php 1 week ago plugin.php 1 week ago settings.php 1 week ago tracker.php 1 week ago user-meta-checkout.php 1 week ago user-meta.php 1 week ago user-profile.php 1 week ago
filed-validation.php
107 lines
1 <?php
2
3 use WPDesk\FCF\Free\Field\Type\FileType;
4 use WPDesk\FCF\Free\Field\Type\MultiCheckboxType;
5 use WPDesk\FCF\Free\Field\Type\MultiSelectType;
6 use WPDesk\FCF\Free\Field\Type\TextareaType;
7
8 if ( ! defined( 'ABSPATH' ) ) {
9 exit; // Exit if accessed directly
10 }
11
12 class Flexible_Checkout_Fields_Field_Validation {
13
14 /**
15 * @var Flexible_Checkout_Fields_Plugin
16 */
17 protected $plugin;
18
19 /**
20 * Flexible_Checkout_Fields_Field_Validation constructor.
21 *
22 * @param Flexible_Checkout_Fields_Plugin $plugin
23 */
24 public function __construct( $plugin ) {
25 $this->plugin = $plugin;
26 }
27
28 /**
29 *
30 */
31 public function hooks() {
32 add_action( 'woocommerce_after_checkout_validation', [ $this, 'woocommerce_after_checkout_validation_action' ] );
33 add_filter( 'woocommerce_checkout_required_field_notice', [ $this, 'woocommerce_checkout_required_field_notice_filter' ], 10, 2 );
34 }
35
36 public function woocommerce_checkout_required_field_notice_filter( $notice, $field_label ) {
37 $field_label = strip_tags( $field_label );
38 $notice = sprintf( __( '%s is a required field.', 'woocommerce' ), '<strong>' . $field_label . '</strong>' );
39 return $notice;
40 }
41
42 /**
43 * @param $data
44 */
45 public function woocommerce_after_checkout_validation_action( $data ) {
46 foreach ( $data as $field => $value ) {
47 do_action( 'flexible_checkout_fields_validate_' . $field, $value );
48 }
49 $settings = $this->plugin->get_settings();
50 $custom_validations = $this->get_custom_validations();
51 foreach ( $settings as $section => $fields ) {
52 foreach ( $fields as $field_key => $field ) {
53 if ( isset( $_POST[ $field_key ] ) && ! empty( $field['validation'] ) && array_key_exists( $field['validation'], $custom_validations ) ) {
54 call_user_func( $custom_validations[ $field['validation'] ]['callback'], $field['label'], sanitize_textarea_field( $_POST[ $field_key ] ), $field );
55 }
56 if ( ! ( $field['custom_field'] ?? false ) ) {
57 continue;
58 }
59
60 if ( in_array( $field['type'], [ TextareaType::FIELD_TYPE ] ) ) {
61 $value = sanitize_textarea_field( wp_unslash( $_POST[ $field_key ] ?? '' ) );
62 } elseif ( in_array( $field['type'], [ MultiCheckboxType::FIELD_TYPE, MultiSelectType::FIELD_TYPE, FileType::FIELD_TYPE ] ) ) {
63 $value = $_POST[ $field_key ] ?? [];
64 $value = json_encode( wp_unslash( $value ), JSON_UNESCAPED_UNICODE );
65 } else {
66 $value = sanitize_text_field( wp_unslash( $_POST[ $field_key ] ?? '' ) );
67 }
68
69 do_action( 'flexible_checkout_fields_validate_' . $field['type'], $value, $field );
70 }
71 }
72 }
73
74 /**
75 * Get custom validations.
76 *
77 * @param string $section .
78 * @return array
79 */
80 public function get_custom_validations( $section = '' ) {
81 return apply_filters( 'flexible_checkout_fields_custom_validation', [], $section );
82 }
83
84 /**
85 * Get validation options.
86 *
87 * @param string $section .
88 * @return array
89 */
90 public function get_validation_options( $section = '' ) {
91 $validation_options = [
92 '' => __( 'Default', 'flexible-checkout-fields' ),
93 'none' => __( 'None', 'flexible-checkout-fields' ),
94 'email' => __( 'Email', 'flexible-checkout-fields' ),
95 'phone' => __( 'Phone', 'flexible-checkout-fields' ),
96 ];
97 if ( in_array( $section, [ 'billing', 'shipping' ], true ) ) {
98 $validation_options['postcode'] = __( 'Postcode', 'flexible-checkout-fields' );
99 }
100 $custom_validations = $this->get_custom_validations( $section );
101 foreach ( $custom_validations as $custom_validation_key => $custom_validation ) {
102 $validation_options[ $custom_validation_key ] = $custom_validation['label'];
103 }
104 return $validation_options;
105 }
106 }
107