PluginProbe ʕ •ᴥ•ʔ
Flexible Checkout Fields for WooCommerce – WooCommerce Checkout Manager / 4.1.40
Flexible Checkout Fields for WooCommerce – WooCommerce Checkout Manager v4.1.40
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 / myaccount-field-processor.php
flexible-checkout-fields / classes Last commit date
activation-tracker.php 3 weeks ago display-options.php 3 weeks ago field-type-settings.php 3 weeks ago field.php 3 weeks ago filed-validation.php 3 weeks ago myaccount-edit-address.php 3 weeks ago myaccount-field-processor.php 3 weeks ago plugin.php 3 weeks ago settings.php 3 weeks ago tracker.php 3 weeks ago user-meta-checkout.php 3 weeks ago user-meta.php 3 weeks ago user-profile.php 3 weeks ago
myaccount-field-processor.php
101 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 /**
9 * Class Flexible_Checkout_Fields_Myaccount_Field_Processor
10 */
11 class Flexible_Checkout_Fields_Myaccount_Field_Processor {
12
13 /**
14 * @var Flexible_Checkout_Fields_Plugin
15 */
16 protected $plugin;
17
18 /**
19 * Flexible_Checkout_Fields_Myaccount_Field_Processor constructor.
20 *
21 * @param Flexible_Checkout_Fields_Plugin $plugin Plugin.
22 */
23 public function __construct( $plugin ) {
24 $this->plugin = $plugin;
25 }
26
27 /**
28 * Is custom field?
29 *
30 * @param array $field Field.
31 *
32 * @return bool
33 */
34 private function is_custom_field( $field ) {
35 if ( isset( $field['custom_field'] ) && 1 === intval( $field['custom_field'] ) ) {
36 return true;
37 }
38 return false;
39 }
40
41 /**
42 * Hooks.
43 */
44 public function hooks() {
45 add_action( 'wp_loaded', [ $this, 'process_fields' ] );
46 }
47
48 /**
49 * Add sanitization to custom fields when woocommerce saves address.
50 *
51 * @return void
52 */
53 public function process_fields() {
54 $settings = $this->plugin->get_settings();
55 foreach ( $settings as $section ) {
56 if ( is_array( $section ) ) {
57 foreach ( $section as $key => $field ) {
58 if ( ! $this->is_custom_field( $field ) ) {
59 continue;
60 }
61
62 if ( in_array( $field['type'], [ TextareaType::FIELD_TYPE ] ) ) {
63 add_filter( 'woocommerce_process_myaccount_field_' . $key, [ $this, 'sanitize_textarea_value' ] );
64 } elseif ( in_array( $field['type'], [ MultiCheckboxType::FIELD_TYPE, MultiSelectType::FIELD_TYPE, FileType::FIELD_TYPE ] ) ) {
65 add_filter( 'woocommerce_process_myaccount_field_' . $key, [ $this, 'sanitize_array_value' ] );
66 } else {
67 add_filter( 'woocommerce_process_myaccount_field_' . $key, [ $this, 'sanitize_text_value' ] );
68 }
69 }
70 }
71 }
72 }
73
74 /**
75 * @param string|null $value .
76 *
77 * @return string
78 */
79 public function sanitize_textarea_value( $value ) {
80 return sanitize_textarea_field( wp_unslash( $value ) );
81 }
82
83 /**
84 * @param string|null $value .
85 *
86 * @return string
87 */
88 public function sanitize_array_value( $value ) {
89 return json_encode( wp_unslash( $value ), JSON_UNESCAPED_UNICODE );
90 }
91
92 /**
93 * @param string|null $value .
94 *
95 * @return string
96 */
97 public function sanitize_text_value( $value ) {
98 return sanitize_text_field( wp_unslash( $value ) );
99 }
100 }
101