function activate() { Loader::load('module', 'file/CombineAssetsModule'); $filename = URL::getPathMap(array('file')); $filename = $filename['file']; $cache = CombineAssetsModule::getCombinedAsset($filename); if ($cache && is_string($cache)) { list($hash, $extension) = explode('.', $filename); $mimetype = $extension == 'js' ? 'javascript' : 'css'; $lastmod = substr($hash, 32); $lastmod = gmdate('D, d M Y H:i:s', intval($lastmod)) . ' GMT'; $etag = '"' . md5($lastmod) . '"'; $ifmod = isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? $_SERVER['HTTP_IF_MODIFIED_SINCE'] == $lastmod : null; $iftag = isset($_SERVER['HTTP_IF_NONE_MATCH']) ? $_SERVER['HTTP_IF_NONE_MATCH'] == $etag : null; //stop cache-control and pragma from making caching fail header("Cache-Control:"); header("Pragma:"); // Fancy-pants conditional get if (($ifmod || $iftag) && ($ifmod !== false && $iftag !== false)) { header("ETag: {$etag}"); header('HTTP/1.0 304 Not Modified'); exit; } header("ETag: {$etag}"); header("Last-Modified: {$lastmod}"); header("Content-type: text/{$mimetype}; charset: UTF-8"); $expires = "Expires: " . gmdate("D, d M Y H:i:s", time() + 31556926) . " GMT"; header($expires); echo $cache; } else { header('HTTP/1.0 404 Not Found'); echo "Could not load resource: {$filename}"; error_log('[Asset Lookup] Failed to locate ' . $filename); } Config::set('HideDebugger', true); exit; }
private static function combine_type($files, $extension, $url) { $combined = array(); $files_copy = $files; foreach ($files as $index => $file) { $filename = null; if (!is_array($file)) { if (self::fileHasExtension($file, $extension)) { $filename = $file; } } else { if (count($file) == 1 && isset($file['path'])) { $filename = $file['path']; } } if (isset($filename) && substr($filename, 0, 7) != 'http://') { $clean = ltrim($file, '/'); $clean = explode('?', $clean); $combined[] = $clean[0]; unset($files[$index], $filename); } } if (!empty($combined)) { Loader::load('module', 'file/CombineAssetsModule'); $root = Config::get('VirtualRoot'); foreach ($combined as &$file) { $file = "{$root}/{$file}"; } $combiner = new CombineAssetsModule($combined, $extension); $combined_file = $combiner->activate(); if (!$combined_file) { $files = $files_copy; } else { array_unshift($files, $url . $combined_file); } } return $files; }