# double-opt-in/trunk/src/Subscription/SubscriptionGroups.php

Double Opt-In for Contact Form 7 – Secure, GDPR-Compliant Email Verification, version trunk. 40 lines.

- Page: https://pluginprobe.com/plugins/double-opt-in/trunk/code/src/Subscription/SubscriptionGroups.php
- Raw: https://pluginprobe.com/plugins/double-opt-in/trunk/raw/src/Subscription/SubscriptionGroups.php
- Modified: 2026-10-08T08:30:10+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/double-opt-in/trunk/code/src/Subscription/SubscriptionGroups.php#L10-L20`.

```php
<?php
/**
 * Entry point for consumers that need subscription groups.
 *
 * @package Forge12\DoubleOptIn\Subscription
 * @since   5.12.0
 */

declare( strict_types=1 );

namespace Forge12\DoubleOptIn\Subscription;

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

final class SubscriptionGroups {

	/**
	 * The active resolver. An add-on supplies its own through the
	 * `f12_doi_subscription_group_resolver` filter; anything that is not a
	 * resolver is ignored so a faulty add-on cannot break a consumer.
	 */
	public static function resolver(): SubscriptionGroupResolverInterface {
		$resolver = apply_filters( 'f12_doi_subscription_group_resolver', new NullSubscriptionGroupResolver() );

		return $resolver instanceof SubscriptionGroupResolverInterface
			? $resolver
			: new NullSubscriptionGroupResolver();
	}

	/**
	 * Whether an add-on currently provides groups. Consumers use this to
	 * hide group controls instead of showing empty ones.
	 */
	public static function isAvailable(): bool {
		return ! ( self::resolver() instanceof NullSubscriptionGroupResolver );
	}
}

```
