/** * @param Asset[] $assets * * @return Asset[] */ public static function process($assets) { if ($directory = self::getOutputDirectory()) { $relativeDirectory = self::getRelativeOutputDirectory(); $filename = ''; $sourceFiles = array(); for ($i = 0; $i < count($assets); ++$i) { $asset = $assets[$i]; $filename .= $asset->getAssetHashKey(); $sourceFiles[] = $asset->getAssetURL(); } $filename = sha1($filename); $cacheFile = $directory . '/' . $filename . '.js'; if (!file_exists($cacheFile)) { $js = ''; foreach ($assets as $asset) { $contents = $asset->getAssetContents(); if (isset($contents)) { if ($asset->assetSupportsMinification()) { $contents = \JShrink\Minifier::minify($contents); } $js .= $contents . "\n\n"; } } @file_put_contents($cacheFile, $js); } $asset = new self(); $asset->setAssetURL($relativeDirectory . '/' . $filename . '.js'); $asset->setAssetPath($directory . '/' . $filename . '.js'); $asset->setCombinedAssetSourceFiles($sourceFiles); return array($asset); } return $assets; }