/** * 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); }
/** * 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); }