/** * Save Address Fields on edit user pages * * @access public * @param mixed $user_id User ID of the user being saved * @return void */ function woocommerce_save_customer_meta_fields($user_id) { if (!current_user_can('manage_woocommerce')) { return $columns; } $save_fields = woocommerce_get_customer_meta_fields(); foreach ($save_fields as $fieldset) { foreach ($fieldset['fields'] as $key => $field) { if (isset($_POST[$key])) { update_user_meta($user_id, $key, woocommerce_clean($_POST[$key])); } } } }
function __construct() { global $pagenow; if ('admin.php' == $pagenow && isset($_GET['page']) && 'upme-sync-tools' == $_GET['page'] && in_array('woocommerce/woocommerce.php', apply_filters('active_plugins', get_option('active_plugins')))) { // Load Woocommerce file based on version number $this->woocommerce_version = get_option('woocommerce_db_version'); $plugin_dir_path = plugin_dir_path(dirname(dirname(__FILE__))); if (version_compare($this->woocommerce_version, '2.0.20') == '1') { $this->woocommerce_file_path = $plugin_dir_path . 'woocommerce/includes/admin/class-wc-admin-profile.php'; $this->woocommerce_version_status = '1'; $this->woo_admin_profile = (include $this->woocommerce_file_path); } else { $this->woocommerce_file_path = $plugin_dir_path . 'woocommerce/admin/woocommerce-admin-users.php'; $this->woocommerce_version_status = '0'; require_once $this->woocommerce_file_path; } if (isset($_REQUEST['sync']) && !isset($_POST['submit']) && !isset($_POST['upme-add']) && !isset($_POST['reset-options']) && !isset($_POST['reset-options-fields'])) { if ($_REQUEST['sync'] == 'woocommerce') { /* load fields */ $fields = get_option('upme_profile_fields'); /* Add the exisitng entries to prevent duplication of woocommerce fields */ $field_meta_array = array(); $separator_array = array(); foreach ($fields as $field) { $field_meta = isset($field['meta']) ? $field['meta'] : ''; if ('' != $field_meta) { array_push($field_meta_array, $field['meta']); } else { if ('separator' == $field['type']) { array_push($separator_array, $field['name']); } } } /* Add WooCommerce profile fields */ $woo_meta = array(); if (file_exists($this->woocommerce_file_path)) { if ('1' == $this->woocommerce_version_status) { //$woo_admin_profile = new WC_Admin_Profile(); $woo_meta = $this->woo_admin_profile->get_customer_meta_fields(); } else { $woo_meta = woocommerce_get_customer_meta_fields(); } } else { echo __('Woocommerce File Doesn\'t Exist', 'upme'); exit; } $new_index = max(array_keys($fields)); foreach ($woo_meta as $group => $array) { if (!in_array($array['title'], $separator_array)) { $fields[$new_index += 10] = array('type' => 'separator', 'name' => $array['title'], 'private' => 0, 'deleted' => 0, 'meta' => $array['title'] . '_separator'); } foreach ($array['fields'] as $meta => $label) { if (!in_array($meta, $field_meta_array)) { /* switch icon */ switch ($meta) { case 'billing_first_name': $icon = 'user'; break; case 'billing_last_name': $icon = 0; break; case 'billing_company': $icon = 'building'; break; case 'billing_address_1': $icon = 'home'; break; case 'billing_address_2': $icon = 0; break; case 'billing_city': $icon = 0; break; case 'billing_postcode': $icon = 0; break; case 'billing_state': $icon = 0; break; case 'billing_country': $icon = 'map-marker'; break; case 'billing_phone': $icon = 'phone'; break; case 'billing_email': $icon = 'envelope'; break; case 'shipping_first_name': $icon = 'user'; break; case 'shipping_last_name': $icon = 0; break; case 'shipping_company': $icon = 'building'; break; case 'shipping_address_1': $icon = 'home'; break; case 'shipping_address_2': $icon = 0; break; case 'shipping_city': $icon = 0; break; case 'shipping_postcode': $icon = 0; break; case 'shipping_state': $icon = 0; break; case 'shipping_country': $icon = 'map-marker'; break; default: $icon = 0; break; } switch ($meta) { case 'billing_country': $fields[$new_index += 10] = array('icon' => $icon, 'field' => 'select', 'type' => 'usermeta', 'meta' => $meta, 'name' => $label['label'], 'can_hide' => 1, 'can_edit' => 1, 'predefined_loop' => 'countries', 'private' => 0, 'social' => 0, 'deleted' => 0); break; case 'shipping_country': $fields[$new_index += 10] = array('icon' => $icon, 'field' => 'select', 'type' => 'usermeta', 'meta' => $meta, 'name' => $label['label'], 'can_hide' => 1, 'can_edit' => 1, 'predefined_loop' => 'countries', 'private' => 0, 'social' => 0, 'deleted' => 0); break; default: $fields[$new_index += 10] = array('icon' => $icon, 'field' => 'text', 'type' => 'usermeta', 'meta' => $meta, 'name' => $label['label'], 'can_hide' => 1, 'can_edit' => 1, 'private' => 0, 'social' => 0, 'deleted' => 0); break; } } } } update_option('upme_profile_fields', $fields); echo '<div class="updated"><p><strong>' . __('WooCommerce customer fields have been added successfully.', 'upme') . '</strong></p></div>'; } if ($_REQUEST['sync'] == 'woocommerce_clean') { /* Add WooCommerce profile fields */ $woo_meta = array(); if (file_exists($this->woocommerce_file_path)) { if ('1' == $this->woocommerce_version_status) { $woo_meta = $this->woo_admin_profile->get_customer_meta_fields(); } else { $woo_meta = woocommerce_get_customer_meta_fields(); } } else { echo __('Woocommerce File Doesn\'t Exist', 'upme'); exit; } $new_index = 0; foreach ($woo_meta as $group => $array) { $fields[$new_index += 10] = array('type' => 'separator', 'name' => $array['title'], 'private' => 0, 'deleted' => 0, 'meta' => $array['title'] . '_separator'); foreach ($array['fields'] as $meta => $label) { /* switch icon */ switch ($meta) { case 'billing_first_name': $icon = 'user'; break; case 'billing_last_name': $icon = 0; break; case 'billing_company': $icon = 'building'; break; case 'billing_address_1': $icon = 'home'; break; case 'billing_address_2': $icon = 0; break; case 'billing_city': $icon = 0; break; case 'billing_postcode': $icon = 0; break; case 'billing_state': $icon = 0; break; case 'billing_country': $icon = 'map-marker'; break; case 'billing_phone': $icon = 'phone'; break; case 'billing_email': $icon = 'envelope'; break; case 'shipping_first_name': $icon = 'user'; break; case 'shipping_last_name': $icon = 0; break; case 'shipping_company': $icon = 'building'; break; case 'shipping_address_1': $icon = 'home'; break; case 'shipping_address_2': $icon = 0; break; case 'shipping_city': $icon = 0; break; case 'shipping_postcode': $icon = 0; break; case 'shipping_state': $icon = 0; break; case 'shipping_country': $icon = 'map-marker'; break; default: $icon = 0; break; } switch ($meta) { case 'billing_country': $fields[$new_index += 10] = array('icon' => $icon, 'field' => 'select', 'type' => 'usermeta', 'meta' => $meta, 'name' => $label['label'], 'can_hide' => 1, 'can_edit' => 1, 'predefined_loop' => 'countries', 'private' => 0, 'social' => 0, 'deleted' => 0); break; case 'shipping_country': $fields[$new_index += 10] = array('icon' => $icon, 'field' => 'select', 'type' => 'usermeta', 'meta' => $meta, 'name' => $label['label'], 'can_hide' => 1, 'can_edit' => 1, 'predefined_loop' => 'countries', 'private' => 0, 'social' => 0, 'deleted' => 0); break; default: $fields[$new_index += 10] = array('icon' => $icon, 'field' => 'text', 'type' => 'usermeta', 'meta' => $meta, 'name' => $label['label'], 'can_hide' => 1, 'can_edit' => 1, 'private' => 0, 'social' => 0, 'deleted' => 0); break; } } } update_option('upme_profile_fields', $fields); echo '<div class="updated"><p><strong>' . __('WooCommerce customer fields have been added successfully.', 'upme') . '</strong></p></div>'; } } } }