/**
 * Setup navigation.
 *
 * @since 1.0.0
 * @package GeoDirectory_BuddyPress_Integration
 */
function geodir_buddypress_setup_nav()
{
    $gd_post_types = geodir_get_posttypes('array');
    if (empty($gd_post_types)) {
        return;
    }
    global $bp;
    $user_domain = geodir_buddypress_get_user_domain();
    // listings
    $listing_post_types = get_option('geodir_buddypress_tab_listing');
    $position = 70;
    if (!empty($listing_post_types)) {
        $parent_slug = 'listings';
        $parent_url = trailingslashit($user_domain . $parent_slug);
        $parent_nav = array();
        $sub_nav = array();
        $count = 0;
        $total_count = 0;
        foreach ($listing_post_types as $post_type) {
            if (array_key_exists($post_type, $gd_post_types)) {
                $tab_slug = $gd_post_types[$post_type]['has_archive'];
                if ($count == 0) {
                    // parent nav
                    $parent_nav = array('name' => __('Listings', GDBUDDYPRESS_TEXTDOMAIN), 'slug' => $parent_slug, 'parent_slug' => $bp->profile->slug, 'screen_function' => 'geodir_buddypress_screen_' . $parent_slug, 'default_subnav_slug' => $tab_slug, 'position' => $position, 'item_css_id' => 'gdbuddypress-nav-' . $parent_slug);
                }
                // get listing count
                $listing_count = geodir_buddypress_count_total($post_type);
                $class = 0 === $listing_count ? 'no-count' : 'count';
                $total_count += $listing_count;
                // sub nav
                $sub_nav[] = array('name' => wp_sprintf(__('%s <span class="%s">%s</span>', GDBUDDYPRESS_TEXTDOMAIN), __($gd_post_types[$post_type]['labels']['name'], GDBUDDYPRESS_TEXTDOMAIN), esc_attr($class), number_format_i18n($listing_count)), 'slug' => $tab_slug, 'parent_url' => $parent_url, 'parent_slug' => $parent_slug, 'screen_function' => 'geodir_buddypress_screen_' . $parent_slug, 'position' => $position, 'item_css_id' => 'gdbuddypress-nav-' . $parent_slug . '-' . $tab_slug);
                $count++;
            }
        }
        if (!empty($parent_nav)) {
            $class = 0 === $total_count ? 'no-count' : 'count';
            $parent_nav['name'] = wp_sprintf(__('Listings <span class="%s">%s</span>', GDBUDDYPRESS_TEXTDOMAIN), esc_attr($class), number_format_i18n($total_count));
        }
        if (!empty($parent_nav) && !empty($sub_nav)) {
            $parent_nav = apply_filters('geodir_buddypress_nav_' . $parent_slug, $parent_nav);
            bp_core_new_nav_item($parent_nav);
            $sub_nav = apply_filters('geodir_buddypress_subnav_' . $parent_slug, $sub_nav);
            // Sub nav items are not required
            if (!empty($sub_nav)) {
                foreach ($sub_nav as $nav) {
                    bp_core_new_subnav_item($nav);
                }
            }
        }
    }
    // favorites
    $listing_post_types = get_option('geodir_buddypress_tab_listing');
    if (!empty($listing_post_types)) {
        $parent_slug = 'favorites';
        $parent_url = trailingslashit($user_domain . $parent_slug);
        $parent_nav = array();
        $sub_nav = array();
        $count = 0;
        $total_count = 0;
        foreach ($listing_post_types as $post_type) {
            if (array_key_exists($post_type, $gd_post_types)) {
                $tab_slug = $gd_post_types[$post_type]['has_archive'];
                if ($count == 0) {
                    $fav_name = __('Favorites', GDBUDDYPRESS_TEXTDOMAIN);
                    $favourite_text = apply_filters('gdbuddypress_favourites_text', $fav_name);
                    // parent nav
                    $parent_nav = array('name' => $favourite_text, 'slug' => $parent_slug, 'parent_slug' => $bp->profile->slug, 'screen_function' => 'geodir_buddypress_screen_' . $parent_slug, 'default_subnav_slug' => $tab_slug, 'position' => $position, 'item_css_id' => 'gdbuddypress-nav-' . $parent_slug);
                }
                $position = $position + 5;
                // get listing count
                $listing_count = geodir_buddypress_count_favorite($post_type);
                $class = 0 === $listing_count ? 'no-count' : 'count';
                $total_count += $listing_count;
                // sub nav
                $sub_nav[] = array('name' => wp_sprintf(__('%s <span class="%s">%s</span>', GDBUDDYPRESS_TEXTDOMAIN), __($gd_post_types[$post_type]['labels']['name'], GDBUDDYPRESS_TEXTDOMAIN), esc_attr($class), number_format_i18n($listing_count)), 'slug' => $tab_slug, 'parent_url' => $parent_url, 'parent_slug' => $parent_slug, 'screen_function' => 'geodir_buddypress_screen_' . $parent_slug, 'position' => $position, 'item_css_id' => 'gdbuddypress-nav-' . $parent_slug . '-' . $tab_slug);
                $count++;
            }
        }
        if (!empty($parent_nav)) {
            $class = 0 === $total_count ? 'no-count' : 'count';
            $fav_name = __('Favorites', GDBUDDYPRESS_TEXTDOMAIN);
            $favourite_text = apply_filters('gdbuddypress_favourites_text', $fav_name);
            $parent_nav['name'] = wp_sprintf(__('%s <span class="%s">%s</span>', GDBUDDYPRESS_TEXTDOMAIN), $favourite_text, esc_attr($class), number_format_i18n($total_count));
        }
        if (!empty($parent_nav) && !empty($sub_nav)) {
            $parent_nav = apply_filters('geodir_buddypress_nav_' . $parent_slug, $parent_nav);
            bp_core_new_nav_item($parent_nav);
            $sub_nav = apply_filters('geodir_buddypress_subnav_' . $parent_slug, $sub_nav);
            // Sub nav items are not required
            if (!empty($sub_nav)) {
                foreach ($sub_nav as $nav) {
                    bp_core_new_subnav_item($nav);
                }
            }
        }
    }
    // reviews
    $review_post_types = get_option('geodir_buddypress_tab_review');
    if (!empty($review_post_types)) {
        $parent_slug = 'reviews';
        $parent_url = trailingslashit($user_domain . $parent_slug);
        $parent_nav = array();
        $sub_nav = array();
        $count = 0;
        $total_count = 0;
        foreach ($review_post_types as $post_type) {
            if (array_key_exists($post_type, $gd_post_types)) {
                $tab_slug = $gd_post_types[$post_type]['has_archive'];
                if ($count == 0) {
                    // parent nav
                    $parent_nav = array('name' => __('Reviews', GDBUDDYPRESS_TEXTDOMAIN), 'slug' => $parent_slug, 'parent_slug' => $bp->profile->slug, 'screen_function' => 'geodir_buddypress_screen_' . $parent_slug, 'default_subnav_slug' => $tab_slug, 'position' => $position, 'item_css_id' => 'gdbuddypress-nav-' . $parent_slug);
                }
                $position = $position + 5;
                // get review count
                $review_count = geodir_buddypress_count_reviews($post_type);
                $class = 0 === $review_count ? 'no-count' : 'count';
                $total_count += $review_count;
                // sub nav
                $sub_nav[] = array('name' => wp_sprintf(__('%s <span class="%s">%s</span>', GDBUDDYPRESS_TEXTDOMAIN), __($gd_post_types[$post_type]['labels']['name'], GDBUDDYPRESS_TEXTDOMAIN), esc_attr($class), number_format_i18n($review_count)), 'slug' => $tab_slug, 'parent_url' => $parent_url, 'parent_slug' => $parent_slug, 'screen_function' => 'geodir_buddypress_screen_' . $parent_slug, 'position' => $position, 'item_css_id' => 'gdbuddypress-nav-' . $parent_slug . '-' . $tab_slug);
                $count++;
            }
        }
        if (!empty($parent_nav)) {
            $class = 0 === $total_count ? 'no-count' : 'count';
            $parent_nav['name'] = wp_sprintf(__('Reviews <span class="%s">%s</span>', GDBUDDYPRESS_TEXTDOMAIN), esc_attr($class), number_format_i18n($total_count));
        }
        if (!empty($parent_nav) && !empty($sub_nav)) {
            $parent_nav = apply_filters('geodir_buddypress_nav_' . $parent_slug, $parent_nav);
            bp_core_new_nav_item($parent_nav);
            $sub_nav = apply_filters('geodir_buddypress_subnav_' . $parent_slug, $sub_nav);
            // Sub nav items are not required
            if (!empty($sub_nav)) {
                foreach ($sub_nav as $nav) {
                    bp_core_new_subnav_item($nav);
                }
            }
        }
    }
}
/**
 * BuddyPress listings tab pagination.
 *
 * @since 1.0.0
 * @package GeoDirectory_BuddyPress_Integration
 *
 * @param string $before Pagination before HTML.
 * @param string $after Pagination after HTML.
 * @param string $prelabel Pagination previous label text.
 * @param string $nxtlabel Pagination next label text.
 * @param int $pages_to_show Number of pages to show.
 * @param bool $always_show Always display the pagination? Default: false.
 */
