Вход Регистрация
Файл: concrete5.7.5.6/concrete/src/Asset/AssetList.php
Строк: 115
<?php
namespace ConcreteCoreAsset;

use 
ConcreteCoreFoundationObject as Object;
use 
ConcreteCorePackagePackage;

class 
AssetList
{
    
/**
     * @var null|self
     */
    
private static $loc null;

    
/**
     * @var array Array of assets with type, version, and handle
     */
    
public $assets = array();

    
/**
     * @var AssetGroup[] map<handle, AssetGroup>
     */
    
public $assetGroups = array();

    public function 
getRegisteredAssets()
    {
        return 
$this->assets;
    }

    
/**
     * @return ConcreteCoreAssetAssetGroup[]
     */
    
public function getRegisteredAssetGroups()
    {
        return 
$this->assetGroups;
    }

    
/**
     * @return AssetList
     */
    
public static function getInstance()
    {
        if (
null === self::$loc) {
            
self::$loc = new self;
        }
        return 
self::$loc;
    }

    
/**
     * @param string $assetType
     * @param string $assetHandle
     * @param string $filename
     * @param array $args
     * @param bool $pkg
     * @return Asset
     */
    
public function register($assetType$assetHandle$filename$args = array(), $pkg false)
    {
        
$defaults = array(
            
'position' => false,
            
'local' => true,
            
'version' => false,
            
'combine' => -1,
            
'minify' => -// use the asset default
        
);
        
// overwrite all the defaults with the arguments
        
$args array_merge($defaults$args);

        
$class '\Concrete\Core\Asset\' . Object::camelcase($assetType) . 'Asset';
        $o = new $class($assetHandle);
        $o->register($filename, $args, $pkg);
        $this->registerAsset($o);
        return $o;
    }

    /**
     * @param array $assets
     */
    public function registerMultiple(array $assets)
    {
        foreach ($assets as $asset_handle => $asset_types) {
            foreach ($asset_types as $asset_type => $asset_settings) {
                array_splice($asset_settings, 1, 0, $asset_handle);
                call_user_func_array(array($this, '
register'), $asset_settings);
            }
        }
    }

    /**
     * @param Asset $asset
     */
    public function registerAsset(Asset $asset)
    {
        // we have to check and see if the asset already exists.
        // If it exists, we only replace it if our current asset has a later version
        $doRegister = true;
        if (isset($this->assets[$asset->getAssetType()][$asset->getAssetHandle()])) {
            $existingAsset = $this->assets[$asset->getAssetType()][$asset->getAssetHandle()];
            if (version_compare($existingAsset->getAssetVersion(), $asset->getAssetVersion(), '
>')) {
                $doRegister = false;
            }
        }
        if ($doRegister) {
            $this->assets[$asset->getAssetType()][$asset->getAssetHandle()] = $asset;
        }
    }

    /**
     * @param string $assetGroupHandle
     * @param array $assetHandles
     * @param bool $customClass
     */
    public function registerGroup($assetGroupHandle, $assetHandles, $customClass = false)
    {
        if ($customClass) {
            $class = '
\Concrete\Core\Asset\Group\' . Object::camelcase($assetGroupHandle) . 'AssetGroup';
        } else {
            $class = '
\Concrete\Core\Asset\AssetGroup';
        }
        $group = new $class();
        foreach ($assetHandles as $assetArray) {
            $ap = new AssetPointer($assetArray[0], $assetArray[1]);
            $group->add($ap);
        }
        $this->assetGroups[$assetGroupHandle] = $group;
    }

    /**
     * @param array $asset_groups
     */
    public function registerGroupMultiple(array $asset_groups)
    {
        foreach ($asset_groups as $group_handle => $group_setting) {
            array_unshift($group_setting, $group_handle);
            call_user_func_array(array($this, '
registerGroup'), $group_setting);
        }
    }

    /**
     * @param string $assetType
     * @param string $assetHandle
     * @return Asset
     */
    public function getAsset($assetType, $assetHandle)
    {
        return isset($this->assets[$assetType][$assetHandle]) ? $this->assets[$assetType][$assetHandle] : null;
    }

    /**
     * @param string $assetGroupHandle
     * @return ConcreteCoreAssetAssetGroup
     */
    public function getAssetGroup($assetGroupHandle)
    {
        return $this->assetGroups[$assetGroupHandle];
    }
}
Онлайн: 1
Реклама