/**
  * Tests GadgetFeatureRegistry->getIncludedFeatures()
  */
 public function testGetIncludedFeatures()
 {
     $needed = array('flash', 'opensocial-0.8', 'settitle', 'setprefs', 'foobar');
     $resultsFound = array();
     $resultsMissing = array();
     $this->GadgetFeatureRegistry->getIncludedFeatures($needed, $resultsFound, $resultsMissing);
     $this->assertTrue(in_array('foobar', $resultsMissing));
     $this->assertTrue(in_array('settitle', $resultsFound));
     $this->assertTrue(in_array('setprefs', $resultsFound));
     $this->assertTrue(in_array('rpc', $resultsFound));
     $this->assertTrue(in_array('flash', $resultsFound));
     $this->assertTrue(in_array('core', $resultsFound));
     $this->assertTrue(in_array('core.io', $resultsFound));
     $this->assertTrue(in_array('opensocial-0.8', $resultsFound));
 }
Пример #2
0
 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();
     $contextClass = Shindig_Config::get('gadget_context_class');
     $context = new $contextClass('GADGET');
     $registry = new GadgetFeatureRegistry(Shindig_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;
 }
 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;
 }
Пример #4
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;
 }
Пример #5
0
 /**
  * Tests GadgetFeatureRegistry->__construct()
  */
 public function test__construct()
 {
     $this->GadgetFeatureRegistry->__construct(Config::get('features_path'));
 }