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

function haumenu_sanitize_media_frontend($value){
	$value = (array) $value;
	$original_value = get_option('hautility-option-03-media'); // 元の値を保持

	/*** メディアページへの直アクセスをトップページへリダイレクト ***/
	/* チェックボックス（存在するかどうか） */
	if ( isset( $value['disable-media-file-access'] ) && $value['disable-media-file-access'] === '1' ) {
		$value['disable-media-file-access'] = '1'; // 明示的に '1' を設定
	} else {
		$value['disable-media-file-access'] = ''; // チェックされていない場合は空文字を設定
	}

	/*** メディアページをnoindexにする ***/
	/* チェックボックス（存在するかどうか） */
	if ( isset( $value['media-page-noindex'] ) && $value['media-page-noindex'] === '1' ) {
		$value['media-page-noindex'] = '1'; // 明示的に '1' を設定
	} else {
		$value['media-page-noindex'] = ''; // チェックされていない場合は空文字を設定
	}

	/*** 動画ブロックのダウンロードを無効にする ***/
	/* チェックボックス（存在するかどうか） */
	if ( isset( $value['disable-video-download'] ) && $value['disable-video-download'] === '1' ) {
		$value['disable-video-download'] = '1'; // 明示的に '1' を設定
	} else {
		$value['disable-video-download'] = ''; // チェックされていない場合は空文字を設定
	}
	
	/*** ギャラリーブロック設定の有効化 ***/
	/* チェックボックス（存在するかどうか） */
	if ( isset( $value['enable-gallery-setting'] ) && $value['enable-gallery-setting'] === '1' ) {
		$value['enable-gallery-setting'] = '1'; // 明示的に '1' を設定
	} else {
		$value['enable-gallery-setting'] = ''; // チェックされていない場合は空文字を設定
	}

	/*** スライド式ライトボックスを有効にする ***/
	/* チェックボックス（存在するかどうか） */
	if ( isset( $value['enable-lightbox-slide'] ) && $value['enable-lightbox-slide'] === '1' ) {
		$value['enable-lightbox-slide'] = '1'; // 明示的に '1' を設定
	} else {
		$value['enable-lightbox-slide'] = ''; // チェックされていない場合は空文字を設定
	}


	/*** スライド式ライトボックスの自動再生を有効にする ***/
	/* チェックボックス（存在するかどうか） */
	if ( isset( $value['enable-lightbox-auto-play'] ) && $value['enable-lightbox-auto-play'] === '1' ) {
		$value['enable-lightbox-auto-play'] = '1'; // 明示的に '1' を設定
	} else {
		$value['enable-lightbox-auto-play'] = ''; // チェックされていない場合は空文字を設定
	}

/*** 自動再生を無効にするページIDのリスト（textarea） ***/
	if ( isset( $value['disable-lightbox-auto-play-page-id'] ) ) {
		// 1. 全角数字を半角に変換、全角スペースを半角に
		$ids = mb_convert_kana( $value['disable-lightbox-auto-play-page-id'], 'as' );
        
		// 2. 数値、改行、カンマ以外の余計な文字を削除（セキュリティ強化）
		$ids = preg_replace( '/[^0-9\n\r, ]/', '', $ids );
        
		// 3. 後の処理がしやすいよう、整形して保存
		$value['disable-lightbox-auto-play-page-id'] = trim( $ids );
	} else {
		$value['disable-lightbox-auto-play-page-id'] = '';
	}

	/*** 表示間隔 ***/
	/* テキストフィールド（文字列） */
	if ( isset( $value['delay-time'] ) && is_string( $value['delay-time'] ) ) {
		$value['delay-time'] = sanitize_text_field( $value['delay-time'] ); // サニタイズ
	} else {
		if ( isset( $original_value['delay-time'] ) ) {
			$value['delay-time'] = $original_value['delay-time']; // 元の値を保持
		} else {
			$value['delay-time'] = '';
		}
	}

	/*** ギャラリーへ挿入する画像のサイズ ***/
	/* セレクトボックス */
	if ( isset( $value['image-size-in-gallery'] ) ) {
		//選択肢に合わせてarrayの中身を変更
		if ( in_array( (string) $value['image-size-in-gallery'], array( '1', '2', '3','4' ), true ) ) {
			$value['image-size-in-gallery'] = intval( $value['image-size-in-gallery'] ); // 数値として保存する場合
		} else {
			// エラーメッセージの追加を削除
			$value['image-size-in-gallery'] = isset( $original_value['image-size-in-gallery'] ) ? $original_value['image-size-in-gallery'] : ''; // 元の値を保持
		}
	} else {
		$value['image-size-in-gallery'] = '1';
	}

	/*** ギャラリーの列数 ***/
	/* テキストフィールド（文字列） */
	if ( isset( $value['gallery-columns'] ) && is_string( $value['gallery-columns'] ) ) {
		$value['gallery-columns'] = sanitize_text_field( $value['gallery-columns'] ); // サニタイズ
	} else {
		if ( isset( $original_value['gallery-columns'] ) ) {
			$value['gallery-columns'] = $original_value['gallery-columns']; // 元の値を保持
		} else {
			$value['gallery-columns'] = '';
		}
	}

	/*** 画像ブロック設定の有効化 ***/
	/* チェックボックス（存在するかどうか） */
	if ( isset( $value['enable-image-block-setting'] ) && $value['enable-image-block-setting'] === '1' ) {
		$value['enable-image-block-setting'] = '1'; // 明示的に '1' を設定
	} else {
		$value['enable-image-block-setting'] = ''; // チェックされていない場合は空文字を設定
	}

	/*** 挿入する画像の位置 ***/
	/* セレクトボックス */
	if ( isset( $value['set-image-align'] ) ) {
		//選択肢に合わせてarrayの中身を変更
		if ( in_array( (string) $value['set-image-align'], array( '1', '2', '3' ), true ) ) {
			$value['set-image-align'] = intval( $value['set-image-align'] ); // 数値として保存する場合
		} else {
			// エラーメッセージの追加を削除
			$value['set-image-align'] = isset( $original_value['set-image-align'] ) ? $original_value['set-image-align'] : ''; // 元の値を保持
		}
	} else {
		$value['set-image-align'] = '1';
	}

	/*** 挿入する画像の大きさ ***/
	/* セレクトボックス */
	if ( isset( $value['set-image-size'] ) ) {
		//選択肢に合わせてarrayの中身を変更
		if ( in_array( (string) $value['set-image-size'], array( '1', '2', '3', '4' ), true ) ) {
			$value['set-image-size'] = intval( $value['set-image-size'] ); // 数値として保存する場合
		} else {
			// エラーメッセージの追加を削除
			$value['set-image-size'] = isset( $original_value['set-image-size'] ) ? $original_value['set-image-size'] : ''; // 元の値を保持
		}
	} else {
		$value['set-image-size'] = '1';
	}

	/*** ライトボックスを有効にする ***/
	/* チェックボックス（存在するかどうか） */
	if ( isset( $value['auto-set-image-block-lightbox'] ) && $value['auto-set-image-block-lightbox'] === '1' ) {
		$value['auto-set-image-block-lightbox'] = '1'; // 明示的に '1' を設定
	} else {
		$value['auto-set-image-block-lightbox'] = ''; // チェックされていない場合は空文字を設定
	}

	/* ---------- ここまでに項目ごとの記述をする ---------- */
	return $value;//値を返す
}