<?php

/**
 * The template for displaying related content on single episode page
 *
 * This template can be overridden by copying it to yourtheme/movie-engine/single-episode/section-related.php.
 *
 * HOWEVER, on occasion MovieEngine will need to update template files and you
 * (the theme developer) will need to copy the new files to your theme to
 * maintain compatibility. We try to do this as little as possible, but it does
 * happen. When this occurs the version of the template file will be bumped and
 * the readme will list any important changes.
 *
 * @note Please do not delete our CSS classes when you customize, as it may break functionality.
 * @package Movie_Engine
 * @subpackage Movie_Engine/templates
 * @version 1.0.0
 * @since 1.0.0
 */
if (! defined("ABSPATH")) {
    exit; // Exit if accessed directly
}

$movie_engine_design_options = get_option('movie_engine_design_settings', []);
$movie_engine_show_related = isset($movie_engine_design_options['episode_show_related']) ? $movie_engine_design_options['episode_show_related'] : 1;

if (!$movie_engine_show_related) {
    return;
}

$movie_engine_related_title = $movie_engine_design_options['episode_related_title'] ?? esc_html__('Related TV Series', 'cine-movie-engine');
$movie_engine_related_count = isset($movie_engine_design_options['episode_related_count']) ? intval($movie_engine_design_options['episode_related_count']) : 6;

$movie_engine_series_id = get_post_meta(get_the_ID(), '_movie_engine_series_id', true);
$movie_engine_genres = wp_get_post_terms($movie_engine_series_id, 'movie_engine_genre', ['fields' => 'ids']);

$movie_engine_related_query_args = [
    'post_type'      => 'movie_engine_series',
    'posts_per_page' => $movie_engine_related_count,
    // phpcs:ignore WordPressVIPMinimum.Performance.WPQueryParams.PostNotIn_post__not_in
    'post__not_in'   => [$movie_engine_series_id],
];

if (!is_wp_error($movie_engine_genres) && !empty($movie_engine_genres)) {
    // phpcs:ignore WordPress.DB.SlowDBQuery
    $movie_engine_related_query_args['tax_query'] = [
        [
            'taxonomy' => 'movie_engine_genre',
            'field'    => 'id',
            'terms'    => $movie_engine_genres,
        ],
    ];
}

$movie_engine_related_query = new WP_Query($movie_engine_related_query_args);

if ($movie_engine_related_query->have_posts()) :
    $movie_engine_related_columns = isset($movie_engine_design_options['episode_related_columns']) ? intval($movie_engine_design_options['episode_related_columns']) : 6;
    $movie_engine_related_columns_laptop = isset($movie_engine_design_options['episode_related_columns_laptop']) ? intval($movie_engine_design_options['episode_related_columns_laptop']) : 5;
    $movie_engine_related_columns_tablet = isset($movie_engine_design_options['episode_related_columns_tablet']) ? intval($movie_engine_design_options['episode_related_columns_tablet']) : 4;
    $movie_engine_related_columns_mobile = isset($movie_engine_design_options['episode_related_columns_mobile']) ? intval($movie_engine_design_options['episode_related_columns_mobile']) : 2;
    $movie_engine_related_slider = isset($movie_engine_design_options['episode_related_slider']) ? $movie_engine_design_options['episode_related_slider'] : 1;
    $movie_engine_slider_class = $movie_engine_related_slider ? 'movie-engine-slider-enabled' : '';
?>
    <section class="movie-engine-section movie-engine-related-section <?php echo esc_attr($movie_engine_slider_class); ?>"
        style="--grid-columns: <?php echo esc_attr($movie_engine_related_columns); ?>; --grid-columns-laptop: <?php echo esc_attr($movie_engine_related_columns_laptop); ?>; --grid-columns-tablet: <?php echo esc_attr($movie_engine_related_columns_tablet); ?>; --grid-columns-mobile: <?php echo esc_attr($movie_engine_related_columns_mobile); ?>;">
        <div class="movie-engine-section-title me-section-header">
            <h2><?php echo esc_html($movie_engine_related_title); ?></h2>
        </div>
        <div class="movie-engine-items-grid">
            <?php
            while ($movie_engine_related_query->have_posts()) :
                $movie_engine_related_query->the_post();
                \MovieEngine\Utils\TemplateLoader::get_template_part('loop/content-movie');
            endwhile;
            wp_reset_postdata();
            ?>
        </div>
    </section>
    <?php

    /**
     * Hooks for ad after related content
     * 
     * @hooked MovieEngine\Frontend\TemplateHooks::render_ad_after_content - 10
     */
    do_action('movie_engine_ad_after_content'); ?>
<?php endif; ?>