<?php
/**
 * PufferGo Header Data — 所有 header 模板的数据入口。
 *
 * 将 puffergo_get_header_context() 返回的关联数组映射为强类型公共属性，
 * header 模板只通过 $data 访问数据，不直接调用 WordPress API。
 *
 * @package PufferGo
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

class PufferGo_Header_Data {

	/** @var array 菜单项 */
	public $menu_items = array();

	/** @var bool 是否有菜单 */
	public $has_menu = false;

	/** @var int 当前页面 ID */
	public $current_page_id = 0;

	/** @var string 首页 URL */
	public $home_url = '';

	/** @var callable 判断菜单项是否为当前页 */
	public $is_current;

	/** @var string 导航对齐方式 left/center/right */
	public $nav_align = 'right';

	/** @var string 导航对齐 CSS 类 */
	public $nav_align_class = '';

	/** @var string 左侧弹性占位 CSS 类 */
	public $spacer_left_class = '';

	/** @var string 右侧弹性占位 CSS 类 */
	public $spacer_right_class = '';

	/** @var string 站点名称 */
	public $site_name = '';

	/** @var string 站点描述 */
	public $site_description = '';

	/** @var int Logo 附件 ID */
	public $logo_id = 0;

	/** @var string Logo URL */
	public $logo_url = '';

	/** @var string Logo alt 文本 */
	public $logo_alt = '';

	/** @var string 品牌名称 */
	public $brand_name = '';

	/** @var bool 是否显示 header 样式选择器（编辑模式） */
	public $show_header_style_selector = false;

	/** @var string 当前选中的 footer 模板 ID */
	public $current_footer_template = '';

	/**
	 * 从当前页面请求构建 Header 数据。
	 *
	 * @return self
	 */
	public static function from_current_page() {
		return new self();
	}

	/**
	 * 构造函数：委托给 puffergo_get_header_context() 获取数据并映射属性。
	 */
	public function __construct() {
		$ctx = puffergo_get_header_context( array(
			'with_nav_align'     => true,
			'with_site_identity' => true,
			'with_fullpage_ui'   => true,
		) );

		// 核心字段
		$this->menu_items      = $ctx['menu_items'] ?? array();
		$this->has_menu        = $ctx['has_menu'] ?? false;
		$this->current_page_id = $ctx['current_page_id'] ?? 0;
		$this->home_url        = $ctx['home_url'] ?? '';
		$this->is_current      = $ctx['is_current'] ?? '__return_false';

		// 导航对齐
		$this->nav_align         = $ctx['nav_align'] ?? 'right';
		$this->nav_align_class   = $ctx['nav_align_class'] ?? '';
		$this->spacer_left_class = $ctx['spacer_left_class'] ?? '';
		$this->spacer_right_class = $ctx['spacer_right_class'] ?? '';

		// 站点标识
		$this->site_name        = $ctx['site_name'] ?? '';
		$this->site_description = $ctx['site_description'] ?? '';
		$this->logo_id          = $ctx['logo_id'] ?? 0;
		$this->logo_url         = $ctx['logo_url'] ?? '';
		$this->logo_alt         = $ctx['logo_alt'] ?? '';
		$this->brand_name       = $ctx['brand_name'] ?? '';

		// 编辑模式 UI
		$this->show_header_style_selector = $ctx['show_header_style_selector'] ?? false;
		$this->current_footer_template    = $ctx['current_footer_template'] ?? '';
	}
}
