/**
  * 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;
 }
Exemplo n.º 3
0
 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;
 }