Exemple #1
0
/**
 * Gets displayed user's rating for a given idea
 *
 * @package WP Idea Stream
 * @subpackage users/tags
 *
 * @since 2.0.0
 *
 * @param int $id      the idea ID
 * @param int $user_id the user ID
 * @uses  wp_idea_stream_is_user_profile_rates() to check we're on the rates part of a user's profile
 * @uses  wp_idea_stream_get_idea_var() to get a globalized value
 * @uses  wp_idea_stream_users_displayed_user_id() to get displayed user's ID
 * @uses  wp_idea_stream_users_get_displayed_user_username() to get displayed user's username
 * @uses  wp_idea_stream_users_get_user_profile_url() to get user's profile url
 * @uses  get_avatar() to get user's avatar
 * @uses  apply_filters() call 'wp_idea_stream_users_get_user_idea_rating' to override output
 */
function wp_idea_stream_users_get_user_idea_rating($id = 0, $user_id = 0)
{
    if (!wp_idea_stream_is_user_profile_rates()) {
        return;
    }
    if (empty($id)) {
        $query_loop = wp_idea_stream_get_idea_var('query_loop');
        if (!empty($query_loop->idea->ID)) {
            $id = $query_loop->idea->ID;
        }
    }
    if (empty($user_id)) {
        $user_id = wp_idea_stream_users_displayed_user_id();
    }
    if (empty($user_id) || empty($id)) {
        return;
    }
    $user_rating = wp_idea_stream_count_ratings($id, $user_id);
    if (empty($user_rating) || is_array($user_rating)) {
        return false;
    }
    $username = wp_idea_stream_users_get_displayed_user_username();
    $output = '<a class="user-rating-link" href="' . esc_url(wp_idea_stream_users_get_user_profile_url($user_id, $username)) . '" title="' . esc_attr($username) . '">';
    $output .= get_avatar($user_id, 20) . sprintf(_n('rated 1 star', 'rated %s stars', $user_rating, 'wp-idea-stream'), $user_rating) . '</a>';
    /**
     * Filter the user idea rating output
     *
     * @param string $output        the rating
     * @param int    $id            the idea ID
     * @param int    $user_id       the user ID
     */
    return apply_filters('wp_idea_stream_users_get_user_idea_rating', $output, $id, $user_id);
}
/**
 * Redirect IdeaStream profile to BuddyPress one
 *
 * @package WP Idea Stream
 * @subpackage buddypress/functions
 *
 * @since  2.0.0
 *
 * @param  string $context the context of the template
 * @uses   wp_idea_stream_users_displayed_user_id() to get displayed user ID
 * @uses   wp_idea_stream_users_get_displayed_user_username() to get displayed user nicename
 * @uses   bp_core_redirect() to redirect the user to BuddyPress profile
 * @uses   wp_idea_stream_buddypress_get_user_profile_url() to get the BuddyPressified user's profile
 */
function wp_idea_stream_buddypress_profile_redirect($context = '')
{
    if (empty($context) || 'user-profile' != $context || wp_idea_stream_get_idea_var('is_user_embed')) {
        return;
    }
    // Be sure it's a user's profile
    $user_id = wp_idea_stream_users_displayed_user_id();
    // Bail if not on WP Idea Stream built in profile
    if (empty($user_id)) {
        return;
    }
    // Get user nicename
    $user_nicename = wp_idea_stream_users_get_displayed_user_username();
    // Safely redirect the user to his BuddyPress profile.
    bp_core_redirect(wp_idea_stream_buddypress_get_user_profile_url($user_id, $user_nicename));
}
/**
 * Edit User's profile description
 *
 * @package WP Idea Stream
 * @subpackage users/functions
 *
 * @since 2.0.0
 *
 * @uses check_admin_referer() to check the request was made on the site
 * @uses wp_idea_stream_users_displayed_user_id() to get displayed user id
 * @uses wp_idea_stream_users_get_user_profile_url() to build redirect url
 * @uses wp_idea_stream_add_message() to give feedback to the user
 * @uses wp_safe_redirect() to safely redirect the user
 * @uses wp_kses_allowed_html() to get allowed tags for user's description
 * @uses wp_kses to sanitize user's descripton
 * @uses update_user_meta() to save the edited description
 * @uses do_action() Calls 'wp_idea_stream_users_profile_description_updated' to perform actions once description edited
 */
function wp_idea_stream_users_profile_description_update()
{
    // Bail if not a post request
    if ('POST' != strtoupper($_SERVER['REQUEST_METHOD'])) {
        return;
    }
    // Bail if not a post idea request
    if (empty($_POST['wp_idea_stream_profile'])) {
        return;
    }
    // Check nonce
    check_admin_referer('wp_idea_stream_update_description', '_wpis_nonce');
    $user_id = wp_idea_stream_users_displayed_user_id();
    // Capbility checks
    if (!is_user_logged_in()) {
        return;
    }
    // Capbility checks
    if ((int) get_current_user_id() !== (int) $user_id) {
        return;
    }
    $redirect = wp_idea_stream_users_get_user_profile_url($user_id, wp_idea_stream_users_get_displayed_user_username());
    $user_description = str_replace(array('<div>', '</div>'), "\n", $_POST['wp_idea_stream_profile']['description']);
    $user_description = rtrim($user_description, "\n");
    if (empty($user_description)) {
        wp_idea_stream_add_message(array('type' => 'error', 'content' => __('Please enter some content in your description', 'wp-idea-stream')));
        wp_safe_redirect($redirect);
        exit;
    }
    // Remove all html tags
    $user_description = wp_kses(wp_specialchars_decode($user_description), array());
    if (!update_user_meta($user_id, 'description', $user_description)) {
        wp_idea_stream_add_message(array('type' => 'error', 'content' => __('Something went wrong while trying to update your description.', 'wp-idea-stream')));
        wp_safe_redirect($redirect);
        exit;
    } else {
        wp_idea_stream_add_message(array('type' => 'success', 'content' => __('Description updated.', 'wp-idea-stream')));
        /**
         * @param int    $user_id          the user ID
         * @param string $user_description the user description ("about field")
         */
        do_action('wp_idea_stream_users_profile_description_updated', $user_id, $user_description);
        wp_safe_redirect($redirect);
        exit;
    }
}