wp_back/wp-content/plugins/debloat/inc/base/asset.php
2024-05-20 15:37:46 +03:00

91 lines
1.7 KiB
PHP

<?php
namespace Sphere\Debloat\Base;
use Sphere\Debloat\Plugin;
/**
* Base class for scripts and stylesheets.
*
* @uses Plugin::file_system()
*
* @author asadkn
* @since 1.0.0
*/
abstract class Asset
{
/**
* @var string
*/
public $id;
/**
* @var string
*/
public $orig_url;
public $url;
public $minified_url;
/**
* Whether the asset is local or at a remote URL.
* Note: Defaults to null for lazy init.
*
* @var boolean
*/
private $is_remote = null;
/**
* Return URL to get content from. Minified URL if present.
*
* @return void
*/
public function get_content_url()
{
return $this->minified_url ?: $this->url;
}
/**
* Render attributes using key values.
*
* @param array $orig_attrs Key value pair of attributes.
* @param array $safe List of attributes pre-escaped.
* @return array Array of attributes.
*/
public function render_attrs($orig_attrs, $safe = [])
{
$attrs = [];
foreach ($orig_attrs as $key => $value) {
// For true, no value is needed in HTML.
if ($value === true) {
$attrs[] = $key;
continue;
}
// Adding previously escaped, but escape again just in case it was done using
// different quotes originally.
$value = !in_array($key, $safe) ? esc_attr($value) : $value;
$attrs[] = sprintf('%s="%s"', $key, $value);
}
return $attrs;
}
/**
* Whether the asset is on a remote location.
*
* @return boolean
*/
public function is_remote()
{
if ($this->is_remote || $this->minified_url) {
return true;
}
if ($this->is_remote === null && !Plugin::file_system()->url_to_local($this->url)) {
$this->is_remote = true;
}
return $this->is_remote;
}
}