<?php
/* ------------------------------------------------------------------------------
* Author: web-zone.org
* @package Airin Blog
* Description: Meta tags for categories and posts
* ------------------------------------------------------------------------------ */


// Meta tags for category cards
if (!function_exists('airinblog_fun_posted_on_cat')) {
	function airinblog_fun_posted_on_cat() {

		$cat_label_on = esc_attr(get_theme_mod('airinblog_cus_cat_meta_label_block', 0));
		?>

		<div class="airinblog-css-cat-meta-boxs">

			<?php
			// Post Author
			if (esc_attr(get_theme_mod('airinblog_cus_cat_meta_activ_autor', 1)) == 1) {
				?>
				<div class="airinblog-css-cat-meta-box" data-info="<?php esc_attr_e('Post author', 'airin-blog'); ?>">
					<div class="icon-autor-cat-meta"></div>
					<div class="airinblog-css-cat-meta-label-data">
						<?php if ($cat_label_on == 1) { ?>
							<div class="airinblog-css-cat-meta-label">
								<?php esc_html_e('Author', 'airin-blog'); ?>
							</div>
						<?php } ?>
						<div class="airinblog-css-cat-meta-data">
							<?php
							echo sprintf(
								esc_html_x('%s', 'post author', 'airin-blog'),
								'<a href="' . esc_url(get_author_posts_url(get_the_author_meta('ID'))) . '">' . esc_html(get_the_author()) . '</a>'
							);
							?>
						</div>
					</div>
				</div>
				<?php
			}

			// Number of comments on a post
			if (esc_attr(get_theme_mod('airinblog_cus_cat_meta_activ_comment', 1)) == 1) {
				if (! post_password_required() && (comments_open() || get_comments_number())) {
					?>
					<div class="airinblog-css-cat-meta-box" data-info="<?php esc_attr_e('Number of comments on a post', 'airin-blog'); ?>">
						<div class="icon-bubble-cat-meta"></div>
						<div class="airinblog-css-cat-meta-label-data">
							<?php if ($cat_label_on == 1) { ?>
								<div class="airinblog-css-cat-meta-label">
									<?php esc_html_e('Comments', 'airin-blog'); ?>
								</div>
							<?php } ?>
							<div class="airinblog-css-cat-meta-data">
								<?php
								comments_popup_link('0', '1', '%');
								?>
							</div>
						</div>
					</div>
					<?php
				}
			}

			// Number of post views
			if (esc_attr(get_theme_mod('airinblog_cus_cat_meta_activ_view', 1)) == 1) {
				?>
				<div class="airinblog-css-cat-meta-box" data-info="<?php esc_attr_e('Number of post views', 'airin-blog'); ?>">
					<div class="icon-eye-cat-meta"></div>
					<div class="airinblog-css-cat-meta-label-data">
						<?php if ($cat_label_on == 1) { ?>
							<div class="airinblog-css-cat-meta-label">
								<?php esc_html_e('Views', 'airin-blog'); ?>
							</div>
						<?php } ?>
						<div class="airinblog-css-cat-meta-data">
							<?php
							echo dmcwzmulti_fun_get_views(get_the_ID());
							?>
						</div>
					</div>
				</div>
				<?php 
			}

			// Post creation date
			if (esc_attr(get_theme_mod('airinblog_cus_cat_meta_activ_data', 1)) == 1) {
				?>
				<div class="airinblog-css-cat-meta-box" data-info="<?php esc_attr_e('Post creation date', 'airin-blog'); ?>">
					<div class="icon-calendar-cat-meta"></div>
					<div class="airinblog-css-cat-meta-label-data">
						<?php if ($cat_label_on == 1) { ?>
							<div class="airinblog-css-cat-meta-label">
								<?php esc_html_e('Created', 'airin-blog'); ?>
							</div>
						<?php } ?>	
						<div class="airinblog-css-cat-meta-data">
							<?php
							// Functional - Post creation date
							$cat_time_string = '<time class="entry-date published updated" datetime="%1$s">%2$s</time>';
							if (get_the_time('U') !== get_the_modified_time('U')) {
								$cat_time_string = '<time class="entry-date published" datetime="%1$s">%2$s</time><time class="updated" datetime="%3$s">%4$s</time>';
							}
							$cat_time_string = sprintf($cat_time_string,
								esc_attr(get_the_date('c')),
								esc_html(get_the_date()),
								esc_attr(get_the_modified_date('c')),
								esc_html(get_the_modified_date())
							);
							// Display - Post creation date
							echo sprintf(
								esc_html_x('%s', 'post date', 'airin-blog'),
								$cat_time_string
							);
							?>
						</div>
					</div>
				</div>
				<?php 
			}

			// Record update date
			if (esc_attr(get_theme_mod('airinblog_cus_cat_meta_activ_update', 0)) == 1) {
				?>
				<div class="airinblog-css-cat-meta-box" data-info="<?php esc_attr_e('Post update date', 'airin-blog'); ?>">
					<div class="icon-spinner-cat-meta"></div>
					<div class="airinblog-css-cat-meta-label-data">
						<?php if ($cat_label_on == 1) { ?>
							<div class="airinblog-css-cat-meta-label">
								<?php esc_html_e('Updated', 'airin-blog'); ?>
							</div>
						<?php } ?>
						<div class="airinblog-css-cat-meta-data">
							<?php
							// Functional - Record update date
							$time_cat_up = '<time class="entry-date published updated" datetime="%1$s">%2$s</time>';
							if (get_the_modified_time('U') !== get_the_time('U')) {
								$time_cat_up = '<time class="entry-date published" datetime="%1$s">%2$s</time><time class="updated" datetime="%3$s">%4$s</time>';
							}
							$time_cat_up = sprintf($time_cat_up,
								esc_attr(get_the_modified_date('c')),
								esc_html(get_the_modified_date()),
								esc_attr(get_the_date('c')),
								esc_html(get_the_date())
							);
							// Display - Record update date
							echo sprintf(
								esc_html_x('%s', 'post date', 'airin-blog'),
								$time_cat_up
							);
							?>
						</div>
					</div>
				</div>
				<?php
			}
			?>
		</div>

		<?php
		$cat_label_tax_none = get_theme_mod('airinblog_cus_cat_meta_label_tax', 0);

		// Meta tax cat (in cat)
		if (get_theme_mod('airinblog_cus_cat_meta_activ_cat', 1) == 1) {

			$cat_list_cat = get_the_category();

			if ($cat_list_cat && airinblog_fun_categorized_blog()) {

				// Check Yoast SEO and change the order of links (only if main category is selected)
				if (class_exists('WPSEO_Primary_Term')) {
					$primary_term = new WPSEO_Primary_Term('category', get_the_ID());
					$primary_cat_id = !is_wp_error($primary_term->get_primary_term()) ? $primary_term->get_primary_term() : false;
					if ($primary_cat_id) {
						foreach ($cat_list_cat as $key => $category) {
							if ($category->term_id == $primary_cat_id ) {
								$primary_cat = $category;
								unset($cat_list_cat[$key] );
								array_unshift($cat_list_cat, $primary_cat );
								break;
							}
						}
					}
				}
			
				// Limit the quantity
				$limit_cat = get_theme_mod('airinblog_cus_cat_meta_item_cat', 2);
				$cat_list_cat = array_slice($cat_list_cat, 0, $limit_cat );
			
				// Label
				$cat_label_cat = '';
				if ($cat_label_tax_none == 1) {
					$cat_label_cat = esc_html__('Categories', 'airin-blog').':';
				}

				// Create links
				$limit_cat_array = array_map(function($category) {
					return sprintf(
						'<a href="%s" rel="category tag">%s</a>',
						esc_url(get_category_link($category->term_id)),
						esc_html($category->name)
					);
				}, $cat_list_cat);
			
				// Output
				echo '<div class="airinblog-css-cat-meta-box-taxonomy">'.
					'<div class="icon-cat-cat-meta"></div><div class="airinblog-css-cat-meta-data-tax">' . esc_html($cat_label_cat) . ' '.
						implode('<span>,</span> ', $limit_cat_array).
					'</div>'.
				'</div>';
			}

		}

		// Meta tax tag (in cat)
		if (get_theme_mod('airinblog_cus_cat_meta_activ_tag', 1) == 1) {
			$cat_list_tag = get_the_tag_list('','d1y2w3');
			if (!empty($cat_list_tag)) {
				$limit_tag = get_theme_mod('airinblog_cus_cat_meta_item_tag', 3);
				$tag_array = explode('d1y2w3', $cat_list_tag);
				$limit_tag_array = array_slice($tag_array, 0, $limit_tag);
				$cat_label_tag = '';
				if ($cat_label_tax_none == 1) {
					$cat_label_tag = esc_html__('Tags', 'airin-blog').':';
				}
				echo '<div class="airinblog-css-cat-meta-box-taxonomy">'.
					'<div class="icon-tag-cat-meta"></div><div class="airinblog-css-cat-meta-data-tax">' . esc_html($cat_label_tag) . ' '.
						implode('<span>,</span> ', $limit_tag_array).
					'</div>'.
				'</div>';
			}
		}



	}
}


