<?php
/**
 * Primer functions and definitions.
 *
 * @package Functions
 * @since   1.0.0
 */

define( 'PRIMER_VERSION', '1.8.9' );

if ( ! defined( 'PRIMER_MIN_WP_VERSION' ) ) {
	define( 'PRIMER_MIN_WP_VERSION', '4.4' );
}

if ( ! defined( 'PRIMER_CHILD_VERSION' ) ) {
	define( 'PRIMER_CHILD_VERSION', '' );
}

if ( version_compare( get_bloginfo( 'version' ), PRIMER_MIN_WP_VERSION, '<' ) ) {
	require_once get_template_directory() . '/inc/compat/wordpress.php';
}

require_once get_template_directory() . '/inc/compat/deprecated.php';
require_once get_template_directory() . '/inc/compat/child-themes.php';
require_once get_template_directory() . '/inc/helpers.php';
require_once get_template_directory() . '/inc/template-tags.php';
require_once get_template_directory() . '/inc/hooks.php';

if ( class_exists( 'FLBuilder' ) ) {
	require_once get_template_directory() . '/inc/compat/beaver-builder.php';
}

require_once get_template_directory() . '/inc/compat/gutenberg.php';

if ( class_exists( 'Jetpack' ) ) {
	require_once get_template_directory() . '/inc/compat/jetpack.php';
}

if ( class_exists( 'WooCommerce' ) ) {
	require_once get_template_directory() . '/inc/compat/woocommerce.php';
}

require_once get_template_directory() . '/inc/customizer.php';

function primer_setup() {
	global $primer_image_sizes;

	$primer_image_sizes = (array) apply_filters(
		'primer_image_sizes',
		array(
			'primer-featured' => array(
				'width'  => 1600,
				'height' => 9999,
				'crop'   => false,
				'label'  => esc_html__( 'Featured', 'primer' ),
			),
			'primer-hero' => array(
				'width'  => 2400,
				'height' => 1300,
				'crop'   => array( 'center', 'center' ),
				'label'  => esc_html__( 'Hero', 'primer' ),
			),
		)
	);

	foreach ( $primer_image_sizes as $name => &$args ) {
		if ( empty( $name ) || empty( $args['width'] ) || empty( $args['height'] ) ) {
			unset( $primer_image_sizes[ $name ] );
			continue;
		}
		$args['crop']  = ! empty( $args['crop'] ) ? $args['crop'] : false;
		$args['label'] = ! empty( $args['label'] ) ? $args['label'] : ucwords( str_replace( array( '-', '_' ), ' ', $name ) );

		add_image_size( sanitize_key( $name ), absint( $args['width'] ), absint( $args['height'] ), $args['crop'] );
	}

	if ( $primer_image_sizes ) {
		add_filter( 'image_size_names_choose', 'primer_image_size_names_choose' );
	}

	add_theme_support( 'automatic-feed-links' );
	add_theme_support( 'title-tag' );
	add_theme_support( 'post-thumbnails' );
	add_theme_support( 'customize-selective-refresh-widgets' );

	register_nav_menus( apply_filters(
		'primer_nav_menus',
		array(
			'primary' => esc_html__( 'Primary Menu', 'primer' ),
			'social'  => esc_html__( 'Social Menu', 'primer' ),
			'footer'  => esc_html__( 'Footer Menu', 'primer' ),
		)
	) );

	add_theme_support( 'html5', array(
		'search-form',
		'comment-form',
		'comment-list',
		'gallery',
		'caption',
	) );

	add_theme_support( 'post-formats', array(
		'aside',
		'image',
		'video',
		'quote',
		'link',
	) );

	if ( defined( 'AMP__VERSION' ) && version_compare( strtok( AMP__VERSION, '-' ), '1.2', '>=' ) ) {
		add_theme_support( 'amp', array( 'paired' => true ) );
	}
}
add_action( 'after_setup_theme', 'primer_setup' );

function primer_image_size_names_choose( $size_names ) {
	global $primer_image_sizes;
	$labels = array_combine(
		array_keys( $primer_image_sizes ),
		wp_list_pluck( $primer_image_sizes, 'label' )
	);
	return array_merge( $size_names, $labels );
}

function primer_content_width() {
	$layout = primer_get_layout();
	$content_width = ( 'one-column-wide' === $layout ) ? 1068 : 688;
	$GLOBALS['content_width'] = (int) apply_filters( 'primer_content_width', $content_width, $layout );
}
add_action( 'after_setup_theme', 'primer_content_width', 0 );

