Author: lindner
Date: Fri May  7 23:02:02 2010
New Revision: 942263

URL: http://svn.apache.org/viewvc?rev=942263&view=rev
Log:
SHINDIG-1262 | Backpatch from Tim Wintle

Modified:
    shindig/branches/1.0.x/php/src/gadgets/ContainerConfig.php
    shindig/branches/1.0.x/php/src/gadgets/GadgetServer.php
    shindig/branches/1.0.x/php/src/gadgets/oauth/BasicGadgetOAuthTokenStore.php
    shindig/branches/1.0.x/php/src/gadgets/servlet/GadgetRenderingServlet.php

Modified: shindig/branches/1.0.x/php/src/gadgets/ContainerConfig.php
URL: 
http://svn.apache.org/viewvc/shindig/branches/1.0.x/php/src/gadgets/ContainerConfig.php?rev=942263&r1=942262&r2=942263&view=diff
==============================================================================
--- shindig/branches/1.0.x/php/src/gadgets/ContainerConfig.php (original)
+++ shindig/branches/1.0.x/php/src/gadgets/ContainerConfig.php Fri May  7 
23:02:02 2010
@@ -50,7 +50,7 @@ class ContainerConfig {
     $contents = file_get_contents($file);
     // remove all comments (both /* */ and // style) because this confuses the 
json parser
     // note: the json parser also crashes on trailing ,'s in records so please 
don't use them
-    $contents = preg_replace('/[^http:\/\/|^https:\/\/]\/\/.*$/m', '', 
preg_replace('@/\\*(?:.|[\\n\\r])*?\\*/@', '', $contents));
+    $contents = self::removeComments($contents);
     $config = json_decode($contents, true);
     if ($config == $contents) {
       throw new Exception("Failed to json_decode the container configuration");
@@ -65,6 +65,15 @@ class ContainerConfig {
     }
   }
 
+  public static function removeComments($str) {
+    // remove /* */ style comments
+    $str = preg_replace('@/\\*.*?\\*/@s', '', $str);
+    // remove // style comments, but keep 'http://' 'https://' and '"//'
+    // for example: "gadgets.oauthGadgetCallbackTemplate" : 
"//%host%/gadgets/oauthcallback"
+    $str = preg_replace('/[^http:\/\/|^https:\/\/|"\/\/]\/\/.*$/m', '', $str);
+    return $str;
+  }
+  
   public function getConfig($container, $name) {
     $config = array();
     if (isset($this->config[$container]) && 
isset($this->config[$container][$name])) {

Modified: shindig/branches/1.0.x/php/src/gadgets/GadgetServer.php
URL: 
http://svn.apache.org/viewvc/shindig/branches/1.0.x/php/src/gadgets/GadgetServer.php?rev=942263&r1=942262&r2=942263&view=diff
==============================================================================
--- shindig/branches/1.0.x/php/src/gadgets/GadgetServer.php (original)
+++ shindig/branches/1.0.x/php/src/gadgets/GadgetServer.php Fri May  7 23:02:02 
2010
@@ -149,6 +149,7 @@ class GadgetServer {
     }
     // userPref's
     $upValues = $gadget->getUserPrefValues();
+    $userPrefs = array();
     foreach ($gadget->getUserPrefs() as $pref) {
       $name = $pref->getName();
       $value = $upValues->getPref($name);
@@ -158,8 +159,10 @@ class GadgetServer {
       if ($value == null) {
         $value = "";
       }
+      $userPrefs[$name] = $value;
       $substitutor->addSubstitution('UP', $name, $value);
     }
+    $gadget->setPrefs(new UserPrefs($userPrefs));
     $this->substitutePreloads($gadget, $substitutor);
   }
 

Modified: 
shindig/branches/1.0.x/php/src/gadgets/oauth/BasicGadgetOAuthTokenStore.php
URL: 
http://svn.apache.org/viewvc/shindig/branches/1.0.x/php/src/gadgets/oauth/BasicGadgetOAuthTokenStore.php?rev=942263&r1=942262&r2=942263&view=diff
==============================================================================
--- shindig/branches/1.0.x/php/src/gadgets/oauth/BasicGadgetOAuthTokenStore.php 
(original)
+++ shindig/branches/1.0.x/php/src/gadgets/oauth/BasicGadgetOAuthTokenStore.php 
Fri May  7 23:02:02 2010
@@ -38,7 +38,7 @@ class BasicGadgetOAuthTokenStore extends
       $oauthConfigStr = file_get_contents($this->OAUTH_CONFIG);
       // remove all comments because this confuses the json parser
       // note: the json parser also crashes on trailing ,'s in records so 
please don't use them
-      $contents = preg_replace('@/\\*(?:.|[\\n\\r])*?\\*/@', '', 
$oauthConfigStr);
+      $contents = self::removeComments($oauthConfigStr);
       $oauthConfig = json_decode($contents, true);
       if ($oauthConfig == $contents) {
         throw new GadgetException("OAuth configuration json failed to parse.");
@@ -50,7 +50,16 @@ class BasicGadgetOAuthTokenStore extends
       throw new GadgetException($e);
     }
   }
-
+  
+  public static function removeComments($str) {
+    // remove /* */ style comments
+    $str = preg_replace('@/\\*.*?\\*/@s', '', $str);
+    // remove // style comments, but keep 'http://' 'https://' and '"//'
+    // for example: "gadgets.oauthGadgetCallbackTemplate" : 
"//%host%/gadgets/oauthcallback"
+    $str = preg_replace('/[^http:\/\/|^https:\/\/|"\/\/]\/\/.*$/m', '', $str);
+    return $str;
+  }
+  
   private function storeConsumerInfos($gadgetUri, $oauthConfig) {
     foreach ($oauthConfig as $key => $value) {
       $serviceName = $key;

Modified: 
shindig/branches/1.0.x/php/src/gadgets/servlet/GadgetRenderingServlet.php
URL: 
http://svn.apache.org/viewvc/shindig/branches/1.0.x/php/src/gadgets/servlet/GadgetRenderingServlet.php?rev=942263&r1=942262&r2=942263&view=diff
==============================================================================
--- shindig/branches/1.0.x/php/src/gadgets/servlet/GadgetRenderingServlet.php 
(original)
+++ shindig/branches/1.0.x/php/src/gadgets/servlet/GadgetRenderingServlet.php 
Fri May  7 23:02:02 2010
@@ -187,7 +187,7 @@ class GadgetRenderingServlet extends Htt
       }
       // otherwise it was already included by config.forceJsLibs.
     }
-    $content .= $this->appendJsConfig($context, $gadget, ! empty($forcedLibs)) 
. $this->appendMessages($gadget) . $this->appendPreloads($gadget, $context) . 
"</script>";
+    $content .= $this->appendJsConfig($context, $gadget, ! empty($forcedLibs)) 
. $this->appendMessages($gadget) . $this->appendPreferences($gadget) . 
$this->appendPreloads($gadget, $context) . "</script>";
     if (strlen($externJs) > 0) {
       $content .= $externJs;
     }
@@ -361,6 +361,11 @@ class GadgetRenderingServlet extends Htt
     return "gadgets.Prefs.setMessages_($msgs);\n";
   }
 
+  private function appendPreferences(Gadget $gadget) {
+    $prefs = json_encode($gadget->getUserPrefValues()->getPrefs());
+    return "gadgets.Prefs.setDefaultPrefs_($prefs);\n";
+  }
+
   /**
    * Appends data from <Preload> elements to make them available to
    * gadgets.io.


Reply via email to