256 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			256 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * WPSEO plugin file.
 | |
|  *
 | |
|  * @package WPSEO\Admin
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * Represents a WPSEO asset
 | |
|  */
 | |
| class WPSEO_Admin_Asset {
 | |
| 
 | |
| 	/**
 | |
| 	 * Constant used to identify file type as a JS file.
 | |
| 	 *
 | |
| 	 * @var string
 | |
| 	 */
 | |
| 	const TYPE_JS = 'js';
 | |
| 
 | |
| 	/**
 | |
| 	 * Constant used to identify file type as a CSS file.
 | |
| 	 *
 | |
| 	 * @var string
 | |
| 	 */
 | |
| 	const TYPE_CSS = 'css';
 | |
| 
 | |
| 	/**
 | |
| 	 * The name option identifier.
 | |
| 	 *
 | |
| 	 * @var string
 | |
| 	 */
 | |
| 	const NAME = 'name';
 | |
| 
 | |
| 	/**
 | |
| 	 * The source option identifier.
 | |
| 	 *
 | |
| 	 * @var string
 | |
| 	 */
 | |
| 	const SRC = 'src';
 | |
| 
 | |
| 	/**
 | |
| 	 * The dependencies option identifier.
 | |
| 	 *
 | |
| 	 * @var string
 | |
| 	 */
 | |
| 	const DEPS = 'deps';
 | |
| 
 | |
| 	/**
 | |
| 	 * The version option identifier.
 | |
| 	 *
 | |
| 	 * @var string
 | |
| 	 */
 | |
| 	const VERSION = 'version';
 | |
| 
 | |
| 	/* Style specific. */
 | |
| 
 | |
| 	/**
 | |
| 	 * The media option identifier.
 | |
| 	 *
 | |
| 	 * @var string
 | |
| 	 */
 | |
| 	const MEDIA = 'media';
 | |
| 
 | |
| 	/**
 | |
| 	 * The rtl option identifier.
 | |
| 	 *
 | |
| 	 * @var string
 | |
| 	 */
 | |
| 	const RTL = 'rtl';
 | |
| 
 | |
| 	/* Script specific. */
 | |
| 
 | |
| 	/**
 | |
| 	 * The "in footer" option identifier.
 | |
| 	 *
 | |
| 	 * @var string
 | |
| 	 */
 | |
| 	const IN_FOOTER = 'in_footer';
 | |
| 
 | |
| 	/**
 | |
| 	 * Asset identifier.
 | |
| 	 *
 | |
| 	 * @var string
 | |
| 	 */
 | |
| 	protected $name;
 | |
| 
 | |
| 	/**
 | |
| 	 * Path to the asset.
 | |
| 	 *
 | |
| 	 * @var string
 | |
| 	 */
 | |
| 	protected $src;
 | |
| 
 | |
| 	/**
 | |
| 	 * Asset dependencies.
 | |
| 	 *
 | |
| 	 * @var string|array
 | |
| 	 */
 | |
| 	protected $deps;
 | |
| 
 | |
| 	/**
 | |
| 	 * Asset version.
 | |
| 	 *
 | |
| 	 * @var string
 | |
| 	 */
 | |
| 	protected $version;
 | |
| 
 | |
| 	/**
 | |
| 	 * For CSS Assets. The type of media for which this stylesheet has been defined.
 | |
| 	 *
 | |
| 	 * See https://www.w3.org/TR/CSS2/media.html#media-types.
 | |
| 	 *
 | |
| 	 * @var string
 | |
| 	 */
 | |
| 	protected $media;
 | |
| 
 | |
| 	/**
 | |
| 	 * For JS Assets. Whether or not the script should be loaded in the footer.
 | |
| 	 *
 | |
| 	 * @var bool
 | |
| 	 */
 | |
| 	protected $in_footer;
 | |
| 
 | |
| 	/**
 | |
| 	 * For CSS Assets. Whether this stylesheet is a right-to-left stylesheet.
 | |
| 	 *
 | |
| 	 * @var bool
 | |
| 	 */
 | |
| 	protected $rtl;
 | |
| 
 | |
| 	/**
 | |
| 	 * File suffix.
 | |
| 	 *
 | |
| 	 * @var string
 | |
| 	 */
 | |
| 	protected $suffix;
 | |
| 
 | |
| 	/**
 | |
| 	 * Default asset arguments.
 | |
| 	 *
 | |
| 	 * @var array
 | |
| 	 */
 | |
| 	private $defaults = [
 | |
| 		'deps'      => [],
 | |
| 		'in_footer' => true,
 | |
| 		'rtl'       => true,
 | |
| 		'media'     => 'all',
 | |
| 		'version'   => '',
 | |
| 		'suffix'    => '',
 | |
| 	];
 | |
| 
 | |
| 	/**
 | |
| 	 * Constructs an instance of the WPSEO_Admin_Asset class.
 | |
| 	 *
 | |
| 	 * @param array $args The arguments for this asset.
 | |
| 	 *
 | |
| 	 * @throws InvalidArgumentException Throws when no name or src has been provided.
 | |
| 	 */
 | |
| 	public function __construct( array $args ) {
 | |
| 		if ( ! isset( $args['name'] ) ) {
 | |
| 			throw new InvalidArgumentException( 'name is a required argument' );
 | |
| 		}
 | |
| 
 | |
| 		if ( ! isset( $args['src'] ) ) {
 | |
| 			throw new InvalidArgumentException( 'src is a required argument' );
 | |
| 		}
 | |
| 
 | |
| 		$args = array_merge( $this->defaults, $args );
 | |
| 
 | |
| 		$this->name      = $args['name'];
 | |
| 		$this->src       = $args['src'];
 | |
| 		$this->deps      = $args['deps'];
 | |
| 		$this->version   = $args['version'];
 | |
| 		$this->media     = $args['media'];
 | |
| 		$this->in_footer = $args['in_footer'];
 | |
| 		$this->rtl       = $args['rtl'];
 | |
| 		$this->suffix    = $args['suffix'];
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Returns the asset identifier.
 | |
| 	 *
 | |
| 	 * @return string
 | |
| 	 */
 | |
| 	public function get_name() {
 | |
| 		return $this->name;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Returns the path to the asset.
 | |
| 	 *
 | |
| 	 * @return string
 | |
| 	 */
 | |
| 	public function get_src() {
 | |
| 		return $this->src;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Returns the asset dependencies.
 | |
| 	 *
 | |
| 	 * @return array|string
 | |
| 	 */
 | |
| 	public function get_deps() {
 | |
| 		return $this->deps;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Returns the asset version.
 | |
| 	 *
 | |
| 	 * @return string|null
 | |
| 	 */
 | |
| 	public function get_version() {
 | |
| 		if ( ! empty( $this->version ) ) {
 | |
| 			return $this->version;
 | |
| 		}
 | |
| 
 | |
| 		return null;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Returns the media type for CSS assets.
 | |
| 	 *
 | |
| 	 * @return string
 | |
| 	 */
 | |
| 	public function get_media() {
 | |
| 		return $this->media;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Returns whether a script asset should be loaded in the footer of the page.
 | |
| 	 *
 | |
| 	 * @return bool
 | |
| 	 */
 | |
| 	public function is_in_footer() {
 | |
| 		return $this->in_footer;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Returns whether this CSS has a RTL counterpart.
 | |
| 	 *
 | |
| 	 * @return bool
 | |
| 	 */
 | |
| 	public function has_rtl() {
 | |
| 		return $this->rtl;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Returns the file suffix.
 | |
| 	 *
 | |
| 	 * @return string
 | |
| 	 */
 | |
| 	public function get_suffix() {
 | |
| 		return $this->suffix;
 | |
| 	}
 | |
| }
 |