<?php
/**
 * Functions and definitions
 */

if (!function_exists('wisdom1_setup')):
	function wisdom1_setup()
	{
		add_theme_support('automatic-feed-links');
		add_theme_support('title-tag');
		add_theme_support('post-thumbnails');

		register_nav_menus(
			array(
				'menu-1' => esc_html__('Primary', 'wisdom1'),
			)
		);

		add_theme_support(
			'html5',
			array(
				'search-form',
				'comment-form',
				'comment-list',
				'gallery',
				'caption',
				'style',
				'script',
			)
		);
	}
endif;
add_action('after_setup_theme', 'wisdom1_setup');

/**
 * Enqueue scripts and styles.
 */
function wisdom1_scripts()
{
	// Enqueue Bootstrap CSS
	wp_enqueue_style('bootstrap-style', 'https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css', array(), '5.3.3');

	// Enqueue AOS (Animate On Scroll) CSS
	wp_enqueue_style('aos-style', 'https://unpkg.com/aos@2.3.1/dist/aos.css', array(), '2.3.1');

	// Enqueue Theme CSS (depends on Bootstrap so it loads after)
	wp_enqueue_style('wisdom1-style', get_stylesheet_uri(), array('bootstrap-style'), '1.1.0');

	// Enqueue Bootstrap JS Bundle (includes Popper)
	wp_enqueue_script('bootstrap-script', 'https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js', array(), '5.3.3', true);

	// Enqueue AOS Script
	wp_enqueue_script('aos-script', 'https://unpkg.com/aos@2.3.1/dist/aos.js', array(), '2.3.1', true);
}
add_action('wp_enqueue_scripts', 'wisdom1_scripts');

/**
 * Calculate estimated reading time.
 */
function wisdom1_reading_time()
{
	$content = get_post_field('post_content', get_the_ID());
	$word_count = str_word_count(strip_tags($content));
	$reading_time = ceil($word_count / 200); // Average 200 words per minute

	return $reading_time . ' min read';
}

/**
 * Customizer additions.
 */
function wisdom1_customize_register($wp_customize)
{
	// Add Hero Section
	$wp_customize->add_section('wisdom1_hero_section', array(
		'title' => __('Hero Section', 'wisdom1'),
		'priority' => 30,
	));

	// Headline Setting
	$wp_customize->add_setting('hero_headline', array(
		'default' => 'Ancient Wisdom for a Modern World.',
		'sanitize_callback' => 'sanitize_text_field',
	));
	$wp_customize->add_control('hero_headline', array(
		'label' => __('Hero Headline', 'wisdom1'),
		'section' => 'wisdom1_hero_section',
		'type' => 'text',
	));

	// Subheadline Setting
	$wp_customize->add_setting('hero_subheadline', array(
		'default' => 'A collection of biblical insights curated for the thoughtful leader.',
		'sanitize_callback' => 'sanitize_text_field',
	));
	$wp_customize->add_control('hero_subheadline', array(
		'label' => __('Hero Subheadline', 'wisdom1'),
		'section' => 'wisdom1_hero_section',
		'type' => 'textarea',
	));

	// CTA Text Setting
	$wp_customize->add_setting('hero_cta_text', array(
		'default' => 'Start Reading',
		'sanitize_callback' => 'sanitize_text_field',
	));
	$wp_customize->add_control('hero_cta_text', array(
		'label' => __('CTA Button Text', 'wisdom1'),
		'section' => 'wisdom1_hero_section',
		'type' => 'text',
	));

	// Hero Background Image Setting
	$wp_customize->add_setting('hero_background_image', array(
		'default' => get_template_directory_uri() . '/assets/images/hero-default.png',
		'sanitize_callback' => 'esc_url_raw',
	));
	$wp_customize->add_control(new WP_Customize_Image_Control($wp_customize, 'hero_background_image', array(
		'label' => __('Hero Background Image', 'wisdom1'),
		'section' => 'wisdom1_hero_section',
		'settings' => 'hero_background_image',
	)));

	// Add Author Section (Front Page)
	$wp_customize->add_section('wisdom1_author_section', array(
		'title' => __('Author Section (Front Page)', 'wisdom1'),
		'priority' => 32,
	));

	// Enable Author Section
	$wp_customize->add_setting('show_author_section', array(
		'default' => true,
		'sanitize_callback' => 'rest_sanitize_boolean',
	));
	$wp_customize->add_control('show_author_section', array(
		'label' => __('Show Author Section', 'wisdom1'),
		'section' => 'wisdom1_author_section',
		'type' => 'checkbox',
	));

	// Author Name
	$wp_customize->add_setting('author_name', array(
		'default' => 'David Clemetson',
		'sanitize_callback' => 'sanitize_text_field',
	));
	$wp_customize->add_control('author_name', array(
		'label' => __('Author Name', 'wisdom1'),
		'section' => 'wisdom1_author_section',
		'type' => 'text',
	));

	// Author Bio
	$wp_customize->add_setting('author_bio', array(
		'default' => 'Exploring the intersection of faith, leadership, and modern life. Join me on a journey to uncover timeless wisdom.',
		'sanitize_callback' => 'wp_kses_post',
	));
	$wp_customize->add_control('author_bio', array(
		'label' => __('Author Bio', 'wisdom1'),
		'section' => 'wisdom1_author_section',
		'type' => 'textarea',
	));

	// Author Image
	$wp_customize->add_setting('author_image_url', array(
		'default' => '',
		'sanitize_callback' => 'esc_url_raw',
	));
	$wp_customize->add_control(new WP_Customize_Image_Control($wp_customize, 'author_image_url', array(
		'label' => __('Author Image', 'wisdom1'),
		'section' => 'wisdom1_author_section',
	)));

	// Add Newsletter Section
	$wp_customize->add_section('wisdom1_newsletter_section', array(
		'title' => __('Newsletter Section', 'wisdom1'),
		'priority' => 35,
	));

	// Newsletter Headline
	$wp_customize->add_setting('newsletter_headline', array(
		'default' => 'Receive weekly insights directly in your inbox.',
		'sanitize_callback' => 'sanitize_text_field',
	));
	$wp_customize->add_control('newsletter_headline', array(
		'label' => __('Headline', 'wisdom1'),
		'section' => 'wisdom1_newsletter_section',
		'type' => 'text',
	));

	// Newsletter Subheadline
	$wp_customize->add_setting('newsletter_subheadline', array(
		'default' => 'Join our community and get our latest thoughts sent straight to you.',
		'sanitize_callback' => 'sanitize_text_field',
	));
	$wp_customize->add_control('newsletter_subheadline', array(
		'label' => __('Subheadline', 'wisdom1'),
		'section' => 'wisdom1_newsletter_section',
		'type' => 'textarea',
	));

	// Newsletter Button Text
	$wp_customize->add_setting('newsletter_button_text', array(
		'default' => 'Subscribe',
		'sanitize_callback' => 'sanitize_text_field',
	));
	$wp_customize->add_control('newsletter_button_text', array(
		'label' => __('Button Text', 'wisdom1'),
		'section' => 'wisdom1_newsletter_section',
		'type' => 'text',
	));
}
add_action('customize_register', 'wisdom1_customize_register');

