<?php if ( !defined( 'ABSPATH' ) ) exit;//PHPの宣言と直接アクセスの拒否

/***** ブロックテーマのグローバルスタイルから値を取得 *****/
function haup_get_custom_global_styles_raw() {
	// DBから「そのテーマのグローバルスタイル」の投稿を取得
	$args = array(
		'post_type'      => 'wp_global_styles',
		'post_status'    => 'publish',
		'posts_per_page' => 1,
		'tax_query'      => array(
		array(
			'taxonomy' => 'wp_theme',
			'field'    => 'slug',
			'terms'    => get_stylesheet(), // 現在のテーマ（子テーマ含む）
		),
	),
);

	$styles_post = get_posts($args);

	if ( ! empty($styles_post) ) {
		// post_content に保存されている JSON をデコードして配列にする
		$decoded_data = json_decode($styles_post[0]->post_content, true);
		return $decoded_data;
	}

	return array();
}

/*** ログイン画面・管理画面用のカスタムCSS変数を出力 ***/
function pwcn_add_css_custom_properties_for_admin_screen( $settings ) {
	/* 各オプション値を変数化 */
	 $option = GetOP06_utility();

	/*  DBからグローバルスタイルの情報を取得 */
	$raw_data = haup_get_custom_global_styles_raw(); 

	/*** 背景画像 ***/
	 $bg_image_url = ''; //設定の初期化（PHP8.0対策）

	//ブロックテーマのサイトエディターで指定した背景画像のURL
	$block_image_url = '';
	if ( isset( $raw_data['styles']['background']['backgroundImage']['url'] ) ) {
		$block_image_url = $raw_data['styles']['background']['backgroundImage']['url'];
	}

	// クラシックテーマのテーマカスタマイザーで指定した背景画像のURL
	$classic_image_url = get_background_image();

	if(!empty($option['login-bg-image'] )){
		$bg_image_url = $option['login-bg-image'];
	}else if(!empty( $block_image_url )){
		$bg_image_url = $block_image_url;
	}else if(!empty( $classic_image_url )){
		$bg_image_url = $classic_image_url;
	}else{
		$bg_image_url = '';
	}

	/*** 全体の背景色 ***/
	 $bg_color = ''; //設定の初期化（PHP8.0対策）

	//ブロックテーマのサイトエディターで指定した背景色
	$block_bg_color = '';
    
	if ( isset( $raw_data['styles']['color']['background'] ) ) {
		$block_bg_color = $raw_data['styles']['color']['background'];
	}

	// クラシックテーマのテーマカスタマイザーで指定した背景色
	$classic_bg_color = get_background_color();

	if(!empty($option['login-screen-bg-color'] )){
		$bg_color = $option['login-screen-bg-color'];
	}else if(!empty( $block_bg_color )){
		$bg_color = $block_bg_color;
	}else if(!empty( $classic_bg_color )){
		$bg_color = '#' .$classic_bg_color;
	}else{
		$bg_color = 'inherit';
	}

	/*** フォームの背景色 ***/
	$form_bg_color = ''; //設定の初期化（PHP8.0対策）
	if(!empty($option['login-form-bg-color'] )){
		$form_bg_color = $option['login-form-bg-color'];
	}else{
		$form_bg_color = 'inherit';
	}

	/*** フォーム内の文字色 ***/
	$form_text_color = ''; //設定の初期化（PHP8.0対策）
	if(!empty($option['login-form-text-color'] )){
		$form_text_color = $option['login-form-text-color'];
	}else{
		$form_text_color = 'inherit';
	}

	/*** 欄外の文字色 ***/
	$form_outside_text_color = ''; //設定の初期化（PHP8.0対策）
	if(!empty($option['login-panel-text-color'] )){
		$form_outside_text_color = $option['login-panel-text-color'];
	}else{
		$form_outside_text_color = 'inherit';
	}

	/*** 送信ボタンの文字色 ***/
	$submit_button_text_color = ''; //設定の初期化（PHP8.0対策）
	if(!empty($option['login-submit-button-text-color'] )){
		$submit_button_text_color = $option['login-submit-button-text-color'];
	}else{
		$submit_button_text_color = 'inherit';
	}

	/*** 送信ボタンのボタン色 ***/
	$submit_button_color = ''; //設定の初期化（PHP8.0対策）
	if(!empty($option['login-submit-button-bg-color'] )){
		$submit_button_color = $option['login-submit-button-bg-color'];
	}else{
		$submit_button_color = 'inherit';
	}

	/*** ロゴ画像 ***/
	 $login_logo_image_url = ''; //設定の初期化（PHP8.0対策）
	if(!empty($option['login-logo-image'] )){
		$login_logo_image_url = $option['login-logo-image'];
	}else{
		$login_logo_image_url = '';
	}

	//追加する設定値
	$new_settings = array(
		'color' => array(
			//'brand-blue' => '#0056b3',
			'login-bg-color' => $bg_color, //全体の背景色
			'login-form-bg-color' => $form_bg_color, //フォームの背景色
			'login-form-outside-text-color' => $form_outside_text_color, //欄外の文字色
			'login-form-text-color' => $form_text_color, //フォーム内の文字色
			'login-form-submit-text-color' => $submit_button_text_color, //送信ボタンの文字色
			'login-form-submit-button-color' => $submit_button_color, //送信ボタンのボタン色
			
		),
		'image' => array(
			'login-bg-image' => 'url("'.$bg_image_url.'")', //背景画像のURL
			'login-logo-image' => 'url("'.$login_logo_image_url .'")', //ロゴ画像
		),
		'layout' => array(
			//'header-height' => '80px',
		)
	);

	// 既存の設定と新しい設定でキーが重複した場合、後から追加されたものが優先されます。
	return array_merge_recursive( $settings, $new_settings );
}
add_filter( 'haup_custom_css_preset_values_filter', 'pwcn_add_css_custom_properties_for_admin_screen' );

