@charset "UTF-8";
/*
    Template: swell
    Theme Name: SWELL CHILD
    Theme URI: https://swell-theme.com/
    Description: SWELLの子テーマ
    Version: 1.0.0
    Author: LOOS WEB STUDIO
    Author URI: https://loos-web-studio.com/

    License: GNU General Public License
    License URI: http://www.gnu.org/licenses/gpl.html
*/

/**
 * iesapore.jp Contact Form 7 通知メール拡張スニペット
 * --------------------------------------------------------------
 * 機能:
 *   1. カスタムメールタグ [inquiry_id]   ... INQ-YYYYMMDD-NNNN 形式の問合せIDを自動採番
 *   2. カスタムメールタグ [received_at]  ... 受付日時 (Y-m-d H:i:s JST)
 *
 * 設置場所:
 *   子テーマ(または使用中テーマ)の functions.php の末尾に貼り付け
 *
 * 注意:
 *   - 既存の `<?php` 開始タグは追加しないこと(既存ファイルに追記する形)
 *   - 念のため functions.php の編集前にバックアップを取得してください
 * --------------------------------------------------------------
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * 当該リクエスト中で一度だけ問合せIDを生成し、以降は同じIDを返す。
 * (件名・本文・複数のメール送信で同じIDが使われる)
 *
 * @return string 例) INQ-20260509-0042
 */
function iesapore_get_or_create_inquiry_id() {
	static $id = null;
	if ( null !== $id ) {
		return $id;
	}

	$today      = current_time( 'Ymd' );
	$option_key = 'iesapore_cf7_inquiry_counter_' . $today;

	// 当日の連番をインクリメント
	$counter = (int) get_option( $option_key, 0 ) + 1;
	update_option( $option_key, $counter, false );

	$id = sprintf( 'INQ-%s-%04d', $today, $counter );

	// 古いカウンターオプションのクリーンアップ(7日より前のものを削除)
	iesapore_cleanup_old_inquiry_counters();

	return $id;
}

/**
 * 7日より前の日付カウンターを wp_options から削除する。
 */
function iesapore_cleanup_old_inquiry_counters() {
	global $wpdb;
	$threshold = date_i18n( 'Ymd', strtotime( '-7 days', current_time( 'timestamp' ) ) );
	$prefix    = 'iesapore_cf7_inquiry_counter_';
	$like      = $wpdb->esc_like( $prefix ) . '%';

	$rows = $wpdb->get_col(
		$wpdb->prepare(
			"SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE %s",
			$like
		)
	);

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

	foreach ( $rows as $option_name ) {
		$date_part = substr( $option_name, strlen( $prefix ) );
		if ( ctype_digit( $date_part ) && $date_part < $threshold ) {
			delete_option( $option_name );
		}
	}
}

/**
 * Contact Form 7 にカスタム特殊メールタグを追加する。
 *
 * 利用可能タグ:
 *   [inquiry_id]   ... 問合せID (INQ-YYYYMMDD-NNNN)
 *   [received_at]  ... 受付日時 (Y-m-d H:i:s JST)
 */
add_filter( 'wpcf7_special_mail_tags', 'iesapore_cf7_special_mail_tags', 10, 3 );
function iesapore_cf7_special_mail_tags( $output, $name, $html ) {
	// CF7 5.x 系: 名前は先頭にアンダースコアが付く形式 (_inquiry_id) で渡される
	$name = preg_replace( '/^wpcf7\./', '_', $name );

	switch ( $name ) {
		case '_inquiry_id':
			return iesapore_get_or_create_inquiry_id();

		case '_received_at':
			// WordPress のタイムゾーン設定 (Asia/Tokyo を想定) に従う
			return current_time( 'Y-m-d H:i:s' ) . ' (JST)';
	}

	return $output;
}