Example #1
0
 /**
  * Function to convert an internal URI to a route
  *
  * @param   string  $url  The internal URL
  *
  * @return  string  The absolute search engine friendly URL
  *
  * @since   1.5
  */
 public function build($url)
 {
     $uri = parent::build($url);
     // Get the path data
     $route = $uri->getPath();
     // Add the suffix to the uri
     if ($this->_mode == JROUTER_MODE_SEF && $route) {
         $app = JApplication::getInstance('site');
         if ($app->getCfg('sef_suffix') && !(substr($route, -9) == 'index.php' || substr($route, -1) == '/')) {
             if ($format = $uri->getVar('format', 'html')) {
                 $route .= '.' . $format;
                 $uri->delVar('format');
             }
         }
         if ($app->getCfg('sef_rewrite')) {
             // Transform the route
             if ($route == 'index.php') {
                 $route = '';
             } else {
                 $route = str_replace('index.php/', '', $route);
             }
         }
     }
     // Add basepath to the uri
     $uri->setPath(JUri::base(true) . '/' . $route);
     return $uri;
 }
Example #2
0
 /**
  * Translates an internal Joomla URL to a humanly readible URL.
  *
  * @param   string   $url    Absolute or Relative URI to Joomla resource.
  * @param   boolean  $xhtml  Replace & by & for XML compilance.
  * @param   integer  $ssl    Secure state for the resolved URI.
  *                             1: Make URI secure using global secure site URI.
  *                             0: Leave URI in the same secure state as it was passed to the function.
  *                            -1: Make URI unsecure using the global unsecure site URI.
  *
  * @return  The translated humanly readible URL.
  *
  * @since   11.1
  */
 public static function _($url, $xhtml = true, $ssl = null)
 {
     if (!self::$_router) {
         // Get the router.
         self::$_router = JFactory::getApplication()->getRouter();
         // Make sure that we have our router
         if (!self::$_router) {
             return null;
         }
     }
     if (strpos($url, '&') !== 0 && strpos($url, 'index.php') !== 0) {
         return $url;
     }
     // Build route.
     $uri = self::$_router->build($url);
     $url = $uri->toString(array('path', 'query', 'fragment'));
     // Replace spaces.
     $url = preg_replace('/\\s/u', '%20', $url);
     /*
      * Get the secure/unsecure URLs.
      *
      * If the first 5 characters of the BASE are 'https', then we are on an ssl connection over
      * https and need to set our secure URL to the current request URL, if not, and the scheme is
      * 'http', then we need to do a quick string manipulation to switch schemes.
      */
     if ((int) $ssl) {
         $uri = JURI::getInstance();
         // Get additional parts.
         static $prefix;
         if (!$prefix) {
             $prefix = $uri->toString(array('host', 'port'));
         }
         // Determine which scheme we want.
         $scheme = (int) $ssl === 1 ? 'https' : 'http';
         // Make sure our URL path begins with a slash.
         if (!preg_match('#^/#', $url)) {
             $url = '/' . $url;
         }
         // Build the URL.
         $url = $scheme . '://' . $prefix . $url;
     }
     if ($xhtml) {
         $url = htmlspecialchars($url);
     }
     return $url;
 }
Example #3
0
 /**
  * Translates an internal Joomla URL to a humanly readable URL.
  *
  * @param   string   $url    Absolute or Relative URI to Joomla resource.
  * @param   boolean  $xhtml  Replace & by & for XML compliance.
  * @param   integer  $ssl    Secure state for the resolved URI.
  *                             0: (default) No change, use the protocol currently used in the request
  *                             1: Make URI secure using global secure site URI.
  *                             2: Make URI unsecure using the global unsecure site URI.
  *
  * @return string The translated humanly readable URL.
  *
  * @since   11.1
  */
 public static function _($url, $xhtml = true, $ssl = null)
 {
     if (!self::$_router) {
         // Get the router.
         $app = JFactory::getApplication();
         self::$_router = $app::getRouter();
         // Make sure that we have our router
         if (!self::$_router) {
             return null;
         }
     }
     if (!is_array($url) && strpos($url, '&') !== 0 && strpos($url, 'index.php') !== 0) {
         return $url;
     }
     // Build route.
     $uri = self::$_router->build($url);
     $scheme = array('path', 'query', 'fragment');
     /*
      * Get the secure/unsecure URLs.
      *
      * If the first 5 characters of the BASE are 'https', then we are on an ssl connection over
      * https and need to set our secure URL to the current request URL, if not, and the scheme is
      * 'http', then we need to do a quick string manipulation to switch schemes.
      */
     if ((int) $ssl || $uri->isSsl()) {
         static $host_port;
         if (!is_array($host_port)) {
             $uri2 = JUri::getInstance();
             $host_port = array($uri2->getHost(), $uri2->getPort());
         }
         // Determine which scheme we want.
         $uri->setScheme((int) $ssl === 1 || $uri->isSsl() ? 'https' : 'http');
         $uri->setHost($host_port[0]);
         $uri->setPort($host_port[1]);
         $scheme = array_merge($scheme, array('host', 'port', 'scheme'));
     }
     $url = $uri->toString($scheme);
     // Replace spaces.
     $url = preg_replace('/\\s/u', '%20', $url);
     if ($xhtml) {
         $url = htmlspecialchars($url);
     }
     return $url;
 }