/***** 特定のページだけ管理画面のスタイルを適用する *****/
/*** $hook_suffixを調べたい時に有効化 ***/
//add_action('admin_notices', 'current_pagehook');


/***** スタイルのエンキュー *****/
/*** ログイン画面用 ***/
function haup_enqueue_styles_login_screen(){
	//設定を適用するスイッチが無効なら終了
	$option = GetOP06_utility()['define-login-setting'];

	if ( empty($option) ) {
		return;
	}

		wp_enqueue_style(
		'haup-login-screen-style',
		plugin_dir_url( __FILE__ ) .'style-login.css',
		array(),
		haup_plugin_version()
	);
}
add_action( 'login_enqueue_scripts', 'haup_enqueue_styles_login_screen' );


function haup_enqueue_styles_only_common_pages( $hook ) {
	// 許可する画面のリスト
	$allowed_hooks = array(
		'index.php',          // ダッシュボード
		'edit.php',           // 一覧（投稿、固定ページ、カスタム投稿、パターン）
		//'post.php',           // 編集画面
		//'post-new.php',       // 新規投稿画面
		'edit-comments.php', //コメント一覧
		'upload.php',         // メディアライブラリ
		'media-new.php', //メディアの追加
		'users.php', //ユーザー一覧
		'profile.php', //ユーザープロフィール
		'user-edit.php', //プロフィール編集（他者のプロフィールを編集）
		'user-new.php', //ユーザー追加
		'plugins.php', //プラグイン一覧
		'themes.php' //テーマ一覧
		//'options-general.php', // 一般設定
		//'options-writing.php', //投稿設定
		//'options-reading.php', //表示設定
		//'options-discussion.php' //ディスカッション設定
	);

	//適用するページを変更するフィルター（すべて上書きするよう後からフィルターを追加している）
	$allowed_hooks = apply_filters('haup_login_style_with_admin_hooks_override', $allowed_hooks );

	// 配列であることを保証する（フィルターのリスト記述に不備があった場合の対処）
	$allowed_hooks = is_array( $allowed_hooks ) ? $allowed_hooks : array();

	// リストに含まれない画面、またはプラグイン独自画面 ($plugin_page) なら終了
	global $plugin_page;
	if ( ! empty( $plugin_page ) || ! in_array( $hook, $allowed_hooks, true ) ) {
		return;
	}

	//ログイン画面と同じにするスイッチが無効なら終了
	$option = GetOP06_utility()['admin-style-same-as-login'];
	$same_option = GetOP06_utility()['define-login-setting'];

	if ( empty($option) || empty($same_option) ) {
		return;
	}

	wp_enqueue_style(
		'haup-login-screen-with-admin-style',
		plugin_dir_url( __FILE__ ) .'style-admin.css',
		array(),
		haup_plugin_version()
	);
}
add_action( 'admin_enqueue_scripts', 'haup_enqueue_styles_only_common_pages' );