/** * Remove the admin menus and disable profile access for non-verified users * * @since 2.4.4 * @return void */ function edd_maybe_remove_menu_profile_links() { if (current_user_can('manage_shop_settings')) { return; } if (edd_user_pending_verification()) { if (defined('IS_PROFILE_PAGE') && true === IS_PROFILE_PAGE) { $url = esc_url(edd_get_user_verification_request_url()); $message = sprintf(__('Your account is pending verification. Please click the link in your email to activate your account. No email? <a href="%s">Click here</a> to send a new activation code.', 'edd'), $url); $title = __('Account Pending Verification', 'edd'); $args = array('response' => 403); wp_die($message, $title, $args); } remove_menu_page('profile.php'); remove_submenu_page('users.php', 'profile.php'); } }
/** * Process Profile Updater Form * * Processes the profile updater form by updating the necessary fields * * @since 1.4 * @author Sunny Ratilal * @param array $data Data sent from the profile editor * @return void */ function edd_process_profile_editor_updates($data) { // Profile field change request if (empty($_POST['edd_profile_editor_submit']) && !is_user_logged_in()) { return false; } // Pending users can't edit their profile if (edd_user_pending_verification()) { return false; } // Nonce security if (!wp_verify_nonce($data['edd_profile_editor_nonce'], 'edd-profile-editor-nonce')) { return false; } $user_id = get_current_user_id(); $old_user_data = get_userdata($user_id); $display_name = isset($data['edd_display_name']) ? sanitize_text_field($data['edd_display_name']) : $old_user_data->display_name; $first_name = isset($data['edd_first_name']) ? sanitize_text_field($data['edd_first_name']) : $old_user_data->first_name; $last_name = isset($data['edd_last_name']) ? sanitize_text_field($data['edd_last_name']) : $old_user_data->last_name; $email = isset($data['edd_email']) ? sanitize_email($data['edd_email']) : $old_user_data->user_email; $line1 = isset($data['edd_address_line1']) ? sanitize_text_field($data['edd_address_line1']) : ''; $line2 = isset($data['edd_address_line2']) ? sanitize_text_field($data['edd_address_line2']) : ''; $city = isset($data['edd_address_city']) ? sanitize_text_field($data['edd_address_city']) : ''; $state = isset($data['edd_address_state']) ? sanitize_text_field($data['edd_address_state']) : ''; $zip = isset($data['edd_address_zip']) ? sanitize_text_field($data['edd_address_zip']) : ''; $country = isset($data['edd_address_country']) ? sanitize_text_field($data['edd_address_country']) : ''; $userdata = array('ID' => $user_id, 'first_name' => $first_name, 'last_name' => $last_name, 'display_name' => $display_name, 'user_email' => $email); $address = array('line1' => $line1, 'line2' => $line2, 'city' => $city, 'state' => $state, 'zip' => $zip, 'country' => $country); do_action('edd_pre_update_user_profile', $user_id, $userdata); // New password if (!empty($data['edd_new_user_pass1'])) { if ($data['edd_new_user_pass1'] !== $data['edd_new_user_pass2']) { edd_set_error('password_mismatch', __('The passwords you entered do not match. Please try again.', 'easy-digital-downloads')); } else { $userdata['user_pass'] = $data['edd_new_user_pass1']; } } // Make sure the new email doesn't belong to another user if ($email != $old_user_data->user_email) { // Make sure the new email is valid if (!is_email($email)) { edd_set_error('email_invalid', __('The email you entered is invalid. Please enter a valid email.', 'easy-digital-downloads')); } // Make sure the new email doesn't belong to another user if (email_exists($email)) { edd_set_error('email_exists', __('The email you entered belongs to another user. Please use another.', 'easy-digital-downloads')); } } // Check for errors $errors = edd_get_errors(); if ($errors) { // Send back to the profile editor if there are errors wp_redirect($data['edd_redirect']); edd_die(); } // Update the user $meta = update_user_meta($user_id, '_edd_user_address', $address); $updated = wp_update_user($userdata); if ($updated) { do_action('edd_user_profile_updated', $user_id, $userdata); wp_redirect(add_query_arg('updated', 'true', $data['edd_redirect'])); edd_die(); } }
/** * Display a notice on customer account if they are pending verification * * @since 2.4.8 * @return void */ function edd_verify_customer_notice($customer) { if (!edd_user_pending_verification($customer->user_id)) { return; } $url = wp_nonce_url(admin_url('edit.php?post_type=download&page=edd-customers&view=overview&edd_action=verify_user_admin&id=' . $customer->id), 'edd-verify-user'); echo '<div class="update error"><p>'; _e('This customer\'s user account is pending verification.', 'easy-digital-downloads'); echo ' '; echo '<a href="' . $url . '" title="' . esc_attr(__('Verify this customer\'s account', 'easy-digital-downloads')) . '">' . __('Verify account.', 'easy-digital-downloads') . '</a>'; echo "\n\n"; echo '</p></div>'; }
public function column_name($item) { $name = '#' . $item['id'] . ' '; $name .= !empty($item['name']) ? $item['name'] : '<em>' . __('Unnamed Customer', 'easy-digital-downloads') . '</em>'; $user = !empty($item['user_id']) ? $item['user_id'] : $item['email']; $view_url = admin_url('edit.php?post_type=download&page=edd-customers&view=overview&id=' . $item['id']); $actions = array('view' => '<a href="' . $view_url . '">' . __('View', 'easy-digital-downloads') . '</a>', 'logs' => '<a href="' . admin_url('edit.php?post_type=download&page=edd-reports&tab=logs&user='******'">' . __('Download log', 'easy-digital-downloads') . '</a>', 'delete' => '<a href="' . admin_url('edit.php?post_type=download&page=edd-customers&view=delete&id=' . $item['id']) . '">' . __('Delete', 'easy-digital-downloads') . '</a>'); $customer = new EDD_Customer($item['id']); $pending = edd_user_pending_verification($customer->user_id) ? ' <em>' . __('(Pending Verification)', 'easy-digital-downloads') . '</em>' : ''; return '<a href="' . esc_url($view_url) . '">' . $name . '</a>' . $pending . $this->row_actions($actions); }
/** * Download History Shortcode * * Displays a user's download history. * * @since 1.0 * @return string */ function wbcom_edd_download_history() { if (is_user_logged_in()) { ob_start(); if (!edd_user_pending_verification()) { include plugin_dir_path(__FILE__) . 'includes/edd-history_downloads.php'; } else { edd_get_template_part('account', 'pending'); } return ob_get_clean(); } }
/** * Processes an account verification email request * * @since 2.4.4 * * @return void */ function edd_process_user_verification_request() { if (!wp_verify_nonce($_GET['_wpnonce'], 'edd-request-verification')) { wp_die(__('Nonce verification failed.', 'easy-digital-downloads'), __('Error', 'easy-digital-downloads'), array('response' => 403)); } if (!is_user_logged_in()) { wp_die(__('You must be logged in to verify your account.', 'easy-digital-downloads'), __('Notice', 'easy-digital-downloads'), array('response' => 403)); } if (!edd_user_pending_verification(get_current_user_id())) { wp_die(__('Your account has already been verified.', 'easy-digital-downloads'), __('Notice', 'easy-digital-downloads'), array('response' => 403)); } edd_send_user_verification_email(get_current_user_id()); $redirect = apply_filters('edd_user_account_verification_request_redirect', add_query_arg('edd-verify-request', '1', edd_get_user_verification_page())); wp_safe_redirect($redirect); exit; }
/** * Process the 'remove' URL on the profile editor when customers wish to remove an email address * * @since 2.6 * @return void */ function edd_process_profile_editor_remove_email() { if (!is_user_logged_in()) { return false; } // Pending users can't edit their profile if (edd_user_pending_verification()) { return false; } // Nonce security if (!wp_verify_nonce($_GET['_wpnonce'], 'edd-remove-customer-email')) { return false; } if (empty($_GET['email']) || !is_email($_GET['email'])) { return false; } $customer = new EDD_Customer(get_current_user_id(), true); if ($customer->remove_email($_GET['email'])) { $url = add_query_arg('updated', true, $_GET['redirect']); $user = wp_get_current_user(); $user_login = !empty($user->user_login) ? $user->user_login : '******'; $customer_note = __(sprintf('Email address %s removed by %s', $_GET['email'], $user_login), 'easy-digital-downloads'); $customer->add_note($customer_note); } else { edd_set_error('profile-remove-email-failure', __('Error removing email address from profile. Please try again later.', 'easy-digital-downloads')); $url = $_GET['redirect']; } wp_safe_redirect($url); exit; }