Author: chabotc
Date: Tue Jul 28 09:12:20 2009
New Revision: 798457
URL: http://svn.apache.org/viewvc?rev=798457&view=rev
Log:
SHINDIG-1125 by Matthieu Huguet, don't preload data on Metadata requests
Modified:
incubator/shindig/trunk/php/src/gadgets/GadgetFactory.php
Modified: incubator/shindig/trunk/php/src/gadgets/GadgetFactory.php
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/gadgets/GadgetFactory.php?rev=798457&r1=798456&r2=798457&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/gadgets/GadgetFactory.php (original)
+++ incubator/shindig/trunk/php/src/gadgets/GadgetFactory.php Tue Jul 28
09:12:20 2009
@@ -1,4 +1,5 @@
<?php
+
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -69,7 +70,7 @@
*/
private function parseFeatures(Gadget &$gadget) {
$found = $missing = array();
- if
(!$this->context->getRegistry()->resolveFeatures(array_merge($gadget->gadgetSpec->requiredFeatures,
$gadget->gadgetSpec->optionalFeatures), $found, $missing)) {
+ if (!
$this->context->getRegistry()->resolveFeatures(array_merge($gadget->gadgetSpec->requiredFeatures,
$gadget->gadgetSpec->optionalFeatures), $found, $missing)) {
$requiredMissing = false;
foreach ($missing as $featureName) {
if (in_array($featureName, $gadget->gadgetSpec->requiredFeatures)) {
@@ -78,7 +79,7 @@
}
}
if ($requiredMissing) {
- throw new GadgetException("Unknown features: ".implode(',', $missing));
+ throw new GadgetException("Unknown features: " . implode(',',
$missing));
}
}
unset($gadget->gadgetSpec->optionalFeatures);
@@ -107,7 +108,7 @@
}
}
// Apply substitutions to the preloads
- foreach ($gadget->gadgetSpec->preloads as $key => $preload) {
+ foreach ($gadget->gadgetSpec->preloads as $key => $preload) {
$gadget->gadgetSpec->preloads[$key]['body'] =
$gadget->substitutions->substitute($preload['body']);
}
}
@@ -133,6 +134,7 @@
$gadget->substitutions->addSubstitution('UP',
$gadget->substitutions->substitute($pref['name']),
$gadget->substitutions->substitute($pref['value']));
}
}
+
/**
* Process the UserPrefs values based on the current context
*
@@ -140,7 +142,7 @@
*/
private function parseUserPrefs(Gadget &$gadget) {
foreach ($gadget->gadgetSpec->userPrefs as $key => $pref) {
- $queryKey = 'up_'.$pref['name'];
+ $queryKey = 'up_' . $pref['name'];
$gadget->gadgetSpec->userPrefs[$key]['value'] = isset($_GET[$queryKey])
? trim(urldecode($_GET[$queryKey])) : $pref['defaultValue'];
}
}
@@ -158,7 +160,7 @@
if (count($gadget->gadgetSpec->locales)) {
$contextLocale = $this->context->getLocale();
$locales = $gadget->gadgetSpec->locales;
- $gadget->rightToLeft = false;
+ $gadget->rightToLeft = false;
$full = $partial = $all = null;
foreach ($locales as $locale) {
if ($locale['lang'] == $contextLocale['lang'] && $locale['country'] ==
$contextLocale['country']) {
@@ -193,11 +195,11 @@
foreach ($gadget->getLocales() as $key => $locale) {
// Only fetch the locales that match the current context's language and
country
if (($locale['country'] == 'all' && $locale['lang'] == 'all') ||
($locale['lang'] == $contextLocale['lang'] && $locale['country'] == 'all') ||
($locale['lang'] == $contextLocale['lang'] && $locale['country'] ==
$contextLocale['country'])) {
- if (!empty($locale['messages'])) {
+ if (! empty($locale['messages'])) {
// locale matches the current context, add it to the requests queue
- $request = new RemoteContentRequest($locale['messages']);
- $request->createRemoteContentRequestWithUri($locale['messages']);
- $request->getOptions()->ignoreCache =
$this->context->getIgnoreCache();
+ $request = new RemoteContentRequest($locale['messages']);
+ $request->createRemoteContentRequestWithUri($locale['messages']);
+ $request->getOptions()->ignoreCache =
$this->context->getIgnoreCache();
$unsignedRequests[] = $request;
}
} else {
@@ -205,35 +207,35 @@
unset($gadget->gadgetSpec->locales[$key]);
}
}
-
- // Add preloads to the request queue
- foreach ($gadget->getPreloads() as $preload) {
- if (!empty($preload['href'])) {
- $request = new RemoteContentRequest($preload['href']);
- if (!empty($preload['authz']) && $preload['authz'] == 'SIGNED') {
- if ($this->token == '') {
- throw new GadgetException("Signed preloading requested, but no
valid security token set");
- }
- $request = new RemoteContentRequest($preload['href']);
- $request->setAuthType(RemoteContentRequest::$AUTH_SIGNED);
- $request->setNotSignedUri($preload['href']);
- $request->setToken($this->token);
- $request->getOptions()->ignoreCache =
$this->context->getIgnoreCache();
- if (strcasecmp($preload['signViewer'], 'false') == 0) {
- $request->getOptions()->viewerSigned = false;
- }
- if (strcasecmp($preload['signOwner'], 'false') == 0) {
- $request->getOptions()->ownerSigned = false;
- }
- $signedRequests[] = $request;
- } else {
- $request->createRemoteContentRequestWithUri($preload['href']);
- $request->getOptions()->ignoreCache =
$this->context->getIgnoreCache();
- $unsignedRequests[] = $request;
- }
+ if (! $gadget->gadgetContext instanceof MetadataGadgetContext) {
+ // Add preloads to the request queue
+ foreach ($gadget->getPreloads() as $preload) {
+ if (! empty($preload['href'])) {
+ $request = new RemoteContentRequest($preload['href']);
+ if (! empty($preload['authz']) && $preload['authz'] == 'SIGNED') {
+ if ($this->token == '') {
+ throw new GadgetException("Signed preloading requested, but no
valid security token set");
+ }
+ $request = new RemoteContentRequest($preload['href']);
+ $request->setAuthType(RemoteContentRequest::$AUTH_SIGNED);
+ $request->setNotSignedUri($preload['href']);
+ $request->setToken($this->token);
+ $request->getOptions()->ignoreCache =
$this->context->getIgnoreCache();
+ if (strcasecmp($preload['signViewer'], 'false') == 0) {
+ $request->getOptions()->viewerSigned = false;
+ }
+ if (strcasecmp($preload['signOwner'], 'false') == 0) {
+ $request->getOptions()->ownerSigned = false;
+ }
+ $signedRequests[] = $request;
+ } else {
+ $request->createRemoteContentRequestWithUri($preload['href']);
+ $request->getOptions()->ignoreCache =
$this->context->getIgnoreCache();
+ $unsignedRequests[] = $request;
+ }
+ }
}
}
-
// Perform the non-signed requests
$responses = array();
if (count($unsignedRequests)) {
@@ -247,7 +249,7 @@
}
// Perform the signed requests
if (count($signedRequests)) {
- $signingFetcherFactory = new
SigningFetcherFactory(Config::get("private_key_file"));
+ $signingFetcherFactory = new
SigningFetcherFactory(Config::get("private_key_file"));
$remoteContent = new BasicRemoteContent(new BasicRemoteContentFetcher(),
$signingFetcherFactory);
$resps = $remoteContent->multiFetch($signedRequests);
foreach ($resps as $response) {
@@ -258,13 +260,13 @@
}
// assign the results to the gadget locales and preloads (using the url as
the key)
foreach ($gadget->gadgetSpec->locales as $key => $locale) {
- if (!empty($locale['messages']) &&
isset($responses[$locale['messages']]) && $responses[$locale['messages']]['rc']
== 200) {
+ if (! empty($locale['messages']) &&
isset($responses[$locale['messages']]) && $responses[$locale['messages']]['rc']
== 200) {
$gadget->gadgetSpec->locales[$key]['messageBundle'] =
$this->parseMessageBundle($responses[$locale['messages']]['body']);
}
}
$preloads = array();
foreach ($gadget->gadgetSpec->preloads as $key => $preload) {
- if (!empty($preload['href']) && isset($responses[$preload['href']]) &&
$responses[$preload['href']]['rc'] == 200) {
+ if (! empty($preload['href']) && isset($responses[$preload['href']]) &&
$responses[$preload['href']]['rc'] == 200) {
$preloads[] = array_merge(array('id' => $preload['href']),
$responses[$preload['href']]);
}
}
@@ -281,7 +283,7 @@
libxml_use_internal_errors(true);
$doc = new DOMDocument();
if (! $doc->loadXML($messageBundleData, LIBXML_NOCDATA)) {
- throw new GadgetSpecException("Error parsing gadget
xml:\n".XmlError::getErrors($messageBundleData));
+ throw new GadgetSpecException("Error parsing gadget xml:\n" .
XmlError::getErrors($messageBundleData));
}
$messageBundle = array();
if (($messageBundleNode = $doc->getElementsByTagName('messagebundle')) !=
null && $messageBundleNode->length > 0) {