public function compressCss(array $files, $includePath = '')
{
$webDir = realpath($this->jarves->getRootDir() . '/../web') . '/';
$content = '';
foreach ($files as $assetPath) {
$cssFile = $this->jarves->resolvePublicWebPath($assetPath);
//bundles/jarves/css/style.css
$cssDir = dirname($cssFile) . '/';
//admin/css/...
$cssDir = str_repeat('../', substr_count($includePath, '/')) . $cssDir;
$content .= "\n\n/* file: {$assetPath} */\n\n";
if (file_exists($file = $webDir . $cssFile)) {
$h = fopen($file, "r");
if ($h) {
while (!feof($h) && $h) {
$buffer = fgets($h, 4096);
$buffer = preg_replace('/@import \'(?!.*:\\/\\/)([^\\/].*)\'/', '@import \'' . $cssDir . '$1\'', $buffer);
$buffer = preg_replace('/@import "(?!.*:\\/\\/)([^\\/].*)"/', '@import "' . $cssDir . '$1"', $buffer);
$buffer = preg_replace('/url\\(\'(?!.*:\\/\\/)([^\\/][^\\)]*)\'\\)/', 'url(\'' . $cssDir . '$1\')', $buffer);
$buffer = preg_replace('/url\\(\\"(?!.*:\\/\\/)([^\\/][^\\)]*)\\"\\)/', 'url(\\"' . $cssDir . '$1\\")', $buffer);
$buffer = preg_replace('/url\\((?!.*data:image)(?!.*:\\/\\/)([^\\/\'].*)\\)/', 'url(' . $cssDir . '$1)', $buffer);
$buffer = str_replace(array(' ', ' ', "\t", "\n", "\r"), '', $buffer);
$buffer = str_replace(': ', ':', $buffer);
$content .= $buffer;
}
fclose($h);
}
} else {
$content .= '/* => `' . $cssFile . '` not exist. */';
}
}
return $content;
}