/** * 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; }
/** * 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; }
/** * 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; }
/** * 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; }
/** * 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); }
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; }
/** * @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; }
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; }
function &build($url) { $uri =& parent::build($url); return $uri; }
/** * 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; }
/** * 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); }
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; }