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 / user-meta.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
user-meta.php
100 lines
1 <?php
2 /**
3 * User meta.
4 *
5 * @package Flexible Checkout Fields
6 */
7
8 use WPDesk\FCF\Free\Field\Type\FileType;
9 use WPDesk\FCF\Free\Field\Type\MultiCheckboxType;
10 use WPDesk\FCF\Free\Field\Type\MultiSelectType;
11 use WPDesk\FCF\Free\Field\Type\TextareaType;
12
13 /**
14 * Can update user meta.
15 */
16 class Flexible_Checkout_Fields_User_Meta {
17
18 /**
19 * Plugin.
20 *
21 * @var Flexible_Checkout_Fields_Plugin
22 */
23 protected $plugin;
24
25 /**
26 * @param Flexible_Checkout_Fields_Plugin $plugin Plugin.
27 */
28 public function __construct( $plugin ) {
29 $this->plugin = $plugin;
30 }
31
32 /**
33 * Is flexible checkout fields section?
34 *
35 * @param string $settings_section .
36 *
37 * @return bool
38 */
39 public function is_fcf_section( $settings_section ) {
40 $sections = $this->plugin->sections;
41 foreach ( $sections as $section ) {
42 if ( isset( $section['section'] ) && $section['section'] === $settings_section ) {
43 return true;
44 }
45 }
46 return false;
47 }
48
49 /**
50 * Is allowed section to be stored in User Metadata?
51 *
52 * @param string $settings_section Key of fields section.
53 *
54 * @return bool Status of section, returns true if no data.
55 */
56 public function is_section_allowed_for_usermeta( $settings_section ) {
57 $sections = $this->plugin->sections;
58 foreach ( $sections as $section ) {
59 if ( isset( $section['section'] ) && $section['section'] === $settings_section ) {
60 return ( ! isset( $section['user_meta'] ) || $section['user_meta'] );
61 }
62 }
63 return true;
64 }
65
66 /**
67 * Update customer meta data.
68 *
69 * @param int $customer_id Customer ID.
70 * @param array $data Posted checkout data.
71 */
72 public function update_customer_meta_fields( $customer_id, $data ) {
73 $settings = $this->plugin->get_settings();
74 if ( ! empty( $settings ) ) {
75 foreach ( $settings as $key => $type ) {
76 if ( ! $this->is_fcf_section( $key ) || ! $this->is_section_allowed_for_usermeta( $key ) ) {
77 continue;
78 }
79 foreach ( $type as $field ) {
80 $field_name = $field['name'];
81 $fcf_field = new Flexible_Checkout_Fields_Field( $field, $this->plugin );
82 if ( ! $fcf_field->is_field_excluded_for_user() ) {
83 $value = '';
84 if ( isset( $data[ $field_name ] ) ) {
85 if ( in_array( $fcf_field->get_type(), [ TextareaType::FIELD_TYPE ] ) ) {
86 $value = sanitize_textarea_field( wp_unslash( $data[ $field_name ] ) );
87 } elseif ( in_array( $fcf_field->get_type(), [ MultiCheckboxType::FIELD_TYPE, MultiSelectType::FIELD_TYPE, FileType::FIELD_TYPE ] ) ) {
88 $value = json_encode( wp_unslash( $data[ $field_name ] ), JSON_UNESCAPED_UNICODE );
89 } else {
90 $value = sanitize_text_field( wp_unslash( $data[ $field_name ] ) );
91 }
92 }
93 update_user_meta( $customer_id, $field_name, $value );
94 }
95 }
96 }
97 }
98 }
99 }
100