Beispiel #1
0
 /**
  * Create and return the pagination data object.
  *
  * @return  object  Pagination data object.
  *
  * @since   1.5
  */
 protected function _buildDataObject()
 {
     $data = new stdClass();
     if (!$this->uri) {
         $this->uri = KunenaRoute::$current;
     }
     // Build the additional URL parameters string.
     foreach ($this->additionalUrlParams as $key => $value) {
         $this->uri->setVar($key, $value);
     }
     $limitstartKey = $this->prefix . 'limitstart';
     $data->all = new JPaginationObject(JText::_('JLIB_HTML_VIEW_ALL'), $this->prefix);
     if (!$this->viewall) {
         $this->uri->delVar($limitstartKey, '');
         $data->all->base = '0';
         $data->all->link = JRoute::_((string) $this->uri);
     }
     // Set the start and previous data objects.
     $data->start = new JPaginationObject(JText::_('JLIB_HTML_START'), $this->prefix);
     $data->previous = new JPaginationObject(JText::_('JPREV'), $this->prefix);
     if ($this->pagesCurrent > 1) {
         $page = ($this->pagesCurrent - 2) * $this->limit;
         $this->uri->setVar($limitstartKey, '0');
         $data->start->base = '0';
         $data->start->link = JRoute::_((string) $this->uri);
         $this->uri->setVar($limitstartKey, $page);
         $data->previous->base = $page;
         $data->previous->link = JRoute::_((string) $this->uri);
     }
     // Set the next and end data objects.
     $data->next = new JPaginationObject(JText::_('JNEXT'), $this->prefix);
     $data->end = new JPaginationObject(JText::_('JLIB_HTML_END'), $this->prefix);
     if ($this->pagesCurrent < $this->pagesTotal) {
         $next = $this->pagesCurrent * $this->limit;
         $end = ($this->pagesTotal - 1) * $this->limit;
         $this->uri->setVar($limitstartKey, $next);
         $data->next->base = $next;
         $data->next->link = JRoute::_((string) $this->uri);
         $this->uri->setVar($limitstartKey, $end);
         $data->end->base = $end;
         $data->end->link = JRoute::_((string) $this->uri);
     }
     $data->pages = array();
     $range = range($this->pagesStart, $this->pagesStop);
     $range[] = 1;
     $range[] = $this->pagesTotal;
     sort($range);
     foreach ($range as $i) {
         $offset = ($i - 1) * $this->limit;
         $data->pages[$i] = new JPaginationObject($i, $this->prefix);
         if ($i != $this->pagesCurrent || $this->viewall) {
             $this->uri->setVar($limitstartKey, $offset);
             $data->pages[$i]->base = $offset;
             $data->pages[$i]->link = JRoute::_((string) $this->uri);
         } elseif ($i == $this->pagesCurrent) {
             $data->pages[$i]->active = true;
         }
     }
     return $data;
 }
 /**
  * Test the delVar method.
  *
  * @return  void
  *
  * @since   11.1
  * @covers  JUri::delVar
  */
 public function testDelVar()
 {
     $this->object->parse('http://*****:*****@www.example.com:80/path/file.html?var=value#fragment');
     $this->assertThat($this->object->getVar('var'), $this->equalTo('value'));
     $this->object->delVar('var');
     $this->assertThat($this->object->getVar('var'), $this->equalTo(''));
 }
 /**
  * @param JUri $uri
  *
  * @throws RuntimeException
  *
  * @return mixed
  */
 protected function getRemote($uri, $persistent = false)
 {
     $uri->setScheme('https');
     $uri->setHost('www.warcraftlogs.com');
     $this->url = $uri->toString();
     $result = parent::getRemote($this->url, $persistent);
     $result->body = json_decode($result->body);
     if ($result->code != 200) {
         // hide api key from normal users
         if (!JFactory::getUser()->get('isRoot')) {
             $uri->delVar('api_key');
             $this->url = $uri->toString();
         }
         $msg = JText::sprintf('Server Error: %s url: %s', $result->body->error, JHtml::_('link', $this->url, $result->code, array('target' => '_blank')));
         // TODO JText::_()
         throw new RuntimeException($msg);
     }
     return $result;
 }
Beispiel #4
0
 /**
  * Redirect back to the referrer page.
  *
  * If there's no referrer or it's external, Kunena will return to forum home page.
  * Also redirects back to tasks are prevented.
  *
  * @param string $anchor
  */
 protected function redirectBack($anchor = '')
 {
     $default = JUri::base() . ($this->app->isSite() ? ltrim(KunenaRoute::_('index.php?option=com_kunena'), '/') : '');
     $referrer = $this->app->input->server->getString('HTTP_REFERER');
     $uri = JUri::getInstance($referrer ? $referrer : $default);
     if (JUri::isInternal($uri->toString())) {
         // Parse route.
         $vars = $this->app->getRouter()->parse($uri);
         $uri = new JUri('index.php');
         $uri->setQuery($vars);
         // Make sure we do not return into a task.
         $uri->delVar('task');
         $uri->delVar(JSession::getFormToken());
     } else {
         $uri = JUri::getInstance($default);
     }
     if ($anchor) {
         $uri->setFragment($anchor);
     }
     $this->app->redirect(JRoute::_($uri->toString()));
 }