/**
 * Register Series Taxonomy
 */
function wisdom1_register_taxonomies()
{
	$labels = array(
		'name' => _x('Series', 'taxonomy general name', 'wisdom1'),
		'singular_name' => _x('Series', 'taxonomy singular name', 'wisdom1'),
		'search_items' => __('Search Series', 'wisdom1'),
		'all_items' => __('All Series', 'wisdom1'),
		'parent_item' => __('Parent Series', 'wisdom1'),
		'parent_item_colon' => __('Parent Series:', 'wisdom1'),
		'edit_item' => __('Edit Series', 'wisdom1'),
		'update_item' => __('Update Series', 'wisdom1'),
		'add_new_item' => __('Add New Series', 'wisdom1'),
		'new_item_name' => __('New Series Name', 'wisdom1'),
		'menu_name' => __('Series', 'wisdom1'),
	);

	$args = array(
		'hierarchical' => true,
		'labels' => $labels,
		'show_ui' => true,
		'show_admin_column' => true,
		'query_var' => true,
		'rewrite' => array('slug' => 'series'),
		'show_in_rest' => true,
	);

	register_taxonomy('series', array('post'), $args);
}
add_action('init', 'wisdom1_register_taxonomies');

/**
 * Menu fallback
 */
function wisdom1_menu_fallback()
{
	echo '<ul id="primary-menu" class="menu">';
	echo '<li><a href="' . esc_url(home_url('/')) . '">Home</a></li>';
	echo '<li><a href="' . esc_url(home_url('/articles/')) . '">Articles</a></li>';
	echo '<li><a href="' . esc_url(home_url('/series/')) . '">Series</a></li>';
	echo '<li><a href="' . esc_url(home_url('/about/')) . '">About</a></li>';
	echo '</ul>';
}

/**
 * Filter the archive title to remove prefixes
 */
add_filter('get_the_archive_title', function ($title) {
	if (is_category()) {
		$title = single_cat_title('', false);
	} elseif (is_tag()) {
		$title = single_tag_title('', false);
	} elseif (is_author()) {
		$title = '<span class="vcard">' . get_the_author() . '</span>';
	} elseif (is_post_type_archive()) {
		$title = post_type_archive_title('', false);
	} elseif (is_tax()) {
		$title = single_term_title('', false);
	}
	return $title;
});