function geodir_buddypress_pagination($before = '', $after = '', $prelabel = '', $nxtlabel = '', $pages_to_show = 5, $always_show = false)
{
    global $posts_per_page, $found_posts, $paged;
    if (empty($prelabel)) {
        $prelabel = '<strong>&laquo;</strong>';
    }
    global $bp;
    $user_domain = geodir_buddypress_get_user_domain();
    if (empty($nxtlabel)) {
        $nxtlabel = '<strong>&raquo;</strong>';
    }
    $half_pages_to_show = round($pages_to_show / 2);
    if (!is_single() && $found_posts > 0 && $posts_per_page > 0) {
        $numposts = $found_posts;
        $max_page = ceil($numposts / $posts_per_page);
        if (empty($paged)) {
            $paged = 1;
        }
        $current_domain = '';
        if ($bp->current_component && $bp->current_action) {
            $component_domain = trailingslashit($user_domain . $bp->current_component . '/');
            $current_domain = trailingslashit($user_domain . $bp->current_component . '/' . $bp->current_action);
        }
        if ($max_page > 1 || $always_show) {
            echo "{$before} <div class='Navi'>";
            if ($paged >= $pages_to_show - 1) {
                $url = get_pagenum_link();
                if ($current_domain) {
                    $url = strpos($url, $current_domain) !== false ? $url : str_replace($component_domain, $current_domain, $url);
                }
                echo '<a href="' . str_replace('&paged', '&amp;paged', $url) . '">&laquo;</a>';
            }
            ob_start();
            previous_posts_link($prelabel);
            $url = ob_get_clean();
            if ($current_domain) {
                $url = strpos($url, $current_domain) !== false ? $url : str_replace($component_domain, $current_domain, $url);
            }
            echo $url;
            for ($i = $paged - $half_pages_to_show; $i <= $paged + $half_pages_to_show; $i++) {
                if ($i >= 1 && $i <= $max_page) {
                    if ($i == $paged) {
                        echo "<strong class='on'>{$i}</strong>";
                    } else {
                        $url = get_pagenum_link($i);
                        if ($current_domain) {
                            $url = strpos($url, $current_domain) !== false ? $url : str_replace($component_domain, $current_domain, $url);
                        }
                        echo ' <a href="' . str_replace('&paged', '&amp;paged', $url) . '">' . $i . '</a> ';
                    }
                }
            }
            ob_start();
            next_posts_link($nxtlabel, $max_page);
            $url = ob_get_clean();
            if ($current_domain) {
                $url = strpos($url, $current_domain) !== false ? $url : str_replace($component_domain, $current_domain, $url);
            }
            echo $url;
            if ($paged + $half_pages_to_show < $max_page) {
                $url = get_pagenum_link($max_page);
                if ($current_domain) {
                    $url = strpos($url, $current_domain) !== false ? $url : str_replace($component_domain, $current_domain, $url);
                }
                echo '<a href="' . str_replace('&paged', '&amp;paged', $url) . '">&raquo;</a>';
            }
            echo "</div> {$after}";
        }
    }
}