<?php
namespace Jet_Reviews;

// If this file is called directly, abort.
if ( ! defined( 'WPINC' ) ) {
	die;
}

abstract class Base_Page {

	/**
	 * [$base_slug description]
	 * @var string
	 */
	public $base_slug = 'jet-reviews';

	/**
	 * [get_slug description]
	 * @return [type] [description]
	 */
	abstract public function get_slug();

	/**
	 * [__construct description]
	 */
	public function __construct() {

		$this->init();

		add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_assets' ), 11 );

	}

	/**
	 * Initialize module-specific parts
	 *
	 * @return [type] [description]
	 */
	public function init() {}

	/**
	 * Register module assets
	 *
	 * @return [type] [description]
	 */

	public function enqueue_assets() {

		// phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Read-only admin page selection; WordPress enforces the registered menu capability.
		$page = isset( $_REQUEST['page'] ) && is_scalar( $_REQUEST['page'] ) ? sanitize_key( wp_unslash( $_REQUEST['page'] ) ) : '';

		if ( $this->get_slug() === $page ) {
			Admin::get_instance()->get_vue_ui_instance()->enqueue_assets();

			$this->enqueue_module_assets();
		}
	}

	/**
	 * [enqueue_module_assets description]
	 * @return [type] [description]
	 */
	public function enqueue_module_assets() {}

	/**
	 * Returns link to current page
	 *
	 * @return [type] [description]
	 */
	public function get_page_link() {
		return add_query_arg(
			array( 'page' => $this->get_slug() ),
			esc_url( admin_url( 'admin.php' ) )
		);
	}

}
