Function Reference: geodir_buddypress_setup_nav

Summary

Setup navigation.

Package

GeoDirectory_BuddyPress_Integration

Change Log

Since: 1.0.0

Filters

‘geodir_buddypress_nav_.$parent_slug’ [Line: 574]

‘geodir_buddypress_subnav_.$parent_slug’ [Line: 577]

‘gdbuddypress_favourites_text’ [Line: 603]

‘gdbuddypress_favourites_text’ [Line: 641]

‘geodir_buddypress_nav_.$parent_slug’ [Line: 646]

‘geodir_buddypress_subnav_.$parent_slug’ [Line: 649]

‘geodir_buddypress_nav_.$parent_slug’ [Line: 714]

‘geodir_buddypress_subnav_.$parent_slug’ [Line: 717]

Source File

geodir_buddypress_setup_nav() is located in geodir_buddypress/includes/gdbuddypress_functions.php [Line: 509]

Source Code

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 %s', 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 %s', 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 %s', 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 %s', 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 %s', 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 %s', 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 );
				}
			}
		}
	}
}