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 / user-meta.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
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