<?php
defined( 'ABSPATH' ) || exit;
/**
 * @package Neatly
*/

function neatly_breadcrumb_list(){
	/* Set variables for later use*/
	/*$here_text        = esc_html__( '<span class="fa-status"></span> You are currently here!' );*/
	$home_link        = esc_url(home_url('/'));
	$home_text        = esc_html__( 'Home', 'neatly' );
	$link_before      = '<li><span class="fa-folder-open-o dib vam sub_fc mr4"></span>';
	$link_after       = '</li>';
	$link_prop_before = '';//<span class="breadcrumb_tree">
	$link_prop_after  = '';//</span>

	$link             = $link_before . '<a href="%1$s"><span class="">%2$s</span></a>' . $link_after;
	$delimiter        = '<span class="ml8 mr8">&raquo;</span>';/* Delimiter between crumbs' &raquo; '*/
	$before           = '<li><span class="fa-file-text-o sub_fc dib vam sub_fc mb2 mr4"></span><span class="current">';/* Tag before the current crumb*/
	$after            = '</span></li>';/* Tag after the current crumb*/
	$page_addon       = '';/* Adds the page number if the query is paged*/
	$breadcrumb_trail = '';
	$category_links   = '';


	/* Set our own $wp_the_query variable. Do not use the global variable version due to*/
	/* reliability*/
	$wp_the_query   = $GLOBALS['wp_the_query'];
	$queried_object = $wp_the_query->get_queried_object();

	/* Handle single post requests which includes single pages, posts and attatchments*/
	if ( is_singular() ) {
		/* Set our own $post variable. Do not use the global variable version due to*/
		/* reliability. We will set $post_object variable to $GLOBALS['wp_the_query']*/
		$post_object = sanitize_post( $queried_object );

		/* Set variables */
		$title          = esc_html($post_object->post_title);
		$parent         = $post_object->post_parent;
		$post_type      = $post_object->post_type;
		$post_id        = $post_object->ID;
		$post_link      = $before . $title . $after;
		$parent_string  = '';
		$post_type_link = '';

		if ( 'post' === $post_type ) {
			/* Get the post categories*/
			$categories = get_the_category( $post_id );
			if ( $categories ) {
				/* Lets grab the first category*/
				$category  = $categories[0];
				$category_links = get_category_parents( $category, true, $delimiter );
				$category_links = mb_ereg_replace(">(.*?)<\/a>",">$link_prop_before\\1$link_prop_after</a></li>",$category_links);
				$category_links = str_replace( '<a',   $link_before . '<a', $category_links );
			}
		}

		if ( !in_array( $post_type, array('post', 'page', 'attachment') ) ) {
			$post_type_object = get_post_type_object( $post_type );
			$archive_link     = esc_url( get_post_type_archive_link( $post_type ) );

			$post_type_link   = sprintf( $link, $archive_link, $post_type_object->labels->singular_name );
		}

		/* Get post parents if $parent !== 0*/
		if ( 0 !== $parent ) {
			$parent_links = array();
			while ( $parent ) {
				$post_parent = get_post( $parent );

				$parent_links[] = sprintf( $link, esc_url( get_permalink( $post_parent->ID ) ), get_the_title( $post_parent->ID ) );

				$parent = $post_parent->post_parent;
			}

			$parent_links = array_reverse( $parent_links );

			$parent_string = implode( $delimiter, $parent_links );
		}

		/* Lets build the breadcrumb trail*/
		if ( $parent_string ) {
			$breadcrumb_trail = $parent_string . $delimiter . $post_link;
		} else {
			$breadcrumb_trail = $post_link;
		}

		if ( $post_type_link )
			$breadcrumb_trail = $post_type_link . $delimiter . $breadcrumb_trail;

		if ( $category_links )
			$breadcrumb_trail = $category_links . $breadcrumb_trail;

	}elseif( is_archive() ){

		/* Handle archives which includes category-, tag-, taxonomy-, date-, custom post type archives and author archives*/


		if ( is_category() || is_tag() || is_tax() ) {
			/* Set the variables for this section*/
			$term_object        = get_term( $queried_object );
			$taxonomy           = $term_object->taxonomy;
			$term_id            = $term_object->term_id;
			$term_name          = $term_object->name;
			$term_parent        = $term_object->parent;
			$taxonomy_object    = get_taxonomy( $taxonomy );
			$current_term_link  = $before . $taxonomy_object->labels->singular_name . ': ' . $term_name . $after;
			$parent_term_string = '';

			if ( 0 !== $term_parent ) {
				/* Get all the current term ancestors*/
				$parent_term_links = array();
				while ( $term_parent ) {
					$term = get_term( $term_parent, $taxonomy );

					$parent_term_links[] = sprintf( $link, esc_url( get_term_link( $term ) ), $term->name );

					$term_parent = $term->parent;
				}

				$parent_term_links  = array_reverse( $parent_term_links );
				$parent_term_string = implode( $delimiter, $parent_term_links );
			}

			if ( $parent_term_string ) {
				$breadcrumb_trail = $parent_term_string . $delimiter . $current_term_link;
			} else {
				$breadcrumb_trail = $current_term_link;
			}

		} elseif ( is_author() ) {

			$breadcrumb_trail = esc_html__( 'Author archive for ', 'neatly' ) .  $before . $queried_object->data->display_name . $after;

		} elseif ( is_date() ) {
			/* Set default variables*/
			$year     = $wp_the_query->query_vars['year'];
			$monthnum = $wp_the_query->query_vars['monthnum'];
			$day      = $wp_the_query->query_vars['day'];

			/* Get the month name if $monthnum has a value*/
			if ( $monthnum ) {
				$date_time  = DateTime::createFromFormat( '!m', $monthnum );
				$month_name = $date_time->format( 'F' );
			}

			if ( is_year() ) {

				$breadcrumb_trail = $before . $year . $after;

			} elseif( is_month() ) {

				$year_link        = sprintf( $link, esc_url( get_year_link( $year ) ), $year );

				$breadcrumb_trail = $year_link . $delimiter . $before . $month_name . $after;

			} elseif( is_day() ) {

				$year_link        = sprintf( $link, esc_url( get_year_link( $year ) ),             $year       );
				$month_link       = sprintf( $link, esc_url( get_month_link( $year, $monthnum ) ), $month_name );

				$breadcrumb_trail = $year_link . $delimiter . $month_link . $delimiter . $before . $day . $after;
			}

		} elseif ( is_post_type_archive() ) {

			$post_type        = $wp_the_query->query_vars['post_type'];
			$post_type_object = get_post_type_object( $post_type );

			$breadcrumb_trail = $before . $post_type_object->labels->singular_name . $after;

		}
	}elseif ( is_search() && !is_paged()) {

		/* Handle the search page*/

		/* translators: %s: search term */
		$breadcrumb_trail = $before . sprintf( esc_html__( 'Search query for: %s', 'neatly' ) , get_search_query()) . $after;

	}elseif ( is_search() && is_paged()) {


		$current_page = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : get_query_var( 'page' );
		/* translators: %s: search term */
		$breadcrumb_trail = $before . sprintf(esc_html__( 'Search query for: %s', 'neatly' ) , get_search_query()). sprintf( esc_html__( '( Page %s )' , 'neatly' ), number_format_i18n( $current_page ) ) . $after;
	}elseif ( is_404() ) {

		/* Handle 404's*/

		$breadcrumb_trail = $before . esc_html__( 'Error 404', 'neatly' ) . $after;

	}elseif ( is_paged() && !is_search() ) {

		/* Handle paged pages*/

		$current_page = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : get_query_var( 'page' );
		/* translators: %s: number */
		$page_addon   = $before . sprintf( esc_html__( '( Page %s )' , 'neatly' ), number_format_i18n( $current_page ) ) . $after;
	}else{
		return;
	}

	$breadcrumb_output_link  = '';

	if ( is_home() || is_front_page() ) {
		/* Do not show breadcrumbs on page one of home and frontpage*/
		if ( is_paged() ) {
			/*$breadcrumb_output_link .= $here_text . $delimiter;*/
			$breadcrumb_output_link .= '<li><span class="fa-home dib vam sub_fc mb2"></span> <a href="' . $home_link . '" class="lh_1"><span class="breadcrumb_home">' . $home_text . '</span></a></li>';
			$breadcrumb_output_link .= $page_addon;
		}
	} else {
		/*$breadcrumb_output_link .= $here_text . $delimiter;*/
		$breadcrumb_output_link .= '<li><span class="fa-home dib vam sub_fc mb2"></span> <a href="' . $home_link . '" class="lh_1"><span class="breadcrumb_home">' . $home_text . '</span></a></li>';
		$breadcrumb_output_link .= $delimiter;
		$breadcrumb_output_link .= $breadcrumb_trail;
		$breadcrumb_output_link .= $page_addon;
	}






	if(!get_theme_mod( 'neatly_breadcrumbs_current',true)){
		$str = '/<\/li> &raquo; <li><span class="fa-file-text-o dib vam sub_fc mb2 mr4"></span> <span class=\"current\">(.*)<\/span><\/li>/u';
		$breadcrumb_output_link = preg_replace( $str , '</li>' , $breadcrumb_output_link ,1);
	}
	$breadcrumb_output_link = '<nav class="post_item mb_L"><ol id="breadcrumb" class="breadcrumb f_box f_wrap001 ai_c o_s_t pb8">'.$breadcrumb_output_link.'</ol></nav><!-- .breadcrumbs -->';


	echo $breadcrumb_output_link;


}/*end of neatly_breadcrumb_list*/
