Пример #1
0
function hocwp_update_user_saved_posts($user_id = null, $post_id = null)
{
    $user_id = hocwp_return_user($user_id, 'id');
    if (hocwp_id_number_valid($user_id)) {
        $post_id = hocwp_return_post($post_id, 'id');
        if (hocwp_id_number_valid($post_id)) {
            $saved = hocwp_get_user_saved_posts($user_id);
            $saved = hocwp_sanitize_array($saved);
            if (in_array($post_id, $saved)) {
                unset($saved[array_search($post_id, $saved)]);
            } else {
                array_push($saved, $post_id);
            }
            $saved = hocwp_remove_empty_array_item($saved, true);
            return update_user_meta($user_id, 'saved_posts', $saved);
        }
    }
    return false;
}
Пример #2
0
function hocwp_execute_lostpassword()
{
    $http_post = 'POST' == $_SERVER['REQUEST_METHOD'];
    $user = null;
    $user_login = '';
    $user_id = '';
    $user_email = '';
    $error = false;
    $message = __('There was an error occurred, please try again.', 'hocwp-theme');
    $redirect = hocwp_get_value_by_key($_REQUEST, 'redirect_to');
    $redirect_to = apply_filters('lostpassword_redirect', $redirect);
    if (is_user_logged_in()) {
        if (empty($redirect_to)) {
            $redirect_to = home_url('/');
        }
        wp_redirect($redirect_to);
        exit;
    }
    $transient = '';
    $captcha = hocwp_get_method_value('captcha');
    if ($http_post) {
        $action = hocwp_get_method_value('action');
        if ('lostpassword' === $action || 'retrievepassword' === $action) {
            $user_login = hocwp_get_method_value('user_login');
            $transient_name = hocwp_build_transient_name('hocwp_lostpassword_user_%s', $user_login);
            if ((isset($_POST['submit']) || isset($_POST['wp-submit'])) && false === ($transient = get_transient($transient_name))) {
                if (empty($user_login)) {
                    $error = true;
                    $message = __('Please enter your account name or email address.', 'hocwp-theme');
                } else {
                    if (isset($_POST['captcha'])) {
                        $capt = new HOCWP_Captcha();
                        if (!$capt->check($captcha)) {
                            $error = true;
                            $message = __('The security code is incorrect.', 'hocwp-theme');
                        }
                    }
                    if (!$error) {
                        $user = hocwp_return_user($user_login);
                        if (!is_a($user, 'WP_User')) {
                            $error = true;
                            $message = __('Username or email is not exists.', 'hocwp-theme');
                        } else {
                            $user_login = $user->user_login;
                            $user_id = $user->ID;
                            $user_email = $user->user_email;
                        }
                    }
                }
                if (!$error && is_a($user, 'WP_User')) {
                    $key = get_password_reset_key($user);
                    if (is_wp_error($key)) {
                        $error = true;
                        $message = __('There was an error occurred, please try again or contact the administrator.', 'hocwp-theme');
                    } else {
                        $message = wpautop(__('Someone has requested a password reset for the following account:', 'hocwp-theme'));
                        $message .= wpautop(network_home_url('/'));
                        $message .= wpautop(sprintf(__('Username: %s', 'hocwp-theme'), $user_login));
                        $message .= wpautop(__('If this was a mistake, just ignore this email and nothing will happen.', 'hocwp-theme'));
                        $message .= wpautop(__('To reset your password, visit the following address:', 'hocwp-theme'));
                        $message .= wpautop(network_site_url("wp-login.php?action=rp&key={$key}&login=" . rawurlencode($user_login), 'login'));
                        if (is_multisite()) {
                            $blogname = $GLOBALS['current_site']->site_name;
                        } else {
                            $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);
                        }
                        $title = sprintf(__('[%s] Password Reset'), $blogname);
                        $title = apply_filters('retrieve_password_title', $title, $user_login, $user);
                        $message = apply_filters('retrieve_password_message', $message, $key, $user_login, $user);
                        if (!is_email($user_email)) {
                            $user_email = $user->user_email;
                        }
                        if ($message && !hocwp_send_html_mail($user_email, wp_specialchars_decode($title), $message)) {
                            $error = true;
                            $message = __('The email could not be sent. Possible reason: your host may have disabled the mail() function.', 'hocwp-theme');
                        } else {
                            $error = false;
                            $message = __('Password recovery information has been sent, please check your mailbox.', 'hocwp-theme');
                            set_transient($transient_name, $user_id, 15 * MINUTE_IN_SECONDS);
                        }
                    }
                }
            } else {
                if (hocwp_id_number_valid($transient)) {
                    $error = false;
                    $message = __('Password recovery information has been sent, please check your mailbox.', 'hocwp-theme');
                }
            }
        }
    }
    $result = array('user_id' => $user_id, 'user_email' => $user_email, 'user_login' => $user_login, 'captcha' => $captcha, 'error' => $error, 'message' => $message, 'redirect_to' => $redirect_to, 'transient' => $transient);
    return $result;
}