Viewing file: class-asset.php (4.36 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php /** * @package WPSEO\Admin */
/** * Represents a WPSEO asset */ class WPSEO_Admin_Asset {
const TYPE_JS = 'js'; const TYPE_CSS = 'css';
const NAME = 'name'; const SRC = 'src'; const DEPS = 'deps'; const VERSION = 'version';
// Style specific. const MEDIA = 'media'; const RTL = 'rtl';
// Script specific. const IN_FOOTER = 'in_footer';
/** * @var string */ protected $name;
/** * @var string */ protected $src;
/** * @var string|array */ protected $deps;
/** * @var string */ protected $version;
/** * @var string */ protected $media;
/** * @var boolean */ protected $in_footer;
/** * @var boolean */ protected $rtl;
/** * @var string */ protected $suffix;
/** * @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( array( 'deps' => array(), 'version' => WPSEO_VERSION, 'in_footer' => true, 'rtl' => true, 'media' => 'all', 'suffix' => WPSEO_CSSJS_SUFFIX, ), $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']; }
/** * @return string */ public function get_name() { return $this->name; }
/** * @return string */ public function get_src() { return $this->src; }
/** * @return array|string */ public function get_deps() { return $this->deps; }
/** * @return string */ public function get_version() { return $this->version; }
/** * @return string */ public function get_media() { return $this->media; }
/** * @return boolean */ public function is_in_footer() { return $this->in_footer; }
/** * @return boolean */ public function has_rtl() { return $this->rtl; }
/** * @return string */ public function get_suffix() { return $this->suffix; }
/** * Returns the full URL for this asset based on the path to the plugin file. * * @param string $type Type of asset. * @param string $plugin_file Absolute path to the plugin file. * * @return string The full URL to the asset. */ public function get_url( $type, $plugin_file ) {
$relative_path = $this->get_relative_path( $type ); if ( empty( $relative_path ) ) { return ''; }
if ( 'development' !== YOAST_ENVIRONMENT && ! $this->get_suffix() ) { $plugin_path = plugin_dir_path( $plugin_file ); if ( ! file_exists( $plugin_path . $relative_path ) ) {
// Give a notice to the user in the console (only once). WPSEO_Utils::javascript_console_notification( 'Development Files', sprintf( /* translators: %1$s resolves to https://github.com/Yoast/wordpress-seo */ __( 'You are trying to load non-minified files, these are only available in our development package. Check out %1$s to see all the source files.', 'wordpress-seo' ), 'https://github.com/Yoast/wordpress-seo' ), true );
// Just load the .min file. $relative_path = $this->get_relative_path( $type, '.min' ); } }
return plugins_url( $relative_path, $plugin_file ); }
/** * Get the relative file for this asset * * @param string $type Type of this asset. * @param null $force_suffix Force use suffix. * * @return string */ protected function get_relative_path( $type, $force_suffix = null ) { $relative_path = $rtl_path = $rtl_suffix = '';
$suffix = ( is_null( $force_suffix ) ) ? $this->get_suffix() : $force_suffix;
switch ( $type ) { case self::TYPE_JS: $relative_path = 'js/dist/' . $this->get_src() . $suffix . '.js'; break;
case self::TYPE_CSS: // Path and suffix for RTL stylesheets. if ( function_exists( 'is_rtl' ) && is_rtl() && $this->has_rtl() ) { $rtl_path = 'dist/'; $rtl_suffix = '-rtl'; } $relative_path = 'css/' . $rtl_path . $this->get_src() . $rtl_suffix . $suffix . '.css'; break; }
return $relative_path; } }
|