You've already forked joomla_test
							
							
		
			
	
	
		
			111 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			111 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @package     Joomla.Site
							 | 
						||
| 
								 | 
							
								 * @subpackage  com_finder
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
							 | 
						||
| 
								 | 
							
								 * @license     GNU General Public License version 2 or later; see LICENSE
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								defined('_JEXEC') or die;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Method to build a SEF route.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @param   array  &$query  An array of route variables.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @return  array  An array of route segments.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @since   2.5
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function FinderBuildRoute(&$query)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									static $menu;
							 | 
						||
| 
								 | 
							
									$segments = array();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// Load the menu if necessary.
							 | 
						||
| 
								 | 
							
									if (!$menu)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										$menu = JFactory::getApplication('site')->getMenu();
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/*
							 | 
						||
| 
								 | 
							
									 * First, handle menu item routes first. When the menu system builds a
							 | 
						||
| 
								 | 
							
									 * route, it only provides the option and the menu item id. We don't have
							 | 
						||
| 
								 | 
							
									 * to do anything to these routes.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									if (count($query) === 2 && isset($query['Itemid']) && isset($query['option']))
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										return $segments;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/*
							 | 
						||
| 
								 | 
							
									 * Next, handle a route with a supplied menu item id. All system generated
							 | 
						||
| 
								 | 
							
									 * routes should fall into this group. We can assume that the menu item id
							 | 
						||
| 
								 | 
							
									 * is the best possible match for the query but we need to go through and
							 | 
						||
| 
								 | 
							
									 * see which variables we can eliminate from the route query string because
							 | 
						||
| 
								 | 
							
									 * they are present in the menu item route already.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									if (!empty($query['Itemid']))
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										// Get the menu item.
							 | 
						||
| 
								 | 
							
										$item = $menu->getItem($query['Itemid']);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Check if the view matches.
							 | 
						||
| 
								 | 
							
										if ($item && @$item->query['view'] === @$query['view'])
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											unset($query['view']);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Check if the search query filter matches.
							 | 
						||
| 
								 | 
							
										if ($item && @$item->query['f'] === @$query['f'])
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											unset($query['f']);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Check if the search query string matches.
							 | 
						||
| 
								 | 
							
										if ($item && @$item->query['q'] === @$query['q'])
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											unset($query['q']);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										return $segments;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/*
							 | 
						||
| 
								 | 
							
									 * Lastly, handle a route with no menu item id. Fortunately, we only need
							 | 
						||
| 
								 | 
							
									 * to deal with the view as the other route variables are supposed to stay
							 | 
						||
| 
								 | 
							
									 * in the query string.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									if (isset($query['view']))
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										// Add the view to the segments.
							 | 
						||
| 
								 | 
							
										$segments[] = $query['view'];
							 | 
						||
| 
								 | 
							
										unset($query['view']);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									return $segments;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Method to parse a SEF route.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @param   array  $segments  An array of route segments.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @return  array  An array of route variables.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @since   2.5
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function FinderParseRoute($segments)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									$vars = array();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// Check if the view segment is set and it equals search or advanced.
							 | 
						||
| 
								 | 
							
									if (@$segments[0] === 'search' || @$segments[0] === 'advanced')
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										$vars['view'] = $segments[0];
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									return $vars;
							 | 
						||
| 
								 | 
							
								}
							 |