<?php
// phpcs:disable Wptopr.NamingConventions.NamespaceName.TooLong -- Needed in the folder structure.
namespace Wptopr\WP\SEO\Schema_Aggregator\Application;

use Wptopr\WP\SEO\Helpers\Current_Page_Helper;
use Wptopr\WP\SEO\Introductions\Application\User_Allowed_Trait;
use Wptopr\WP\SEO\Introductions\Domain\Introduction_Interface;

/**
 * Represents the introduction for the Schema aggregator feature announcement.
 */
class Schema_Aggregator_Announcement implements Introduction_Interface {

	use User_Allowed_Trait;

	public const ID = 'schema-aggregator-announcement';

	/**
	 * Holds the current page helper.
	 *
	 * @var Current_Page_Helper
	 */
	private $current_page_helper;

	/**
	 * Constructs the introduction.
	 *
	 * @param Current_Page_Helper $current_page_helper The current page helper.
	 */
	public function __construct( Current_Page_Helper $current_page_helper ) {
		$this->current_page_helper = $current_page_helper;
	}

	/**
	 * Returns the ID.
	 *
	 * @return string The ID.
	 */
	public function get_id() {
		return self::ID;
	}

	/**
	 * Returns the requested pagination priority. Lower means earlier.
	 *
	 * @return int The priority.
	 */
	public function get_priority() {
		return 20;
	}

	/**
	 * Returns whether this introduction should show.
	 *
	 * @return bool Whether this introduction should show.
	 */
	public function should_show() {
		return $this->current_page_helper->is_wptopr_seo_page()
			&& $this->is_user_allowed( [ 'wpseo_manage_options' ] );
	}
}
