Ejemplo n.º 1
0
 /**
  * Set up IdeaStream navigation.
  *
  * @package WP Idea Stream
  * @subpackage buddypress/loader
  *
  * @since 2.0.0
  *
  * @uses buddypress() to get BuddyPress instance data
  * @uses bp_loggedin_user_id() to get logged in user id
  * @uses bp_get_loggedin_user_username() to get logged in user nicename
  * @uses bp_loggedin_user_domain() to get logged in user domain
  * @uses bp_is_user() to check if a user's profile is displayed
  * @uses bp_displayed_user_id() to get the displayed user id
  * @uses bp_get_displayed_user_username() to get displayed user nicename
  * @uses bp_displayed_user_domain() to get displayed user profile link
  * @uses wp_idea_stream_users_get_profile_nav_items() to get IdeaStream user nav items
  * @uses sanitize_title(), sanitize_key() to sanitize datas
  */
 public function setup_nav($main_nav = array(), $sub_nav = array())
 {
     $bp = buddypress();
     // Default is current user.
     $user_id = bp_loggedin_user_id();
     $user_nicename = bp_get_loggedin_user_username();
     $user_domain = bp_loggedin_user_domain();
     // If viewing a user, set the user to displayed one
     if (bp_is_user()) {
         $user_id = bp_displayed_user_id();
         $user_nicename = bp_get_displayed_user_username();
         $user_domain = bp_displayed_user_domain();
     }
     // Build the user nav if we have an id
     if (!empty($user_id)) {
         // Build user's ideas BuddyPress profile link
         $profile_link = trailingslashit($user_domain . $this->slug);
         // Get Core User's profile nav
         $user_core_subnav = wp_idea_stream_users_get_profile_nav_items($user_id, $user_nicename);
         // Build BuddyPress user's Main nav
         $main_nav = array('name' => $this->name, 'slug' => $this->slug, 'position' => 90, 'screen_function' => array('WP_Idea_Stream_Screens', 'user_ideas'), 'default_subnav_slug' => sanitize_title($user_core_subnav['profile']['slug'], 'ideas', 'save'));
         // Init nav position & subnav slugs
         $position = 10;
         $this->idea_nav = array();
         // Build BuddyPress user's Sub nav
         foreach ($user_core_subnav as $key => $nav) {
             $fallback_slug = sanitize_key($key);
             if ('profile' == $fallback_slug) {
                 $fallback_slug = 'ideas';
             }
             // Register subnav slugs using the fallback title
             // as keys to easily build urls later on.
             $this->idea_nav[$fallback_slug] = array('name' => $nav['title'], 'slug' => sanitize_title($nav['slug'], $fallback_slug, 'save'));
             $sub_nav[] = array('name' => $this->idea_nav[$fallback_slug]['name'], 'slug' => $this->idea_nav[$fallback_slug]['slug'], 'parent_url' => $profile_link, 'parent_slug' => $this->slug, 'screen_function' => array('WP_Idea_Stream_Screens', 'user_' . $fallback_slug), 'position' => $position);
             // increment next nav position
             $position += 10;
         }
     }
     parent::setup_nav($main_nav, $sub_nav);
 }
Ejemplo n.º 2
0
/**
 * Gets user's embed profile stats
 *
 * @since 2.3.0
 *
 * @return string HTML Output
 */
function wp_idea_stream_users_get_embed_user_stats()
{
    // Get displayed user id.
    $user_id = wp_idea_stream_users_displayed_user_id();
    // If not set, we're not on a user's profile.
    if (empty($user_id)) {
        return;
    }
    // Get username.
    $username = wp_idea_stream_users_get_displayed_user_username();
    /**
     * Get nav items for the user displayed to build the user stats.
     *
     * @since 2.3.0
     *
     * @param array $value the nav items that will be used for the embed stats
     */
    $nav_items = apply_filters('wp_idea_stream_users_get_embed_user_stats', wp_idea_stream_users_get_profile_nav_items($user_id, $username, true));
    if (empty($nav_items)) {
        return;
    }
    $user_stats = '<ul class="user-stats">';
    foreach ($nav_items as $key_nav => $nav_item) {
        $user_stats .= '<li class=' . sanitize_html_class($key_nav) . '>';
        $stat_title = sprintf(_x('%s ideas', 'embed profile type of stat', 'wp-idea-stream'), $nav_item['title']);
        $dashicon = 'ideastream-' . esc_attr($key_nav);
        if ('comments' === $key_nav) {
            $dashicon = 'dashicons-admin-comments';
        }
        $user_stats .= '<div class="stat-label"><a href="' . esc_url($nav_item['url']) . '" title="' . esc_attr($stat_title) . '"><span class="dashicons ' . $dashicon . '"></span><span class="screen-reader-text">' . esc_html($stat_title) . '</span></a></div>';
        $user_stats .= '<div class="stat-value"><a href="' . esc_url($nav_item['url']) . '" title="' . esc_attr($stat_title) . '">' . wp_idea_stream_users_get_stat_for($key_nav, $user_id) . '</a></span>';
        $user_stats .= '</li>';
    }
    $user_stats .= '</ul>';
    /**
     * Filter the embed stats output
     *
     * @since  2.3.0
     *
     * @param string $user_stats    User stats output
     * @param int    $user_id       the user ID
     * @param string $user_nicename the username
     */
    return apply_filters('wp_idea_stream_users_get_embed_user_stats_output', $user_stats, $user_id, $username);
}