Automattic\WooCommerce\Internal\Admin\Suggestions\Incentives

Incentive::is_dismissed()publicWC 1.0

Check if an incentive has been manually dismissed.

Method of the class: Incentive{}

No Hooks.

Return

true|false. Whether the incentive has been manually dismissed.

Usage

$Incentive = new Incentive();
$Incentive->is_dismissed( $id, $context ): bool;
$id(string) (required)
The incentive ID to check for dismissal.
$context(string)
The context ID in which to check for dismissal. If no context ID is provided, we check for dismissal in all contexts.
Default: ''

Incentive::is_dismissed() code WC 9.6.1

public function is_dismissed( string $id, string $context = '' ): bool {
	if ( empty( $id ) ) {
		return false;
	}

	$all_dismissed_incentives = $this->get_all_dismissed_incentives();

	// If there are no dismissed incentives for the suggestion, return early.
	$dismissed_incentives = $all_dismissed_incentives[ $this->suggestion_id ] ?? array();
	if ( empty( $dismissed_incentives ) ) {
		return false;
	}

	// Check if the incentive is dismissed in the given context.
	if ( in_array(
		$id,
		array_column(
			array_filter(
				$dismissed_incentives,
				// All context dismissals are always included.
				fn( $dismissed_incentive ) => 'all' === $dismissed_incentive['context'] || $context === $dismissed_incentive['context']
			),
			'id'
		),
		true
	) ) {
		return true;
	}

	return false;
}