Viewing file:      GadgetUrlRenderer.php (3.13 KB)      -rwxr-xr-x Select action/file-type:    (+) |   (+) |   (+) | Code (+) | Session (+) |   (+) | SDB (+) |   (+) |   (+) |   (+) |   (+) |   (+) |
 
<?php /**  * Licensed to the Apache Software Foundation (ASF) under one  * or more contributor license agreements.  See the NOTICE file  * distributed with this work for additional information  * regarding copyright ownership.  The ASF licenses this file  * to you under the Apache License, Version 2.0 (the  * "License"); you may not use this file except in compliance  * with the License.  You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0  *  * Unless required by applicable law or agreed to in writing,  * software distributed under the License is distributed on an  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY  * KIND, either express or implied.  See the License for the  * specific language governing permissions and limitations  * under the License.  */
  class GadgetUrlRenderer extends GadgetRenderer {
    /**    * Renders an 'URL' type view (where the iframe is redirected to the specified url)    * This is more a legacy iGoogle support feature then something that should be actually    * used. Proxied content is the socially aware (and higher performance) version of this    * See GadgetHrefRenderer for it's implementation.    *    * @param Gadget $gadget    * @param Array $view    */   public function renderGadget(Gadget $gadget, $view) {     // Preserve existing query string parameters.     $redirURI = $view['href'];     $queryStr = strpos($redirURI, '?') !== false ? substr($redirURI, strpos($redirURI, '?')) : '';     $query = $queryStr;     $query .= $this->getPrefsQueryString($gadget->gadgetSpec->userPrefs);     $features = array();     $forcedLibs = Config::get('focedJsLibs');     if ($forcedLibs == null) {       $features = $gadget->features;     } else {       $features = explode(':', $forcedLibs);     }     $query .= $this->appendLibsToQuery($features);     $query .= '&lang=' . urlencode(isset($_GET['lang']) ? $_GET['lang'] : 'en');     $query .= '&country=' . urlencode(isset($_GET['country']) ? $_GET['country'] : 'US');     if (substr($query, 0, 1) == '&') {       $query = '?' . substr($query, 1);     }     $redirURI .= $query;     header('Location: ' . $redirURI);   }
    /**    * Returns the requested libs (from getjsUrl) with the libs_param_name prepended    * ie: in libs=core:caja:etc.js format    *    * @param string $libs the libraries    * @param Gadget $gadget    * @return string the libs=... string to append to the redirection url    */   private function appendLibsToQuery($features) {     $ret = "&";     $ret .= Config::get('libs_param_name');     $ret .= "=";     $ret .= str_replace('?', '&', $this->getJsUrl($features));     return $ret;   }
    /**    * Returns the user preferences in &up_<name>=<val> format    *    * @param array $libs array of features this gadget requires    * @param Gadget $gadget    * @return string the up_<name>=<val> string to use in the redirection url    */   private function getPrefsQueryString($prefs) {     $ret = '';     foreach ($prefs as $pref) {       $ret .= '&';       $ret .= Config::get('userpref_param_prefix');       $ret .= urlencode($pref['name']);       $ret .= '=';       $ret .= urlencode($pref['value']);     }     return $ret;   } } 
  |