<?php
/**
 * Frontend Methods
**/
class ShapeShifter_Frontend_Methods extends ShapeShifter_Frontend_HTML_Parts {

	#
	# General Tags
	#
		/**
		 * Print General Element Tag
		 * 
		 * @static
		 * 
		 * @param string $element
		 * @param string $atts
		 * @param string $text
		 * @param string $wrap
		 * 
		 * @see self::shapeshifter_get_generated_tag( $element, $atts, $text, $wrap )
		**/
		public static function shapeshifter_generated_tag( $element, $atts = array(), $text = '', $wrap = false ) {
			echo self::shapeshifter_get_generated_tag( $element, $atts, $text, $wrap );
		}

		/**
		 * Get General Element Tag
		 * 
		 * @static
		 * 
		 * @param string $element
		 * @param string $atts
		 * @param string $text
		 * @param string $wrap
		 * 
		 * @return string
		**/
		public static function shapeshifter_get_generated_tag( $element, $atts = array(), $text = '', $wrap = false ) {
			$return = '<' . $element;
			foreach( $atts as $key => $val ) { $return .= ' ' . esc_attr( $key ) . '="' . esc_attr( $val ) . '"'; }
			if ( $wrap ) {
				$return .= '>' . esc_html( $text ) . '</' . $element . '>';
			} else {
				if ( $text != '' ) { $return .= ' data-' . SHAPESHIFTER_THEME_PREFIX . 'text="' . esc_attr( $text ) . '"'; }
				$return .= '/>';
			}
			return $return;
		}

	#
	# Images
	#
		/**
		 * Print Default Post Thumbnail URL
		 * 
		 * @static
		 * 
		 * @param WP_Post $post
		 * 
		 * @see self::shapeshifter_get_generated_tag( $element, $atts, $text, $wrap )
		**/
		static function shapeshifter_the_default_thumbnail_url( $post ) {
			echo esc_url( self::shapeshifter_get_the_default_thumbnail_url( $post ) );
		}

		/**
		 * Get Default Post Thumbnail URL
		 * 
		 * @static
		 * 
		 * @param WP_Post $post
		 * 
		 * @return string $url
		**/
		static function shapeshifter_get_the_default_thumbnail_url( $post ) {

			$cat = get_the_category( $post->ID );

			if ( isset( $cat[ 0 ] ) ) {
				$default_cat_thumbnail = get_term_meta( $cat[ 0 ]->term_id, 'shapeshifter_term_default_thumbnail', true );
			} else {
				$default_cat_thumbnail = '';
			}

			$default_cat_thumbnail = esc_url( apply_filters( 'shapeshifter_defualt_thumbnail_url_before_set_theme_mod_value', $default_cat_thumbnail, $post ) );

			return esc_url( 
				$default_cat_thumbnail != ''
				? $default_cat_thumbnail
				: get_theme_mod( 'default_thumbnail_image', SHAPESHIFTER_ASSETS_DIR_URI . 'images/no-img.png' )
			);

		}

		/**
		 * Print Default Post Thumbnail in Div Tag
		 * 
		 * @static
		 * 
		 * @param string $class
		 * @param array $size
		 * 		'width' => "{$int}px",
		 * 		'height' => "{$int}px",
		 * 
		 * @see self::shapeshifter_get_default_thumbnail_div_tag( $class, $size )
		**/
		static function shapeshifter_default_thumbnail_div_tag( $class = 'default-post-thumbnail', $size = array( 'width' => '80px', 'height' => '80px' ) ) {
			echo self::shapeshifter_get_default_thumbnail_div_tag( $class, $size );
		}

