/** * Writes an asset collection to a cache file, optionally applies filters. * * @param AssetCollection $assets * @param string $file * @param array $filters * @return mixed */ protected function doCache(AssetCollection $assets, $file, $filters = array()) { $filters = $this->filters->get($filters); if ($this->cache && count($assets)) { $salt = array_merge(array($_SERVER['SCRIPT_NAME']), array_keys($filters)); $file = preg_replace('/(.*?)(\\.[^\\.]+)?$/i', '$1-' . $assets->hash(implode(',', $salt)) . '$2', $file, 1); if (file_exists($file) || @file_put_contents($file, $assets->dump($filters))) { return $file; } } return false; }
/** * Writes an asset collection to a cache file, optionally applies filters. * * @param AssetCollection $assets * @param string $file * @param array $filters * @return mixed */ protected function doCache(AssetCollection $assets, $file, $filters = array()) { $filters = $this->filters->get($filters); if (count($assets)) { $time = 0; $salt = implode(',', array_keys($filters)); $file = preg_replace('/(.*?)(\\.[^\\.]+)?$/i', '$1-' . $assets->hash($salt) . '$2', $file, 1); foreach ($assets as $asset) { if ($path = $asset['path'] and $modified = filemtime($path) and $modified > $time) { $time = $modified; } } if (!file_exists($file) || filemtime($file) < $time) { file_put_contents($file, $assets->dump($filters)); } return $file; } return false; }