| Current Path : /var/www/iplanru/data/www/i-plan.ru/templates/yoo_everest/warp/src/Warp/Asset/ |
| Current File : /var/www/iplanru/data/www/i-plan.ru/templates/yoo_everest/warp/src/Warp/Asset/AssetCollection.php |
<?php
/**
* @package Warp Theme Framework
* @author YOOtheme http://www.yootheme.com
* @copyright Copyright (C) YOOtheme GmbH
* @license http://www.gnu.org/licenses/gpl.html GNU/GPL
*/
namespace Warp\Asset;
/**
* Asset collection.
*/
class AssetCollection extends AssetOptions implements AssetInterface, \IteratorAggregate
{
/**
* @var string
*/
protected $url;
/**
* @var string
*/
protected $content;
/**
* @var object
*/
protected $assets;
/**
* Constructor.
*
* @param array $assets
* @param array $options
*/
public function __construct($assets = array(), $options = array())
{
parent::__construct($options);
if (!is_array($assets)) {
$assets = array($assets);
}
$this->assets = $assets;
}
/**
* Get asset url.
*
* @return string
*/
public function getUrl()
{
return $this->url;
}
/**
* Set asset url.
*
* @param string $url
*/
public function setUrl($url)
{
$this->url = $url;
}
/**
* Get asset content and apply filters.
*
* @param object $filter
*
* @return string
*/
public function getContent($filter = null)
{
$content = array();
foreach ($this as $asset) {
$content[] = $asset->getContent($filter);
}
return implode("\n", $content);
}
/**
* Set asset content.
*
* @param string $content
*/
public function setContent($content)
{
$this->content = $content;
}
/**
* Load asset callback.
*
* @param object $filter
*/
public function load($filter = null)
{
$content = array();
foreach ($this as $asset) {
$content[] = $asset->getContent($filter);
}
$this->content = implode("\n", $content);
}
/**
* Get unique asset hash.
*
* @param string $salt
*
* @return string
*/
public function hash($salt = '')
{
$hashes = array();
foreach ($this as $asset) {
$hashes[] = $asset->hash($salt);
}
return md5(implode(' ', $hashes));
}
/**
* Add asset to collection.
*
* @param AssetInterface $asset
*/
public function add(AssetInterface $asset)
{
$this->assets[] = $asset;
}
/**
* Prepend asset to collection.
*
* @param AssetInterface $asset
*/
public function prepend(AssetInterface $asset)
{
array_unshift($this->assets, $asset);
}
/**
* Remove asset from collection.
*
* @param object $asset
*/
public function remove($asset)
{
$key = array_search($asset, $this->assets);
if ($key !== false) {
unset($this->assets[$key]);
}
}
/**
* Replace asset from collection.
*
* @param object $search
* @param object $replace
*/
public function replace($search, $replace)
{
$key = array_search($search, $this->assets);
if ($key !== false) {
$this->assets[$key] = $replace;
}
}
/**
* Iterator aggregate interface implementation.
*
* @return Iterator
*/
public function getIterator() {
return new \ArrayIterator($this->assets);
}
}