function primer_classic_editor_styles() {
	if ( ! function_exists( 'register_block_type' ) ) return;
	if ( ! get_current_screen()->is_block_editor() ) {
		add_editor_style( 'editor-style.css' );
	}
}
add_action( 'admin_print_styles', 'primer_classic_editor_styles', 10, 0 );

function primer_register_sidebars() {
	$sidebars = apply_filters(
		'primer_sidebars',
		array(
			'sidebar-1' => array(
				'name'        => esc_html__( 'Sidebar', 'primer' ),
				'description' => esc_html__( 'Primary sidebar for pages and posts.', 'primer' ),
				'before_widget' => '<aside id="%1$s" class="widget %2$s">',
				'after_widget'  => '</aside>',
				'before_title'  => '<h4 class="widget-title">',
				'after_title'   => '</h4>',
			),
			'footer-1' => array(
				'name'        => esc_html__( 'Footer 1', 'primer' ),
				'description' => esc_html__( 'First footer widget area.', 'primer' ),
				'before_widget' => '<aside id="%1$s" class="widget %2$s">',
				'after_widget'  => '</aside>',
				'before_title'  => '<h4 class="widget-title">',
				'after_title'   => '</h4>',
			),
		)
	);

	foreach ( $sidebars as $id => $args ) {
		register_sidebar( array_merge( array( 'id' => $id ), $args ) );
	}
}
add_action( 'widgets_init', 'primer_register_sidebars' );

function primer_register_widgets() {
	require_once get_template_directory() . '/inc/hero-text-widget.php';
	register_widget( 'Primer_Hero_Text_Widget' );
}
add_action( 'widgets_init', 'primer_register_widgets' );

/**
 * ✅ UPDATED FUNCTION to ensure navigation works on all pages
 */
function primer_scripts() {
	$stylesheet = get_stylesheet();
	$suffix     = SCRIPT_DEBUG ? '' : '.min';

	wp_enqueue_style( $stylesheet, get_stylesheet_uri(), false, defined( 'PRIMER_CHILD_VERSION' ) ? PRIMER_CHILD_VERSION : PRIMER_VERSION );
	wp_style_add_data( $stylesheet, 'rtl', 'replace' );

	$nav_dependencies = array( 'jquery' );
	if ( function_exists( 'has_header_video' ) && has_header_video() ) {
		$nav_dependencies[] = 'wp-custom-header';
	}

	if ( ! primer_is_amp() ) {
		wp_enqueue_script(
			'primer-navigation',
			get_template_directory_uri() . "/assets/js/navigation{$suffix}.js",
			$nav_dependencies,
			PRIMER_VERSION,
			true
		);
	}

	if ( is_singular() && comments_open() && get_option( 'thread_comments' ) && ! primer_is_amp() ) {
		wp_enqueue_script( 'comment-reply' );
	}

	if ( primer_has_hero_image() ) {
		$css = sprintf(
			SCRIPT_DEBUG ? '%s { background-image: url(%s); }' : '%s{background-image:url(%s);}',
			primer_get_hero_image_selector(),
			esc_url( primer_get_hero_image() )
		);
		wp_add_inline_style( $stylesheet, $css );
	}
}
add_action( 'wp_enqueue_scripts', 'primer_scripts' );

function primer_skip_link_focus_fix() {
	if ( primer_is_amp() ) return;
	?>
	<script>
	/(trident|msie)/i.test(navigator.userAgent)&&document.getElementById&&window.addEventListener&&window.addEventListener("hashchange",function(){var t,e=location.hash.substring(1);/^[A-z0-9_-]+$/.test(e)&&(t=document.getElementById(e))&&(/^(?:a|select|input|button|textarea)$/i.test(t.tagName)||(t.tabIndex=-1),t.focus())},!1);
	</script>
	<?php
}
add_action( 'wp_print_footer_scripts', 'primer_skip_link_focus_fix' );

function primer_setup_author() {
	global $wp_query, $authordata;
	if ( $wp_query->is_author() && isset( $wp_query->post ) ) {
		$authordata = get_userdata( $wp_query->post->post_author );
	}
}
add_action( 'wp', 'primer_setup_author' );

function primer_has_active_categories_reset() {
	delete_transient( 'primer_has_active_categories' );
}
add_action( 'create_category', 'primer_has_active_categories_reset' );
add_action( 'edit_category', 'primer_has_active_categories_reset' );
add_action( 'delete_category', 'primer_has_active_categories_reset' );
add_action( 'save_post', 'primer_has_active_categories_reset' );

/**
 * ✅ FIX for WP 6.7.x Translation Loading Notice
 */
function primer_load_textdomain_safe() {
	load_theme_textdomain( 'primer', get_template_directory() . '/languages' );
}
add_action( 'init', 'primer_load_textdomain_safe' );
