/** * Tests GadgetFeatureRegistry->getEntry() */ public function testGetEntry() { $entry = $this->GadgetFeatureRegistry->getEntry('core'); $this->assertTrue($entry instanceof GadgetFeatureRegistryEntry); $this->assertEquals('core', $entry->getName()); $this->assertTrue(is_array($entry->getDependencies())); $this->assertTrue($entry->getFeature() instanceof JsLibraryFeatureFactory); }
public function doGet() { $this->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(); $registry = new GadgetFeatureRegistry(Config::get('features_path')); if ($registry->getIncludedFeatures($needed, $found, $missing)) { $containerParam = isset($_GET["c"]) ? $_GET["c"] : ''; $context = $containerParam == '1' ? 'CONTAINER' : 'GADGET'; $jsData = ''; $done = array(); do { foreach ($found as $entry) { if (!in_array($entry, $done)) { $feat = $registry->getEntry($entry); $feature = $feat->getFeature(); if ($feature instanceof JsLibraryFeatureFactory) { $jsLib = $feature; foreach ($jsLib->getLibraries($context) as $lib) { if ($lib->getType() != 'URL') { $jsData .= $lib->getContent() . "\n"; } } } $done[] = $entry; } } } while (count($done) != count($found)); 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; }
public function doGet() { error_log("Running the JsServlet"); $this->noHeaders = true; if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) { header("HTTP/1.1 304 Not Modified"); header('Content-Length: 0'); 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(); $registry = new GadgetFeatureRegistry(Config::get('features_path')); if ($registry->getIncludedFeatures($needed, $found, $missing)) { $containerParam = isset($_GET["c"]) ? $_GET["c"] : ''; $context = $containerParam == '1' ? 'CONTAINER' : 'GADGET'; $jsData = ''; $done = array(); do { foreach ($found as $entry) { if (!in_array($entry, $done)) { $feat = $registry->getEntry($entry); $feature = $feat->getFeature(); if ($feature instanceof JsLibraryFeatureFactory) { $jsLib = $feature; foreach ($jsLib->getLibraries($context) as $lib) { if ($lib->getType() != 'URL') { $jsData .= $lib->getContent(); } } } $done[] = $entry; } } } while (count($done) != count($found)); if (!strlen($jsData)) { header("HTTP/1.0 404 Not Found", true); die; } if (!isset($_GET['c']) || $_GET['c'] != 1) { $contents = preg_replace('/\\/\\/.*$/m', '', preg_replace('@/\\*(?:.|[\\n\\r])*?\\*/@', '', file_get_contents(Config::get('container_config')))); $containerData = json_decode($contents, true); $jsData .= "\ngadgets.config.init(" . json_encode($containerData['gadgets.features']) . ");\n"; } $this->setCachingHeaders(); header('Content-Length: ' . strlen($jsData)); header("Content-Type: text/javascript"); echo $jsData; } else { header("HTTP/1.0 404 Not Found", true); } die; }