<?php

/**
 * Class MTL_Extended_Menu_Walker
 *
 * This file does the color handling of the navmenu walker for the Muscle Core Lite Framework
 *
 * @author      Cristian Raiber
 * @copyright   (c) Copyright by Macho Themes
 * @link        http://www.machothemes.com
 * @package     Muscle Core Lite
 * @since       Version 1.0
 */


if ( ! class_exists( 'MTL_Extended_Menu_Walker' ) ) {
	/**
	 * My extended menu walker
	 * Supports separators as "ex_separator" arg to wp_nav_menu call
	 */
	class MTL_Extended_Menu_Walker extends Walker_Nav_Menu {

		var $db_fields = array(
			'parent' => 'menu_item_parent',
			'id'     => 'db_id',
		);

		function start_lvl( &$output, $depth = 0, $args = array() ) {
			$indent  = str_repeat( "\t", $depth );
			$output .= "\n$indent<ul>\n";
		}

		function end_lvl( &$output, $depth = 0, $args = array() ) {
			$indent  = str_repeat( "\t", $depth );
			$output .= "$indent</ul>\n";
		}

		function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {

			global $wp_query;
			$indent      = $depth ? str_repeat( "\t", $depth ) : '';
			$class_names = '';
			$value       = '';
			$classes     = empty( $item->classes ) ? array() : (array) $item->classes;

			/* Add active class */
			if ( in_array( 'current-menu-item', $classes ) ) {
				$classes[] = 'active';
				unset( $classes['current-menu-item'] );
			}

			/* Check for children */
			$children = get_posts(
				array(
					'post_type'   => 'nav_menu_item',
					'nopaging'    => true,
					'numberposts' => 1,
					'meta_key'    => '_menu_item_menu_item_parent',
					'meta_value'  => $item->ID,
				)
			);

			if ( ! empty( $children ) ) {
				$classes[] = 'has-sub';
			}

			$class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args ) );
			$class_names = $class_names ? ' class="' . esc_attr( $class_names ) . '"' : '';

			$id = apply_filters( 'nav_menu_item_id', 'menu-item-' . $item->ID, $item, $args );
			$id = $id ? ' id="' . esc_attr( $id ) . '"' : '';

			$output .= $indent . '<li' . $id . $value . $class_names . '>';

			$attributes  = ! empty( $item->attr_title ) ? ' title="' . esc_attr( $item->attr_title ) . '"' : '';
			$attributes .= ! empty( $item->target ) ? ' target="' . esc_attr( $item->target ) . '"' : '';
			$attributes .= ! empty( $item->xfn ) ? ' rel="' . esc_attr( $item->xfn ) . '"' : '';
			$attributes .= ! empty( $item->url ) ? ' href="' . esc_attr( $item->url ) . '"' : '';

			$item_output  = $args->before;
			$item_output .= '<a' . $attributes . '><span>';
			$item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after;
			$item_output .= '</span></a>';
			$item_output .= $args->after;

			$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
		}

		function end_el( &$output, $item, $depth = 0, $args = array() ) {
			$output .= "</li>\n";
		}

		/**
		 * Menu Fallback
		 * =============
		 * If this function is assigned to the wp_nav_menu's fallback_cb variable
		 * and a manu has not been assigned to the theme location in the WordPress
		 * menu manager the function with display nothing to a non-logged in user,
		 * and will add a link to the WordPress menu manager if logged in as an admin.
		 *
		 * @param array $args passed from the wp_nav_menu function.
		 *
		 */
		public static function fallback( $args = array() ) {

			$fb_output = '';
			if ( ! isset( $args['container'] ) ) {
				$args['container'] = '';
			}

			if ( ! isset( $args['menu_id'] ) ) {
				$args['menu_id'] = '';
			}

			if ( ! isset( $args['menu_class'] ) ) {
				$args['menu_class'] = '';
			}

			if ( current_user_can( 'manage_options' ) ) {

				$fb_output = null;
				if ( $args['container'] ) {
					$fb_output = '<' . $args['container'];
					if ( $container_id ) {
						$fb_output .= ' id="' . $args['container_id'] . '"';
					}
					if ( $container_class ) {
						$fb_output .= ' class="' . $args['container_class'] . '"';
					}
					$fb_output .= '>';
				}
				// $fb_output .= '<ul';
				if ( $args['menu_id'] ) {
					$fb_output .= ' id="' . $args['menu_id'] . '"';
				}
				if ( $args['menu_class'] ) {
					$fb_output .= ' class="' . $args['menu_class'] . '"';
				}
				// $fb_output .= '>';
				$fb_output .= '<li><a href="' . admin_url( 'nav-menus.php' ) . '">' . __( 'Add a menu', 'regina-lite' ) . '</a></li>';
				//  $fb_output .= '</ul>';
				if ( $args['container'] ) {
					$fb_output .= '</' . $args['container'] . '>';
				}
				echo $fb_output;
			} else {
				if ( $args['container'] ) {
					$fb_output = '<' . $args['container'];
					if ( $args['container_id'] ) {
						$fb_output .= ' id="' . $args['container_id'] . '"';
					}
					if ( $args['container_class'] ) {
						$fb_output .= ' class="' . $args['container_class'] . '"';
					}
					$fb_output .= '>';
				}
				// $fb_output .= '<ul';
				if ( $args['menu_id'] ) {
					$fb_output .= ' id="' . $args['menu_id'] . '"';
				}
				if ( $args['menu_class'] ) {
					$fb_output .= ' class="' . $args['menu_class'] . '"';
				}
				// $fb_output .= '>';
					$fb_output .= '<li><a href="' . esc_url( home_url() ) . '" title="' . __( 'Home', 'regina-lite' ) . '">' . __( 'Home', 'regina-lite' ) . '</a></li>';
					$fb_output .= '<li><a href="#services-title-block" title="' . __( 'Services', 'regina-lite' ) . '">' . __( 'Services', 'regina-lite' ) . '</a></li>';
					$fb_output .= '<li><a href="#team-section-block" title="' . __( 'Team', 'regina-lite' ) . '">' . __( 'Team', 'regina-lite' ) . '</a></li>';
					$fb_output .= '<li><a href="#home-testimonials" title="' . __( 'Testimonials', 'regina-lite' ) . '">' . __( 'Testimonials', 'regina-lite' ) . '</a></li>';
					$fb_output .= '<li><a href="#section-news" title="' . __( 'News', 'regina-lite' ) . '">' . __( 'News', 'regina-lite' ) . '</a></li>';
					$fb_output .= '<li><a href="#footer" title="' . __( 'Contact', 'regina-lite' ) . '">' . __( 'Contact', 'regina-lite' ) . '</a></li>';
				// $fb_output .= '</ul>';
				if ( $args['container'] ) {
					$fb_output .= '</' . $args['container'] . '>';
				}
				echo $fb_output;
			}// End if().
		}


	}
}// End if().