		/**
		 * Get Default Post Thumbnail in Div Tag
		 * 
		 * @static
		 * 
		 * @param string $class
		 * @param array $size
		 * 		'width' => "{$int}px",
		 * 		'height' => "{$int}px",
		 * 
		 * @see self::shapeshifter_get_generated_tag( $element, $atts = array(), $text = '', $wrap = false )
		 * 
		 * @return string
		**/
		static function shapeshifter_get_default_thumbnail_div_tag( $class = 'default-post-thumbnail', $size = array( 'width' => '80px', 'height' => '80px' ), $optional_def_image_url = '' ) {

			// カスタマイザーでデフォルトを設定している場合
			$default_thumbnail_url = esc_url( 
				$optional_def_image_url 
				? $optional_def_image_url 
				: get_theme_mod( 'default_thumbnail_image', '' )
				//: get_theme_mod( 'default_thumbnail_image', SHAPESHIFTER_ASSETS_DIR_URI . 'images/no-img.png' )
			);	

			if ( SHAPESHIFTER_IS_LAZYLOAD_ON && ! SHAPESHIFTER_IS_CUSTOMIZE_PREVIEW ) { // lazy-loadの場合
				$atts = array(
					'class' => esc_attr( $class ? $class . ' ' . $class . '-lazy default-thumbnail-lazy' : 'default-thumbnail default-thumbnail-lazy' ),
					'data-original' => $default_thumbnail_url,
					'data-style' => esc_attr( 'width: ' . $size[ 'width' ] . '; height: ' . $size[ 'height' ] . '; background-image: url(' . $default_thumbnail_url . '); background-size: ' . $size[ 'width' ] . ' ' . $size[ 'height' ] . '; background-position: center center; background-repeat: no-repeat;' )
				);
				$return = self::shapeshifter_get_generated_tag( 'div', $atts, '', true );
				$atts = array(
					'class' => esc_attr( $class ? $class . ' default-thumbnail lazy' : 'default-thumbnail lazy' ),
					'style' => esc_attr( 'width: ' . $size[ 'width' ] . '; height: ' . $size[ 'height' ] . '; background-image: url(' . $default_thumbnail_url . '); background-size: ' . $size[ 'width' ] . ' ' . $size[ 'height' ] . '; background-position: center center; background-repeat: no-repeat;' )
				);
				$return .= '<noscript>' . $return . '</noscript>';
			} else { // 通常の場合
				$atts = array(
					'class' => esc_attr( $class ? $class . ' default-thumbnail' : 'default-thumbnail' ),
					'style' => esc_attr( 'width: ' . $size[ 'width' ] . '; height: ' . $size[ 'height' ] . '; background-image: url(' . $default_thumbnail_url . '); background-size: ' . $size[ 'width' ] . ' ' . $size[ 'height' ] . '; background-position: center center; background-repeat: no-repeat;' )
				);
				$return = self::shapeshifter_get_generated_tag( 'div', $atts, '', true );
			}

			return $return;

		}

		/**
		 * Print Default Thumbnail IMG Tag
		 * 
		 * @static
		 * 
		 * @param string $class
		 * @param array $size
		 * 		'width' => "{$int}px",
		 * 		'height' => "{$int}px",
		 * 
		 * @see self::shapeshifter_get_default_thumbnail_img_tag( $class, $size, $alt )
		**/
		static function shapeshifter_default_thumbnail_img_tag( $class = 'default-post-thumbnail', $size = array( 'width' => 80, 'height' => 80 ), $alt = '' ) {
			echo self::shapeshifter_get_default_thumbnail_img_tag( $class, $size, $alt );
		}

		/**
		 * Get Default Thumbnail IMG Tag
		 * 
		 * @static
		 * 
		 * @param string $class
		 * @param array $size
		 * 		'width' => "{$int}px",
		 * 		'height' => "{$int}px",
		 * 
		 * @see self::shapeshifter_get_generated_tag( $element, $atts = array(), $text = '', $wrap = false )
		 * 
		 * @return string
		**/
		static function shapeshifter_get_default_thumbnail_img_tag( $class = 'default-post-thumbnail', $size = array( 'width' => 80, 'height' => 80 ), $alt = '', $optional_def_image_url = '' ) {

			$default_thumbnail_url = esc_url( 
				$optional_def_image_url 
				? $optional_def_image_url 
				: get_theme_mod( 'default_thumbnail_image', SHAPESHIFTER_ASSETS_DIR_URI . 'images/no-img.png' )
			);

			if ( SHAPESHIFTER_IS_LAZYLOAD_ON && ! SHAPESHIFTER_IS_CUSTOMIZE_PREVIEW ) { // lazy-loadの場合

				$atts = array(
					'class' => esc_attr( $class ? $class . ' ' . $class . '-lazy default-thumbnail-lazy' : 'default-thumbnail default-thumbnail-lazy' ),
					'data-original' => esc_url( $default_thumbnail_url ),
					'width' => absint( $size[ 'width' ] ),
					'height' => absint( $size[ 'height' ] ),
					'alt' => esc_attr( $alt )
				);
				$return = self::shapeshifter_get_generated_tag( 'img', $atts, '', true );
				$atts = array(
					'class' => esc_attr( $class ? $class . ' default-thumbnail lazy' : 'default-thumbnail lazy' ),
					'src' => esc_url( $default_thumbnail_url ),
					'width' => absint( $size[ 'width' ] ),
					'height' => absint( $size[ 'height' ] ),
					'alt' => esc_attr( $alt )
				);
				$return .= '<noscript>' . self::shapeshifter_get_generated_tag( 'img', $atts, '', true ) . '</noscript>';

			} else { // 通常の場合

				$atts = array(
					'class' => esc_attr( $class ? $class . ' default-thumbnail' : 'default-thumbnail' ),
					'src' => esc_url( $default_thumbnail_url ),
					'width' => absint( $size[ 'width' ] ),
					'height' => absint( $size[ 'height' ] ),
					'alt' => esc_attr( $alt )
				);
				$return = self::shapeshifter_get_generated_tag( 'img', $atts, '', true );

			}

			return $return;

		}

