File "class-wc-shortcode-my-account.php"
Full path: /home/kosmetik/public_html/wp-content/plugins/woocommerce/includes/shortcodes/class-wc-shortcode-my-account.php
File
size: 9.48 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
defined('ABSPATH') || exit;
class WC_Shortcode_My_Account
{
public static function get($atts)
{
return WC_Shortcodes::shortcode_wrapper(array(__CLASS__, 'output'), $atts);
}
public static function output($atts)
{
global $wp;
if (is_null(WC()->cart)) {
return;
}
if (!is_user_logged_in() || isset($wp->query_vars['lost-password'])) {
$message = apply_filters('woocommerce_my_account_message', '');
if (!empty($message)) {
wc_add_notice($message);
}
if (!empty($_GET['password-reset'])) {
wc_add_notice(__('Your password has been reset successfully.', 'woocommerce'));
}
if (isset($wp->query_vars['lost-password'])) {
self::lost_password();
} else {
wc_get_template('myaccount/form-login.php');
}
} else {
ob_start();
if (isset($wp->query_vars['customer-logout'])) {
wc_add_notice(sprintf(__('Are you sure you want to log out? <a href="%s">Confirm and log out</a>', 'woocommerce'), wc_logout_url()));
}
$notices = wc_get_notices();
self::my_account($atts);
if (!did_action('woocommerce_account_content')) {
if (!empty($wp->query_vars)) {
foreach ($wp->query_vars as $key => $value) {
if ('pagename' === $key) {
continue;
}
if (has_action('woocommerce_account_' . $key . '_endpoint')) {
ob_clean();
wc_set_notices($notices);
wc_print_notices();
do_action('woocommerce_account_' . $key . '_endpoint', $value);
break;
}
}
wc_deprecated_function('Your theme version of my-account.php template', '2.6', 'the latest version, which supports multiple account pages and navigation, from WC 2.6.0');
}
}
ob_end_flush();
}
}
private static function my_account($atts)
{
$args = shortcode_atts(array('order_count' => 15), $atts, 'woocommerce_my_account');
wc_get_template('myaccount/my-account.php', array('current_user' => get_user_by('id', get_current_user_id()), 'order_count' => 'all' === $args['order_count'] ? -1 : $args['order_count']));
}
public static function view_order($order_id)
{
$order = wc_get_order($order_id);
if (!$order || !current_user_can('view_order', $order_id)) {
echo '<div class="woocommerce-error">' . esc_html__('Invalid order.', 'woocommerce') . ' <a href="' . esc_url(wc_get_page_permalink('myaccount')) . '" class="wc-forward">' . esc_html__('My account', 'woocommerce') . '</a></div>';
return;
}
$status = new stdClass();
$status->name = wc_get_order_status_name($order->get_status());
wc_get_template('myaccount/view-order.php', array('status' => $status, 'order' => $order, 'order_id' => $order->get_id()));
}
public static function edit_account()
{
wc_get_template('myaccount/form-edit-account.php', array('user' => get_user_by('id', get_current_user_id())));
}
public static function edit_address($load_address = 'billing')
{
$current_user = wp_get_current_user();
$load_address = sanitize_key($load_address);
$country = get_user_meta(get_current_user_id(), $load_address . '_country', true);
if (!$country) {
$country = WC()->countries->get_base_country();
}
if ('billing' === $load_address) {
$allowed_countries = WC()->countries->get_allowed_countries();
if (!array_key_exists($country, $allowed_countries)) {
$country = current(array_keys($allowed_countries));
}
}
if ('shipping' === $load_address) {
$allowed_countries = WC()->countries->get_shipping_countries();
if (!array_key_exists($country, $allowed_countries)) {
$country = current(array_keys($allowed_countries));
}
}
$address = WC()->countries->get_address_fields($country, $load_address . '_');
wp_enqueue_script('wc-country-select');
wp_enqueue_script('wc-address-i18n');
foreach ($address as $key => $field) {
$value = get_user_meta(get_current_user_id(), $key, true);
if (!$value) {
switch ($key) {
case 'billing_email':
case 'shipping_email':
$value = $current_user->user_email;
break;
}
}
$address[$key]['value'] = apply_filters('woocommerce_my_account_edit_address_field_value', $value, $key, $load_address);
}
wc_get_template('myaccount/form-edit-address.php', array('load_address' => $load_address, 'address' => apply_filters('woocommerce_address_to_edit', $address, $load_address)));
}
public static function lost_password()
{
if (!empty($_GET['reset-link-sent'])) {
return wc_get_template('myaccount/lost-password-confirmation.php');
} elseif (!empty($_GET['show-reset-form'])) {
if (isset($_COOKIE['wp-resetpass-' . COOKIEHASH]) && 0 < strpos($_COOKIE['wp-resetpass-' . COOKIEHASH], ':')) {
list($rp_id, $rp_key) = array_map('wc_clean', explode(':', wp_unslash($_COOKIE['wp-resetpass-' . COOKIEHASH]), 2));
$userdata = get_userdata(absint($rp_id));
$rp_login = $userdata ? $userdata->user_login : '';
$user = self::check_password_reset_key($rp_key, $rp_login);
if (is_object($user)) {
return wc_get_template('myaccount/form-reset-password.php', array('key' => $rp_key, 'login' => $rp_login));
}
}
}
wc_get_template('myaccount/form-lost-password.php', array('form' => 'lost_password'));
}
public static function retrieve_password()
{
$login = isset($_POST['user_login']) ? sanitize_user(wp_unslash($_POST['user_login'])) : '';
if (empty($login)) {
wc_add_notice(__('Enter a username or email address.', 'woocommerce'), 'error');
return false;
} else {
$user_data = get_user_by('login', $login);
}
if (!$user_data && is_email($login) && apply_filters('woocommerce_get_username_from_email', true)) {
$user_data = get_user_by('email', $login);
}
$errors = new WP_Error();
do_action('lostpassword_post', $errors, $user_data);
if ($errors->get_error_code()) {
wc_add_notice($errors->get_error_message(), 'error');
return false;
}
if (!$user_data) {
wc_add_notice(__('Invalid username or email.', 'woocommerce'), 'error');
return false;
}
if (is_multisite() && !is_user_member_of_blog($user_data->ID, get_current_blog_id())) {
wc_add_notice(__('Invalid username or email.', 'woocommerce'), 'error');
return false;
}
$user_login = $user_data->user_login;
do_action('retrieve_password', $user_login);
$allow = apply_filters('allow_password_reset', true, $user_data->ID);
if (!$allow) {
wc_add_notice(__('Password reset is not allowed for this user', 'woocommerce'), 'error');
return false;
} elseif (is_wp_error($allow)) {
wc_add_notice($allow->get_error_message(), 'error');
return false;
}
$key = get_password_reset_key($user_data);
WC()->mailer();
do_action('woocommerce_reset_password_notification', $user_login, $key);
return true;
}
public static function check_password_reset_key($key, $login)
{
$user = check_password_reset_key($key, $login);
if (is_wp_error($user)) {
wc_add_notice(__('This key is invalid or has already been used. Please reset your password again if needed.', 'woocommerce'), 'error');
return false;
}
return $user;
}
public static function reset_password($user, $new_pass)
{
do_action('password_reset', $user, $new_pass);
wp_set_password($new_pass, $user->ID);
self::set_reset_password_cookie();
if (!apply_filters('woocommerce_disable_password_change_notification', false)) {
wp_password_change_notification($user);
}
}
public static function set_reset_password_cookie($value = '')
{
$rp_cookie = 'wp-resetpass-' . COOKIEHASH;
$rp_path = isset($_SERVER['REQUEST_URI']) ? current(explode('?', wp_unslash($_SERVER['REQUEST_URI']))) : '';
if ($value) {
setcookie($rp_cookie, $value, 0, $rp_path, COOKIE_DOMAIN, is_ssl(), true);
} else {
setcookie($rp_cookie, ' ', time() - YEAR_IN_SECONDS, $rp_path, COOKIE_DOMAIN, is_ssl(), true);
}
}
public static function add_payment_method()
{
if (!is_user_logged_in()) {
wp_safe_redirect(wc_get_page_permalink('myaccount'));
exit;
} else {
do_action('before_woocommerce_add_payment_method');
wc_get_template('myaccount/form-add-payment-method.php');
do_action('after_woocommerce_add_payment_method');
}
}
}