git-svn-id: https://192.168.0.254/svn/Proyectos.FundacionLQDVI_WebCongresos/trunk@2 94ccb1af-fd9d-d947-8d90-7f70ea60afc8
268 lines
7.7 KiB
PHP
268 lines
7.7 KiB
PHP
<?php
|
|
/**
|
|
* @version $Id: router.php 14401 2010-01-26 14:10:00Z louis $
|
|
* @package Joomla
|
|
* @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
|
|
* @license GNU/GPL, see LICENSE.php
|
|
* Joomla! is free software. This version may have been modified pursuant
|
|
* to the GNU General Public License, and as distributed it includes or
|
|
* is derivative of works licensed under the GNU General Public License or
|
|
* other free or open source software licenses.
|
|
* See COPYRIGHT.php for copyright notices and details.
|
|
*/
|
|
|
|
function WeblinksBuildRoute(&$query)
|
|
{
|
|
static $items;
|
|
|
|
$segments = array();
|
|
$itemid = null;
|
|
|
|
// Break up the weblink/category id into numeric and alias values.
|
|
if (isset($query['id']) && strpos($query['id'], ':')) {
|
|
list($query['id'], $query['alias']) = explode(':', $query['id'], 2);
|
|
}
|
|
|
|
// Break up the category id into numeric and alias values.
|
|
if (isset($query['catid']) && strpos($query['catid'], ':')) {
|
|
list($query['catid'], $query['catalias']) = explode(':', $query['catid'], 2);
|
|
}
|
|
|
|
// Get the menu items for this component.
|
|
if (!$items) {
|
|
$component = &JComponentHelper::getComponent('com_weblinks');
|
|
$menu = &JSite::getMenu();
|
|
$items = $menu->getItems('componentid', $component->id);
|
|
}
|
|
|
|
// Search for an appropriate menu item.
|
|
if (is_array($items))
|
|
{
|
|
// If only the option and itemid are specified in the query, return that item.
|
|
if (!isset($query['view']) && !isset($query['id']) && !isset($query['catid']) && isset($query['Itemid'])) {
|
|
$itemid = (int) $query['Itemid'];
|
|
}
|
|
|
|
// Search for a specific link based on the critera given.
|
|
if (!$itemid)
|
|
{
|
|
foreach ($items as $item)
|
|
{
|
|
// Check if this menu item links to this view.
|
|
if (isset($item->query['view']) && $item->query['view'] == 'weblink'
|
|
&& isset($query['view']) && $query['view'] != 'category'
|
|
&& isset($item->query['id']) && $item->query['id'] == $query['id'])
|
|
{
|
|
$itemid = $item->id;
|
|
}
|
|
elseif (isset($item->query['view']) && $item->query['view'] == 'category'
|
|
&& isset($query['view']) && $query['view'] != 'weblink'
|
|
&& isset($item->query['catid']) && $item->query['catid'] == $query['catid'])
|
|
{
|
|
$itemid = $item->id;
|
|
}
|
|
}
|
|
}
|
|
|
|
// If no specific link has been found, search for a general one.
|
|
if (!$itemid)
|
|
{
|
|
foreach ($items as $item)
|
|
{
|
|
if (isset($query['view']) && $query['view'] == 'weblink'
|
|
&& isset($item->query['view']) && $item->query['view'] == 'category'
|
|
&& isset($item->query['id']) && isset($query['catid'])
|
|
&& $query['catid'] == $item->query['id'])
|
|
{
|
|
// This menu item links to the weblink view but we need to append the weblink id to it.
|
|
$itemid = $item->id;
|
|
$segments[] = isset($query['catalias']) ? $query['catid'].':'.$query['catalias'] : $query['catid'];
|
|
$segments[] = isset($query['alias']) ? $query['id'].':'.$query['alias'] : $query['id'];
|
|
break;
|
|
}
|
|
elseif (isset($query['view']) && $query['view'] == 'category'
|
|
&& isset($item->query['view']) && $item->query['view'] == 'category'
|
|
&& isset($item->query['id']) && isset($query['id']) && $item->query['id'] == $query['id'])
|
|
{
|
|
// This menu item links to the category view but we need to append the category id to it.
|
|
$itemid = $item->id;
|
|
$segments[] = isset($query['alias']) ? $query['id'].':'.$query['alias'] : $query['id'];
|
|
break;
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
// Search for an even more general link.
|
|
if (!$itemid)
|
|
{
|
|
foreach ($items as $item)
|
|
{
|
|
if (isset($query['view']) && $query['view'] == 'weblink' && isset($item->query['view'])
|
|
&& $item->query['view'] == 'categories' && isset($query['catid']) && isset($query['id']))
|
|
{
|
|
// This menu item links to the categories view but we need to append the category and weblink id to it.
|
|
$itemid = $item->id;
|
|
$segments[] = isset($query['catalias']) ? $query['catid'].':'.$query['catalias'] : $query['catid'];
|
|
$segments[] = isset($query['alias']) ? $query['id'].':'.$query['alias'] : $query['id'];
|
|
break;
|
|
}
|
|
elseif (isset($query['view']) && $query['view'] == 'category' && isset($item->query['view'])
|
|
&& $item->query['view'] == 'categories' && !isset($query['catid']))
|
|
{
|
|
// This menu item links to the categories view but we need to append the category id to it.
|
|
$itemid = $item->id;
|
|
$segments[] = isset($query['alias']) ? $query['id'].':'.$query['alias'] : $query['id'];
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Check if the router found an appropriate itemid.
|
|
if (!$itemid)
|
|
{
|
|
// Check if a category was specified
|
|
if (isset($query['view']) && $query['view'] == 'category' && isset($query['id']))
|
|
{
|
|
if (isset($query['alias'])) {
|
|
$query['id'] .= ':'.$query['alias'];
|
|
}
|
|
|
|
// Push the catid onto the stack.
|
|
$segments[] = $query['id'];
|
|
|
|
unset($query['view']);
|
|
unset($query['id']);
|
|
unset($query['alias']);
|
|
}
|
|
// Check if a id was specified.
|
|
elseif (isset($query['id']))
|
|
{
|
|
if (isset($query['catalias'])) {
|
|
$query['catid'] .= ':'.$query['catalias'];
|
|
}
|
|
|
|
// Push the catid onto the stack.
|
|
$segments[] = $query['catid'];
|
|
|
|
|
|
if (isset($query['alias'])) {
|
|
$query['id'] .= ':'.$query['alias'];
|
|
}
|
|
|
|
// Push the id onto the stack.
|
|
$segments[] = $query['id'];
|
|
unset($query['view']);
|
|
unset($query['id']);
|
|
unset($query['alias']);
|
|
unset($query['catid']);
|
|
unset($query['catalias']);
|
|
}
|
|
elseif (isset($query['catid']))
|
|
{
|
|
if (isset($query['alias'])) {
|
|
$query['catid'] .= ':'.$query['catalias'];
|
|
}
|
|
|
|
// Push the catid onto the stack.
|
|
$segments[] = 'category';
|
|
$segments[] = $query['catid'];
|
|
unset($query['view']);
|
|
unset($query['catid']);
|
|
unset($query['catalias']);
|
|
unset($query['alias']);
|
|
}
|
|
else
|
|
{
|
|
// Categories view.
|
|
unset($query['view']);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$query['Itemid'] = $itemid;
|
|
|
|
// Remove the unnecessary URL segments.
|
|
unset($query['view']);
|
|
unset($query['id']);
|
|
unset($query['alias']);
|
|
unset($query['catid']);
|
|
unset($query['catalias']);
|
|
}
|
|
|
|
return $segments;
|
|
}
|
|
|
|
function WeblinksParseRoute($segments)
|
|
{
|
|
$vars = array();
|
|
|
|
// Get the active menu item.
|
|
$menu = &JSite::getMenu();
|
|
$item = &$menu->getActive();
|
|
|
|
// Check if we have a valid menu item.
|
|
if (is_object($item))
|
|
{
|
|
// Proceed through the possible variations trying to match the most specific one.
|
|
if (isset($item->query['view']) && $item->query['view'] == 'weblink' && isset($segments[0]))
|
|
{
|
|
// Contact view.
|
|
$vars['view'] = 'weblink';
|
|
$vars['id'] = $segments[0];
|
|
}
|
|
elseif (isset($item->query['view']) && $item->query['view'] == 'category' && count($segments) == 2)
|
|
{
|
|
// Weblink view.
|
|
$vars['view'] = 'weblink';
|
|
$vars['id'] = $segments[1];
|
|
$vars['catid'] = $segments[0];
|
|
}
|
|
elseif (isset($item->query['view']) && $item->query['view'] == 'category' && isset($segments[0]))
|
|
{
|
|
// Category view.
|
|
$vars['view'] = 'category';
|
|
$vars['id'] = $segments[0];
|
|
}
|
|
elseif (isset($item->query['view']) && $item->query['view'] == 'categories' && count($segments) == 2)
|
|
{
|
|
// Weblink view.
|
|
$vars['view'] = 'weblink';
|
|
$vars['id'] = $segments[1];
|
|
$vars['catid'] = $segments[0];
|
|
}
|
|
elseif (isset($item->query['view']) && $item->query['view'] == 'categories' && isset($segments[0]))
|
|
{
|
|
// Category view.
|
|
$vars['view'] = 'category';
|
|
$vars['id'] = $segments[0];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// Count route segments
|
|
$count = count($segments);
|
|
|
|
// Check if there are any route segments to handle.
|
|
if ($count)
|
|
{
|
|
if ($count == 2)
|
|
{
|
|
// We are viewing a weblink.
|
|
$vars['view'] = 'weblink';
|
|
$vars['catid'] = $segments[$count-2];
|
|
$vars['id'] = $segments[$count-1];
|
|
}
|
|
else
|
|
{
|
|
// We are viewing a category.
|
|
$vars['view'] = 'category';
|
|
$vars['id'] = $segments[$count-1];
|
|
}
|
|
}
|
|
}
|
|
|
|
return $vars;
|
|
}
|