]*>.*?#is', '', (string) $value); return strip_tags($value, '


    1. '); } function esc_url_raw($value): string { return (string) $value; } function wp_json_encode($value): string { return (string) json_encode($value, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); } function get_option(string $name, $default = false) { return $GLOBALS['aksrt_test_options'][$name] ?? $default; } function update_option(string $name, $value): bool { $GLOBALS['aksrt_test_options'][$name] = $value; return true; } function current_time(string $type, $gmt = false) { return $GLOBALS['aksrt_test_now']; } } namespace AKSRT\Settings { class Settings { public static function get_all(): array { $stored = get_option('aksrt_settings', []); return is_array($stored) ? $stored : []; } public static function read_domain(string $domain, string $section = ''): array { return \AKSRT\Admin\SchemaProvider::get_instance()->read_settings($domain, $section); } public static function flush_settings_cache(): void {} } } namespace { require_once dirname(__DIR__, 2) . '/src/Admin/Schema/SchemaPayment.php'; require_once dirname(__DIR__, 2) . '/src/Admin/SchemaProvider.php'; require_once dirname(__DIR__, 2) . '/src/Settings/PaymentRuntime.php'; $GLOBALS['aksrt_test_now'] = strtotime('2026-03-01 12:00:00'); // 1) Section never saved: the runtime still resolves schema defaults. $defaults = \AKSRT\Settings\PaymentRuntime::get_after_sale_settings(); // 2) Stored values override defaults; HTML fields are kses'ed. update_option('aksrt_settings', [ 'after_sale_s' => false, 'after_sale_time_limit' => 30, 'after_sale_expired_text' => '
      已超过时效
      ', 'after_sale_reasons' => [['t' => '质量问题'], ['t' => '发错货']], 'after_sale_desc' => '
      请保持商品完好
      ', 'after_sale_materials' => [['t' => '联系邮箱']], 'after_sale_reason_placeholder' => '请描述问题', 'after_sale_img_s' => false, ]); $overridden = \AKSRT\Settings\PaymentRuntime::get_after_sale_settings(); // 3) Expiry boundary matrix: measured from paid_at, strictly beyond the limit. $matrix = []; $boundary_cases = [ 'within' => ['2026-02-25 00:00:00', 7, false], 'exact_boundary' => ['2026-02-22 12:00:00', 7, false], 'just_expired' => ['2026-02-22 11:59:59', 7, true], 'long_expired' => ['2026-01-01 00:00:00', 7, true], 'no_limit' => ['2020-01-01 00:00:00', 0, false], 'missing_paid' => ['', 7, false], ]; $stored = get_option('aksrt_settings', []); foreach ($boundary_cases as $name => $case) { [$paid_at, $limit, $expected] = $case; $stored['after_sale_time_limit'] = $limit; update_option('aksrt_settings', $stored); $matrix[$name] = \AKSRT\Settings\PaymentRuntime::after_sale_expired($paid_at) === $expected; } echo json_encode([ 'defaults' => $defaults, 'overridden' => $overridden, 'expired_ok' => $matrix, ], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); }