// Meta tags (post)
if (get_theme_mod('airinblog_cus_post_meta', 1) == 1) {

	// Meta tags (in post)
	function airinblog_fun_posted_on_single() {

		$post_label_none = esc_attr(get_theme_mod('airinblog_cus_post_meta_label_block', 0));

		// Functional - post reading time
		if (!function_exists('airinblog_fun_post_time_words')) {
			function airinblog_fun_post_time_words() {
				$words_per_minutes = 300;
				$content_text = is_single() ? get_the_content() : get_post(get_the_ID())->post_content;
				$minutes = round(count(preg_split('/\s/', $content_text)) /  $words_per_minutes);
				if ($minutes == 0) {
					return esc_html_e('Less 1 min', 'airin-blog');
				} else {
					return $minutes . ' ' . esc_html__('min', 'airin-blog');
				}
			}
		}
		?>

		<div class="airinblog-css-post-meta-boxs">

			<?php
			// Post Author
			if (esc_attr(get_theme_mod('airinblog_cus_post_meta_autor', 1)) == 1) {
				?>
				<div class="airinblog-css-post-meta-box" data-info="<?php esc_attr_e('Post author', 'airin-blog'); ?>">
					<div class="icon-autor-post-meta"></div>
					<div class="airinblog-css-post-meta-label-data">
						<?php if ($post_label_none != 1) { ?>
							<div class="airinblog-css-post-meta-label">
								<?php esc_html_e('Author', 'airin-blog'); ?>
							</div>
						<?php } ?>
						<div class="airinblog-css-post-meta-data">
							<?php
							echo sprintf(
								esc_html_x('%s', 'post author', 'airin-blog'),
								'<a href="' . esc_url(get_author_posts_url(get_the_author_meta('ID'))) . '">' . esc_html(get_the_author()) . '</a>'
							);
							?>
						</div>
					</div>
				</div>
				<?php 
			}

			// Record creation date
			if (esc_attr(get_theme_mod('airinblog_cus_post_meta_data', 1)) == 1) {
				?>
				<div class="airinblog-css-post-meta-box" data-info="<?php esc_attr_e('Post creation date', 'airin-blog'); ?>">
					<div class="icon-calendar-post-meta"></div>
					<div class="airinblog-css-post-meta-label-data">
						<?php if ($post_label_none != 1) { ?>
							<div class="airinblog-css-post-meta-label">
								<?php esc_html_e('Created', 'airin-blog'); ?>
							</div>
						<?php } ?>
						<div class="airinblog-css-post-meta-data">
							<?php
							// Functional - Record creation date
							$post_time_string = '<time class="entry-date published updated" datetime="%1$s">%2$s</time>';
							if (get_the_time('U') !== get_the_modified_time('U')) {
								$post_time_string = '<time class="entry-date published" datetime="%1$s">%2$s</time><time class="updated" datetime="%3$s">%4$s</time>';
							}
							$post_time_string = sprintf($post_time_string,
								esc_attr(get_the_date('c')),
								esc_html(get_the_date()),
								esc_attr(get_the_modified_date('c')),
								esc_html(get_the_modified_date())
							);
							// Display - Creation date
							echo sprintf(
								esc_html_x('%s', 'post date', 'airin-blog'),
								$post_time_string
							);
							?>
						</div>
					</div>
				</div>
				<?php
			}

			// Record update date
			if (esc_attr(get_theme_mod('airinblog_cus_post_meta_update', 1)) == 1) {
				?>
				<div class="airinblog-css-post-meta-box" data-info="<?php esc_attr_e('Post update date', 'airin-blog'); ?>">
					<div class="icon-spinner-post-meta"></div>
					<div class="airinblog-css-post-meta-label-data">
						<?php if ($post_label_none != 1) { ?>
							<div class="airinblog-css-post-meta-label">
								<?php esc_html_e('Updated', 'airin-blog'); ?>
							</div>
						<?php } ?>
						<div class="airinblog-css-post-meta-data">
							<?php
							// Functional - Record update date
							$time_post_up = '<time class="entry-date published updated" datetime="%1$s">%2$s</time>';
							if (get_the_modified_time('U') !== get_the_time('U')) {
								$time_post_up = '<time class="entry-date published" datetime="%1$s">%2$s</time><time class="updated" datetime="%3$s">%4$s</time>';
							}
							$time_post_up = sprintf($time_post_up,
								esc_attr(get_the_modified_date('c')),
								esc_html(get_the_modified_date()),
								esc_attr(get_the_date('c')),
								esc_html(get_the_date())
							);
							// Display - Record update date
							echo sprintf(
								esc_html_x('%s', 'post date', 'airin-blog'),
								$time_post_up
							);
							?>
						</div>
					</div>
				</div>
				<?php
			}

			// Number of comments on a post
			if (esc_attr(get_theme_mod('airinblog_cus_post_meta_comment', 1)) == 1) {
				if (! post_password_required() && (comments_open() || get_comments_number())) {
					?>
					<div class="airinblog-css-post-meta-box" data-info="<?php esc_attr_e('Number of comments on a post', 'airin-blog'); ?>">
						<div class="icon-bubble-post-meta"></div>
						<div class="airinblog-css-post-meta-label-data">
							<?php if ($post_label_none != 1) { ?>
								<div class="airinblog-css-post-meta-label">
									<?php esc_html_e('Comments', 'airin-blog'); ?>
								</div>
							<?php } ?>
							<div class="airinblog-css-post-meta-data">
								<?php
								comments_popup_link('0', '1', '%');
								?>
							</div>
						</div>
					</div>
					<?php 
				}
			}

			// Record reading time
			if (esc_attr(get_theme_mod('airinblog_cus_post_meta_time', 1)) == 1) {
				?>
				<div class="airinblog-css-post-meta-box" data-info="<?php esc_attr_e('Post reading time', 'airin-blog'); ?>">
					<div class="icon-clock-post-meta"></div>
					<div class="airinblog-css-post-meta-label-data">
						<?php if ($post_label_none != 1) { ?>
							<div class="airinblog-css-post-meta-label">
								<?php esc_html_e('Reading time', 'airin-blog'); ?>
							</div>
						<?php } ?>
						<div class="airinblog-css-post-meta-data">
							<?php
							echo airinblog_fun_post_time_words();
							?>
						</div>
					</div>
				</div>
				<?php 
			}

			// Number of post views
			if (esc_attr(get_theme_mod('airinblog_cus_post_meta_view', 1)) == 1) {
				?>
				<div class="airinblog-css-post-meta-box" data-info="<?php esc_attr_e('Number of post views', 'airin-blog'); ?>">
					<div class="icon-eye-post-meta"></div>
					<div class="airinblog-css-post-meta-label-data">
						<?php if ($post_label_none != 1) { ?>
							<div class="airinblog-css-post-meta-label">
								<?php esc_html_e('Views', 'airin-blog'); ?>
							</div>
						<?php } ?>
						<div class="airinblog-css-post-meta-data">
							<?php
							echo dmcwzmulti_fun_get_views(get_the_ID());
							?>
						</div>
					</div>
				</div>
				<?php
			}
			?>
		</div>
		<?php
	}

	// Categories (in post)
	function airinblog_fun_post_meta_tax_cat() {

		$post_list_cat = get_the_category();

		if ($post_list_cat && airinblog_fun_categorized_blog()) {

			// Check Yoast SEO and change the order of links (only if main category is selected)
			if (class_exists('WPSEO_Primary_Term')) {
				$primary_term = new WPSEO_Primary_Term('category', get_the_ID());
				$primary_cat_id = !is_wp_error($primary_term->get_primary_term()) ? $primary_term->get_primary_term() : false;
				if ($primary_cat_id) {
					foreach ($post_list_cat as $key => $category) {
						if ($category->term_id == $primary_cat_id ) {
							$primary_cat = $category;
							unset($post_list_cat[$key] );
							array_unshift($post_list_cat, $primary_cat );
							break;
						}
					}
				}
			}
		
			// Limit the quantity
			$limit_cat = get_theme_mod('airinblog_cus_post_meta_item_cat', 5);
			$post_list_cat = array_slice($post_list_cat, 0, $limit_cat );
		
			// Label
			$post_label_cat = '';
			if (get_theme_mod('airinblog_cus_post_meta_label_tax', 0) != 1) {
				$post_label_cat = esc_html__('Categories', 'airin-blog').':';
			}

			// Create links
			$limit_cat_array = array_map(function($category) {
				return sprintf(
					'<a href="%s" rel="category tag">%s</a>',
					esc_url(get_category_link($category->term_id)),
					esc_html($category->name)
				);
			}, $post_list_cat);
		
			// Output
			echo '<div class="airinblog-css-post-meta-box-taxonomy">'.
				'<div class="icon-cat-post-meta"></div><div class="airinblog-css-post-meta-data-tax">' . esc_html($post_label_cat) . ' '.
					implode('<span>,</span> ', $limit_cat_array).
				'</div>'.
			'</div>';
		}

	}
	
	// Tags (in post)
	function airinblog_fun_post_meta_tax_tag() {
		$post_list_tag = get_the_tag_list('','d1y2w3');
		if (!empty($post_list_tag)) {
			$limit_tag = get_theme_mod('airinblog_cus_post_meta_item_tag', 10);
			$tag_array = explode('d1y2w3', $post_list_tag);
			$limit_tag_array = array_slice($tag_array, 0, $limit_tag);
			$post_label_tag = '';
			if (get_theme_mod('airinblog_cus_post_meta_label_tax', 0) != 1) {
				$post_label_tag = esc_html__('Tags', 'airin-blog').':';
			}
			echo '<div class="airinblog-css-post-meta-box-taxonomy">'.
				'<div class="icon-tag-post-meta"></div><div class="airinblog-css-post-meta-data-tax">' . esc_html($post_label_tag) . ' '.
					implode('<span>,</span> ', $limit_tag_array).
				'</div>'.
			'</div>';
		}
	}


	function airinblog_fun_post_meta_tax($lay) {
		if (get_theme_mod('airinblog_cus_post_meta_cat', 1) == 1) {
			$lay_cat = get_theme_mod('airinblog_cus_post_meta_layout_cat', 'top');
			if ($lay == $lay_cat) {
				airinblog_fun_post_meta_tax_cat();
			}
		}
		if (get_theme_mod('airinblog_cus_post_meta_tag', 1) == 1) {
			$lay_tag = get_theme_mod('airinblog_cus_post_meta_layout_tag', 'bottom');
			if ($lay == $lay_tag) {
				airinblog_fun_post_meta_tax_tag();
			}
		}
	}

}


// Data processing
function airinblog_fun_categorized_blog() {
	if (false === ($trans_cat = get_transient('airinblog_transient_categories'))) {
		$trans_cat = get_categories(array(
			'fields'     => 'ids',
			'hide_empty' => 1,
			'number'     => 2,
		));
		$trans_cat = count($trans_cat);
		set_transient('airinblog_transient_categories', $trans_cat);
	}
	if ($trans_cat > 1) {
		return true;
	} else {
		return false;
	}
}

function airinblog_fun_tag_cat_transient() {
	if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
		return;
	}
	delete_transient('airinblog_transient_categories');
}
add_action('edit_category', 'airinblog_fun_tag_cat_transient');
add_action('save_post', 'airinblog_fun_tag_cat_transient');