/** * Updates the user meta. * * @param int $user_id */ public static function edit_user_profile_update($user_id) { global $wpdb; if (!affiliates_user_is_affiliate($user_id)) { return; } require_once AFFILIATES_CORE_LIB . '/class-affiliates-settings.php'; require_once AFFILIATES_CORE_LIB . '/class-affiliates-settings-registration.php'; $registration_fields = Affiliates_Settings_Registration::get_fields(); // remove fields not stored as user meta foreach (Affiliates_Registration::get_skip_meta_fields() as $key) { unset($registration_fields[$key]); } unset($registration_fields['first_name']); unset($registration_fields['last_name']); // update user meta if (!empty($registration_fields)) { foreach ($registration_fields as $name => $field) { $meta_value = isset($_POST[$name]) ? $_POST[$name] : ''; $meta_value = Affiliates_Utility::filter($meta_value); update_user_meta($user_id, $name, maybe_unserialize($meta_value)); } } // The affiliate entry must be updated using the profile_update action // as we don't have the updated user info here yet. }
/** * Show edit affiliate form. * @param int $affiliate_id affiliate id */ function affiliates_admin_affiliates_edit($affiliate_id) { global $wpdb; if (!current_user_can(AFFILIATES_ADMINISTER_AFFILIATES)) { wp_die(__('Access denied.', AFFILIATES_PLUGIN_DOMAIN)); } $affiliate = affiliates_get_affiliate(intval($affiliate_id)); if (empty($affiliate)) { wp_die(__('No such affiliate.', AFFILIATES_PLUGIN_DOMAIN)); } $affiliates_users_table = _affiliates_get_tablename('affiliates_users'); $affiliate_user = null; $affiliate_user_edit = ''; $affiliate_user_fields = ''; $affiliate_user_id = $wpdb->get_var($wpdb->prepare("SELECT user_id FROM {$affiliates_users_table} WHERE affiliate_id = %d", intval($affiliate_id))); if ($affiliate_user_id !== null) { $affiliate_user = get_user_by('id', intval($affiliate_user_id)); if ($affiliate_user) { // user edit link if (current_user_can('edit_user', $affiliate_user->ID)) { $affiliate_user_edit = sprintf(__('Edit %s', AFFILIATES_PLUGIN_DOMAIN), '<a target="_blank" href="' . esc_url("user-edit.php?user_id={$affiliate_user->ID}") . '">' . $affiliate_user->user_login . '</a>'); } // user meta fields require_once AFFILIATES_CORE_LIB . '/class-affiliates-settings.php'; require_once AFFILIATES_CORE_LIB . '/class-affiliates-settings-registration.php'; $registration_fields = Affiliates_Settings_Registration::get_fields(); // remove fields not stored as user meta foreach (Affiliates_Registration::get_skip_meta_fields() as $key) { unset($registration_fields[$key]); } // render user meta foreach ($registration_fields as $name => $field) { if ($field['enabled']) { $affiliate_user_fields .= '<div class="field">'; $affiliate_user_fields .= '<label>'; $affiliate_user_fields .= esc_html(stripslashes($field['label'])); // @todo i18n $affiliate_user_fields .= ' '; $type = isset($field['type']) ? $field['type'] : 'text'; $value = get_user_meta($affiliate_user->ID, $name, true); $affiliate_user_fields .= sprintf('<input type="text" value="%s" readonly="readonly" />', esc_attr(stripslashes($value))); $affiliate_user_fields .= '</label>'; $affiliate_user_fields .= '</div>'; } } } } $current_url = (is_ssl() ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; $current_url = remove_query_arg('action', $current_url); $current_url = remove_query_arg('affiliate_id', $current_url); $name = isset($_POST['name-field']) ? $_POST['name-field'] : $affiliate['name']; $email = isset($_POST['email-field']) ? $_POST['email-field'] : $affiliate['email']; $user_login = isset($_POST['user-field']) ? $_POST['user-field'] : ($affiliate_user != null ? $affiliate_user->user_login : ''); $from_date = isset($_POST['from-date-field']) ? $_POST['from-date-field'] : $affiliate['from_date']; $thru_date = isset($_POST['thru-date-field']) ? $_POST['thru-date-field'] : $affiliate['thru_date']; $output = '<div class="manage-affiliates">' . '<div>' . '<h1>' . __('Edit an affiliate', AFFILIATES_PLUGIN_DOMAIN) . '</h1>' . '</div>' . '<form id="edit-affiliate" action="' . esc_url($current_url) . '" method="post">' . '<div class="affiliate edit">' . '<input id="affiliate-id-field" name="affiliate-id-field" type="hidden" value="' . esc_attr(intval($affiliate_id)) . '"/>' . '<div class="field">' . '<label class="field-label first required">' . '<span class="label">' . __('Name', AFFILIATES_PLUGIN_DOMAIN) . '</span>' . ' ' . '<input id="name-field" name="name-field" class="namefield" type="text" value="' . esc_attr(stripslashes($name)) . '"/>' . '</label>' . '</div>' . '<div class="field">' . '<label class="field-label">' . '<span class="label">' . __('Email', AFFILIATES_PLUGIN_DOMAIN) . '</span>' . ' ' . '<input id="email-field" name="email-field" class="emailfield" type="text" value="' . esc_attr($email) . '"/>' . '</label>' . ' ' . '<span class="description">' . __("If a valid <strong>Username</strong> is specified and no email is given, the user's email address will be used automatically.", AFFILIATES_PLUGIN_DOMAIN) . '</span>' . '</div>' . '<div class="field">' . '<label class="field-label">' . '<span class="label">' . __('Username', AFFILIATES_PLUGIN_DOMAIN) . '</span>' . ' ' . '<input id="user-field" name="user-field" class="userfield" type="text" autocomplete="off" value="' . esc_attr(stripslashes($user_login)) . '"/>' . '</label>' . ' ' . $affiliate_user_edit . '</div>' . $affiliate_user_fields . '<div class="field">' . '<label class="field-label">' . '<span class="label">' . __('From', AFFILIATES_PLUGIN_DOMAIN) . '</span>' . ' ' . '<input id="from-date-field" name="from-date-field" class="datefield" type="text" value="' . esc_attr($from_date) . '"/>' . '</label>' . '</div>' . '<div class="field">' . '<label class="field-label">' . '<span class="label">' . __('Until', AFFILIATES_PLUGIN_DOMAIN) . '</span>' . ' ' . '<input id="thru-date-field" name="thru-date-field" class="datefield" type="text" value="' . esc_attr($thru_date) . '"/>' . '</label>' . '</div>'; $output .= '<div class="field">' . wp_nonce_field('affiliates-edit', AFFILIATES_ADMIN_AFFILIATES_NONCE, true, false) . '<input class="button button-primary" type="submit" value="' . __('Save', AFFILIATES_PLUGIN_DOMAIN) . '"/>' . '<input type="hidden" value="edit" name="action"/>' . ' ' . '<a class="cancel button" href="' . esc_url($current_url) . '">' . __('Cancel', AFFILIATES_PLUGIN_DOMAIN) . '</a>' . '</div>' . '</div>' . '</form>' . '</div>'; // .manage-affiliates echo $output; affiliates_footer(); }