Example #4
0
 /**
  * Function to convert an internal URI to a route
  *
  * @param   string  $url  The internal URL
  *
  * @return  string  The absolute search engine friendly URL
  *
  * @since   1.5
  */
 public function build($url)
 {
     // Create the URI object
     $uri = parent::build($url);
     // Get the path data
     $route = $uri->getPath();
     // Add basepath to the uri
     $uri->setPath(JUri::base(true) . '/' . $route);
     return $uri;
 }
Example #5
0
 /**
  * testBuild().
  *
  * @param   string   $url       The URL
  * @param   integer  $mode      JROUTER_MODE_RAW or JROUTER_MODE_SEF
  * @param   array    $vars      An associative array with global variables
  * @param   array    $map       Valuemap for JApplication::get() Mock
  * @param   array    $server    Values for $_SERVER
  * @param   array    $expected  Expected value
  *
  * @dataProvider casesBuild
  *
  * @return void
  *
  * @since  3.4
  */
 public function testBuild($url, $mode, $vars, $map, $server, $expected)
 {
     //Set $_SERVER variable
     $_SERVER = array_merge($_SERVER, $server);
     $this->object->setMode($mode);
     $app = $this->object->getApp();
     $app->expects($this->any())->method('get')->will($this->returnValueMap($map));
     $this->object->setApp($app);
     $uri = $this->object->build($url);
     // Check the expected values
     $this->assertEquals($expected, $uri->toString());
     // Check that caching works
     $juri = $this->object->build($url);
     $this->assertEquals($uri, $juri);
 }
Example #6
0
 function &build($url)
 {
     $uri =& parent::build($url);
     // Get the path data
     $route = $uri->getPath();
     //Add the suffix to the uri
     if ($this->_mode == JROUTER_MODE_SEF && $route) {
         $app =& JFactory::getApplication();
         if ($app->getCfg('sef_rewrite')) {
             //Transform the route
             $route = str_replace('index.php/', '', $route);
         }
     }
     //Add basepath to the uri
     $uri->setPath($route);
     return $uri;
 }
Example #7
0
 /**
  * @param   string $url      The URL
  * @param   string $expected Expected return value
  *
  * @dataProvider casesProcessBuildRulesOrder
  *
  * @since        4.0
  */
 public function testStagesAreProcessedInCorrectOrder($url, $expected)
 {
     $this->object->attachBuildRule(function (JRouter $router, JUri $uri) {
         $uri->setVar('var1', 'before');
         $uri->setVar('var3', 'before');
         $uri->setVar('var4', 'before');
     }, JRouter::PROCESS_BEFORE);
     $this->object->attachBuildRule(function (JRouter $router, JUri $uri) {
         $uri->setVar('var1', 'during');
         $uri->setVar('var4', 'during');
         $uri->setVar('var5', 'during');
     }, JRouter::PROCESS_DURING);
     $this->object->attachBuildRule(function (JRouter $router, JUri $uri) {
         $uri->setVar('var1', 'after');
         $uri->setVar('var5', 'after');
     }, JRouter::PROCESS_AFTER);
     $this->assertEquals($expected, (string) $this->object->build($url));
 }
 /**
  * Route URI to front-end.
  *
  * @param object  $item
  * @param string  $website
  * @param JRouter $routerSite
  *
  * @return string
  */
 public static function siteRoute($item, $website, $routerSite)
 {
     $routedUri = $routerSite->build(CrowdfundingHelperRoute::getDetailsRoute($item->slug, $item->catslug));
     if ($routedUri instanceof JUri) {
         $routedUri = $routedUri->toString();
     }
     if (false !== strpos($routedUri, "/administrator")) {
         $routedUri = str_replace("/administrator", "", $routedUri);
     }
     return $website . $routedUri;
 }
