| Server IP : 46.105.57.169 / Your IP : 216.73.216.67 Web Server : Apache System : Linux webm002.cluster120.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64 User : verseaumee ( 152031) PHP Version : 8.5.7 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/verseaumee/royalkarukera/components__9a2a123/com_solidres/ |
Upload File : |
<?php
/**
------------------------------------------------------------------------
SOLIDRES - Accommodation booking extension for Joomla
------------------------------------------------------------------------
* @author Solidres Team <contact@solidres.com>
* @website https://www.solidres.com
* @copyright Copyright (C) 2013 - 2019 Solidres. All Rights Reserved.
* @license GNU General Public License version 3, or later
------------------------------------------------------------------------
*/
defined('_JEXEC') or die;
class SRRouter extends JComponentRouterBase
{
protected $hub;
public function __construct($app = null, $menu = null)
{
parent::__construct($app, $menu);
if ($this->hub = JPluginHelper::isEnabled('solidres', 'hub'))
{
JPluginHelper::importPlugin('solidres', 'hub');
}
}
public function build(&$query)
{
$segments = array();
$menus = JFactory::getApplication()->getMenu();
$db = JFactory::getDbo();
$sql = $db->getQuery(true);
$hubQuery = $query;
if (isset($query['Itemid']))
{
$menuItem = $menus->getItem($query['Itemid']);
}
else
{
$menuItem = $menus->getActive();
}
if ($menuItem
&& $menuItem->query['option'] != 'com_solidres'
&& isset($query['Itemid'])
)
{
$menuItem = null;
unset($query['Itemid']);
}
$view = isset($query['view']) ? strtolower($query['view']) : null;
$slug = isset($query['id']) ? (int) $query['id'] : null;
if (!$view && isset($query['task']) && strpos($query['task'], '.') !== false)
{
$task = explode('.', $query['task'], 2);
if ($task[0] == 'reservationasset')
{
$view = $task[0];
}
}
if ($menuItem)
{
if (isset($menuItem->query['view']) && $menuItem->query['view'] == $view)
{
unset($query['view']);
}
if (isset($menuItem->query['id']) && $menuItem->query['id'] == $slug)
{
unset($query['id']);
return $segments;
}
}
if ($slug && in_array($view, ['partner', 'reservationasset', 'subscriptionform', 'experience']))
{
static $slugs = [];
$slugKey = $view . ':' . $slug;
switch ($view)
{
case 'reservationasset':
if (!isset($slugs[$slugKey]))
{
$sql->select('a.id, a.alias')
->from($db->qn('#__sr_reservation_assets', 'a'))
->where('a.id = ' . (int) $query['id']);
$db->setQuery($sql);
if ($row = $db->loadObject())
{
$slugs[$slugKey] = $row->alias . ':' . $row->id;
}
}
break;
case 'subscriptionform':
if (!isset($slugs[$slugKey]))
{
$sql->select('a.id, a.title')
->from($db->qn('#__sr_subscription_levels', 'a'))
->where('a.id = ' . (int) $query['id']);
$db->setQuery($sql);
$row = $db->loadObject();
$slugs[$slugKey] = JFilterOutput::stringURLSafe($row->title) . ':' . $row->id;
}
break;
case 'experience':
if (!isset($slugs[$slugKey]))
{
$sql->select('a.id, a.alias')
->from($db->qn('#__sr_experiences', 'a'))
->where('a.id = ' . (int) $query['id']);
$db->setQuery($sql);
if ($row = $db->loadObject())
{
$slugs[$slugKey] = $row->alias . ':' . $row->id;
}
}
break;
case 'partner':
if (!isset($slugs[$slugKey]))
{
$sql->select('u.username')
->from($db->quoteName('#__users', 'u'))
->join('INNER', $db->quoteName('#__sr_customers', 'a') . ' ON a.user_id = u.id AND u.block = 0')
->where('a.id = ' . (int) $query['id']);
$db->setQuery($sql);
if ($userName = $db->loadResult())
{
$slugs[$slugKey] = $userName;
}
}
break;
}
if (isset($slugs[$slugKey]))
{
$slug = $slugs[$slugKey];
}
if (isset($query['view']))
{
$segments[] = $view;
unset($query['view']);
}
$segments[] = $slug;
unset($query['id']);
}
if ($view == 'experiences' && isset($query['category_id']))
{
$sql->clear()
->select('a.alias')
->from($db->qn('#__sr_experience_categories', 'a'))
->where('a.id = ' . (int) $query['category_id']);
$db->setQuery($sql);
if ($alias = $db->loadResult())
{
$segments[] = 'category:' . $alias;
unset($query['category_id']);
}
}
if ($this->hub)
{
JFactory::getApplication()->triggerEvent('onSolidresBuildRoute', array($hubQuery, &$segments));
}
$total = count($segments);
for ($i = 0; $i < $total; $i++)
{
$segments[$i] = str_replace(':', '-', $segments[$i]);
}
return $segments;
}
public function parse(&$segments)
{
$vars = [];
$count = count($segments);
$menu = JFactory::getApplication()->getMenu()->getActive();
$db = JFactory::getDbo();
if ($menu
&& @$menu->query['option'] === 'com_solidres'
&& @$menu->query['view'] === 'partner'
&& $count
)
{
$query = $db->getQuery(true)
->select('a.id')
->from($db->quoteName('#__sr_customers', 'a'))
->join('INNER', $db->quoteName('#__users', 'u') . ' ON u.id = a.user_id AND u.block = 0')
->where('u.username = ' . $db->quote($segments[0]));
if ($partnerId = $db->setQuery($query)->loadResult())
{
$vars['view'] = 'partner';
$vars['id'] = $partnerId;
return $vars;
}
}
for ($i = 0; $i < $count; $i++)
{
$segments[$i] = str_replace('-', ':', $segments[$i]);
}
if ($count > 0)
{
if (strpos($segments[0], ':') !== false)
{
$array = explode(':', $segments[0]);
$id = (int) $array[count($array) - 1];
array_pop($array);
$alias = join('-', $array);
$query = $db->getQuery(true)
->select('a.id, a.alias')
->from($db->qn('#__sr_reservation_assets', 'a'))
->where('a.id = ' . (int) $id);
$db->setQuery($query);
$asset = $db->loadObject();
if ($asset && $asset->alias == $alias)
{
$vars['view'] = 'reservationasset';
$vars['id'] = $id;
}
}
if (preg_match('/^(category\:)/', $segments[0]))
{
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select('a.id')
->from($db->qn('#__sr_experience_categories', 'a'))
->where('a.alias = ' . $db->q(str_replace(array('category:', ':'), array('', '-'), $segments[0])));
$db->setQuery($query);
$vars['view'] = 'experiences';
$vars['category_id'] = (int) $db->loadResult();
}
elseif (isset($segments[1]))
{
$vars['view'] = $segments[0];
preg_match('/([0-9]+)$/', $segments[1], $matches);
if (!empty($matches[0]))
{
$vars['id'] = (int) $matches[1];
}
else
{
$vars['id'] = (int) $segments[1];
}
}
}
if ($this->hub)
{
JFactory::getApplication()->triggerEvent('onSolidresParseRoute', array(&$vars, $segments));
}
return $vars;
}
}
function solidresBuildRoute(&$query)
{
$router = new SRRouter;
return $router->build($query);
}
function solidresParseRoute($segments)
{
$router = new SRRouter;
return $router->parse($segments);
}