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-profile.php
115 lines
| 1 | <?php |
| 2 | /** |
| 3 | * User profile hooks. |
| 4 | * |
| 5 | * @package Flexible Checkout Fields |
| 6 | */ |
| 7 | |
| 8 | /** |
| 9 | * User profile hooks. |
| 10 | * |
| 11 | * Class Flexible_Checkout_Fields_User_Profile |
| 12 | */ |
| 13 | class Flexible_Checkout_Fields_User_Profile { |
| 14 | |
| 15 | const FIELD_TYPE = 'type'; |
| 16 | const FIELD_TYPE_SELECT = 'select'; |
| 17 | |
| 18 | const FIELD_TYPE_INSPIRECHECKBOX = 'inspirecheckbox'; |
| 19 | const FIELD_TYPE_INSPIRERADIO = 'inspireradio'; |
| 20 | |
| 21 | const FIELD_COPY_BILLING = 'copy_billing'; |
| 22 | |
| 23 | /** |
| 24 | * Plugin. |
| 25 | * |
| 26 | * @var Flexible_Checkout_Fields_Plugin |
| 27 | */ |
| 28 | protected $plugin; |
| 29 | |
| 30 | /** |
| 31 | * . |
| 32 | * |
| 33 | * @var Flexible_Checkout_Fields_User_Meta |
| 34 | */ |
| 35 | private $user_meta; |
| 36 | |
| 37 | /** |
| 38 | * Flexible_Checkout_Fields_User_Profile constructor. |
| 39 | * |
| 40 | * @param Flexible_Checkout_Fields_Plugin $plugin Plugin. |
| 41 | * @param Flexible_Checkout_Fields_User_Meta $user_meta . |
| 42 | */ |
| 43 | public function __construct( Flexible_Checkout_Fields_Plugin $plugin, Flexible_Checkout_Fields_User_Meta $user_meta ) { |
| 44 | $this->plugin = $plugin; |
| 45 | $this->user_meta = $user_meta; |
| 46 | } |
| 47 | |
| 48 | /** |
| 49 | * Hooks. |
| 50 | */ |
| 51 | public function hooks() { |
| 52 | add_action( 'show_user_profile', [ $this, 'add_custom_user_fields_admin' ], 75 ); |
| 53 | add_action( 'edit_user_profile', [ $this, 'add_custom_user_fields_admin' ], 75 ); |
| 54 | |
| 55 | add_action( 'personal_options_update', [ $this, 'save_custom_user_fields_admin' ] ); |
| 56 | add_action( 'edit_user_profile_update', [ $this, 'save_custom_user_fields_admin' ] ); |
| 57 | } |
| 58 | |
| 59 | /** |
| 60 | * Add custom fields to edit user admin /wp-admin/profile.php. |
| 61 | * |
| 62 | * @param mixed $user . |
| 63 | * |
| 64 | * @return void |
| 65 | */ |
| 66 | public function add_custom_user_fields_admin( $user ) { |
| 67 | $settings = $this->plugin->get_settings(); |
| 68 | $sections = $this->plugin->sections; |
| 69 | if ( ! $settings ) { |
| 70 | return; |
| 71 | } |
| 72 | |
| 73 | foreach ( $settings as $key => $type ) { |
| 74 | if ( ! $this->user_meta->is_fcf_section( $key ) |
| 75 | || ! $this->user_meta->is_section_allowed_for_usermeta( $key ) |
| 76 | || ! is_array( $type ) ) { |
| 77 | continue; |
| 78 | } |
| 79 | |
| 80 | $section_data = $sections[ $key ] ?? ( $sections[ 'woocommerce_' . $key ] ?? null ); |
| 81 | if ( $section_data === null ) { |
| 82 | continue; |
| 83 | } |
| 84 | |
| 85 | echo '<h3>' . esc_html( $section_data['tab_title'] ) . '</h3>'; |
| 86 | echo '<div class="fcf-admin-fields postbox">'; |
| 87 | echo '<div class="inside">'; |
| 88 | foreach ( $type as $field ) { |
| 89 | if ( isset( $field['visible'] ) && 0 === intval( $field['visible'] ) |
| 90 | && ( isset( $field['custom_field'] ) && 1 === intval( $field['custom_field'] ) ) ) { |
| 91 | $field_value = htmlspecialchars_decode( get_the_author_meta( $field['name'], $user->ID ) ); |
| 92 | |
| 93 | echo apply_filters( 'flexible_checkout_fields_form_field', '', $field['name'], $field, $field_value ); |
| 94 | } |
| 95 | } |
| 96 | echo '</div>'; |
| 97 | echo '</div>'; |
| 98 | } |
| 99 | } |
| 100 | |
| 101 | /** |
| 102 | * Save custom user fields in admin. |
| 103 | * |
| 104 | * @param int $user_id User ID. |
| 105 | */ |
| 106 | public function save_custom_user_fields_admin( $user_id ) { |
| 107 | if ( ! current_user_can( 'edit_user', $user_id ) ) { |
| 108 | return; |
| 109 | } |
| 110 | if ( wp_verify_nonce( $_POST['_wpnonce'], 'update-user_' . $user_id ) ) { // phpcs:ignore |
| 111 | $this->user_meta->update_customer_meta_fields( $user_id, $_POST ); |
| 112 | } |
| 113 | } |
| 114 | } |
| 115 |