Beispiel #5
0
	/**
	 * Get the referrer page.
	 *
	 * If there's no referrer or it's external, Kunena will return default page.
	 * Also referrers back to tasks are removed.
	 *
	 * @param string $default  Default page to return into.
	 * @param string $anchor   Anchor (location in the page).
	 *
	 * @return string
	 */
	public static function getReferrer($default = null, $anchor = null)
	{
		$app = JFactory::getApplication();

		$referrer = $app->input->server->getString('HTTP_REFERER');

		if ($referrer)
		{
			$uri = new JUri($referrer);

			// Make sure we do not return into a task -- or if task is SEF encoded, make sure it fails.
			$uri->delVar('task');
			$uri->delVar(JSession::getFormToken());

			// Check that referrer was from the same domain and came from the Joomla frontend or backend.
			$base = $uri->toString(array('scheme', 'host', 'port', 'path'));
			$host = $uri->toString(array('scheme', 'host', 'port'));

			// Referrer should always have host set and it should come from the same base address.
			if (empty($host) || stripos($base, JUri::base()) !== 0)
			{
				$uri = null;
			}
		}

		if (!isset($uri))
		{
			if ($default == null)
			{
				$default = $app->isSite() ? 'index.php?option=com_kunena' : 'administrator/index.php?option=com_kunena';
			}

			$default = self::_($default);
			$uri = new JUri($default);
		}

		if ($anchor)
		{
			$uri->setFragment($anchor);
		}

		return $uri->toString(array('path', 'query', 'fragment'));
	}
Beispiel #6
0
 /**
  * Returns a JUri instance with a prototype URI used as the base for the
  * other URIs created by the JSON renderer
  *
  * @return  JUri  The prototype JUri instance
  */
 protected function _getPrototypeURIForPagination()
 {
     $protoUri = new JUri('index.php');
     $protoUri->setQuery($this->input->getData());
     $protoUri->delVar('savestate');
     $protoUri->delVar('base_path');
     return $protoUri;
 }
Beispiel #7
0
 /**
  * Tests the buildRawRoute() method
  *
  * @return  void
  * @testdox JRouterSite::buildRawRoute() executes a legacy component router's preprocess method
  * @since   3.4
  */
 public function testALegacyComponentRoutersPreprocessMethodIsExecuted()
 {
     $uri = new JUri('index.php');
     $object = new JRouterSite(array(), $this->getMockCmsApp(), TestMockMenu::create($this));
     $buildRawRouteMethod = new ReflectionMethod('JRouterSite', 'buildRawRoute');
     $buildRawRouteMethod->setAccessible(true);
     $uri->setVar('option', 'com_test3');
     $uri->delVar('testvar');
     $buildRawRouteMethod->invokeArgs($object, array(&$uri));
     $this->assertEquals('index.php?option=com_test3', (string) $uri);
 }
 /**
  * @param plgSystemCommunityBuilder $router
  * @param JUri $uri
  */
 public function buildRule(&$router, &$uri)
 {
     $app = JFactory::getApplication();
     if ($app->isSite() && $this->isRerouteSafe()) {
         if ($uri->getVar('option') == 'com_users') {
             $uri->setVar('option', 'com_comprofiler');
             $view = $uri->getVar('task');
             if (!$view) {
                 $view = $uri->getVar('view');
             }
             switch ($view) {
                 case 'profile':
                     if ($uri->getVar('layout') == 'edit') {
                         $userId = (int) $uri->getVar('user_id');
                         $task = 'userdetails';
                         if ($userId) {
                             $task .= '&user='******'userprofile';
                     }
                     break;
                 case 'registration':
                     $task = 'registers';
                     break;
                 case 'reset':
                 case 'remind':
                     $task = 'lostpassword';
                     break;
                 case 'logout':
                     $task = 'logout';
                     break;
                 case 'login':
                 default:
                     $task = 'login';
                     break;
             }
             $uri->delVar('task');
             $uri->delVar('view');
             $uri->delVar('layout');
             if ($task) {
                 $uri->setVar('view', $task);
             }
             $Itemid = $uri->getVar('Itemid');
             if (!$Itemid) {
                 $Itemid = $this->params->get('itemids', 1) ? $this->getItemid($task) : null;
             }
             $uri->delVar('Itemid');
             if ($Itemid) {
                 $uri->setVar('Itemid', $Itemid);
             }
         }
     }
 }
Beispiel #9
0
 /**
  * smartUrlConvertor
  *
  * @param JUri  $uri
  * @param array $button
  *
  * @return  mixed
  */
 public function smartUrlConvertor($uri, $button)
 {
     // fix task redirect
     if ($uri->getVar('layout') == 'edit') {
         $uri->setVar('task', "{$uri->getVar('view')}.{$uri->getVar('layout')}");
         $uri->delVar('view');
         $uri->delVar('layout');
     }
     return $uri;
 }