		/**
		 * Print Image in Div
		 * 
		 * @static
		 * 
		 * @param int $post_id
		 * @param string $class
		 * @param array $size
		 * 		'width' => "{$int}px",
		 * 		'height' => "{$int}px",
		 * 
		 * @see self::shapeshifter_get_post_thumbnail_div_tag( $post_id, $class, $size )
		**/
		static function shapeshifter_post_thumbnail_div_tag( $post_id, $div_class = 'post-thumbnail', $size = array( 'width' => '80px', 'height' => '80px' ) ) {
			echo self::shapeshifter_get_post_thumbnail_div_tag( $post_id, $div_class, $size );
		}

		/**
		 * Get Default Thumbnail IMG Tag
		 * 
		 * @static
		 * 
		 * @param int $post_id
		 * @param string $class
		 * @param array $size
		 * 		'width' => "{$int}px",
		 * 		'height' => "{$int}px",
		 * 
		 * @see self::shapeshifter_get_generated_tag( $element, $atts = array(), $text = '', $wrap = false )
		 * 
		 * @return string
		**/
		static function shapeshifter_get_post_thumbnail_div_tag( $post_id, $div_class = 'post-thumbnail', $size = array( 'width' => '80px', 'height' => '80px' ) ) {

			$post_thumbnail_url = esc_url( get_the_post_thumbnail( $post_id ) );

			if ( ! $post_thumbnail_url )
				return;

			if ( SHAPESHIFTER_IS_LAZYLOAD_ON && ! SHAPESHIFTER_IS_CUSTOMIZE_PREVIEW ) { // lazy-loadの場合
				$atts = array(
					'class' => esc_attr( $div_class ? $div_class . ' default-thumbnail-lazy' : 'default-thumbnail-lazy' ),
					'data-original' => $post_thumbnail_url,
					'data-style' => 'background-image: url(' . $post_thumbnail_url . '); background-size: ' . esc_attr( $size[ 'width' ] ) . ' ' . esc_attr( $size[ 'height' ] ) . '; background-position: center center; background-repeat: no-repeat;'
				);
				$return = self::shapeshifter_get_generated_tag( 'div', $atts );
				$atts = array(
					'class' => esc_attr( $div_class ? $div_class . ' default-thumbnail lazy' : 'default-thumbnail lazy' ),
					'style' => 'background-image: url(' . $post_thumbnail_url . '); background-size: ' . esc_attr( $size[ 'width' ] ) . ' ' . esc_attr( $size[ 'height' ] ) . '; background-position: center center; background-repeat: no-repeat;'
				);
				$return .= '<noscript>' . $return . '</noscript>';
			} else { // 通常の場合
				$atts = array(
					'class' => esc_attr( $div_class ),
					'style' => 'background-image: url(' . $post_thumbnail_url . '); background-size: ' . esc_attr( $size[ 'width' ] ) . ' ' . esc_attr( $size[ 'height' ] ) . '; background-position: center center; background-repeat: no-repeat;'
				);
				$return = self::shapeshifter_get_generated_tag( 'div', $atts );
			}

			// フィルター
				return $return;

		}

	#
	# Strings
	#
		/**
		 * Get Modified Time
		 * 
		 * @static
		 * 
		 * @param string $format
		 * 
		 * @return string
		**/
		static function get_mtime( $format ) {

			// Modified Time
			$mtime = get_the_modified_time( 'Ymd' ); 

			// Publish Time
			$ptime = get_the_time( 'Ymd' );

			// Not Modified ( Publish > Modified )
			if ( $ptime > $mtime ) { 
				return get_the_time( $format );
			}
			// Not Modified ( Publish = Modified )
			elseif ( $ptime === $mtime ) { 
				return get_the_time( $format );
			}
			// Modified ( Publish < Modified )
			else { 
				return get_the_modified_time( $format );
			}
		}

		/**
		 * Get Post Format Name
		 * 
		 * @static
		 * 
		 * @param WP_Post $post
		 * 
		 * @return string
		**/
		static function get_post_format_name( $post ) {
			$current_post_id = intval( get_post()->ID );
			$format = get_post_format( $current_post_id );
			return $format;
		}

}
?>