243 lines
5.0 KiB
PHP
243 lines
5.0 KiB
PHP
<?php
|
|
/**
|
|
* @package Joomla.Site
|
|
* @subpackage com_users
|
|
*
|
|
* @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
|
|
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
|
*/
|
|
|
|
defined('_JEXEC') or die;
|
|
|
|
/**
|
|
* Function to build a Users URL route.
|
|
*
|
|
* @return array The array of query string values for which to build a route.
|
|
* @return array The URL route with segments represented as an array.
|
|
* @since 1.5
|
|
*/
|
|
function UsersBuildRoute(&$query)
|
|
{
|
|
// Declare static variables.
|
|
static $items;
|
|
static $default;
|
|
static $registration;
|
|
static $profile;
|
|
static $login;
|
|
static $remind;
|
|
static $resend;
|
|
static $reset;
|
|
|
|
$segments = array();
|
|
|
|
// Get the relevant menu items if not loaded.
|
|
if (empty($items))
|
|
{
|
|
// Get all relevant menu items.
|
|
$app = JFactory::getApplication();
|
|
$menu = $app->getMenu();
|
|
$items = $menu->getItems('component', 'com_users');
|
|
|
|
// Build an array of serialized query strings to menu item id mappings.
|
|
for ($i = 0, $n = count($items); $i < $n; $i++)
|
|
{
|
|
// Check to see if we have found the resend menu item.
|
|
if (empty($resend) && !empty($items[$i]->query['view']) && ($items[$i]->query['view'] == 'resend'))
|
|
{
|
|
$resend = $items[$i]->id;
|
|
}
|
|
|
|
// Check to see if we have found the reset menu item.
|
|
if (empty($reset) && !empty($items[$i]->query['view']) && ($items[$i]->query['view'] == 'reset'))
|
|
{
|
|
$reset = $items[$i]->id;
|
|
}
|
|
|
|
// Check to see if we have found the remind menu item.
|
|
if (empty($remind) && !empty($items[$i]->query['view']) && ($items[$i]->query['view'] == 'remind'))
|
|
{
|
|
$remind = $items[$i]->id;
|
|
}
|
|
|
|
// Check to see if we have found the login menu item.
|
|
if (empty($login) && !empty($items[$i]->query['view']) && ($items[$i]->query['view'] == 'login'))
|
|
{
|
|
$login = $items[$i]->id;
|
|
}
|
|
|
|
// Check to see if we have found the registration menu item.
|
|
if (empty($registration) && !empty($items[$i]->query['view']) && ($items[$i]->query['view'] == 'registration'))
|
|
{
|
|
$registration = $items[$i]->id;
|
|
}
|
|
|
|
// Check to see if we have found the profile menu item.
|
|
if (empty($profile) && !empty($items[$i]->query['view']) && ($items[$i]->query['view'] == 'profile'))
|
|
{
|
|
$profile = $items[$i]->id;
|
|
}
|
|
}
|
|
|
|
// Set the default menu item to use for com_users if possible.
|
|
if ($profile)
|
|
{
|
|
$default = $profile;
|
|
}
|
|
elseif ($registration)
|
|
{
|
|
$default = $registration;
|
|
}
|
|
elseif ($login)
|
|
{
|
|
$default = $login;
|
|
}
|
|
}
|
|
|
|
if (!empty($query['view']))
|
|
{
|
|
switch ($query['view'])
|
|
{
|
|
case 'reset':
|
|
if ($query['Itemid'] = $reset)
|
|
{
|
|
unset ($query['view']);
|
|
}
|
|
else
|
|
{
|
|
$query['Itemid'] = $default;
|
|
}
|
|
break;
|
|
|
|
case 'resend':
|
|
if ($query['Itemid'] = $resend)
|
|
{
|
|
unset ($query['view']);
|
|
}
|
|
else
|
|
{
|
|
$query['Itemid'] = $default;
|
|
}
|
|
break;
|
|
|
|
case 'remind':
|
|
if ($query['Itemid'] = $remind)
|
|
{
|
|
unset ($query['view']);
|
|
}
|
|
else
|
|
{
|
|
$query['Itemid'] = $default;
|
|
}
|
|
break;
|
|
|
|
case 'login':
|
|
if ($query['Itemid'] = $login)
|
|
{
|
|
unset ($query['view']);
|
|
}
|
|
else
|
|
{
|
|
$query['Itemid'] = $default;
|
|
}
|
|
break;
|
|
|
|
case 'registration':
|
|
if ($query['Itemid'] = $registration)
|
|
{
|
|
unset ($query['view']);
|
|
}
|
|
else
|
|
{
|
|
$query['Itemid'] = $default;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
case 'profile':
|
|
if (!empty($query['view']))
|
|
{
|
|
$segments[] = $query['view'];
|
|
}
|
|
unset ($query['view']);
|
|
if ($query['Itemid'] = $profile)
|
|
{
|
|
unset ($query['view']);
|
|
}
|
|
else
|
|
{
|
|
$query['Itemid'] = $default;
|
|
}
|
|
|
|
// Only append the user id if not "me".
|
|
$user = JFactory::getUser();
|
|
if (!empty($query['user_id']) && ($query['user_id'] != $user->id))
|
|
{
|
|
$segments[] = $query['user_id'];
|
|
}
|
|
unset ($query['user_id']);
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
return $segments;
|
|
}
|
|
|
|
/**
|
|
* Function to parse a Users URL route.
|
|
*
|
|
* @return array The URL route with segments represented as an array.
|
|
* @return array The array of variables to set in the request.
|
|
* @since 1.5
|
|
*/
|
|
function UsersParseRoute($segments)
|
|
{
|
|
$vars = array();
|
|
|
|
// Only run routine if there are segments to parse.
|
|
if (count($segments) < 1)
|
|
{
|
|
return;
|
|
}
|
|
|
|
// Get the package from the route segments.
|
|
$userId = array_pop($segments);
|
|
|
|
if (!is_numeric($userId))
|
|
{
|
|
$vars['view'] = 'profile';
|
|
return $vars;
|
|
}
|
|
|
|
if (is_numeric($userId))
|
|
{
|
|
// Get the package id from the packages table by alias.
|
|
$db = JFactory::getDbo();
|
|
$db->setQuery(
|
|
'SELECT ' . $db->quoteName('id') .
|
|
' FROM ' . $db->quoteName('#__users') .
|
|
' WHERE ' . $db->quoteName('id') . ' = ' . (int) $userId
|
|
);
|
|
$userId = $db->loadResult();
|
|
}
|
|
|
|
// Set the package id if present.
|
|
if ($userId)
|
|
{
|
|
// Set the package id.
|
|
$vars['user_id'] = (int) $userId;
|
|
|
|
// Set the view to package if not already set.
|
|
if (empty($vars['view']))
|
|
{
|
|
$vars['view'] = 'profile';
|
|
}
|
|
}
|
|
else
|
|
{
|
|
JError::raiseError(404, JText::_('JGLOBAL_RESOURCE_NOT_FOUND'));
|
|
}
|
|
|
|
return $vars;
|
|
}
|