| Current Path : /home/azimutno/www/templates/jdirect_aviato/warp/src/Warp/Asset/Filter/ |
| Current File : /home/azimutno/www/templates/jdirect_aviato/warp/src/Warp/Asset/Filter/CssRewriteUrlFilter.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\Filter;
/**
* Rewrite stylesheet urls, rewrites relative urls to absolute urls.
*/
class CssRewriteUrlFilter implements FilterInterface
{
/**
* @var string
*/
protected static $path;
/**
* On load filter callback.
*
* @param object $asset
*/
public function filterLoad($asset)
{
// has url?
if (!$asset->getUrl()) {
return;
}
// set base path
self::$path = dirname($asset->getUrl()).'/';
$asset->setContent(preg_replace_callback('/url\(\s*[\'"]?(?![a-z]+:|\/+)([^\'")]+)[\'"]?\s*\)/i', array($this, 'rewrite'), $asset->getContent()));
}
/**
* On content filter callback.
*
* @param object $asset
*/
public function filterContent($asset) {}
/**
* Rewrite url callback.
*
* @param array $matches
*
* @return string
*/
protected function rewrite($matches)
{
// prefix with base and remove '../' segments if possible
$path = self::$path.$matches[1];
$last = '';
while ($path != $last) {
$last = $path;
$path = preg_replace('`(^|/)(?!\.\./)([^/]+)/\.\./`', '$1', $path);
}
return 'url("'.$path.'")';
}
}