<?php

namespace WPDesk\RepositoryRating\DisplayStrategy;

/**
 * DisplayDecision based on GET parameters.
 */
class GetParametersDisplayDecision implements DisplayDecision {

	/**
	 * Whether to show beacon on the page or not. Array of arrays with condition for _GET.
	 * Inner arrays mean AND, outer arrays mean OR conditions.
	 *
	 * ie. [ [ ... and ... and ... ] or [ ... and ... and ... ] or ... ]
	 *
	 * @var array
	 */
	private $conditions;

	public function __construct( array $conditions ) {
		$this->conditions = $conditions;
	}

	/**
	 * Should Beacon be visible?
	 *
	 * @return bool
	 */
	public function should_display(): bool {
		foreach ( $this->conditions as $or_conditions ) {
			$display = true;
			foreach ( $or_conditions as $parameter => $value ) {
				if ( ! isset( $_GET[ $parameter ] ) || $_GET[ $parameter ] !== $value ) {
					$display = false;
				}
			}
			if ( $display ) {

				return $display;
			}
		}

		return false;
	}

}