<?php

if ( ! interface_exists( 'WPDesk_Translatable' ) ) {
	require_once __DIR__ . '/Translatable.php';
}
if ( ! interface_exists( 'WPDesk_Buildable' ) ) {
	require_once __DIR__ . '/Buildable.php';
}
if ( ! interface_exists( 'WPDesk_Has_Plugin_Info' ) ) {
	require_once __DIR__ . '/Has_Plugin_Info.php';
}

/**
 * Structure with core info about plugin
 *
 * have to be compatible with PHP 5.2.x
 */
class WPDesk_Plugin_Info implements WPDesk_Translatable, WPDesk_Buildable, WPDesk_Has_Plugin_Info {

	/** @var string */
	private $plugin_file_name;

	/** @var string */
	private $plugin_dir;

	/** @var string */
	private $plugin_url;

	/** @var string */
	private $class_name;

	/** @var string */
	private $version;

	/** @var string */
	private $product_id;

	/** @var string */
	private $plugin_name;

	/** @var \DateTimeInterface */
	private $release_date;

	/** string */
	private $text_domain;

	/**
	 * @var array
	 */
	private $plugin_shops;

	/**
	 * @return string
	 */
	public function get_plugin_file_name() {
		return $this->plugin_file_name;
	}

	/**
	 * @param string $plugin_name
	 */
	public function set_plugin_file_name( $plugin_name ) {
		$this->plugin_file_name = $plugin_name;
	}

	/**
	 * @return string
	 */
	public function get_plugin_dir() {
		return $this->plugin_dir;
	}

	/**
	 * @param string $plugin_dir
	 */
	public function set_plugin_dir( $plugin_dir ) {
		$this->plugin_dir = $plugin_dir;
	}

	/**
	 * @return string
	 */
	public function get_plugin_url() {
		return $this->plugin_url;
	}

	/**
	 * @param string $plugin_url
	 */
	public function set_plugin_url( $plugin_url ) {
		$this->plugin_url = $plugin_url;
	}

	/**
	 * @return string
	 */
	public function get_version() {
		return $this->version;
	}

	/**
	 * @param string $version
	 */
	public function set_version( $version ) {
		$this->version = $version;
	}

	/**
	 * @return string
	 */
	public function get_product_id() {
		return $this->product_id;
	}

	/**
	 * @param string $product_id
	 */
	public function set_product_id( $product_id ) {
		$this->product_id = $product_id;
	}

	/**
	 * @return string
	 */
	public function get_plugin_name() {
		return $this->plugin_name;
	}

	/**
	 * @param string $plugin_name
	 */
	public function set_plugin_name( $plugin_name ) {
		$this->plugin_name = $plugin_name;
	}

	/**
	 * @return DateTimeInterface
	 */
	public function get_release_date() {
		return $this->release_date;
	}

	/**
	 * @param \DateTimeInterface $release_date
	 */
	public function set_release_date( $release_date ) {
		$this->release_date = $release_date;
	}

	/**
	 * @return string
	 */
	public function get_class_name() {
		return $this->class_name;
	}

	/**
	 * @param string $class_name
	 */
	public function set_class_name( $class_name ) {
		$this->class_name = $class_name;
	}

	/**
	 * @return string
	 */
	public function get_text_domain() {
		return $this->text_domain;
	}

	/**
	 * @param $value
	 */
	public function set_text_domain( $value ) {
		$this->text_domain = $value;
	}

	/**
	 * @return array
	 */
	public function get_plugin_shops() {
		return $this->plugin_shops;
	}

	/**
	 * @param array $plugin_shops
	 */
	public function set_plugin_shops( $plugin_shops ) {
		$this->plugin_shops = $plugin_shops;
	}

	/**
	 * @return string
	 */
	public function get_plugin_slug() {
		return basename( $this->get_plugin_dir() );
	}

}