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

/* Jqueryの読み込み(管理画面側のみ) */
function haup_local_avater_script_init() {
	if(!wp_is_mobile()){
	wp_enqueue_script(
		'haup-local-avatar-script',
		plugin_dir_url( __FILE__ ) .'local-user-avatar.js', 
		array('jquery'),
		haup_plugin_version(),
		array( 
			'strategy'  => 'defer',
			'in_footer' => true, // Note: This is the default value.
		)
	);
}
}
add_action( 'admin_enqueue_scripts', 'haup_local_avater_script_init' );

/***** メディアの画像をユーザー画像として使う *****/
/* ユーザープロフィールにカスタムフィールドを追加 */
function haup_add_user_profile_fields($user) {
	$title = __('HAUP Alternate User Image', 'hima-art-utility');
	$label = __('User Image','hima-art-utility');
	$select_button_title = __('Select Image','hima-art-utility');
	$delete_button_title = __('Delete','hima-art-utility');
?>
<div class="ha-admin-profile-pannel-wrapper">
<h2><?php echo esc_html($title); ?></h2>
<table class="user-image-table">
	<tr>
		<th style="text-align:left;">
			<label for="haup_custom_profile_image"><?php echo esc_html($label); ?></label>
		</th>
		<td>
			<input type="text" name="haup_custom_profile_image" id="haup_custom_profile_image" value="<?php echo esc_attr(get_the_author_meta('haup_custom_profile_image', $user->ID)); ?>" size="80" />
			<input type="button" id="haup_custom_profile_upload_image_button" class="button" value="<?php echo esc_html($select_button_title); ?>" />
			<input type="button" id="haup_remove_custom_profile_image_button" class="button" value="<?php echo esc_html($delete_button_title); ?>" style="display: <?php echo esc_attr(get_the_author_meta('haup_custom_profile_image', $user->ID)) ? 'inline-block' : 'none'; ?>;" />
			<?php wp_nonce_field(
				'haup_custom_profile_image_nonce_action',
				'haup_custom_profile_image_nonce'
			); ?>
		</td>
	</tr>
</table>
</div>
<?php
}
add_action('show_user_profile', 'haup_add_user_profile_fields');
add_action('edit_user_profile', 'haup_add_user_profile_fields');

/* プロフィール画像URLを保存 */
function haup_save_custom_user_profile_fields($user_id) {
	// Nonce検証に失敗したら終了
	if (!isset($_POST['haup_custom_profile_image_nonce']) || !wp_verify_nonce(sanitize_text_field( wp_unslash($_POST['haup_custom_profile_image_nonce'])), 'haup_custom_profile_image_nonce_action')) {
        return;
	}

	//プロフィールの編集権限がなければ終了
	if (!current_user_can('edit_user', $user_id)) {
		return false;
	}


	$haup_custom_profile_image = '';

	if(isset( $_POST['haup_custom_profile_image'] )){
		$haup_custom_profile_image = sanitize_text_field(wp_unslash($_POST['haup_custom_profile_image']));
	}

	update_user_meta($user_id, 'haup_custom_profile_image', sanitize_text_field(wp_unslash( $haup_custom_profile_image )));
}
add_action('personal_options_update', 'haup_save_custom_user_profile_fields');
add_action('edit_user_profile_update', 'haup_save_custom_user_profile_fields');

/* ユーザーのプロフィール画像を取得 */
function haup_alt_custom_avatar($avatar, $id_or_email, $size, $default, $alt) {
	// ユーザーIDを取得
	if (is_numeric($id_or_email)) {
		$user_id = (int)$id_or_email; // 数字として扱う
	} else {
		$user_data = get_userdata($id_or_email);
		$user_id = $user_data ? $user_data->ID : null; // ユーザーが存在する場合のみIDを取得
	}

	// ユーザーIDが有効か確認
	if ($user_id) {
		$custom_avatar = get_user_meta($user_id, 'haup_custom_profile_image', true);

		// ユーザー情報を取得
		$user_data = get_userdata($user_id);
		$display_name = $user_data ? $user_data->display_name : ''; // 表示名を取得

		// カスタム画像がセットされていれば取得して置き換え
		if ($custom_avatar) {
			$avatar = '<img src="' . esc_url($custom_avatar) . '" alt="' . esc_attr($display_name) . '" width="' . intval($size) . '" height="' . intval($size) . '" class="avatar avatar-64 photo" />';
		}
	}

	return $avatar;
}
add_filter('get_avatar', 'haup_alt_custom_avatar', 10, 5);

/* メディアアップローダースクリプトが有効になっていなければ追加 */
function haup_enqueue_media_uploader() {
	if (function_exists('wp_enqueue_media')) {
		wp_enqueue_media();
	}
}
add_action('admin_enqueue_scripts', 'haup_enqueue_media_uploader');

/* スクリプトにフォームの文字列を渡す */
function haup_localize_custom_user_profile_fields() {

// ボタン文字列をJavaScriptに渡す
	wp_localize_script('haup-local-avatar-script', 'haup_profile_image_script_vars', array(
		'selectImageText' => __('Select Image', 'hima-art-utility'),
		'removeImageText' => __('Delete', 'hima-art-utility'),
		'profileImageText' => __('Select Image', 'hima-art-utility'),
	));
}
add_action('admin_enqueue_scripts', 'haup_localize_custom_user_profile_fields');