noHeaders = true; if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) { header("HTTP/1.1 304 Not Modified"); header('Content-Length: 0'); ob_end_clean(); die(); } $uri = strtolower($_SERVER["REQUEST_URI"]); $uri = substr($uri, strrpos($uri, '/') + 1); // remove any params that would confuse our parser if (strpos($uri, '?')) { $uri = substr($uri, 0, strpos($uri, '?')); } if (strpos($uri, '.js') !== false) { $uri = substr($uri, 0, strlen($uri) - 3); } $needed = array(); if (strpos($uri, ':')) { $needed = explode(':', $uri); } else { $needed[] = $uri; } $found = array(); $missing = array(); $contextClass = Config::get('gadget_context_class'); $context = new $contextClass('GADGET'); $registry = new GadgetFeatureRegistry(Config::get('features_path')); if ($registry->resolveFeatures($needed, $found, $missing)) { $isGadgetContext = !isset($_GET["c"]) || $_GET['c'] == 0 ? true : false; $jsData = ''; foreach ($found as $feature) { $jsData .= $registry->getFeatureContent($feature, $context, $isGadgetContext); } if (! strlen($jsData)) { header("HTTP/1.0 404 Not Found", true); die(); } $this->setCachingHeaders(); header("Content-Type: text/javascript"); echo $jsData; } else { header("HTTP/1.0 404 Not Found", true); } die(); } private function setCachingHeaders() { // Expires far into the future header("Expires: Tue, 01 Jan 2030 00:00:01 GMT"); // IE seems to need this (10 years should be enough). header("Cache-Control: public,max-age=315360000"); // Firefox requires this for certain cases. header("Last-Modified: " . gmdate('D, d M Y H:i:s', time())); } }