<?php
/**
 * Define some custom classes for ample-magazine
 *
 * https://codex.wordpress.org/Class_Reference/WP_Customize_Control
 *

 * @subpackage ample_magazine
 * @since 1.0.0
 */

if ( class_exists( 'WP_Customize_Control' ) ) {

	/**
	 * A class to create a dropdown for all categories in your WordPress site
	 *
	 * @since 1.0.0
	 * @ample-magazine public
	 */
	class Ample_Magazine_Customize_Category_Control extends WP_Customize_Control {

		/**
		 * Render the control's content.
		 *
		 * @return void
		 * @since 1.0.0
		 */
		public function render_content() {
			$ample_magazine_dropdown = wp_dropdown_categories(
				array(
					'name'              => 'customize-dropdown-categories' . $this->id,
					'echo'              => 0,
					'show_option_none'  => esc_html__( '&mdash; Select Category &mdash;', 'ample-magazine' ),
					'option_none_value' => '0',
					'selected'          => $this->value(),
				)
			);

			// Hackily add in the data link parameter.
			$ample_magazine_dropdown = str_replace( '<select', '<select ' . $this->get_link(), $ample_magazine_dropdown );

			printf(
				'<label class="customize-control-select"><span class="customize-control-title">%s</span><span class="description customize-control-description">%s</span> %s </label>',
				$this->label,
				$this->description,
				$ample_magazine_dropdown
			);
		}
	}


	/**
	 * Customize Control for Taxonomy Select.
	 *
	 * @since 1.0.0
	 *
	 * @see WP_Customize_Control
	 */
	class Ample_Magazine_Dropdown_Taxonomies_Control extends WP_Customize_Control {

		/**
		 * Control type.
		 *
		 * @access public
		 * @var string
		 */
		public $type = 'dropdown-taxonomies';

		/**
		 * Taxonomy.
		 *
		 * @access public
		 * @var string
		 */
		public $taxonomy = '';

		/**
		 * Constructor.
		 *
		 * @since 1.0.0
		 *
		 * @param WP_Customize_Manager $manager Customizer bootstrap instance.
		 * @param string $id Control ID.
		 * @param array $args Optional. Arguments to override class property defaults.
		 */
		public function __construct( $manager, $id, $args = array() ) {

			$our_taxonomy = 'category';
			if ( isset( $args['taxonomy'] ) ) {
				$taxonomy_exist = taxonomy_exists( esc_attr( $args['taxonomy'] ) );
				if ( true === $taxonomy_exist ) {
					$our_taxonomy = esc_attr( $args['taxonomy'] );
				}
			}
			$args['taxonomy'] = $our_taxonomy;
			$this->taxonomy   = esc_attr( $our_taxonomy );

			parent::__construct( $manager, $id, $args );
		}

		/**
		 * Render content.
		 *
		 * @since 1.0.0
		 */
		public function render_content() {

			$tax_args       = array(
				'hierarchical' => 0,
				'taxonomy'     => $this->taxonomy,
			);
			$all_taxonomies = get_categories( $tax_args );

			?>
            <label>
                <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
                <select <?php $this->link(); ?>>
					<?php
					printf( '<option value="%s" %s>%s</option>', '', selected( $this->value(), '', false ), esc_html__( 'Select Category', 'ample-magazine' ) );
					?>
					<?php if ( ! empty( $all_taxonomies ) ) : ?>
						<?php foreach ( $all_taxonomies as $key => $tax ) : ?>
							<?php
							printf( '<option value="%s" %s>%s</option>', esc_attr( $tax->term_id ), selected( $this->value(), $tax->term_id, false ), esc_html( $tax->name ) );
							?>
						<?php endforeach ?>
					<?php endif; ?>
                </select>
            </label>
			<?php
		}
	}
}