<?php

if (! function_exists('blocksy_render_archive_cards')) {
	function blocksy_render_archive_cards($args = []) {
		global $wp_query;

		$args = wp_parse_args(
			$args,
			[
				'query' => $wp_query,
				'prefix' => blocksy_manager()->screen->get_prefix(),
				'has_pagination' => true,
				'pagination_args' => []
			]
		);

		$blog_post_structure = blocksy_listing_page_structure([
			'prefix' => $args['prefix']
		]);

		if ($args['query']->have_posts()) {
			$entries_open = '<div class="entries" ';

			$container_output = apply_filters(
				'blocksy:posts-listing:container:custom-output',
				null
			);

			$has_cards_type = true;

			if ($container_output) {
				$hook_id = blc_get_content_block_that_matches([
					'template_type' => 'archive'
				]);

				$atts = blocksy_get_post_options($hook_id);

				if (blocksy_akg(
					'has_template_default_layout',
					$atts,
					'yes'
				) !== 'yes') {
					$has_cards_type = false;
				}

				$entries_open .= 'data-archive="custom"';
			} else {
				$entries_open .= 'data-archive="default"';
			}

			$entries_open .= ' data-layout="' . esc_attr($blog_post_structure) . '"';

			if ($has_cards_type) {
				$card_type = blocksy_get_listing_card_type([
					'prefix' => $args['prefix']
				]);

				if ($card_type) {
					$entries_open .= ' ' . 'data-cards="' . $card_type . '"';
				}
			}

			$entries_open .= ' ' . blocksy_schema_org_definitions('blog');

			$archive_order = blocksy_get_theme_mod(
				$args['prefix'] . '_archive_order',
				[]
			);

			foreach ($archive_order as $archive_layer) {
				if (! $archive_layer['enabled']) {
					continue;
				}

				if ($archive_layer['id'] === 'featured_image') {
					$hover_effect = blocksy_akg(
						'image_hover_effect',
						$archive_layer,
						'none'
					);

					if ($hover_effect !== 'none') {
						$entries_open .= ' data-hover="' . $hover_effect . '"';
					}
				}
			}

			$entries_open .= ' ' . blocksy_generic_get_deep_link([
				'prefix' => $args['prefix']
			]) . '>';

			do_action('blocksy:loop:before');

			echo $entries_open;

			while ($args['query']->have_posts()) {
				$args['query']->the_post();

				blocksy_render_archive_card([
					'prefix' => $args['prefix']
				]);
			}

			echo '</div>';

			do_action('blocksy:loop:after');

			/**
			 * Note to code reviewers: This line doesn't need to be escaped.
			 * Function blocksy_display_posts_pagination() used here escapes the value properly.
			 */
			if ($args['has_pagination']) {
				$args['pagination_args']['query'] = $args['query'];
				$args['pagination_args']['prefix'] = $args['prefix'];

				echo blocksy_display_posts_pagination($args['pagination_args']);
			}
		} else {
			get_template_part('template-parts/content', 'none');
		}
	}
}