Example #9
0
 public function build($url)
 {
     $uri = parent::build($url);
     // Get the path data
     $route = $uri->getPath();
     //Add the suffix to the uri
     if ($this->_mode == JROUTER_MODE_SEF && $route) {
         $app = JApplication::getInstance('site');
         if ($app->getCfg('sef_suffix') && !(substr($route, -9) == 'index.php' || substr($route, -1) == '/')) {
             if ($format = $uri->getVar('format', 'html')) {
                 $route .= '.' . $format;
                 $uri->delVar('format');
             }
         }
         if ($app->getCfg('sef_rewrite')) {
             //Transform the route
             if ($route == 'index.php') {
                 $route = '';
             } else {
                 $route = str_replace('index.php/', '', $route);
             }
         }
     }
     //Add basepath to the uri
     $uri->setPath(JURI::base(true) . '/' . $route);
     /* START: HUBzero Extension for SEF Groups */
     if (!empty($_SERVER['REWROTE_FROM'])) {
         if (stripos($uri->toString(), $_SERVER['REWROTE_TO']->getPath()) !== false) {
             $uri->setPath(str_replace($_SERVER['REWROTE_TO']->getPath(), '', $uri->getPath()));
             $uri->setHost($_SERVER['REWROTE_FROM']->getHost());
             $uri->setScheme($_SERVER['REWROTE_FROM']->getScheme());
         }
     }
     /* END: HUBzero Extension for SEF Groups */
     return $uri;
 }
Example #10
0
 function &build($url)
 {
     $uri =& parent::build($url);
     return $uri;
 }
Example #11
0
 /**
  * Short description for 'build'
  *
  * Long description (if any) ...
  *
  * @param      unknown $url Parameter description (if any) ...
  * @return     object Return description (if any) ...
  */
 function &build($url)
 {
     $uri = parent::build($url);
     // Get the path data
     $route = $uri->getPath();
     //Add the suffix to the uri
     if ($this->_mode == JROUTER_MODE_SEF && $route) {
         $app = JFactory::getApplication();
         if ($app->getCfg('sef_suffix') && !(substr($route, -9) == 'index.php' || substr($route, -1) == '/')) {
             if ($format = $uri->getVar('format', 'html')) {
                 $route .= '.' . $format;
                 $uri->delVar('format');
             }
         }
         if ($app->getCfg('sef_rewrite')) {
             //Transform the route
             $route = str_replace('index.php/', '', $route);
         }
     }
     //Add basepath to the uri
     //$uri->setPath(JURI::base(true).'/'.$route);
     $uri->setPath('/' . $route);
     if (!empty($_SERVER['REWROTE_FROM'])) {
         if (stripos($uri->toString(), $_SERVER['REWROTE_TO']->getPath()) !== false) {
             $uri->setPath(str_replace($_SERVER['REWROTE_TO']->getPath(), '', $uri->getPath()));
             $uri->setHost($_SERVER['REWROTE_FROM']->getHost());
             $uri->setScheme($_SERVER['REWROTE_FROM']->getScheme());
         }
     }
     return $uri;
 }
Example #12
0
 /**
  * Tests the build() method
  *
  * @return  void
  *
  * @since   3.4
  */
 public function testBuild()
 {
     $uri = new JUri('index.php?var1=value1');
     $result = $this->object->build('index.php?var1=value1');
     $this->assertEquals($uri, $result);
     $this->assertEquals($uri, $this->object->build('index.php?var1=value1'));
     $object = new JRouter();
     $object->setMode(JROUTER_MODE_SEF);
     $result = $object->build('index.php?var1=value1');
     $this->assertEquals($uri, $result);
 }
Example #13
0
 function &build($url)
 {
     $uri =& JRouter::build($url);
     // Get the path data
     $route = $uri->getPath();
     //Add the suffix to the uri
     if ($this->_mode == JROUTER_MODE_SEF && $route) {
         $app =& JFactory::getApplication();
         if ($app->getCfg('sef_suffix') && !(substr($route, -9) == 'index.php' || substr($route, -1) == '/')) {
             if ($format = $uri->getVar('format', 'html')) {
                 $route .= '.' . $format;
                 $uri->delVar('format');
             }
         }
         if ($app->getCfg('sef_rewrite')) {
             //Transform the route
             $route = str_replace('index.php/', '', $route);
         }
     }
     // 以下即是JRouterSite的build函数的修改点,仅仅不需要增加baseurl
     //Add basepath to the uri
     //$uri->setPath(JURI::base(true).'/'.$route);
     $uri->setPath($route);
     return $uri;
 }