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

/* プラグインの設定を変更して更新するたびにスタイルのキャッシュをクリアする */
/* optionに保存する設定名を変更したら「監視対象のオプション名リスト」の値を変更すること */

/*** 特定のオプション更新時に削除処理を紐付ける ***/
function haup_auto_clear_cache_purger_for_changes_options() {
	// 監視対象のオプション名リスト
	$target_options = [
		'hautility-option-01-optimize',
		'hautility-option-02-optimize',
		'hautility-option-03-optimize',
		'hautility-option-04-optimize',
		'hautility-option-05-optimize',
		
		'hautility-option-01-ana-ad',
		'hautility-option-02-ana-ad',
		'hautility-option-03-ana-ad',
		'hautility-option-04-ana-ad',
		'hautility-option-05-ana-ad',
		
		'hautility-option-01-security',
		'hautility-option-02-security',
		'hautility-option-03-security',
		'hautility-option-04-security',
		
		'hautility-option-01-utility',
		'hautility-option-02-utility',
		'hautility-option-03-utility',
		'hautility-option-04-utility',
		'hautility-option-05-utility',
		'hautility-option-06-utility',
		'hautility-option-08-utility',
		
		'hautility-option-01-addcontent',
		'hautility-option-02-addcontent',
		'hautility-option-03-addcontent',
		'hautility-option-04-addcontent',
		'hautility-option-05-addcontent',
		'hautility-option-06-addcontent',
		'hautility-option-07-addcontent',
		'hautility-option-08-addcontent',
		'hautility-option-09-addcontent',
		'hautility-option-10-addcontent',
		'hautility-option-11-addcontent',
		'hautility-option-12-addcontent',
		
		'hautility-option-01-blocktheme',
		'hautility-option-02-blocktheme',
		'hautility-option-03-blocktheme',
		
		'hautility-option-01-blockoption',
		'hautility-option-02-blockoption',
		'hautility-option-03-blockoption',
		'hautility-option-04-blockoption',
		'hautility-option-05-blockoption',
	];

	foreach ( $target_options as $option_name ) {
		// 値が更新された時（update_option実行時）に発火
		add_action( "update_option_{$option_name}", 'haup_plugin_clear_all_style_cache_files', 10, 0 );
        
		// 値が新規作成された時（初めて保存された時）にも発火
		add_action( "add_option_{$option_name}", 'haup_plugin_clear_all_style_cache_files', 10, 0 );
	}
}
add_action( 'admin_init', 'haup_auto_clear_cache_purger_for_changes_options' );

/*** キャッシュファイルの削除処理 ***/
function haup_plugin_clear_all_style_cache_files() {
	// キャッシュディレクトリのフルパス
	$cache_dir = HAUP_PLUGIN_CACHE_DIR;

	// ディレクトリが存在しない場合は何もしない
	if ( ! is_dir( $cache_dir ) ) {
		return;
	}

	// WP_Filesystemの準備
	global $wp_filesystem;

	if ( empty( $wp_filesystem ) ) {
		require_once( ABSPATH . 'wp-admin/includes/file.php' );
		WP_Filesystem( false, false, true );
	}

	if ( is_object( $wp_filesystem ) ) {
		// ディレクトリ内のファイル一覧を取得
		$file_list = $wp_filesystem->dirlist( $cache_dir );

		if ( ! empty( $file_list ) ) {
			foreach ( $file_list as $file_name => $details ) {
				// ファイルを一つずつ削除
				$wp_filesystem->delete( $cache_dir . $file_name );
			}
		}
	}
}