<?php
/**
 * Storefront Class
 *
 * @author   WooThemes
 * @since    2.0.0
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

if ( ! class_exists( 'Storefront' ) ) :

class Storefront {

	/**
	 * Setup class.
	 *
	 * @since 1.0
	 */
	public function __construct() {
		add_action( 'after_setup_theme', array( $this, 'setup' ) );
		add_action( 'widgets_init',	array( $this, 'widgets_init' ) );
		add_action( 'wp_enqueue_scripts', array( $this, 'scripts' ), 10 );
		add_action( 'wp_enqueue_scripts', array( $this, 'child_scripts' ), 30 ); // After WooCommerce
		add_filter( 'body_class', array( $this, 'body_classes' ) );
		add_filter( 'wp_page_menu_args', array( $this, 'page_menu_args' ) );
	}

	/**
	 * Sets up theme defaults and registers support for various WordPress features.
	 *
	 * Note that this function is hooked into the after_setup_theme hook, which
	 * runs before the init hook. The init hook is too late for some features, such
	 * as indicating support for post thumbnails.
	 */
	public function setup() {

		/**
		 * Set the content width based on the theme's design and stylesheet.
		 */
		if ( ! isset( $content_width ) ) {
			$content_width = 980; /* pixels */
		}

		/**
		 * Assign the Storefront version to a var
		 */
		$theme 					= wp_get_theme( 'storefront' );
		$storefront_version 	= $theme['Version'];

		/*
		 * Load Localisation files.
		 *
		 * Note: the first-loaded translation file overrides any following ones if the same translation is present.
		 */

		// wp-content/languages/themes/storefront-it_IT.mo
		load_theme_textdomain( 'storefront', trailingslashit( WP_LANG_DIR ) . 'themes/' );

		// wp-content/themes/child-theme-name/languages/it_IT.mo
		load_theme_textdomain( 'storefront', get_stylesheet_directory() . '/languages' );

		// wp-content/themes/storefront/languages/it_IT.mo
		load_theme_textdomain( 'storefront', get_template_directory() . '/languages' );

		/**
		 * Add default posts and comments RSS feed links to head.
		 */
		add_theme_support( 'automatic-feed-links' );

		/*
		 * Enable support for Post Thumbnails on posts and pages.
		 *
		 * @link http://codex.wordpress.org/Function_Reference/add_theme_support#Post_Thumbnails
		 */
		add_theme_support( 'post-thumbnails' );

		// This theme uses wp_nav_menu() in two locations.
		register_nav_menus( array(
			'primary'		=> __( 'Primary Menu', 'storefront' ),
			'secondary'		=> __( 'Secondary Menu', 'storefront' ),
			'handheld'		=> __( 'Handheld Menu', 'storefront' ),
		) );

		/*
		 * Switch default core markup for search form, comment form, comments, galleries, captions and widgets
		 * to output valid HTML5.
		 */
		add_theme_support( 'html5', array(
			'search-form',
			'comment-form',
			'comment-list',
			'gallery',
			'caption',
			'widgets',
		) );

		// Setup the WordPress core custom background feature.
		add_theme_support( 'custom-background', apply_filters( 'storefront_custom_background_args', array(
			'default-color' => apply_filters( 'storefront_default_background_color', 'fcfcfc' ),
			'default-image' => '',
		) ) );

		// Add support for the Site Logo plugin and the site logo functionality in JetPack
		// https://github.com/automattic/site-logo
		// http://jetpack.me/
		add_theme_support( 'site-logo', array( 'size' => 'full' ) );

		// Declare WooCommerce support
		add_theme_support( 'woocommerce' );

		// Declare support for title theme feature
		add_theme_support( 'title-tag' );
	}

	/**
	 * Register widget area.
	 *
	 * @link http://codex.wordpress.org/Function_Reference/register_sidebar
	 */
	public function widgets_init() {
		register_sidebar( array(
			'name'          => __( 'Sidebar', 'storefront' ),
			'id'            => 'sidebar-1',
			'description'   => '',
			'before_widget' => '<aside id="%1$s" class="widget %2$s">',
			'after_widget'  => '</aside>',
			'before_title'  => '<h3 class="widget-title">',
			'after_title'   => '</h3>',
		) );

		register_sidebar( array(
			'name'          => __( 'Below Header', 'storefront' ),
			'id'            => 'header-1',
			'description'   => 'Widgets added to this region will appear beneath the header and above the main content.',
			'before_widget' => '<aside id="%1$s" class="widget %2$s">',
			'after_widget'  => '</aside>',
			'before_title'  => '<h3 class="widget-title">',
			'after_title'   => '</h3>',
		) );

		$footer_widget_regions = apply_filters( 'storefront_footer_widget_regions', 4 );

		for ( $i = 1; $i <= intval( $footer_widget_regions ); $i++ ) {
			register_sidebar( array(
				'name' 				=> sprintf( __( 'Footer %d', 'storefront' ), $i ),
				'id' 				=> sprintf( 'footer-%d', $i ),
				'description' 		=> sprintf( __( 'Widgetized Footer Region %d.', 'storefront' ), $i ),
				'before_widget' 	=> '<aside id="%1$s" class="widget %2$s">',
				'after_widget' 		=> '</aside>',
				'before_title' 		=> '<h3>',
				'after_title' 		=> '</h3>',
				)
			);
		}
	}

	/**
	 * Enqueue scripts and styles.
	 * @since  1.0.0
	 */
	public function scripts() {
		global $storefront_version;

		wp_enqueue_style( 'storefront-style', get_template_directory_uri() . '/style.css', '', $storefront_version );

		wp_style_add_data( 'storefront-style', 'rtl', 'replace' );

		wp_enqueue_script( 'storefront-navigation', get_template_directory_uri() . '/assets/js/navigation.min.js', array( 'jquery' ), '20120206', true );

		wp_enqueue_script( 'storefront-skip-link-focus-fix', get_template_directory_uri() . '/assets/js/skip-link-focus-fix.min.js', array(), '20130115', true );

		if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
			wp_enqueue_script( 'comment-reply' );
		}
	}

	/**
	 * Enqueue child theme stylesheet.
	 * A separate function is required as the child theme css needs to be enqueued _after_ the parent theme
	 * primary css and the separate WooCommerce css.
	 * @since  1.5.3
	 */
	public function child_scripts() {
		if ( is_child_theme() ) {
			wp_enqueue_style( 'storefront-child-style', get_stylesheet_uri(), '' );
		}
	}

	/**
	 * Get our wp_nav_menu() fallback, wp_page_menu(), to show a home link.
	 *
	 * @param array $args Configuration arguments.
	 * @return array
	 */
	public function page_menu_args( $args ) {
		$args['show_home'] = true;
		return $args;
	}

	/**
	 * Adds custom classes to the array of body classes.
	 *
	 * @param array $classes Classes for the body element.
	 * @return array
	 */
	public function body_classes( $classes ) {
		// Adds a class of group-blog to blogs with more than 1 published author.
		if ( is_multi_author() ) {
			$classes[] = 'group-blog';
		}

		if ( ! function_exists( 'woocommerce_breadcrumb' ) ) {
			$classes[]	= 'no-wc-breadcrumb';
		}

		/**
		 * What is this?!
		 * Take the blue pill, close this file and forget you saw the following code.
		 * Or take the red pill, filter storefront_make_me_cute and see how deep the rabbit hole goes...
		 */
		$cute	= apply_filters( 'storefront_make_me_cute', false );

		if ( true === $cute ) {
			$classes[] = 'storefront-cute';
		}

		// If our main sidebar doesn't contain widgets, adjust the layout to be full-width.
		if ( ! is_active_sidebar( 'sidebar-1' ) ) {
			$classes[] = 'storefront-full-width-content';
		}

		return $classes;
	}
}

endif;

return new Storefront();