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

function haup_init_editor_panel_js_post_moddate(){
	$script_name = 'haup-panel-js-post-moddate';

	//投稿タイプを「投稿」に指定し、haup_is_single_filterで追加できるようにする
	$posttypes = 'post,page';
	$posttypes = apply_filters('haup_is_single_filter',$posttypes);
	$posttypes = apply_filters('haup_is_single_update_moddate_filter',$posttypes);
	//20250902 explodeだけでは空文字などがあった場合に不具合が出る可能性があるので修正
	$post_types_array = array_map('trim', explode(',', $posttypes));
	$post_types_array = array_filter($post_types_array);

	//設定画面の標準の更新方法を指定
		if(isset(GetOP01_utility()['post-moddate-default'] )){
		$mod_default = GetOP01_utility()['post-moddate-default'];
	}else{
		$mod_default = 'delete';
	}

	wp_enqueue_script(
		$script_name,
		plugin_dir_url( __FILE__ ) .'editor-panel.js',
		[ 'wp-plugins', 'wp-edit-post', 'wp-element', 'wp-components', 'wp-data', 'wp-i18n' ],
		haup_plugin_version(),
		array( 
			'strategy'  => 'defer',
			'in_footer' => true,// Note: This is the default value.
		)
	);

	//スクリプトに渡すための文字列と翻訳可能文字列を紐づけて配列にする
	$localize_val = array(
		'title' => __('Last update date change','hima-art-utility'),
		'label' => __('Select update method','hima-art-utility'),
		'normal'=>__('Update','hima-art-utility'), 
		'postonly'=>__('Not Update','hima-art-utility'),
		'delete'=>__('revert to publish date','hima-art-utility'),
		'default_mode' => $mod_default,
		'post_types' => $post_types_array, //適用させる投稿タイプを配列で渡す
	);

	//wp_localize_scriptを使ってスクリプトへ配列を渡す
	wp_localize_script( $script_name , 'HaupLocalizeTextPostMdate', $localize_val);
}
add_action('enqueue_block_editor_assets','haup_init_editor_panel_js_post_moddate');

/* 「更新」以外は更新日時を変更しない */
/* 20260502 メタパネル用に改修 */
function haup_my_insert_post_data( $data, $postarr ) {
	$post_id = isset($postarr['ID']) ? $postarr['ID'] : 0;

	if (!$post_id) return $data;

	$update_mode = isset($postarr['meta_input']['update_mode']) ? $postarr['meta_input']['update_mode'] : get_post_meta($post_id, 'update_mode', true);
	$last_modified = isset($postarr['meta_input']['last_modified']) ? $postarr['meta_input']['last_modified'] : get_post_meta($post_id, 'last_modified', true);

	// 「更新しない」または「公開日に戻す」の場合
	if ( $update_mode === 'postonly' || $update_mode === 'delete' ) {
		if ( !empty($last_modified) ) {
			// JS側がセットした日付（公開日 or 過去の更新日）を強制適用
			$data['post_modified']     = $last_modified;
			$data['post_modified_gmt'] = get_gmt_from_date( $last_modified );
		}
	}

	return $data;
}
add_filter( 'wp_insert_post_data', 'haup_my_insert_post_data', 99, 2 );